diff options
Diffstat (limited to 'src/org/traccar/protocol/Pt502FrameDecoder.java')
-rw-r--r-- | src/org/traccar/protocol/Pt502FrameDecoder.java | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/org/traccar/protocol/Pt502FrameDecoder.java b/src/org/traccar/protocol/Pt502FrameDecoder.java index 4d3e9b4d5..9c7989446 100644 --- a/src/org/traccar/protocol/Pt502FrameDecoder.java +++ b/src/org/traccar/protocol/Pt502FrameDecoder.java @@ -15,20 +15,20 @@ */ package org.traccar.protocol; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; +import io.netty.buffer.ByteBuf; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import org.traccar.BaseFrameDecoder; import java.nio.charset.StandardCharsets; -public class Pt502FrameDecoder extends FrameDecoder { +public class Pt502FrameDecoder extends BaseFrameDecoder { private static final int BINARY_HEADER = 5; @Override protected Object decode( - ChannelHandlerContext ctx, Channel channel, ChannelBuffer buf) throws Exception { + ChannelHandlerContext ctx, Channel channel, ByteBuf buf) throws Exception { if (buf.readableBytes() < 10) { return null; @@ -37,10 +37,10 @@ public class Pt502FrameDecoder extends FrameDecoder { if (buf.getUnsignedByte(buf.readerIndex()) == 0xbf && buf.toString(buf.readerIndex() + BINARY_HEADER, 4, StandardCharsets.US_ASCII).equals("$PHD")) { - int length = buf.getUnsignedShort(buf.readerIndex() + 3); + int length = buf.getUnsignedShortLE(buf.readerIndex() + 3); if (buf.readableBytes() >= length) { buf.skipBytes(BINARY_HEADER); - ChannelBuffer result = buf.readBytes(length - BINARY_HEADER - 2); + ByteBuf result = buf.readBytes(length - BINARY_HEADER - 2); buf.skipBytes(2); // line break return result; } @@ -57,8 +57,8 @@ public class Pt502FrameDecoder extends FrameDecoder { } if (index > 0) { - ChannelBuffer result = buf.readBytes(index - buf.readerIndex()); - while (buf.readable() + ByteBuf result = buf.readBytes(index - buf.readerIndex()); + while (buf.isReadable() && (buf.getByte(buf.readerIndex()) == '\r' || buf.getByte(buf.readerIndex()) == '\n')) { buf.skipBytes(1); } |