aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-04-30 09:30:43 -0700
committerAnton Tananaev <anton@traccar.org>2022-04-30 09:30:43 -0700
commit94fa65d6961fc369923b11a60758b83ac7c3ecae (patch)
tree2b50ee0373bdd3448a4a52ce31ab98a78f03f672 /src/main/java
parentc10e8132c4dc4a78b3440725516ffaaec6834406 (diff)
downloadtrackermap-server-94fa65d6961fc369923b11a60758b83ac7c3ecae.tar.gz
trackermap-server-94fa65d6961fc369923b11a60758b83ac7c3ecae.tar.bz2
trackermap-server-94fa65d6961fc369923b11a60758b83ac7c3ecae.zip
Fix Envotech location
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/traccar/helper/Parser.java5
-rw-r--r--src/main/java/org/traccar/protocol/EnvotechProtocolDecoder.java21
2 files changed, 21 insertions, 5 deletions
diff --git a/src/main/java/org/traccar/helper/Parser.java b/src/main/java/org/traccar/helper/Parser.java
index 75106e2ba..22e98ded1 100644
--- a/src/main/java/org/traccar/helper/Parser.java
+++ b/src/main/java/org/traccar/helper/Parser.java
@@ -155,6 +155,7 @@ public class Parser {
public enum CoordinateFormat {
DEG_DEG,
+ DEG_DEG_HEM,
DEG_HEM,
DEG_MIN_MIN,
DEG_MIN_HEM,
@@ -173,6 +174,10 @@ public class Parser {
case DEG_DEG:
coordinate = Double.parseDouble(next() + '.' + next());
break;
+ case DEG_DEG_HEM:
+ coordinate = Double.parseDouble(next() + '.' + next());
+ hemisphere = next();
+ break;
case DEG_HEM:
coordinate = nextDouble(0);
hemisphere = next();
diff --git a/src/main/java/org/traccar/protocol/EnvotechProtocolDecoder.java b/src/main/java/org/traccar/protocol/EnvotechProtocolDecoder.java
index 083d8a921..51391d4cc 100644
--- a/src/main/java/org/traccar/protocol/EnvotechProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/EnvotechProtocolDecoder.java
@@ -54,8 +54,8 @@ public class EnvotechProtocolDecoder extends BaseProtocolDecoder {
.number("(dd)(dd)(dd)") // date (ddmmyy)
.number("(dd)(dd)(dd)") // time (hhmmss)
.number("(d)") // fix
- .number("(dd)(dd)(d+)([NS])") // latitude
- .number("(ddd)(dd)(d+)([EW])") // longitude
+ .number("(d+)(d{5})([NS])") // latitude
+ .number("(d+)(d{5})([EW])") // longitude
.number("(ddd)") // speed
.number("(ddd)") // course
.any()
@@ -72,7 +72,18 @@ public class EnvotechProtocolDecoder extends BaseProtocolDecoder {
Position position = new Position(getProtocolName());
- position.set(Position.KEY_EVENT, parser.nextHexInt());
+ int event = parser.nextHexInt();
+ switch (event) {
+ case 0x60:
+ position.set(Position.KEY_ALARM, Position.ALARM_LOCK);
+ break;
+ case 0x61:
+ position.set(Position.KEY_ALARM, Position.ALARM_UNLOCK);
+ break;
+ default:
+ break;
+ }
+ position.set(Position.KEY_EVENT, event);
DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, parser.next());
if (deviceSession == null) {
@@ -92,8 +103,8 @@ public class EnvotechProtocolDecoder extends BaseProtocolDecoder {
position.setFixTime(parser.nextDateTime(Parser.DateTimeFormat.DMY_HMS));
position.setValid(parser.nextInt() > 0);
- position.setLatitude(parser.nextCoordinate(Parser.CoordinateFormat.DEG_MIN_MIN_HEM));
- position.setLongitude(parser.nextCoordinate(Parser.CoordinateFormat.DEG_MIN_MIN_HEM));
+ position.setLatitude(parser.nextCoordinate(Parser.CoordinateFormat.DEG_DEG_HEM));
+ position.setLongitude(parser.nextCoordinate(Parser.CoordinateFormat.DEG_DEG_HEM));
position.setSpeed(parser.nextInt());
position.setCourse(parser.nextInt());