diff options
Diffstat (limited to 'src/main/java/org/traccar/protocol/KhdProtocolDecoder.java')
-rw-r--r-- | src/main/java/org/traccar/protocol/KhdProtocolDecoder.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/protocol/KhdProtocolDecoder.java b/src/main/java/org/traccar/protocol/KhdProtocolDecoder.java index 251351a74..a14f9b8a4 100644 --- a/src/main/java/org/traccar/protocol/KhdProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/KhdProtocolDecoder.java @@ -162,7 +162,13 @@ public class KhdProtocolDecoder extends BaseProtocolDecoder { if (type != MSG_ALARM) { - position.set(Position.KEY_ODOMETER, buf.readUnsignedMedium()); + int odometer = buf.readUnsignedMedium(); + if (BitUtil.to(odometer, 16) > 0) { + position.set(Position.KEY_ODOMETER, odometer); + } else if (odometer > 0) { + position.set(Position.KEY_FUEL_LEVEL, BitUtil.from(odometer, 16)); + } + position.set(Position.KEY_STATUS, buf.readUnsignedInt()); buf.readUnsignedShort(); @@ -172,7 +178,7 @@ public class KhdProtocolDecoder extends BaseProtocolDecoder { buf.readUnsignedByte(); buf.readUnsignedByte(); - position.set(Position.KEY_RESULT, buf.readUnsignedByte()); + position.set(Position.KEY_RESULT, String.valueOf(buf.readUnsignedByte())); if (type == MSG_PERIPHERAL) { |