diff options
Diffstat (limited to 'src/org/traccar/protocol/H02ProtocolDecoder.java')
-rw-r--r-- | src/org/traccar/protocol/H02ProtocolDecoder.java | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/src/org/traccar/protocol/H02ProtocolDecoder.java b/src/org/traccar/protocol/H02ProtocolDecoder.java index c2a3b2b09..37f6294be 100644 --- a/src/org/traccar/protocol/H02ProtocolDecoder.java +++ b/src/org/traccar/protocol/H02ProtocolDecoder.java @@ -66,19 +66,18 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder { } private void processStatus(Position position, long status) { - if (!BitUtil.check(status, 0) || !BitUtil.check(status, 1) - || !BitUtil.check(status, 2)) { - - if (!BitUtil.check(status, 0)) { - position.set(Position.KEY_ALARM, Position.ALARM_VIBRATION); - } else if (!BitUtil.check(status, 1)) { - position.set(Position.KEY_ALARM, Position.ALARM_SOS); - } else if (!BitUtil.check(status, 2)) { - position.set(Position.KEY_ALARM, Position.ALARM_OVERSPEED); - } + + if (!BitUtil.check(status, 0)) { + position.set(Position.KEY_ALARM, Position.ALARM_VIBRATION); + } else if (!BitUtil.check(status, 1)) { + position.set(Position.KEY_ALARM, Position.ALARM_SOS); + } else if (!BitUtil.check(status, 2)) { + position.set(Position.KEY_ALARM, Position.ALARM_OVERSPEED); } + position.set(Position.KEY_IGNITION, !BitUtil.check(status, 10)); position.set(Position.KEY_STATUS, status); + } private String decodeBattery(int value) { @@ -245,16 +244,6 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder { processStatus(position, parser.nextLong(16)); - if (parser.hasNext(4)) { - int mcc = parser.nextInt(16); - int mnc = parser.nextInt(16); - int lac = parser.nextInt(16); - int cid = parser.nextInt(16); - if (mcc != 0 && mnc != 0 && lac != 0 && cid != 0) { - position.setNetwork(new Network(CellTower.from(mcc, mnc, lac, cid))); - } - } - return position; } @@ -305,20 +294,20 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder { ChannelBuffer buf = (ChannelBuffer) msg; String marker = buf.toString(0, 1, StandardCharsets.US_ASCII); - if (marker.equals("*")) { - String sentence = buf.toString(StandardCharsets.US_ASCII); - if (sentence.contains(",NBR,")) { - return decodeLbs(sentence, channel, remoteAddress); - } else { - return decodeText(sentence, channel, remoteAddress); - } - } else if (marker.equals("$")) { - return decodeBinary(buf, channel, remoteAddress); - } else if (marker.equals("X")) { - return null; // X mode + switch (marker) { + case "*": + String sentence = buf.toString(StandardCharsets.US_ASCII); + if (sentence.contains(",NBR,")) { + return decodeLbs(sentence, channel, remoteAddress); + } else { + return decodeText(sentence, channel, remoteAddress); + } + case "$": + return decodeBinary(buf, channel, remoteAddress); + case "X": + default: + return null; } - - return null; } } |