aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-12-16 16:15:47 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2017-12-16 16:15:47 +1300
commit3ad24b1986bac058fae59249d010452d8554f518 (patch)
treeeddc5bc6bc1212d0593c366487d451a0a84141ab
parentb0151a400565a0affab756ff02e183d269220be9 (diff)
downloadtrackermap-server-3ad24b1986bac058fae59249d010452d8554f518.tar.gz
trackermap-server-3ad24b1986bac058fae59249d010452d8554f518.tar.bz2
trackermap-server-3ad24b1986bac058fae59249d010452d8554f518.zip
Decode remaining GV65 CAN data
-rw-r--r--src/org/traccar/model/Position.java1
-rw-r--r--src/org/traccar/protocol/AplicomProtocolDecoder.java2
-rw-r--r--src/org/traccar/protocol/Gl200TextProtocolDecoder.java50
-rw-r--r--src/org/traccar/protocol/IntellitracProtocolDecoder.java2
-rw-r--r--src/org/traccar/protocol/TytanProtocolDecoder.java2
5 files changed, 29 insertions, 28 deletions
diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java
index 099e6d686..4f78867c2 100644
--- a/src/org/traccar/model/Position.java
+++ b/src/org/traccar/model/Position.java
@@ -78,6 +78,7 @@ public class Position extends Message {
public static final String KEY_COMMAND = "command";
public static final String KEY_BLOCKED = "blocked";
public static final String KEY_DOOR = "door";
+ public static final String KEY_AXLE_WEIGHT = "axleWeight";
public static final String KEY_DTCS = "dtcs";
public static final String KEY_OBD_SPEED = "obdSpeed"; // knots
diff --git a/src/org/traccar/protocol/AplicomProtocolDecoder.java b/src/org/traccar/protocol/AplicomProtocolDecoder.java
index 154451b5b..c1d7ab087 100644
--- a/src/org/traccar/protocol/AplicomProtocolDecoder.java
+++ b/src/org/traccar/protocol/AplicomProtocolDecoder.java
@@ -486,7 +486,7 @@ public class AplicomProtocolDecoder extends BaseProtocolDecoder {
position.set("vehicleSpeed", buf.readUnsignedShort() / 256.0);
break;
case 0x03:
- position.set("axleLoadSum", buf.readUnsignedShort() * 2);
+ position.set(Position.KEY_AXLE_WEIGHT, buf.readUnsignedShort() * 2);
break;
case 0x04:
position.set("tyrePressure", buf.readUnsignedByte() * 10);
diff --git a/src/org/traccar/protocol/Gl200TextProtocolDecoder.java b/src/org/traccar/protocol/Gl200TextProtocolDecoder.java
index d7468e71d..9429cff2f 100644
--- a/src/org/traccar/protocol/Gl200TextProtocolDecoder.java
+++ b/src/org/traccar/protocol/Gl200TextProtocolDecoder.java
@@ -552,7 +552,7 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder {
position.set(Position.KEY_IGNITION, Integer.parseInt(values[index++]) > 0);
}
if (BitUtil.check(reportMask, 2)) {
- index += 1; // total distance
+ position.set("totalVehicleDistance", values[index++]);
}
if (BitUtil.check(reportMask, 3)) {
position.set("totalFuelConsumption", Double.parseDouble(values[index++]));
@@ -566,14 +566,14 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder {
if (BitUtil.check(reportMask, 6)) {
position.set(Position.KEY_COOLANT_TEMP, Integer.parseInt(values[index++]));
}
- if (BitUtil.check(reportMask, 7)) {
- index += 1; // fuel consumption
+ if (BitUtil.check(reportMask, 7) && !values[index++].isEmpty()) {
+ position.set(Position.KEY_FUEL_CONSUMPTION, Double.parseDouble(values[index - 1].substring(1)));
}
- if (BitUtil.check(reportMask, 8)) {
- index += 1; // fuel level
+ if (BitUtil.check(reportMask, 8) && !values[index++].isEmpty()) {
+ position.set(Position.KEY_FUEL_LEVEL, Double.parseDouble(values[index - 1].substring(1)));
}
- if (BitUtil.check(reportMask, 9)) {
- index += 1; // range
+ if (BitUtil.check(reportMask, 9) && !values[index++].isEmpty()) {
+ position.set("range", Long.parseLong(values[index - 1]) * 100);
}
if (BitUtil.check(reportMask, 10) && !values[index++].isEmpty()) {
position.set(Position.KEY_THROTTLE, Integer.parseInt(values[index - 1]));
@@ -582,34 +582,34 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder {
position.set(Position.KEY_HOURS, Double.parseDouble(values[index++]));
}
if (BitUtil.check(reportMask, 12)) {
- index += 1; // driving time
+ position.set("drivingHours", Double.parseDouble(values[index++]));
}
if (BitUtil.check(reportMask, 13)) {
- index += 1; // idle time
+ position.set("idleHours", Double.parseDouble(values[index++]));
}
- if (BitUtil.check(reportMask, 14)) {
- index += 1; // idle fuel
+ if (BitUtil.check(reportMask, 14) && !values[index++].isEmpty()) {
+ position.set("idleFuelConsumption", Double.parseDouble(values[index - 1]));
}
- if (BitUtil.check(reportMask, 15)) {
- index += 1; // axle weight
+ if (BitUtil.check(reportMask, 15) && !values[index++].isEmpty()) {
+ position.set(Position.KEY_AXLE_WEIGHT, Integer.parseInt(values[index - 1]));
}
- if (BitUtil.check(reportMask, 16)) {
- index += 1; // tachograph info
+ if (BitUtil.check(reportMask, 16) && !values[index++].isEmpty()) {
+ position.set("tachographInfo", Integer.parseInt(values[index - 1]));
}
- if (BitUtil.check(reportMask, 17)) {
- index += 1; // indicators
+ if (BitUtil.check(reportMask, 17) && !values[index++].isEmpty()) {
+ position.set("indicators", Integer.parseInt(values[index - 1]));
}
- if (BitUtil.check(reportMask, 18)) {
- index += 1; // lights
+ if (BitUtil.check(reportMask, 18) && !values[index++].isEmpty()) {
+ position.set("lights", Integer.parseInt(values[index - 1]));
}
- if (BitUtil.check(reportMask, 19)) {
- index += 1; // doors
+ if (BitUtil.check(reportMask, 19) && !values[index++].isEmpty()) {
+ position.set("doors", Integer.parseInt(values[index - 1]));
}
- if (BitUtil.check(reportMask, 20)) {
- index += 1; // total vehicle overspeed time
+ if (BitUtil.check(reportMask, 20) && !values[index++].isEmpty()) {
+ position.set("vehicleOverspeed", Double.parseDouble(values[index - 1]));
}
- if (BitUtil.check(reportMask, 21)) {
- index += 1; // total engine overspeed time
+ if (BitUtil.check(reportMask, 21) && !values[index++].isEmpty()) {
+ position.set("engineOverspeed", Double.parseDouble(values[index - 1]));
}
if (BitUtil.check(reportMask, 29)) {
index += 1; // expansion
diff --git a/src/org/traccar/protocol/IntellitracProtocolDecoder.java b/src/org/traccar/protocol/IntellitracProtocolDecoder.java
index 8f4e4c0d6..4a526376e 100644
--- a/src/org/traccar/protocol/IntellitracProtocolDecoder.java
+++ b/src/org/traccar/protocol/IntellitracProtocolDecoder.java
@@ -109,7 +109,7 @@ public class IntellitracProtocolDecoder extends BaseProtocolDecoder {
position.set(Position.PREFIX_TEMP + 1, parser.nextInt(0));
position.set("chargerPressure", parser.nextInt(0));
position.set("tpl", parser.nextInt(0));
- position.set("axle", parser.nextInt(0));
+ position.set(Position.KEY_AXLE_WEIGHT, parser.nextInt(0));
position.set(Position.KEY_OBD_ODOMETER, parser.nextInt(0));
return position;
diff --git a/src/org/traccar/protocol/TytanProtocolDecoder.java b/src/org/traccar/protocol/TytanProtocolDecoder.java
index 0ae669784..de0330250 100644
--- a/src/org/traccar/protocol/TytanProtocolDecoder.java
+++ b/src/org/traccar/protocol/TytanProtocolDecoder.java
@@ -84,7 +84,7 @@ public class TytanProtocolDecoder extends BaseProtocolDecoder {
}
break;
case 28:
- position.set("weight", buf.readUnsignedShort());
+ position.set(Position.KEY_AXLE_WEIGHT, buf.readUnsignedShort());
buf.readUnsignedByte();
break;
case 90: