diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-06-30 18:44:26 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-30 18:44:26 +1200 |
commit | 64501f3f846c62527bbc224f3fb031b9f708475f (patch) | |
tree | 5c994af9982a69223e78f8fd6d0044edf6b40f9f | |
parent | 2cf20c46afe59f6e98e629a6c88e74d7ab60b122 (diff) | |
parent | c12a28b811b3310eab5942e9c3650d50c2df1606 (diff) | |
download | trackermap-server-64501f3f846c62527bbc224f3fb031b9f708475f.tar.gz trackermap-server-64501f3f846c62527bbc224f3fb031b9f708475f.tar.bz2 trackermap-server-64501f3f846c62527bbc224f3fb031b9f708475f.zip |
Merge pull request #3306 from ckrey/Aplicom-fix
Ignore Aplicom Alive messages
-rw-r--r-- | src/org/traccar/protocol/AplicomFrameDecoder.java | 5 | ||||
-rw-r--r-- | test/org/traccar/protocol/AplicomFrameDecoderTest.java | 24 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/org/traccar/protocol/AplicomFrameDecoder.java b/src/org/traccar/protocol/AplicomFrameDecoder.java index 785d90767..24d55f1cf 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.readable() && 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"))); + + } + +} |