aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/model/Position.java2
-rw-r--r--src/org/traccar/protocol/TmgProtocolDecoder.java31
2 files changed, 31 insertions, 2 deletions
diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java
index a88e16804..6fe008688 100644
--- a/src/org/traccar/model/Position.java
+++ b/src/org/traccar/model/Position.java
@@ -75,6 +75,7 @@ public class Position extends Message {
public static final String ALARM_LOW_SPEED = "lowspeed";
public static final String ALARM_OVERSPEED = "overspeed";
public static final String ALARM_FALL_DOWN = "fallDown";
+ public static final String ALARM_LOW_POWER = "lowPower";
public static final String ALARM_LOW_BATTERY = "lowBattery";
public static final String ALARM_FAULT = "fault";
public static final String ALARM_POWER_OFF = "powerOff";
@@ -97,6 +98,7 @@ public class Position extends Message {
public static final String ALARM_BONNET = "bonnet";
public static final String ALARM_FOOT_BRAKE = "footBrake";
public static final String ALARM_OIL_LEAK = "oilLeak";
+ public static final String ALARM_TAMPERING = "tampering";
private String protocol;
diff --git a/src/org/traccar/protocol/TmgProtocolDecoder.java b/src/org/traccar/protocol/TmgProtocolDecoder.java
index 2f2dddf60..beb2b0b78 100644
--- a/src/org/traccar/protocol/TmgProtocolDecoder.java
+++ b/src/org/traccar/protocol/TmgProtocolDecoder.java
@@ -35,7 +35,7 @@ public class TmgProtocolDecoder extends BaseProtocolDecoder {
private static final Pattern PATTERN = new PatternBuilder()
.text("$")
- .expression("...,") // type
+ .expression("(...),") // type
.expression("[LH],") // history
.number("(d+),") // imei
.number("(dd)(dd)(dddd),") // date
@@ -53,7 +53,7 @@ public class TmgProtocolDecoder extends BaseProtocolDecoder {
.number("d+,") // visible satellites
.number("[^,]*,") // operator
.number("d+,") // rssi
- .number("x+,") // cid
+ .number("[^,]*,") // cid
.expression("([01]),") // ignition
.number("(d+.?d*),") // battery
.number("(d+.?d*),") // power
@@ -72,6 +72,8 @@ public class TmgProtocolDecoder extends BaseProtocolDecoder {
return null;
}
+ String type = parser.next();
+
DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, parser.next());
if (deviceSession == null) {
return null;
@@ -81,6 +83,31 @@ public class TmgProtocolDecoder extends BaseProtocolDecoder {
position.setProtocol(getProtocolName());
position.setDeviceId(deviceSession.getDeviceId());
+ switch (type) {
+ case "rmv":
+ position.set(Position.KEY_ALARM, Position.ALARM_POWER_CUT);
+ break;
+ case "ebl":
+ position.set(Position.KEY_ALARM, Position.ALARM_LOW_POWER);
+ break;
+ case "ibl":
+ position.set(Position.KEY_ALARM, Position.ALARM_LOW_BATTERY);
+ break;
+ case "tmp":
+ case "smt":
+ case "btt":
+ position.set(Position.KEY_ALARM, Position.ALARM_TAMPERING);
+ break;
+ case "ion":
+ position.set(Position.KEY_IGNITION, true);
+ break;
+ case "iof":
+ position.set(Position.KEY_IGNITION, false);
+ break;
+ default:
+ break;
+ }
+
DateBuilder dateBuilder = new DateBuilder()
.setDateReverse(parser.nextInt(), parser.nextInt(), parser.nextInt())
.setTime(parser.nextInt(), parser.nextInt(), parser.nextInt());