aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol/Tk103ProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/protocol/Tk103ProtocolDecoder.java')
-rw-r--r--src/org/traccar/protocol/Tk103ProtocolDecoder.java34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/org/traccar/protocol/Tk103ProtocolDecoder.java b/src/org/traccar/protocol/Tk103ProtocolDecoder.java
index 2bcd62407..3b1ab9655 100644
--- a/src/org/traccar/protocol/Tk103ProtocolDecoder.java
+++ b/src/org/traccar/protocol/Tk103ProtocolDecoder.java
@@ -54,22 +54,20 @@ public class Tk103ProtocolDecoder extends BaseProtocolDecoder {
.expression("([EW]),?")
.number("(d+.d)(?:d*,)?") // speed
.number("(dd)(dd)(dd),?") // time (hhmmss)
- .number("(d+.?d{1,4}),?") // course
.groupBegin()
+ .number("(?:([d.]{6})|(dd)),?") // course
.number("([01])") // charge
.number("([01])") // ignition
.number("(x)") // io
.number("(x)") // io
.number("(x)") // io
- .number("(xxx),?") // fuel
- .groupEnd("?")
- .number("(?:L(x+))?") // odometer
+ .number("(xxx)") // fuel
+ .number("L(x+)") // odometer
+ .or()
+ .number("(d+.d+)") // course
+ .groupEnd()
.any()
.number("([+-]ddd.d)?") // temperature
- .groupBegin()
- .number("([+-]?d+.d{1,2}),") // altitude
- .number("(d+)$") // number of visible satellites
- .groupEnd("?")
.text(")").optional()
.compile();
@@ -400,9 +398,14 @@ public class Tk103ProtocolDecoder extends BaseProtocolDecoder {
dateBuilder.setTime(parser.nextInt(0), parser.nextInt(0), parser.nextInt(0));
position.setTime(dateBuilder.getDate());
- position.setCourse(parser.nextDouble(0));
+ if (parser.hasNext()) {
+ position.setCourse(parser.nextDouble());
+ }
+ if (parser.hasNext()) {
+ position.setCourse(parser.nextDouble());
+ }
- if (parser.hasNext(6)) {
+ if (parser.hasNext(7)) {
position.set(Position.KEY_CHARGE, parser.nextInt() == 0);
position.set(Position.KEY_IGNITION, parser.nextInt() == 1);
@@ -432,22 +435,15 @@ public class Tk103ProtocolDecoder extends BaseProtocolDecoder {
}
position.set(Position.KEY_FUEL_LEVEL, parser.nextHexInt());
- }
-
- if (parser.hasNext()) {
position.set(Position.KEY_ODOMETER, parser.nextLong(16, 0));
}
if (parser.hasNext()) {
- position.set(Position.PREFIX_TEMP + 1, parser.nextDouble(0));
- }
-
- if (parser.hasNext()) {
- position.setAltitude(parser.nextDouble(0));
+ position.setCourse(parser.nextDouble());
}
if (parser.hasNext()) {
- position.set(Position.KEY_SATELLITES_VISIBLE, parser.nextInt(0));
+ position.set(Position.PREFIX_TEMP + 1, parser.nextDouble(0));
}
return position;