From 53494de4e41e1c4d4440c9afc0c4a9dfa6480558 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 28 Sep 2013 13:40:00 +1200 Subject: Remove optional fields --- src/org/traccar/protocol/NavisProtocolDecoder.java | 37 ++++++++++++++++------ 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'src/org/traccar/protocol/NavisProtocolDecoder.java') diff --git a/src/org/traccar/protocol/NavisProtocolDecoder.java b/src/org/traccar/protocol/NavisProtocolDecoder.java index 9de70595a..70a76a2f5 100644 --- a/src/org/traccar/protocol/NavisProtocolDecoder.java +++ b/src/org/traccar/protocol/NavisProtocolDecoder.java @@ -62,8 +62,26 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { } return false; } + + private class ParseResult { + private long id; + private Position position; + + public ParseResult(long id, Position position) { + this.id = id; + this.position = position; + } + + public long getId() { + return id; + } + + public Position getPosition() { + return position; + } + } - private Position parsePosition(ChannelBuffer buf) { + private ParseResult parsePosition(ChannelBuffer buf) { Position position = new Position(); ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter("navis"); @@ -79,7 +97,8 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { } extendedInfo.set("format", format); - position.setId(buf.readUnsignedInt()); // sequence number + long index = buf.readUnsignedInt(); + extendedInfo.set("index", index); // Event type extendedInfo.set("event", buf.readUnsignedShort()); @@ -118,7 +137,7 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { extendedInfo.set("input", buf.readUnsignedByte()); } - position.setPower(buf.readUnsignedShort() / 1000.0); // power + extendedInfo.set("power", buf.readUnsignedShort() / 1000.0); // Battery power extendedInfo.set("battery", buf.readUnsignedShort()); @@ -195,23 +214,23 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { // Extended info position.setExtendedInfo(extendedInfo.toString()); - return position; + return new ParseResult(index, position); } private Object processSingle(Channel channel, ChannelBuffer buf) { - Position position = parsePosition(buf); + ParseResult result = parsePosition(buf); ChannelBuffer response = ChannelBuffers.dynamicBuffer(ByteOrder.LITTLE_ENDIAN, 8); response.writeBytes(ChannelBuffers.copiedBuffer(ByteOrder.LITTLE_ENDIAN, "*