From 81beb5afb946d8c9ccfa2bbdfcfe884771a5bd3b Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 2 May 2013 22:16:14 +1200 Subject: Fix extended info XML format --- src/org/traccar/protocol/NavisProtocolDecoder.java | 76 ++++++---------------- 1 file changed, 19 insertions(+), 57 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 1c384969d..9de70595a 100644 --- a/src/org/traccar/protocol/NavisProtocolDecoder.java +++ b/src/org/traccar/protocol/NavisProtocolDecoder.java @@ -28,11 +28,9 @@ import org.jboss.netty.channel.ChannelHandlerContext; import org.traccar.BaseProtocolDecoder; import org.traccar.ServerManager; import org.traccar.helper.Log; +import org.traccar.model.ExtendedInfoFormatter; import org.traccar.model.Position; -/** - * Navis protocol decoder - */ public class NavisProtocolDecoder extends BaseProtocolDecoder { private String prefix; @@ -43,9 +41,6 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { private String imei; private Long databaseDeviceId; - /** - * Initialize - */ public NavisProtocolDecoder(ServerManager serverManager) { super(serverManager); } @@ -70,7 +65,7 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { private Position parsePosition(ChannelBuffer buf) { Position position = new Position(); - StringBuilder extendedInfo = new StringBuilder("navis"); + ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter("navis"); position.setDeviceId(databaseDeviceId); position.setAltitude(0.0); @@ -82,16 +77,12 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { } else { format = buf.readUnsignedByte(); } - extendedInfo.append(""); - extendedInfo.append(format); - extendedInfo.append(""); + extendedInfo.set("format", format); position.setId(buf.readUnsignedInt()); // sequence number // Event type - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort()); - extendedInfo.append(""); + extendedInfo.set("event", buf.readUnsignedShort()); // Event time Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC")); @@ -102,67 +93,44 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { time.set(Calendar.DAY_OF_MONTH, buf.readUnsignedByte()); time.set(Calendar.MONTH, buf.readUnsignedByte()); time.set(Calendar.YEAR, 2000 + buf.readUnsignedByte()); - extendedInfo.append(""); + extendedInfo.set("time", time.getTimeInMillis()); // Alarm status - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedByte()); - extendedInfo.append(""); + extendedInfo.set("alarm", buf.readUnsignedByte()); // Modules status - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedByte()); - extendedInfo.append(""); + extendedInfo.set("status", buf.readUnsignedByte()); // GSM signal - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedByte()); - extendedInfo.append(""); + extendedInfo.set("gsm", buf.readUnsignedByte()); // Output - extendedInfo.append(""); if (isFormat(format, F10, F20, F30)) { - extendedInfo.append(buf.readUnsignedShort()); + extendedInfo.set("output", buf.readUnsignedShort()); } else if (isFormat(format, F40, F50, F51, F52)) { - extendedInfo.append(buf.readUnsignedByte()); + extendedInfo.set("output", buf.readUnsignedByte()); } - extendedInfo.append(""); // Input - extendedInfo.append(""); if (isFormat(format, F10, F20, F30, F40)) { - extendedInfo.append(buf.readUnsignedShort()); + extendedInfo.set("input", buf.readUnsignedShort()); } else if (isFormat(format, F50, F51, F52)) { - extendedInfo.append(buf.readUnsignedByte()); + extendedInfo.set("input", buf.readUnsignedByte()); } - extendedInfo.append(""); position.setPower(buf.readUnsignedShort() / 1000.0); // power // Battery power - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort()); - extendedInfo.append(""); + extendedInfo.set("battery", buf.readUnsignedShort()); // Temperature if (isFormat(format, F10, F20, F30)) { - extendedInfo.append(""); - extendedInfo.append(buf.readShort()); - extendedInfo.append(""); + extendedInfo.set("temperature", buf.readShort()); } if (isFormat(format, F10, F20, F50, F52)) { - // ADC 1 - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort()); - extendedInfo.append(""); - - // ADC 2 - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort()); - extendedInfo.append(""); + extendedInfo.set("adc1", buf.readUnsignedShort()); + extendedInfo.set("adc2", buf.readUnsignedShort()); } if (isFormat(format, F20, F50, F51, F52)) { @@ -193,14 +161,10 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { position.setCourse((double) buf.readUnsignedShort()); // Milage - extendedInfo.append(""); - extendedInfo.append(buf.readFloat()); - extendedInfo.append(""); + extendedInfo.set("milage", buf.readFloat()); // Last segment - extendedInfo.append(""); - extendedInfo.append(buf.readFloat()); - extendedInfo.append(""); + extendedInfo.set("segment", buf.readFloat()); // Segment times buf.readUnsignedShort(); @@ -308,9 +272,7 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { } } - /** - * Decode message - */ + @Override protected Object decode( ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { -- cgit v1.2.3