aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2018-05-22 02:33:33 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2018-05-22 02:33:33 +1200
commitd87982ac9af60b505b045e499615bc6859bd86c5 (patch)
treea5b3f5a5aa04c72805017d745d82f108b77c8bb2 /src
parentc3f723397ff20562b1fc9ed385cb717084268ca6 (diff)
downloadtraccar-server-d87982ac9af60b505b045e499615bc6859bd86c5.tar.gz
traccar-server-d87982ac9af60b505b045e499615bc6859bd86c5.tar.bz2
traccar-server-d87982ac9af60b505b045e499615bc6859bd86c5.zip
Support GL300 input change messages
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/protocol/Gl200TextProtocolDecoder.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/org/traccar/protocol/Gl200TextProtocolDecoder.java b/src/org/traccar/protocol/Gl200TextProtocolDecoder.java
index 232f4cdfb..323d5cc45 100644
--- a/src/org/traccar/protocol/Gl200TextProtocolDecoder.java
+++ b/src/org/traccar/protocol/Gl200TextProtocolDecoder.java
@@ -247,6 +247,21 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder {
.text("$").optional()
.compile();
+ private static final Pattern PATTERN_LSW = new PatternBuilder()
+ .text("+RESP:").expression("GT[LT]SW,")
+ .number("(?:[0-9A-Z]{2}xxxx)?,") // protocol version
+ .number("(d{15}|x{14}),") // imei
+ .expression("[^,]*,") // device name
+ .number("[01],") // type
+ .number("([01]),") // state
+ .expression(PATTERN_LOCATION.pattern())
+ .number("(dddd)(dd)(dd)") // date (yyyymmdd)
+ .number("(dd)(dd)(dd)").optional(2) // time (hhmmss)
+ .text(",")
+ .number("(xxxx)") // count number
+ .text("$").optional()
+ .compile();
+
private static final Pattern PATTERN_IDA = new PatternBuilder()
.text("+RESP:GTIDA,")
.number("(?:[0-9A-Z]{2}xxxx)?,") // protocol version
@@ -837,6 +852,22 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder {
return position;
}
+ private Object decodeLsw(Channel channel, SocketAddress remoteAddress, String sentence) {
+ Parser parser = new Parser(PATTERN_LSW, sentence);
+ Position position = initPosition(parser, channel, remoteAddress);
+ if (position == null) {
+ return null;
+ }
+
+ position.set(Position.PREFIX_IN + (sentence.contains("LSW") ? 1 : 2), parser.nextInt() == 1);
+
+ decodeLocation(position, parser);
+
+ decodeDeviceTime(position, parser);
+
+ return position;
+ }
+
private Object decodeIda(Channel channel, SocketAddress remoteAddress, String sentence) {
Parser parser = new Parser(PATTERN_IDA, sentence);
Position position = initPosition(parser, channel, remoteAddress);
@@ -1051,6 +1082,10 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder {
case "IGF":
result = decodeIgn(channel, remoteAddress, sentence);
break;
+ case "LSW":
+ case "TSW":
+ result = decodeLsw(channel, remoteAddress, sentence);
+ break;
case "IDA":
result = decodeIda(channel, remoteAddress, sentence);
break;