aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/protocol/WialonProtocolDecoder.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/org/traccar/protocol/WialonProtocolDecoder.java b/src/org/traccar/protocol/WialonProtocolDecoder.java
index 6ed597d2f..db9f7b1f6 100644
--- a/src/org/traccar/protocol/WialonProtocolDecoder.java
+++ b/src/org/traccar/protocol/WialonProtocolDecoder.java
@@ -47,7 +47,7 @@ public class WialonProtocolDecoder extends BaseProtocolDecoder {
"(\\d+\\.?\\d*);" + // Speed
"(\\d+\\.?\\d*);" + // Course
"(?:(\\d+\\.?\\d*)|NA);" + // Altitude
- "(\\d+)" + // Satellites
+ "(?:(\\d+)|NA)" + // Satellites
".*"); // Full format
private void sendResponse(Channel channel, String prefix, Integer number) {
@@ -62,7 +62,7 @@ public class WialonProtocolDecoder extends BaseProtocolDecoder {
}
private Position decodePosition(String substring) {
-
+
// Parse message
Matcher parser = pattern.matcher(substring);
if (deviceId == null || !parser.matches()) {
@@ -114,9 +114,13 @@ public class WialonProtocolDecoder extends BaseProtocolDecoder {
}
// Satellites
- int satellites = Integer.valueOf(parser.group(index++));
- position.setValid(satellites >= 3);
- extendedInfo.set("satellites", satellites);
+ String satellites = parser.group(index++);
+ if (satellites != null) {
+ position.setValid(Integer.valueOf(satellites) >= 3);
+ extendedInfo.set("satellites", satellites);
+ } else {
+ position.setValid(false);
+ }
// Extended info
position.setExtendedInfo(extendedInfo.toString());