aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-08-14 23:42:41 +1200
committerGitHub <noreply@github.com>2017-08-14 23:42:41 +1200
commit52d19ba205d76d18d62789fbb013a43fef024e91 (patch)
tree70118d6bb9c4894d043d46c32cc4558f6a00bbd3 /src
parent30e8409375f9992a5248f7e2597691c0ee08188c (diff)
parentfdc14dd2a286b7d9470ff97703d120c217a39dcb (diff)
downloadtrackermap-server-52d19ba205d76d18d62789fbb013a43fef024e91.tar.gz
trackermap-server-52d19ba205d76d18d62789fbb013a43fef024e91.tar.bz2
trackermap-server-52d19ba205d76d18d62789fbb013a43fef024e91.zip
Merge pull request #3443 from Abyss777/stop_on_ignition_off
Correct stop state by ignition.
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/Context.java3
-rw-r--r--src/org/traccar/events/MotionEventHandler.java8
-rw-r--r--src/org/traccar/reports/model/TripsConfig.java15
3 files changed, 22 insertions, 4 deletions
diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java
index a69b1786d..aa7e6acf9 100644
--- a/src/org/traccar/Context.java
+++ b/src/org/traccar/Context.java
@@ -256,7 +256,8 @@ public final class Context {
config.getLong("report.trip.minimalTripDuration", 300) * 1000,
config.getLong("report.trip.minimalParkingDuration", 300) * 1000,
config.getBoolean("report.trip.greedyParking"),
- config.getLong("report.trip.minimalNoDataDuration", 3600) * 1000);
+ config.getLong("report.trip.minimalNoDataDuration", 3600) * 1000,
+ config.getBoolean("report.trip.useIgnition"));
}
public static void init(String[] arguments) throws Exception {
diff --git a/src/org/traccar/events/MotionEventHandler.java b/src/org/traccar/events/MotionEventHandler.java
index b20a11999..8c2d4c56c 100644
--- a/src/org/traccar/events/MotionEventHandler.java
+++ b/src/org/traccar/events/MotionEventHandler.java
@@ -78,13 +78,19 @@ public class MotionEventHandler extends BaseEventHandler {
if (motionPosition != null) {
long motionTime = motionPosition.getFixTime().getTime();
double distance = ReportUtils.calculateDistance(motionPosition, position, false);
+ Boolean ignition = null;
+ if (tripsConfig.getUseIgnition()
+ && position.getAttributes().containsKey(Position.KEY_IGNITION)) {
+ ignition = position.getBoolean(Position.KEY_IGNITION);
+ }
if (newMotion) {
if (motionTime + tripsConfig.getMinimalTripDuration() <= currentTime
|| distance >= tripsConfig.getMinimalTripDistance()) {
result = newEvent(deviceState, newMotion);
}
} else {
- if (motionTime + tripsConfig.getMinimalParkingDuration() <= currentTime) {
+ if (motionTime + tripsConfig.getMinimalParkingDuration() <= currentTime
+ || ignition != null && !ignition) {
result = newEvent(deviceState, newMotion);
}
}
diff --git a/src/org/traccar/reports/model/TripsConfig.java b/src/org/traccar/reports/model/TripsConfig.java
index 7067781d7..2e2403619 100644
--- a/src/org/traccar/reports/model/TripsConfig.java
+++ b/src/org/traccar/reports/model/TripsConfig.java
@@ -21,13 +21,14 @@ public class TripsConfig {
public TripsConfig() {
}
- public TripsConfig(double minimalTripDistance, long minimalTripDuration,
- long minimalParkingDuration, boolean greedyParking, long minimalNoDataDuration) {
+ public TripsConfig(double minimalTripDistance, long minimalTripDuration, long minimalParkingDuration,
+ boolean greedyParking, long minimalNoDataDuration, boolean useIgnition) {
this.minimalTripDistance = minimalTripDistance;
this.minimalTripDuration = minimalTripDuration;
this.minimalParkingDuration = minimalParkingDuration;
this.greedyParking = greedyParking;
this.minimalNoDataDuration = minimalNoDataDuration;
+ this.useIgnition = useIgnition;
}
private double minimalTripDistance;
@@ -80,4 +81,14 @@ public class TripsConfig {
this.minimalNoDataDuration = minimalNoDataDuration;
}
+ private boolean useIgnition;
+
+ public boolean getUseIgnition() {
+ return useIgnition;
+ }
+
+ public void setUseIgnition(boolean useIgnition) {
+ this.useIgnition = useIgnition;
+ }
+
}