aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-11-15 22:06:41 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2016-11-15 22:06:41 +1300
commitfcc70df74b1fb17280b837b2a31722c2f3fc8ad2 (patch)
treef144c463af82e2426e1f7f89fd522fcff2babc23 /src
parent3507d5f7aa0670c0970b7e65c91a31fdada41ea2 (diff)
downloadtrackermap-server-fcc70df74b1fb17280b837b2a31722c2f3fc8ad2.tar.gz
trackermap-server-fcc70df74b1fb17280b837b2a31722c2f3fc8ad2.tar.bz2
trackermap-server-fcc70df74b1fb17280b837b2a31722c2f3fc8ad2.zip
Fix Astra decoding problem
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/protocol/AstraProtocolDecoder.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/org/traccar/protocol/AstraProtocolDecoder.java b/src/org/traccar/protocol/AstraProtocolDecoder.java
index d51be633d..390434d54 100644
--- a/src/org/traccar/protocol/AstraProtocolDecoder.java
+++ b/src/org/traccar/protocol/AstraProtocolDecoder.java
@@ -22,6 +22,7 @@ import org.traccar.BaseProtocolDecoder;
import org.traccar.DeviceSession;
import org.traccar.helper.BitUtil;
import org.traccar.helper.DateBuilder;
+import org.traccar.helper.Log;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.Position;
@@ -82,7 +83,9 @@ public class AstraProtocolDecoder extends BaseProtocolDecoder {
int reason = buf.readUnsignedMedium();
position.set(Position.KEY_EVENT, reason);
- position.set(Position.KEY_STATUS, buf.readUnsignedShort());
+ int status = buf.readUnsignedShort();
+ position.set(Position.KEY_STATUS, status);
+
position.set(Position.PREFIX_IO + 1, buf.readUnsignedByte());
position.set(Position.PREFIX_ADC + 1, buf.readUnsignedByte());
position.set(Position.KEY_BATTERY, buf.readUnsignedByte());
@@ -101,7 +104,7 @@ public class AstraProtocolDecoder extends BaseProtocolDecoder {
buf.readUnsignedByte(); // geofence events
- if (BitUtil.check(reason, 6) || BitUtil.check(reason, 7)) {
+ if (BitUtil.check(status, 8)) {
position.set(Position.KEY_RFID, buf.readBytes(7).toString(StandardCharsets.US_ASCII));
position.set(Position.KEY_ODOMETER, buf.readUnsignedMedium() * 1000);
@@ -110,7 +113,10 @@ public class AstraProtocolDecoder extends BaseProtocolDecoder {
}
- // extra data
+ if (BitUtil.check(status, 6)) {
+ Log.warning("Extension data is not supported");
+ return position;
+ }
positions.add(position);