diff options
Diffstat (limited to 'src/org/traccar/protocol')
-rw-r--r-- | src/org/traccar/protocol/NavisProtocolDecoder.java | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/org/traccar/protocol/NavisProtocolDecoder.java b/src/org/traccar/protocol/NavisProtocolDecoder.java index 93e751012..4e5162b44 100644 --- a/src/org/traccar/protocol/NavisProtocolDecoder.java +++ b/src/org/traccar/protocol/NavisProtocolDecoder.java @@ -329,9 +329,6 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { position.setDeviceId(deviceSession.getDeviceId()); long index = 0; - int status = 0; - short input = 0; - short output = 0; for (int i = 0; i < flexBitfieldDataSize; i++) { if ((flexBitfield[(int) (i / 8)] & (0x80 >> i % 8)) == 0) { @@ -339,6 +336,10 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { continue; } + int status = 0; + short input = 0; + short output = 0; + switch (i) { case 0: index = buf.readUnsignedIntLE(); @@ -360,7 +361,7 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { break; case 5: int status2 = buf.readUnsignedByte(); - position.set(Position.KEY_STATUS, (short) ((status & 0xFF) | (status2 << 8))); + position.set(Position.KEY_STATUS, (short) ((status & 0xFF) | (status2 << 1))); break; case 6: position.set(Position.KEY_RSSI, buf.readUnsignedByte()); @@ -419,7 +420,7 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { break; case 29: short input2 = buf.readUnsignedByte(); - position.set(Position.KEY_INPUT, (short) ((input & 0xFF) | (input2 << 8))); + position.set(Position.KEY_INPUT, (short) ((input & 0xFF) | (input2 << 1))); for (int k = 0; k < 8; k++) { position.set(Position.PREFIX_IN + (k + 9), BitUtil.check(input2, k)); } @@ -433,7 +434,7 @@ public class NavisProtocolDecoder extends BaseProtocolDecoder { break; case 31: short output2 = buf.readUnsignedByte(); - position.set(Position.KEY_OUTPUT, (short) ((output & 0xFF) | (output2 << 8))); + position.set(Position.KEY_OUTPUT, (short) ((output & 0xFF) | (output2 << 1))); for (int k = 0; k < 8; k++) { position.set(Position.PREFIX_OUT + (k + 9), BitUtil.check(output2, k)); } |