aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2020-02-04 22:33:53 -0800
committerAnton Tananaev <anton.tananaev@gmail.com>2020-02-04 22:33:53 -0800
commit2c0563a4f7d4c89551c23c13f17249b5f1b4665a (patch)
tree2d273bd6a46281ef1346f1a76f7691d656fde439
parent7e9c68727d65c858264a493003f73195e4f51210 (diff)
downloadtraccar-server-2c0563a4f7d4c89551c23c13f17249b5f1b4665a.tar.gz
traccar-server-2c0563a4f7d4c89551c23c13f17249b5f1b4665a.tar.bz2
traccar-server-2c0563a4f7d4c89551c23c13f17249b5f1b4665a.zip
Implement support for iButton
-rw-r--r--src/main/java/org/traccar/protocol/SuntechProtocolDecoder.java15
-rw-r--r--src/test/java/org/traccar/protocol/SuntechProtocolDecoderTest.java4
2 files changed, 17 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/protocol/SuntechProtocolDecoder.java b/src/main/java/org/traccar/protocol/SuntechProtocolDecoder.java
index 915f764e1..7e520ab3a 100644
--- a/src/main/java/org/traccar/protocol/SuntechProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/SuntechProtocolDecoder.java
@@ -614,10 +614,21 @@ public class SuntechProtocolDecoder extends BaseProtocolDecoder {
position.set(Position.KEY_OUTPUT, buf.readUnsignedByte());
}
+ int alertId = 0;
if (BitUtil.check(mask, 19)) {
- int value = buf.readUnsignedByte();
+ alertId = buf.readUnsignedByte();
if (type == 0x82) {
- position.set(Position.KEY_ALARM, decodeAlert(value));
+ position.set(Position.KEY_ALARM, decodeAlert(alertId));
+ }
+ }
+
+ if (BitUtil.check(mask, 20)) {
+ buf.readUnsignedShort(); // alert mod
+ }
+
+ if (BitUtil.check(mask, 21)) {
+ if (alertId == 59) {
+ position.set(Position.KEY_DRIVER_UNIQUE_ID, ByteBufUtil.hexDump(buf.readSlice(8)));
}
}
diff --git a/src/test/java/org/traccar/protocol/SuntechProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/SuntechProtocolDecoderTest.java
index ad9be942f..82f0a29e1 100644
--- a/src/test/java/org/traccar/protocol/SuntechProtocolDecoderTest.java
+++ b/src/test/java/org/traccar/protocol/SuntechProtocolDecoderTest.java
@@ -62,6 +62,10 @@ public class SuntechProtocolDecoderTest extends ProtocolTest {
SuntechProtocolDecoder decoder = new SuntechProtocolDecoder(null);
+ verifyAttribute(decoder, binary(
+ "82004d05800000553fffff360100100114020410293902ccccf102dc007b00053c00476fa18469e87f000000000b0100003b00081d00000113f3f8010000049e00000000000000001d00000113f3f801"),
+ Position.KEY_DRIVER_UNIQUE_ID, "1d00000113f3f801");
+
verifyPosition(decoder, buffer(
"ST410STT;007638094;426;01;24153;724;4;-65;365;0;24161;724;4;365;0;0;24162;724;4;365;0;0;24363;724;4;365;0;0;24151;724;4;365;0;0;24991;724;4;365;0;0;24373;724;4;365;0;0;3.98;1;0176;2;016;20200106;19:18:04;-15.571860;-056.062637;000.852;238.28;6;1;201"));