aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/protocol/PstProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/protocol/PstProtocolDecoder.java')
-rw-r--r--src/main/java/org/traccar/protocol/PstProtocolDecoder.java17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/main/java/org/traccar/protocol/PstProtocolDecoder.java b/src/main/java/org/traccar/protocol/PstProtocolDecoder.java
index 40caa9727..23e2afbbd 100644
--- a/src/main/java/org/traccar/protocol/PstProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/PstProtocolDecoder.java
@@ -41,14 +41,16 @@ public class PstProtocolDecoder extends BaseProtocolDecoder {
.setYear((int) BitUtil.between(value, 26, 32))
.setMonth((int) BitUtil.between(value, 22, 26))
.setDay((int) BitUtil.between(value, 17, 22))
- .setMonth((int) BitUtil.between(value, 12, 17))
- .setMonth((int) BitUtil.between(value, 6, 12))
- .setMonth((int) BitUtil.between(value, 0, 6)).getDate();
+ .setHour((int) BitUtil.between(value, 12, 17))
+ .setMinute((int) BitUtil.between(value, 6, 12))
+ .setSecond((int) BitUtil.between(value, 0, 6)).getDate();
}
private double readCoordinate(ByteBuf buf) {
long value = buf.readUnsignedInt();
- return (BitUtil.from(value, 16) + BitUtil.to(value, 16) * 0.00001) / 60;
+ int sign = BitUtil.check(value, 31) ? -1 : 1;
+ value = BitUtil.to(value, 31);
+ return sign * (BitUtil.from(value, 16) + BitUtil.to(value, 16) * 0.00001) / 60;
}
@Override
@@ -85,7 +87,10 @@ public class PstProtocolDecoder extends BaseProtocolDecoder {
switch (tag) {
case 0x0D:
- position.set(Position.KEY_BATTERY_LEVEL, buf.readUnsignedByte() * 5);
+ int battery = buf.readUnsignedByte();
+ if (battery <= 20) {
+ position.set(Position.KEY_BATTERY_LEVEL, buf.readUnsignedByte() * 5);
+ }
break;
case 0x10:
position.setFixTime(readDate(buf));
@@ -102,7 +107,7 @@ public class PstProtocolDecoder extends BaseProtocolDecoder {
}
}
- return position;
+ return position.getFixTime() != null ? position : null;
}
return null;