aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol/GalileoProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/protocol/GalileoProtocolDecoder.java')
-rw-r--r--src/org/traccar/protocol/GalileoProtocolDecoder.java32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/org/traccar/protocol/GalileoProtocolDecoder.java b/src/org/traccar/protocol/GalileoProtocolDecoder.java
index 37a31de6e..0b4cba259 100644
--- a/src/org/traccar/protocol/GalileoProtocolDecoder.java
+++ b/src/org/traccar/protocol/GalileoProtocolDecoder.java
@@ -50,9 +50,9 @@ public class GalileoProtocolDecoder extends BaseProtocolDecoder {
private static final int TAG_ODOMETER = 0xd4;
private static final int TAG_REFRIGERATOR = 0x5b;
private static final int TAG_PRESSURE = 0x5c;
-
+
private static final Map<Integer, Integer> tagLengthMap = new HashMap<>();
-
+
static {
int[] l1 = {0x01,0x02,0x35,0x43,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd5,0x88,0x8a,0x8b,0x8c,0xa0,0xaf,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae};
int[] l2 = {0x04,0x10,0x34,0x40,0x41,0x42,0x45,0x46,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x60,0x61,0x62,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xd6,0xd7,0xd8,0xd9,0xda};
@@ -87,16 +87,16 @@ public class GalileoProtocolDecoder extends BaseProtocolDecoder {
throws Exception {
ChannelBuffer buf = (ChannelBuffer) msg;
-
+
buf.readUnsignedByte(); // header
int length = (buf.readUnsignedShort() & 0x7fff) + 3;
-
+
List<Position> positions = new LinkedList<>();
Set<Integer> tags = new HashSet<>();
boolean hasLocation = false;
Position position = new Position();
position.setProtocol(getProtocolName());
-
+
while (buf.readerIndex() < length) {
// Check if new message started
@@ -110,7 +110,7 @@ public class GalileoProtocolDecoder extends BaseProtocolDecoder {
position = new Position();
}
tags.add(tag);
-
+
switch (tag) {
case TAG_IMEI:
@@ -122,49 +122,49 @@ public class GalileoProtocolDecoder extends BaseProtocolDecoder {
case TAG_DATE:
position.setTime(new Date(buf.readUnsignedInt() * 1000));
break;
-
+
case TAG_COORDINATES:
hasLocation = true;
position.setValid((buf.readUnsignedByte() & 0xf0) == 0x00);
position.setLatitude(buf.readInt() / 1000000.0);
position.setLongitude(buf.readInt() / 1000000.0);
break;
-
+
case TAG_SPEED_COURSE:
position.setSpeed(buf.readUnsignedShort() * 0.0539957);
position.setCourse(buf.readUnsignedShort() * 0.1);
break;
-
+
case TAG_ALTITUDE:
position.setAltitude(buf.readShort());
break;
-
+
case TAG_STATUS:
position.set(Event.KEY_STATUS, buf.readUnsignedShort());
break;
-
+
case TAG_POWER:
position.set(Event.KEY_POWER, buf.readUnsignedShort());
break;
-
+
case TAG_BATTERY:
position.set(Event.KEY_BATTERY, buf.readUnsignedShort());
break;
-
+
case TAG_ODOMETER:
position.set(Event.KEY_ODOMETER, buf.readUnsignedInt());
break;
-
+
default:
buf.skipBytes(getTagLength(tag));
break;
-
+
}
}
if (hasLocation && position.getFixTime() != null) {
positions.add(position);
}
-
+
if (!hasDeviceId()) {
Log.warning("Unknown device");
return null;