Skip to content

Commit

Permalink
Merge pull request traccar#5159 from jguthrie100/immediate_overspeed_…
Browse files Browse the repository at this point in the history
…event

Throw overspeed event immediately, accounting for minimumDuration
  • Loading branch information
tananaev committed Aug 15, 2023
2 parents 7d53dda + 95059cb commit 14bca86
Showing 1 changed file with 21 additions and 16 deletions.
37 changes: 21 additions & 16 deletions src/main/java/org/traccar/session/state/OverspeedProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,22 +34,7 @@ public static void updateState(
if (oldState) {
boolean newState = position.getSpeed() > speedLimit;
if (newState) {
if (state.getOverspeedTime() != null) {
long oldTime = state.getOverspeedTime().getTime();
long newTime = position.getFixTime().getTime();
if (newTime - oldTime > minimalDuration) {

Event event = new Event(Event.TYPE_DEVICE_OVERSPEED, position);
event.set(ATTRIBUTE_SPEED, position.getSpeed());
event.set(Position.KEY_SPEED_LIMIT, speedLimit);
event.setGeofenceId(state.getOverspeedGeofenceId());

state.setOverspeedTime(null);
state.setOverspeedGeofenceId(0);
state.setEvent(event);

}
}
checkEvent(state, position, speedLimit, minimalDuration);
} else {
state.setOverspeedState(false);
state.setOverspeedTime(null);
Expand All @@ -59,7 +44,27 @@ public static void updateState(
state.setOverspeedState(true);
state.setOverspeedTime(position.getFixTime());
state.setOverspeedGeofenceId(geofenceId);

checkEvent(state, position, speedLimit, minimalDuration);
}
}

private static void checkEvent(OverspeedState state, Position position, double speedLimit, long minimalDuration) {
if (state.getOverspeedTime() != null) {
long oldTime = state.getOverspeedTime().getTime();
long newTime = position.getFixTime().getTime();
if (newTime - oldTime >= minimalDuration) {

Event event = new Event(Event.TYPE_DEVICE_OVERSPEED, position);
event.set(ATTRIBUTE_SPEED, position.getSpeed());
event.set(Position.KEY_SPEED_LIMIT, speedLimit);
event.setGeofenceId(state.getOverspeedGeofenceId());

state.setOverspeedTime(null);
state.setOverspeedGeofenceId(0);
state.setEvent(event);

}
}
}
}

0 comments on commit 14bca86

Please sign in to comment.