From 55a3404dd2d82666af8fe4fdfb81212874215879 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 6 Oct 2016 06:40:39 +1300 Subject: Fix problem with Ulbotech decoder --- src/org/traccar/protocol/UlbotechProtocolDecoder.java | 8 ++++---- test/org/traccar/protocol/UlbotechProtocolDecoderTest.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/org/traccar/protocol/UlbotechProtocolDecoder.java b/src/org/traccar/protocol/UlbotechProtocolDecoder.java index 9a951f770..ff41c9cc4 100644 --- a/src/org/traccar/protocol/UlbotechProtocolDecoder.java +++ b/src/org/traccar/protocol/UlbotechProtocolDecoder.java @@ -55,7 +55,7 @@ public class UlbotechProtocolDecoder extends BaseProtocolDecoder { private static final short DATA_RFID = 0x0E; private static final short DATA_EVENT = 0x10; - private void decodeObd(Position position, ChannelBuffer buf, short length) { + private void decodeObd(Position position, ChannelBuffer buf, int length) { int end = buf.readerIndex() + length; @@ -66,7 +66,7 @@ public class UlbotechProtocolDecoder extends BaseProtocolDecoder { } } - private void decodeJ1708(Position position, ChannelBuffer buf, short length) { + private void decodeJ1708(Position position, ChannelBuffer buf, int length) { int end = buf.readerIndex() + length; @@ -166,8 +166,8 @@ public class UlbotechProtocolDecoder extends BaseProtocolDecoder { while (buf.readableBytes() > 3) { - short type = buf.readUnsignedByte(); - short length = buf.readUnsignedByte(); + int type = buf.readUnsignedByte(); + int length = type == DATA_CANBUS ? buf.readUnsignedShort() : buf.readUnsignedByte(); switch (type) { diff --git a/test/org/traccar/protocol/UlbotechProtocolDecoderTest.java b/test/org/traccar/protocol/UlbotechProtocolDecoderTest.java index a73845b87..2c271976e 100644 --- a/test/org/traccar/protocol/UlbotechProtocolDecoderTest.java +++ b/test/org/traccar/protocol/UlbotechProtocolDecoderTest.java @@ -10,8 +10,8 @@ public class UlbotechProtocolDecoderTest extends ProtocolTest { UlbotechProtocolDecoder decoder = new UlbotechProtocolDecoder(new UlbotechProtocol()); - /*verifyPosition(decoder, binary( - "f8010103515810532780699f7e2e3f010e015ee4c906bde45c00000000008b0304004000000404002c776005060373193622110b00240b00fee8ffff807dffff606d0b00fee9af000000af0000000b00feee7d78807dffffffff100101cc2af8"));*/ + verifyPosition(decoder, binary( + "f8010103515810532780699f7e2e3f010e015ee4c906bde45c00000000008b0304004000000404002c776005060373193622110b00240b00fee8ffff807dffff606d0b00fee9af000000af0000000b00feee7d78807dffffffff100101cc2af8")); verifyPosition(decoder, binary( "F8010103596580420045259CFB3329010E015ED91506BDE5A800000000009E030402420000040400492AA405060344197E220D071131058F410C1591310D48312F8F413107C60804027666B00C138254D182607A826EE083BE554385F50019423CAD1DF8")); -- cgit v1.2.3