diff options
author | Anton Tananaev <anton@traccar.org> | 2022-12-20 16:25:24 -0800 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2022-12-20 16:25:24 -0800 |
commit | b9cc31bf3ab278df45fa90f6481f929e325326f0 (patch) | |
tree | e8638563e4bbf936d9c29e91012d9429bb6c8df6 /src | |
parent | 0a8273d87ab5fd4270aab6000d6cefa1472bb024 (diff) | |
download | trackermap-server-b9cc31bf3ab278df45fa90f6481f929e325326f0.tar.gz trackermap-server-b9cc31bf3ab278df45fa90f6481f929e325326f0.tar.bz2 trackermap-server-b9cc31bf3ab278df45fa90f6481f929e325326f0.zip |
Improve MD500S decoding
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/org/traccar/protocol/MeitrackProtocolDecoder.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/main/java/org/traccar/protocol/MeitrackProtocolDecoder.java b/src/main/java/org/traccar/protocol/MeitrackProtocolDecoder.java index 1935b2c2a..82c8f0087 100644 --- a/src/main/java/org/traccar/protocol/MeitrackProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/MeitrackProtocolDecoder.java @@ -524,12 +524,19 @@ public class MeitrackProtocolDecoder extends BaseProtocolDecoder { paramCount = buf.readUnsignedByte(); for (int j = 0; j < paramCount; j++) { - if (buf.getUnsignedByte(buf.readerIndex()) == 0xFE) { - buf.readUnsignedShort(); // extension id - } else { - buf.readUnsignedByte(); // id + boolean extension = buf.getUnsignedByte(buf.readerIndex()) == 0xFE; + int id = extension ? buf.readUnsignedShort() : buf.readUnsignedByte(); + int length = buf.readUnsignedByte(); + switch (id) { + case 0xFE31: + buf.readUnsignedByte(); // alarm protocol + buf.readUnsignedByte(); // alarm type + buf.skipBytes(length - 2); + break; + default: + buf.skipBytes(length); + break; } - buf.skipBytes(buf.readUnsignedByte()); // value } positions.add(position); |