aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2018-05-22 01:55:54 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2018-05-22 01:55:54 +1200
commitc3f723397ff20562b1fc9ed385cb717084268ca6 (patch)
tree5199314cede1e406e8e86a0182c6e0fc2d639c70 /src
parent7e6b73ab434e12584dbdf65725ae36b8326f41c8 (diff)
downloadtraccar-server-c3f723397ff20562b1fc9ed385cb717084268ca6.tar.gz
traccar-server-c3f723397ff20562b1fc9ed385cb717084268ca6.tar.bz2
traccar-server-c3f723397ff20562b1fc9ed385cb717084268ca6.zip
Decode Jointech GP4000 status
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/protocol/Jt600ProtocolDecoder.java39
1 files changed, 37 insertions, 2 deletions
diff --git a/src/org/traccar/protocol/Jt600ProtocolDecoder.java b/src/org/traccar/protocol/Jt600ProtocolDecoder.java
index f5d8a79a4..5a53f362a 100644
--- a/src/org/traccar/protocol/Jt600ProtocolDecoder.java
+++ b/src/org/traccar/protocol/Jt600ProtocolDecoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2017 Anton Tananaev (anton@traccar.org)
+ * Copyright 2012 - 2018 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -49,6 +49,41 @@ public class Jt600ProtocolDecoder extends BaseProtocolDecoder {
return degrees + minutes / 60;
}
+ private void decodeStatus(Position position, ChannelBuffer buf) {
+
+ int value = buf.readUnsignedByte();
+
+ position.set(Position.KEY_IGNITION, BitUtil.check(value, 0));
+ position.set(Position.KEY_DOOR, BitUtil.check(value, 6));
+
+ value = buf.readUnsignedByte();
+
+ position.set(Position.KEY_CHARGE, BitUtil.check(value, 0));
+ position.set(Position.KEY_BLOCKED, BitUtil.check(value, 1));
+
+ if (BitUtil.check(value, 2)) {
+ position.set(Position.KEY_ALARM, Position.ALARM_SOS);
+ }
+ if (BitUtil.check(value, 3) || BitUtil.check(value, 4)) {
+ position.set(Position.KEY_ALARM, Position.ALARM_GPS_ANTENNA_CUT);
+ }
+ if (BitUtil.check(value, 4)) {
+ position.set(Position.KEY_ALARM, Position.ALARM_OVERSPEED);
+ }
+
+ value = buf.readUnsignedByte();
+
+ if (BitUtil.check(value, 2)) {
+ position.set(Position.KEY_ALARM, Position.ALARM_FATIGUE_DRIVING);
+ }
+ if (BitUtil.check(value, 3)) {
+ position.set(Position.KEY_ALARM, Position.ALARM_TOW);
+ }
+
+ buf.readUnsignedByte(); // reserved
+
+ }
+
private List<Position> decodeBinary(ChannelBuffer buf, Channel channel, SocketAddress remoteAddress) {
List<Position> positions = new LinkedList<>();
@@ -152,7 +187,7 @@ public class Jt600ProtocolDecoder extends BaseProtocolDecoder {
int fuel = buf.readUnsignedByte() << 8;
- position.set(Position.KEY_STATUS, buf.readUnsignedInt());
+ decodeStatus(position, buf);
position.set(Position.KEY_ODOMETER, buf.readUnsignedInt() * 1000);
fuel += buf.readUnsignedByte();