clear no entry alerts if engaged (#23559)

* clear no entry alerts if engaged

* fix test
pull/23562/head
Adeeb Shihadeh 2022-01-17 13:57:53 -08:00 committed by GitHub
parent 3f89834e4e
commit 59894a6666
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

View File

@ -611,10 +611,15 @@ class Controls:
if hudControl.rightLaneDepart or hudControl.leftLaneDepart:
self.events.add(EventName.ldw)
clear_event = ET.WARNING if ET.WARNING not in self.current_alert_types else None
clear_event_types = set()
if ET.WARNING not in self.current_alert_types:
clear_event_types.add(ET.WARNING)
if self.enabled:
clear_event_types.add(ET.NO_ENTRY)
alerts = self.events.create_alerts(self.current_alert_types, [self.CP, self.sm, self.is_metric, self.soft_disable_timer])
self.AM.add_many(self.sm.frame, alerts)
current_alert = self.AM.process_alerts(self.sm.frame, clear_event)
current_alert = self.AM.process_alerts(self.sm.frame, clear_event_types)
if current_alert:
hudControl.visualAlert = current_alert.visual_alert

View File

@ -47,13 +47,13 @@ class AlertManager:
min_end_frame = entry.start_frame + alert.duration
entry.end_frame = max(frame + 1, min_end_frame)
def process_alerts(self, frame: int, clear_event_type=None) -> Optional[Alert]:
def process_alerts(self, frame: int, clear_event_types: set) -> Optional[Alert]:
current_alert = AlertEntry()
for v in self.alerts.values():
if not v.alert:
continue
if clear_event_type and v.alert.event_type == clear_event_type:
if v.alert.event_type in clear_event_types:
v.end_frame = -1
# sort by priority first and then by start_frame

View File

@ -34,7 +34,7 @@ class TestAlertManager(unittest.TestCase):
for frame in range(duration+10):
if frame < add_duration:
AM.add_many(frame, [alert, ])
current_alert = AM.process_alerts(frame)
current_alert = AM.process_alerts(frame, {})
shown = current_alert is not None
should_show = frame <= show_duration