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/Mta6ProtocolDecoder.java | 83 +++++++++-------------- 1 file changed, 32 insertions(+), 51 deletions(-) (limited to 'src/org/traccar/protocol/Mta6ProtocolDecoder.java') diff --git a/src/org/traccar/protocol/Mta6ProtocolDecoder.java b/src/org/traccar/protocol/Mta6ProtocolDecoder.java index 749c01393..108e74963 100644 --- a/src/org/traccar/protocol/Mta6ProtocolDecoder.java +++ b/src/org/traccar/protocol/Mta6ProtocolDecoder.java @@ -34,6 +34,7 @@ import org.traccar.BaseProtocolDecoder; import org.traccar.ServerManager; import org.traccar.helper.ChannelBufferTools; import org.traccar.helper.Log; +import org.traccar.model.ExtendedInfoFormatter; import org.traccar.model.Position; public class Mta6ProtocolDecoder extends BaseProtocolDecoder { @@ -128,7 +129,7 @@ public class Mta6ProtocolDecoder extends BaseProtocolDecoder { while (buf.readable()) { Position position = new Position(); position.setDeviceId(deviceId); - StringBuilder extendedInfo = new StringBuilder("mta6"); + ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter("mta6"); short flags = buf.readUnsignedByte(); @@ -162,50 +163,40 @@ public class Mta6ProtocolDecoder extends BaseProtocolDecoder { } if (checkBit(flags, 3)) { - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort()); - extendedInfo.append(""); + extendedInfo.set("milage", buf.readUnsignedShort()); } if (checkBit(flags, 4)) { - extendedInfo.append("").append(buf.readUnsignedInt()).append(""); - extendedInfo.append("").append(buf.readUnsignedInt()).append(""); - extendedInfo.append("").append(buf.readUnsignedShort()).append(""); - extendedInfo.append("").append(buf.readUnsignedShort()).append(""); + extendedInfo.set("fuel1", buf.readUnsignedInt()); + extendedInfo.set("fuel2", buf.readUnsignedInt()); + extendedInfo.set("hours1", buf.readUnsignedShort()); + extendedInfo.set("hours2", buf.readUnsignedShort()); } if (checkBit(flags, 5)) { - extendedInfo.append("").append(buf.readUnsignedShort() & 0x03ff).append(""); - extendedInfo.append("").append(buf.readUnsignedShort() & 0x03ff).append(""); - extendedInfo.append("").append(buf.readUnsignedShort() & 0x03ff).append(""); - extendedInfo.append("").append(buf.readUnsignedShort() & 0x03ff).append(""); + extendedInfo.set("adc1", buf.readUnsignedShort() & 0x03ff); + extendedInfo.set("adc2", buf.readUnsignedShort() & 0x03ff); + extendedInfo.set("adc3", buf.readUnsignedShort() & 0x03ff); + extendedInfo.set("adc4", buf.readUnsignedShort() & 0x03ff); } if (checkBit(flags, 6)) { - extendedInfo.append(""); - extendedInfo.append(buf.readByte()); - extendedInfo.append(""); + extendedInfo.set("temperature", buf.readByte()); buf.getUnsignedByte(buf.readerIndex()); // control (>> 4) - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort() & 0x0fff); - extendedInfo.append(""); + extendedInfo.set("sensor", buf.readUnsignedShort() & 0x0fff); buf.readUnsignedShort(); // old sensor state (& 0x0fff) } if (checkBit(flags, 7)) { - extendedInfo.append(""); - extendedInfo.append(buf.getUnsignedByte(buf.readerIndex()) >> 2); - extendedInfo.append(""); + extendedInfo.set("battery", buf.getUnsignedByte(buf.readerIndex()) >> 2); position.setPower((double) (buf.readUnsignedShort() & 0x03ff)); buf.readByte(); // microcontroller temperature - extendedInfo.append(""); - extendedInfo.append((buf.getUnsignedByte(buf.readerIndex()) >> 4) & 0x07); - extendedInfo.append(""); + extendedInfo.set("gsm", (buf.getUnsignedByte(buf.readerIndex()) >> 4) & 0x07); int satellites = buf.readUnsignedByte() & 0x0f; position.setValid(satellites >= 3); - extendedInfo.append("").append(satellites).append(""); + extendedInfo.set("satellites", satellites); } position.setExtendedInfo(extendedInfo.toString()); @@ -220,7 +211,7 @@ public class Mta6ProtocolDecoder extends BaseProtocolDecoder { private Position parseFormatA1(ChannelBuffer buf, long deviceId) { Position position = new Position(); position.setDeviceId(deviceId); - StringBuilder extendedInfo = new StringBuilder("mta6can"); + ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter("mta6"); short flags = buf.readUnsignedByte(); @@ -246,56 +237,46 @@ public class Mta6ProtocolDecoder extends BaseProtocolDecoder { position.setAltitude((double) buf.readUnsignedShort()); position.setSpeed((double) buf.readUnsignedByte()); position.setCourse((double) buf.readByte()); - extendedInfo.append(""); - extendedInfo.append(new FloatReader().readFloat(buf)); - extendedInfo.append(""); + extendedInfo.set("milage", new FloatReader().readFloat(buf)); } if (checkBit(flags, 1)) { new FloatReader().readFloat(buf); // fuel consumtion - extendedInfo.append("").append(new FloatReader().readFloat(buf)).append(""); - extendedInfo.append("").append(buf.readUnsignedByte() * 0.4).append(""); + extendedInfo.set("hours", new FloatReader().readFloat(buf)); + extendedInfo.set("tank", buf.readUnsignedByte() * 0.4); } if (checkBit(flags, 2)) { - extendedInfo.append("").append(buf.readUnsignedShort() * 0.125).append(""); - extendedInfo.append("").append(buf.readUnsignedByte()).append(""); - extendedInfo.append("").append(buf.readUnsignedByte() - 40).append(""); + extendedInfo.set("engine", buf.readUnsignedShort() * 0.125); + extendedInfo.set("pedals", buf.readUnsignedByte()); + extendedInfo.set("temperature", buf.readUnsignedByte() - 40); buf.readUnsignedShort(); // service milage } if (checkBit(flags, 3)) { - extendedInfo.append("").append(buf.readUnsignedShort()).append(""); - extendedInfo.append("").append(buf.readUnsignedShort()).append(""); - extendedInfo.append("").append(buf.readUnsignedShort()).append(""); - extendedInfo.append("").append(buf.readUnsignedShort()).append(""); + extendedInfo.set("fuel", buf.readUnsignedShort()); + extendedInfo.set("adc2", buf.readUnsignedShort()); + extendedInfo.set("adc3", buf.readUnsignedShort()); + extendedInfo.set("adc4", buf.readUnsignedShort()); } if (checkBit(flags, 4)) { - extendedInfo.append(""); - extendedInfo.append(buf.readByte()); - extendedInfo.append(""); + extendedInfo.set("temperature", buf.readByte()); buf.getUnsignedByte(buf.readerIndex()); // control (>> 4) - extendedInfo.append(""); - extendedInfo.append(buf.readUnsignedShort() & 0x0fff); - extendedInfo.append(""); + extendedInfo.set("sensor", buf.readUnsignedShort() & 0x0fff); buf.readUnsignedShort(); // old sensor state (& 0x0fff) } if (checkBit(flags, 5)) { - extendedInfo.append(""); - extendedInfo.append(buf.getUnsignedByte(buf.readerIndex()) >> 2); - extendedInfo.append(""); + extendedInfo.set("battery", buf.getUnsignedByte(buf.readerIndex()) >> 2); position.setPower((double) (buf.readUnsignedShort() & 0x03ff)); buf.readByte(); // microcontroller temperature - extendedInfo.append(""); - extendedInfo.append(buf.getUnsignedByte(buf.readerIndex()) >> 5); - extendedInfo.append(""); + extendedInfo.set("gsm", buf.getUnsignedByte(buf.readerIndex()) >> 5); int satellites = buf.readUnsignedByte() & 0x1f; position.setValid(satellites >= 3); - extendedInfo.append("").append(satellites).append(""); + extendedInfo.set("satellites", satellites); } // TODO: process other data -- cgit v1.2.3