Files
MoreTore/frogpilot/controls/lib/frogpilot_events.py
T
2026-02-13 00:21:34 -07:00

53 lines
2.0 KiB
Python

#!/usr/bin/env python3
from openpilot.selfdrive.selfdrived.events import ET, EVENT_NAME, FROGPILOT_EVENT_NAME, EventName, FrogPilotEventName, Events
from openpilot.frogpilot.common.frogpilot_variables import NON_DRIVING_GEARS
class FrogPilotEvents:
def __init__(self, FrogPilotPlanner, error_log):
self.frogpilot_planner = FrogPilotPlanner
self.events = Events(frogpilot=True)
self.startup_seen = False
self.stopped_for_light = False
self.max_acceleration = 0
self.played_events = set()
self.error_log = error_log
def update(self, v_cruise, sm, frogpilot_toggles):
current_alert = sm["selfdriveState"].alertType
current_frogpilot_alert = sm["selfdriveState"].alertType
alerts_empty = all(sm[state].alertText1 == "" and sm[state].alertText2 == "" for state in ["selfdriveState", "frogpilotSelfdriveState"])
self.events.clear()
acceleration = sm["carState"].aEgo
if not sm["carState"].gasPressed:
self.max_acceleration = max(acceleration, self.max_acceleration)
else:
self.max_acceleration = 0
if self.frogpilot_planner.frogpilot_vcruise.forcing_stop:
self.events.add(FrogPilotEventName.forcingStop)
if not self.frogpilot_planner.tracking_lead and sm["carState"].standstill and sm["carState"].gearShifter not in NON_DRIVING_GEARS:
if not self.frogpilot_planner.model_stopped and self.stopped_for_light and frogpilot_toggles.green_light_alert:
self.events.add(FrogPilotEventName.greenLight)
self.stopped_for_light = self.frogpilot_planner.frogpilot_cem.stop_light_detected
else:
self.stopped_for_light = False
if self.error_log.is_file():
self.events.add(FrogPilotEventName.openpilotCrashed)
self.startup_seen |= sm["frogpilotSelfdriveState"].alertText1 == frogpilot_toggles.startup_alert_top and sm["frogpilotSelfdriveState"].alertText2 == frogpilot_toggles.startup_alert_bottom
self.played_events.update(FROGPILOT_EVENT_NAME[event] for event in self.events.names)