aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/protocol')
-rw-r--r--src/org/traccar/protocol/H02ProtocolDecoder.java3
-rw-r--r--src/org/traccar/protocol/SuntechProtocolDecoder.java41
2 files changed, 34 insertions, 10 deletions
diff --git a/src/org/traccar/protocol/H02ProtocolDecoder.java b/src/org/traccar/protocol/H02ProtocolDecoder.java
index c31f9edbb..aea8f0b3b 100644
--- a/src/org/traccar/protocol/H02ProtocolDecoder.java
+++ b/src/org/traccar/protocol/H02ProtocolDecoder.java
@@ -152,7 +152,6 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder {
.number("(d+),") // imei
.groupBegin()
.text("VP1,")
- .expression("[ABV],")
.or()
.groupBegin()
.text("V1,")
@@ -164,7 +163,7 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder {
.groupEnd()
.number("(?:(dd)(dd)(dd))?,") // time (hhmmss)
.groupEnd()
- .expression("([AV])?,") // validity
+ .expression("([ABV])?,") // validity
.groupBegin()
.number("-(d+)-(d+.d+),") // latitude
.or()
diff --git a/src/org/traccar/protocol/SuntechProtocolDecoder.java b/src/org/traccar/protocol/SuntechProtocolDecoder.java
index 68c920899..3025bbdd5 100644
--- a/src/org/traccar/protocol/SuntechProtocolDecoder.java
+++ b/src/org/traccar/protocol/SuntechProtocolDecoder.java
@@ -109,6 +109,24 @@ public class SuntechProtocolDecoder extends BaseProtocolDecoder {
return position;
}
+ private String decodeEmergency(int value) {
+ switch (value) {
+ case 1:
+ return Position.ALARM_SOS;
+ case 3:
+ return Position.ALARM_POWER_CUT;
+ case 5:
+ case 6:
+ return Position.ALARM_DOOR;
+ case 7:
+ return Position.ALARM_MOVEMENT;
+ case 8:
+ return Position.ALARM_SHOCK;
+ default:
+ return null;
+ }
+ }
+
private Position decode235(
Channel channel, SocketAddress remoteAddress, String protocol, String[] values) throws ParseException {
int index = 0;
@@ -121,10 +139,7 @@ public class SuntechProtocolDecoder extends BaseProtocolDecoder {
Position position = new Position();
position.setProtocol(getProtocolName());
-
- if (type.equals("EMG") || type.equals("ALT")) {
- position.set(Position.KEY_ALARM, Position.ALARM_GENERAL);
- }
+ position.set(Position.KEY_TYPE, type);
DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, values[index++]);
if (deviceSession == null) {
@@ -160,10 +175,20 @@ public class SuntechProtocolDecoder extends BaseProtocolDecoder {
position.set(Position.PREFIX_IO + 1, values[index++]);
- index += 1; // mode
-
- if (type.equals("STT")) {
- position.set(Position.KEY_INDEX, Integer.parseInt(values[index++]));
+ switch (type) {
+ case "STT":
+ index += 1; // mode
+ position.set(Position.KEY_INDEX, Integer.parseInt(values[index++]));
+ break;
+ case "EMG":
+ position.set(Position.KEY_ALARM, decodeEmergency(Integer.parseInt(values[index++])));
+ break;
+ case "EVT":
+ case "ALT":
+ position.set(Position.KEY_EVENT, Integer.parseInt(values[index++]));
+ break;
+ default:
+ break;
}
if (hbm) {