aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java22
1 files changed, 10 insertions, 12 deletions
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<ByteBuf> {
@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);
}
}
}