aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar')
-rw-r--r--src/org/traccar/protocol/NavisProtocolDecoder.java13
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));
}