show MADS updates

This commit is contained in:
Jason Wen
2024-11-16 19:11:49 -05:00
parent e1904c5a3f
commit daf0ad629b
3 changed files with 22 additions and 2 deletions

View File

@@ -194,6 +194,7 @@ struct OnroadEvent @0xc4fa6047f024e718 {
silentBrakeHold @157;
silentWrongGear @158;
silentReverseGear @159;
madsStatusChanged @160;
soundsUnavailableDEPRECATED @47;
}

View File

@@ -356,6 +356,13 @@ def personality_changed_alert(CP: car.CarParams, CS: car.CarState, sm: messaging
return NormalPermanentAlert(f"Driving Personality: {personality}", duration=1.5)
def mads_status_changed_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int, personality) -> Alert:
ss = sm["selfdriveState"]
mads = sm["selfdriveStateSP"].mads
lat_active_str = "ON" if mads.active else "OFF"
long_active_str = "ON" if ss.active else "OFF"
return NormalPermanentAlert(f"Lateral: {lat_active_str} | Longitudinal: {long_active_str}", duration=1.5)
EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
# ********** events with no alerts **********
@@ -1045,6 +1052,10 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
ET.NO_ENTRY: NoEntryAlert("Reverse Gear"),
},
EventName.madsStatusChanged: {
ET.WARNING: mads_status_changed_alert,
},
}

View File

@@ -17,10 +17,13 @@ class ModularAssistiveDrivingSystem:
self.enabled = False
self.active = False
self.enabled_prev = False
self.active_prev = False
self.available = False
self.allow_always = False
self.selfdrive = selfdrive
self.selfdrive.enabled_prev = False
self.selfdrive.active_prev = False
self.state_machine = StateMachine(self)
if self.selfdrive.CP.carName == "hyundai":
@@ -102,5 +105,10 @@ class ModularAssistiveDrivingSystem:
if not self.selfdrive.CP.passive and self.selfdrive.initialized:
self.enabled, self.active = self.state_machine.update(self.selfdrive.events)
# Copy of previous SelfdriveD states for MADS events handling
self.selfdrive.enabled_prev = self.selfdrive.enabled
# update MADS status events
if self.selfdrive.active != self.selfdrive.active_prev or self.active != self.active_prev:
self.selfdrive.events.add(EventName.madsStatusChanged)
# Copy of previous SelfdriveD and MADS states for MADS events handling
self.selfdrive.enabled_prev, self.selfdrive.active_prev = self.selfdrive.enabled, self.selfdrive.active
self.enabled_prev, self.active_prev = self.enabled, self.active