aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Krey <krey.christoph@gmail.com>2017-06-29 13:10:16 +0200
committerChristoph Krey <krey.christoph@gmail.com>2017-06-29 13:10:16 +0200
commit42cf2358fefa5176a3c72478a778ae382c9e1836 (patch)
treeb93423c13affae784cd189e5100f84bb47d0e8d7
parenta24f48627b914b6a8fe60bc3b5f76abc4f6fc574 (diff)
downloadtrackermap-server-42cf2358fefa5176a3c72478a778ae382c9e1836.tar.gz
trackermap-server-42cf2358fefa5176a3c72478a778ae382c9e1836.tar.bz2
trackermap-server-42cf2358fefa5176a3c72478a778ae382c9e1836.zip
[FIX] Aplicom protocol does not ignore Alive messages #3305
-rw-r--r--src/org/traccar/protocol/AplicomFrameDecoder.java5
-rw-r--r--test/org/traccar/protocol/AplicomFrameDecoderTest.java24
-rw-r--r--test/org/traccar/protocol/AplicomProtocolDecoderTest.java4
3 files changed, 33 insertions, 0 deletions
diff --git a/src/org/traccar/protocol/AplicomFrameDecoder.java b/src/org/traccar/protocol/AplicomFrameDecoder.java
index 785d90767..e12848f8f 100644
--- a/src/org/traccar/protocol/AplicomFrameDecoder.java
+++ b/src/org/traccar/protocol/AplicomFrameDecoder.java
@@ -26,6 +26,11 @@ public class AplicomFrameDecoder extends FrameDecoder {
protected Object decode(
ChannelHandlerContext ctx, Channel channel, ChannelBuffer buf) throws Exception {
+ // Skip Alive message
+ while (buf.readableBytes() > 0 && Character.isDigit(buf.getByte(buf.readerIndex()))) {
+ buf.readByte();
+ }
+
// Check minimum length
if (buf.readableBytes() < 11) {
return null;
diff --git a/test/org/traccar/protocol/AplicomFrameDecoderTest.java b/test/org/traccar/protocol/AplicomFrameDecoderTest.java
new file mode 100644
index 000000000..e000674db
--- /dev/null
+++ b/test/org/traccar/protocol/AplicomFrameDecoderTest.java
@@ -0,0 +1,24 @@
+package org.traccar.protocol;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.traccar.ProtocolTest;
+
+public class AplicomFrameDecoderTest extends ProtocolTest {
+
+ @Test
+ public void testDecode() throws Exception {
+
+ AplicomFrameDecoder decoder = new AplicomFrameDecoder();
+
+ Assert.assertEquals(
+ binary("44C20146B710C158DA009500B09F7700C054CA0EA454CA0EA403BE0BF6015D706B070000142A600000000000000002434946010801000754CA0EA4000000000000008400000000000000000000000000000000300000FE00FE0000000000000000000000000000000000000000000000000000000000000000000040502035000000000000020D0000030D0000040C0000040D0000050C0000050D0000058C0000060C"),
+ decoder.decode(null, null, binary("33353733303030373030393233333644C20146B710C158DA009500B09F7700C054CA0EA454CA0EA403BE0BF6015D706B070000142A600000000000000002434946010801000754CA0EA4000000000000008400000000000000000000000000000000300000FE00FE0000000000000000000000000000000000000000000000000000000000000000000040502035000000000000020D0000030D0000040C0000040D0000050C0000050D0000058C0000060C")));
+
+ Assert.assertEquals(
+ binary("44C20146B710C158DA009500B09F7700C054CA0EA454CA0EA403BE0BF6015D706B070000142A600000000000000002434946010801000754CA0EA4000000000000008400000000000000000000000000000000300000FE00FE0000000000000000000000000000000000000000000000000000000000000000000040502035000000000000020D0000030D0000040C0000040D0000050C0000050D0000058C0000060C"),
+ decoder.decode(null, null, binary("44C20146B710C158DA009500B09F7700C054CA0EA454CA0EA403BE0BF6015D706B070000142A600000000000000002434946010801000754CA0EA4000000000000008400000000000000000000000000000000300000FE00FE0000000000000000000000000000000000000000000000000000000000000000000040502035000000000000020D0000030D0000040C0000040D0000050C0000050D0000058C0000060C")));
+
+ }
+
+}
diff --git a/test/org/traccar/protocol/AplicomProtocolDecoderTest.java b/test/org/traccar/protocol/AplicomProtocolDecoderTest.java
index 3c71e86b3..51002924d 100644
--- a/test/org/traccar/protocol/AplicomProtocolDecoderTest.java
+++ b/test/org/traccar/protocol/AplicomProtocolDecoderTest.java
@@ -8,6 +8,7 @@ public class AplicomProtocolDecoderTest extends ProtocolTest {
@Test
public void testDecode() throws Exception {
+ AplicomFrameDecoder frameDecoder = new AplicomFrameDecoder();
AplicomProtocolDecoder decoder = new AplicomProtocolDecoder(new AplicomProtocol());
verifyAttributes(decoder, binary(
@@ -70,6 +71,9 @@ public class AplicomProtocolDecoderTest extends ProtocolTest {
verifyPosition(decoder, binary(
"44C20146B710C158DA009500B09F7700C054CA0EA454CA0EA403BE0BF6015D706B070000142A600000000000000002434946010801000754CA0EA4000000000000008400000000000000000000000000000000300000FE00FE0000000000000000000000000000000000000000000000000000000000000000000040502035000000000000020D0000030D0000040C0000040D0000050C0000050D0000058C0000060C"));
+ verifyPosition(decoder, frameDecoder.decode(null, null,
+ binary("33353733303030373030393233333644C20146B710C158DA009500B09F7700C054CA0EA454CA0EA403BE0BF6015D706B070000142A600000000000000002434946010801000754CA0EA4000000000000008400000000000000000000000000000000300000FE00FE0000000000000000000000000000000000000000000000000000000000000000000040502035000000000000020D0000030D0000040C0000040D0000050C0000050D0000058C0000060C")));
+
}
}