From 986912687a15f3d1376beae751a9160c3db5dc7a Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 8 May 2013 22:59:58 +1200 Subject: Add IO support for Teltonika (fix #143) --- .../traccar/protocol/TeltonikaProtocolDecoder.java | 29 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'src/org/traccar/protocol/TeltonikaProtocolDecoder.java') diff --git a/src/org/traccar/protocol/TeltonikaProtocolDecoder.java b/src/org/traccar/protocol/TeltonikaProtocolDecoder.java index 4d9e72588..a7bdf6132 100644 --- a/src/org/traccar/protocol/TeltonikaProtocolDecoder.java +++ b/src/org/traccar/protocol/TeltonikaProtocolDecoder.java @@ -87,12 +87,31 @@ public class TeltonikaProtocolDecoder extends BaseProtocolDecoder { extendedInfo.set("event", buf.readUnsignedByte()); - // Skip IO data buf.readUnsignedByte(); // total IO data records - buf.skipBytes(buf.readUnsignedByte() * (1 + 1)); - buf.skipBytes(buf.readUnsignedByte() * (1 + 2)); - buf.skipBytes(buf.readUnsignedByte() * (1 + 4)); - buf.skipBytes(buf.readUnsignedByte() * (1 + 8)); + + // Read 1 byte data + int cnt = buf.readUnsignedByte(); + for (int j = 0; j < cnt; j++) { + extendedInfo.set("io" + buf.readUnsignedByte(), buf.readUnsignedByte()); + } + + // Read 2 byte data + cnt = buf.readUnsignedByte(); + for (int j = 0; j < cnt; j++) { + extendedInfo.set("io" + buf.readUnsignedByte(), buf.readUnsignedShort()); + } + + // Read 4 byte data + cnt = buf.readUnsignedByte(); + for (int j = 0; j < cnt; j++) { + extendedInfo.set("io" + buf.readUnsignedByte(), buf.readUnsignedInt()); + } + + // Read 8 byte data + cnt = buf.readUnsignedByte(); + for (int j = 0; j < cnt; j++) { + extendedInfo.set("io" + buf.readUnsignedByte(), buf.readLong()); + } position.setExtendedInfo(extendedInfo.toString()); positions.add(position); -- cgit v1.2.3