aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/traccar/protocol/StartekProtocolDecoder.java9
-rw-r--r--src/test/java/org/traccar/protocol/StartekProtocolDecoderTest.java5
2 files changed, 12 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/protocol/StartekProtocolDecoder.java b/src/main/java/org/traccar/protocol/StartekProtocolDecoder.java
index d7a1c932f..1cc69c6e6 100644
--- a/src/main/java/org/traccar/protocol/StartekProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/StartekProtocolDecoder.java
@@ -43,7 +43,7 @@ public class StartekProtocolDecoder extends BaseProtocolDecoder {
.number("(d+),") // imei
.number("xxx,") // command
.number("(d+),") // event
- .expression("[^,]*,") // event data
+ .expression("([^,]+)?,") // event data
.number("(dd)(dd)(dd)") // date (yyymmdd)
.number("(dd)(dd)(dd),") // time (hhmmss)
.expression("([AV]),") // valid
@@ -106,8 +106,13 @@ public class StartekProtocolDecoder extends BaseProtocolDecoder {
position.setDeviceId(deviceSession.getDeviceId());
int event = parser.nextInt();
- position.set(Position.KEY_ALARM, decodeAlarm(event));
+ String eventData = parser.next();
position.set(Position.KEY_EVENT, event);
+ if (event == 53) {
+ position.set(Position.KEY_DRIVER_UNIQUE_ID, eventData);
+ } else {
+ position.set(Position.KEY_ALARM, decodeAlarm(event));
+ }
position.setTime(parser.nextDateTime());
position.setValid(parser.next().equals("A"));
diff --git a/src/test/java/org/traccar/protocol/StartekProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/StartekProtocolDecoderTest.java
index 2b880a884..802d65ab9 100644
--- a/src/test/java/org/traccar/protocol/StartekProtocolDecoderTest.java
+++ b/src/test/java/org/traccar/protocol/StartekProtocolDecoderTest.java
@@ -2,6 +2,7 @@ package org.traccar.protocol;
import org.junit.Test;
import org.traccar.ProtocolTest;
+import org.traccar.model.Position;
public class StartekProtocolDecoderTest extends ProtocolTest {
@@ -10,6 +11,10 @@ public class StartekProtocolDecoderTest extends ProtocolTest {
var decoder = new StartekProtocolDecoder(null);
+ verifyAttribute(decoder, text(
+ "&&a152,860262050010565,000,53,8F5300,210528015706,A,-38.229746,145.043446,6,1.5,0,285,84,2102994,505|1|306E|082D6101,31,0000003D,02,02,04C0|01A0|0000|0000,1,,DC"),
+ Position.KEY_DRIVER_UNIQUE_ID, "8F5300");
+
verifyPosition(decoder, text(
"&&>141,860262050010565,000,36,,210407094323,V,-38.229711,145.043161,0,0.0,0,0,0,14222,505|1|306E|082D6115,24,00000039,00,00,04C0|0164|0000|0000,1,,41"));