diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2019-10-09 07:33:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-09 07:33:58 -0700 |
commit | bc14c486eb933411ae4afb4c4215503f9210f677 (patch) | |
tree | ad5c2cc9558071f33b80760710f0573f2b7a39c2 | |
parent | e7ba2f77c7e9c9f1065b31a337715b94f43afe26 (diff) | |
parent | 059d108b6a188963dba8815d4efe0883fe840617 (diff) | |
download | traccar-server-bc14c486eb933411ae4afb4c4215503f9210f677.tar.gz traccar-server-bc14c486eb933411ae4afb4c4215503f9210f677.tar.bz2 traccar-server-bc14c486eb933411ae4afb4c4215503f9210f677.zip |
Merge pull request #4412 from rsvanda/jc100-alerts
Adds JC100 camera alarms
-rw-r--r-- | src/main/java/org/traccar/protocol/Gt06ProtocolDecoder.java | 34 | ||||
-rw-r--r-- | src/test/java/org/traccar/protocol/Gt06ProtocolDecoderTest.java | 11 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/protocol/Gt06ProtocolDecoder.java b/src/main/java/org/traccar/protocol/Gt06ProtocolDecoder.java index a5a7c711e..e1ff0b6b6 100644 --- a/src/main/java/org/traccar/protocol/Gt06ProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/Gt06ProtocolDecoder.java @@ -103,6 +103,7 @@ public class Gt06ProtocolDecoder extends BaseProtocolDecoder { public static final int MSG_MULTIMEDIA = 0x21; public static final int MSG_BMS_2 = 0x40; public static final int MSG_MULTIMEDIA_2 = 0x41; + public static final int MSG_ALARM = 0x95; private static boolean isSupported(int type) { return hasGps(type) || hasLbs(type) || hasStatus(type); @@ -750,6 +751,39 @@ public class Gt06ProtocolDecoder extends BaseProtocolDecoder { position.set(Position.KEY_ARCHIVE, buf.readUnsignedByte() > 0); } + } else if (type == MSG_ALARM) { + + DateBuilder dateBuilder = new DateBuilder(deviceSession.getTimeZone()) + .setDate(buf.readUnsignedByte(), buf.readUnsignedByte(), buf.readUnsignedByte()) + .setTime(buf.readUnsignedByte(), buf.readUnsignedByte(), buf.readUnsignedByte()); + + getLastLocation(position, dateBuilder.getDate()); + + short alarmType = buf.readUnsignedByte(); + + switch (alarmType) { + case 0x80: + position.set(Position.KEY_ALARM, Position.ALARM_VIBRATION); + break; + case 0x87: + position.set(Position.KEY_ALARM, Position.ALARM_OVERSPEED); + break; + case 0x90: + position.set(Position.KEY_ALARM, Position.ALARM_ACCELERATION); + break; + case 0x91: + position.set(Position.KEY_ALARM, Position.ALARM_BRAKING); + break; + case 0x92: + position.set(Position.KEY_ALARM, Position.ALARM_CORNERING); + break; + default: + position.set(Position.KEY_ALARM, Position.ALARM_GENERAL); + break; + } + + position.set("alarmValue", buf.readShort()); + } else { if (dataLength > 0) { diff --git a/src/test/java/org/traccar/protocol/Gt06ProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/Gt06ProtocolDecoderTest.java index 39b4d58e4..5da713452 100644 --- a/src/test/java/org/traccar/protocol/Gt06ProtocolDecoderTest.java +++ b/src/test/java/org/traccar/protocol/Gt06ProtocolDecoderTest.java @@ -300,6 +300,17 @@ public class Gt06ProtocolDecoderTest extends ProtocolTest { verifyNull(decoder, binary( "7878058A000688290D0A")); + verifyAttribute(decoder, binary( + "78780c95130a0209321c90000112800d0a"), + Position.KEY_ALARM, Position.ALARM_ACCELERATION); + + verifyAttribute(decoder, binary( + "78780c95130a0209321c90000112800d0a"), + "alarmValue", 1); + + verifyAttribute(decoder, binary( + "78780c95130a0209321c91000112800d0a"), + Position.KEY_ALARM, Position.ALARM_BRAKING); } } |