From 04e482bd22029710fd512bfd7916781cd5c79495 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Fri, 8 Mar 2024 06:52:02 -0800 Subject: Fix Esky ES840 decoding --- src/test/java/org/traccar/protocol/EskyProtocolDecoderTest.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/test') diff --git a/src/test/java/org/traccar/protocol/EskyProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/EskyProtocolDecoderTest.java index feec3ebfb..26132eb4e 100644 --- a/src/test/java/org/traccar/protocol/EskyProtocolDecoderTest.java +++ b/src/test/java/org/traccar/protocol/EskyProtocolDecoderTest.java @@ -11,6 +11,9 @@ public class EskyProtocolDecoderTest extends ProtocolTest { var decoder = inject(new EskyProtocolDecoder(null)); + verifyPosition(decoder, text( + "ET;1;864431045310325;R;0+240303180628+-33.40958+149.56797+0.00+63+0xb+0+17814846+1168+0+0+WVWZZZ6RZFY242201+135+DTCNULL")); + verifyAttribute(decoder, text( "ET;0;860337031066546;R;9+200717114059+41.32053+19.80761+0.30+0+0x2+8+40381744+0+1409+11"), Position.KEY_BATTERY, 14.09); -- cgit v1.2.3 From 165a6c76e8127bae7bdf16a9e9a4a24247f1dec4 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Fri, 8 Mar 2024 21:26:09 -0800 Subject: Fix Huabao frame encoder --- .../org/traccar/protocol/HuabaoFrameEncoder.java | 22 ++++++++++------------ .../traccar/protocol/HuabaoFrameEncoderTest.java | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 src/test/java/org/traccar/protocol/HuabaoFrameEncoderTest.java (limited to 'src/test') diff --git a/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java b/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java index 808529a98..5e48a466a 100644 --- a/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java +++ b/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java @@ -24,20 +24,18 @@ public class HuabaoFrameEncoder extends MessageToByteEncoder { @Override protected void encode(ChannelHandlerContext ctx, ByteBuf msg, ByteBuf out) { + int startIndex = msg.readerIndex(); while (msg.isReadable()) { + int index = msg.readerIndex(); int b = msg.readUnsignedByte(); - switch (b) { - case 0x7d: - out.writeByte(0x7d); - out.writeByte(0x01); - break; - case 0x7e: - out.writeByte(0x7d); - out.writeByte(0x02); - break; - default: - out.writeByte(b); - break; + if (b == 0x7d) { + out.writeByte(0x7d); + out.writeByte(0x01); + } else if (b == 0x7e && index != startIndex && msg.isReadable()) { + out.writeByte(0x7d); + out.writeByte(0x02); + } else { + out.writeByte(b); } } } diff --git a/src/test/java/org/traccar/protocol/HuabaoFrameEncoderTest.java b/src/test/java/org/traccar/protocol/HuabaoFrameEncoderTest.java new file mode 100644 index 000000000..a2799e9a8 --- /dev/null +++ b/src/test/java/org/traccar/protocol/HuabaoFrameEncoderTest.java @@ -0,0 +1,21 @@ +package org.traccar.protocol; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import org.junit.jupiter.api.Test; +import org.traccar.ProtocolTest; + +public class HuabaoFrameEncoderTest extends ProtocolTest { + + @Test + public void testDecode() throws Exception { + + var encoder = new HuabaoFrameEncoder(); + + ByteBuf buf = Unpooled.buffer(); + encoder.encode(null, binary("7e307e087d557e"), buf); + verifyFrame(binary("7e307d02087d01557e"), buf); + + } + +} -- cgit v1.2.3