aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/events/MotionEventHandler.java
diff options
context:
space:
mode:
authorAbyss777 <abyss@fox5.ru>2017-08-11 09:22:53 +0500
committerAbyss777 <abyss@fox5.ru>2017-08-11 09:27:41 +0500
commit2e459d8d591ee9d3578a38d981e7c1c13eb3c389 (patch)
treed5d69d81dc796b54d67946b753e5f801fcb07913 /src/org/traccar/events/MotionEventHandler.java
parent532e0a98d469573a575dc595554792cbbd4cd953 (diff)
downloadtraccar-server-2e459d8d591ee9d3578a38d981e7c1c13eb3c389.tar.gz
traccar-server-2e459d8d591ee9d3578a38d981e7c1c13eb3c389.tar.bz2
traccar-server-2e459d8d591ee9d3578a38d981e7c1c13eb3c389.zip
Move state updates from ConnectionManager to proper event handlers
Diffstat (limited to 'src/org/traccar/events/MotionEventHandler.java')
-rw-r--r--src/org/traccar/events/MotionEventHandler.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/org/traccar/events/MotionEventHandler.java b/src/org/traccar/events/MotionEventHandler.java
index ed21d7b83..1a8cb0ef8 100644
--- a/src/org/traccar/events/MotionEventHandler.java
+++ b/src/org/traccar/events/MotionEventHandler.java
@@ -36,6 +36,24 @@ public class MotionEventHandler extends BaseEventHandler {
tripsConfig = ReportUtils.initTripsConfig();
}
+ public static Event updateMotionState(DeviceState deviceState, TripsConfig tripsConfig) {
+ Event result = null;
+ if (deviceState.getMotionState() != null && deviceState.getMotionPosition() != null) {
+ boolean newMotion = !deviceState.getMotionState();
+ Position motionPosition = deviceState.getMotionPosition();
+ long currentTime = System.currentTimeMillis();
+ long motionTime = motionPosition.getFixTime().getTime()
+ + (newMotion ? tripsConfig.getMinimalTripDuration() : tripsConfig.getMinimalParkingDuration());
+ if (motionTime <= currentTime) {
+ String eventType = newMotion ? Event.TYPE_DEVICE_MOVING : Event.TYPE_DEVICE_STOPPED;
+ result = new Event(eventType, motionPosition.getDeviceId(), motionPosition.getId());
+ deviceState.setMotionState(newMotion);
+ deviceState.setMotionPosition(null);
+ }
+ }
+ return result;
+ }
+
public static Event updateMotionState(DeviceState deviceState, Position position, TripsConfig tripsConfig) {
Event result = null;
Boolean oldMotion = deviceState.getMotionState();