aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2019-09-28 14:15:23 -0700
committerAnton Tananaev <anton.tananaev@gmail.com>2019-09-28 14:15:23 -0700
commit95d9122a4f5ac22ea25d2eb555beab11fd2c3408 (patch)
tree312bb2c82988f529e4680859c66900e70a8c18c4 /src
parentfa99ec021a056dfb953b29a23e8b02c13fa1267e (diff)
downloadtraccar-server-95d9122a4f5ac22ea25d2eb555beab11fd2c3408.tar.gz
traccar-server-95d9122a4f5ac22ea25d2eb555beab11fd2c3408.tar.bz2
traccar-server-95d9122a4f5ac22ea25d2eb555beab11fd2c3408.zip
Implement ACK message
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/traccar/protocol/RstProtocolDecoder.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/main/java/org/traccar/protocol/RstProtocolDecoder.java b/src/main/java/org/traccar/protocol/RstProtocolDecoder.java
index 7b6d2f042..071200d6d 100644
--- a/src/main/java/org/traccar/protocol/RstProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/RstProtocolDecoder.java
@@ -18,6 +18,7 @@ package org.traccar.protocol;
import io.netty.channel.Channel;
import org.traccar.BaseProtocolDecoder;
import org.traccar.DeviceSession;
+import org.traccar.NetworkMessage;
import org.traccar.Protocol;
import org.traccar.helper.Parser;
import org.traccar.helper.PatternBuilder;
@@ -35,12 +36,12 @@ public class RstProtocolDecoder extends BaseProtocolDecoder {
private static final Pattern PATTERN = new PatternBuilder()
.text("RST;")
- .expression("[AL];")
- .expression("[^,]+;") // model
- .expression(".{5};") // firmware
+ .expression("([AL]);") // archive
+ .expression("([^,]+);") // model
+ .expression("(.{5});") // firmware
.number("(d{9});") // serial number
- .number("d+;") // index
- .number("d+;") // type
+ .number("(d+);") // index
+ .number("(d+);") // type
.number("(dd)-(dd)-(dddd) ") // event date
.number("(dd):(dd):(dd);") // event time
.number("(dd)-(dd)-(dddd) ") // fix date
@@ -78,7 +79,19 @@ public class RstProtocolDecoder extends BaseProtocolDecoder {
return null;
}
- DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, parser.next());
+ String archive = parser.next();
+ String model = parser.next();
+ String firmware = parser.next();
+ String serial = parser.next();
+ int index = parser.nextInt();
+ int type = parser.nextInt();
+
+ if (channel != null && archive.equals("A")) {
+ String response = "RST;A;" + model + ";" + firmware + ";" + serial + ";" + index + ";" + type + ";FIM;";
+ channel.writeAndFlush(new NetworkMessage(response, remoteAddress));
+ }
+
+ DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, serial);
if (deviceSession == null) {
return null;
}