From b9d6befdbcc1a56c87d14066d67da574762d81bc Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 5 May 2015 12:18:30 +1200 Subject: Fix Tytan extra data decoding --- src/org/traccar/protocol/TytanProtocolDecoder.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/org/traccar/protocol') diff --git a/src/org/traccar/protocol/TytanProtocolDecoder.java b/src/org/traccar/protocol/TytanProtocolDecoder.java index 5d8abd9ae..49757d7b0 100644 --- a/src/org/traccar/protocol/TytanProtocolDecoder.java +++ b/src/org/traccar/protocol/TytanProtocolDecoder.java @@ -17,9 +17,7 @@ package org.traccar.protocol; import java.net.SocketAddress; import java.nio.charset.Charset; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; +import java.util.*; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; @@ -96,6 +94,7 @@ public class TytanProtocolDecoder extends BaseProtocolDecoder { } while (buf.readerIndex() < end) { + int x = buf.getUnsignedByte(buf.readerIndex()); switch (buf.readUnsignedByte()) { case 2: position.set(Event.KEY_ODOMETER, buf.readUnsignedMedium()); @@ -107,7 +106,7 @@ public class TytanProtocolDecoder extends BaseProtocolDecoder { position.set(Event.KEY_INPUT, buf.readUnsignedByte()); break; case 6: - buf.readUnsignedShort(); + buf.readUnsignedByte(); position.set(Event.PREFIX_ADC + 1, buf.readFloat()); break; case 7: @@ -126,8 +125,17 @@ public class TytanProtocolDecoder extends BaseProtocolDecoder { buf.skipBytes(9); break; case 24: - buf.readUnsignedByte(); - position.set(Event.PREFIX_TEMP + 1, buf.readUnsignedByte()); + Set temps = new LinkedHashSet(); + int temp = buf.readUnsignedByte(); + for (int i = 3; i >= 0; i--) { + int n = (temp >> (2 * i)) & 0x03; + if (!temps.contains(n)) { + temps.add(n); + } + } + for (int n : temps) { + position.set(Event.PREFIX_TEMP + n, buf.readUnsignedByte()); + } break; case 25: buf.readUnsignedByte(); -- cgit v1.2.3