From 3366bda92aa878348bee786c3be48072441cd5de Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 20 Jul 2024 07:39:46 -0400 Subject: [PATCH] handle states properly --- README.md | 2 +- selfdrive/car/hyundai/carstate.py | 2 -- selfdrive/car/hyundai/interface.py | 17 +++++++++-------- selfdrive/car/interfaces.py | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c78052ad6b..fef54c6e9c 100644 --- a/README.md +++ b/README.md @@ -223,7 +223,7 @@ The goal of Modified Assistive Driving Safety (MADS) is to enhance the user driv * `SET-` button enables ACC/SCC * `CANCEL` button only disables ACC/SCC * `CRUISE (MAIN)` must be `ON` to use ACC/SCC -* `CRUISE (MAIN)` button disables sunnypilot completely when `OFF` **(strictly enforced in panda safety code)** +* `CRUISE (MAIN)` button disables ACC/SCC completely when `OFF` **(strictly enforced in panda safety code)** ### Disengage Lateral ALC on Brake Press Mode toggle Dedicated toggle to handle Lateral state on brake pedal press and release: diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 5261fc8477..d6e9279035 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -216,8 +216,6 @@ class CarState(CarStateBase): if self.CP.spFlags & HyundaiFlagsSP.SP_CAN_LFA_BTN: self.lfa_enabled = cp.vl["BCM_PO_11"]["LFA_Pressed"] - self.mads_enabled = False if not self.control_initialized else ret.cruiseState.available - if self.CP.spFlags & HyundaiFlagsSP.SP_NAV_MSG or self.CP.spFlags & HyundaiFlagsSP.SP_LKAS12: self._update_traffic_signals(cp, cp_cam) ret.cruiseState.speedLimit = self._calculate_speed_limit() * speed_conv diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index e801b47771..d59541fa66 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -207,11 +207,11 @@ class CarInterface(CarInterfaceBase): buttonEvents = create_button_events(self.CS.cruise_buttons[-1], self.CS.prev_cruise_buttons, BUTTONS_DICT) + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, buttonEvents, c.vCruise) - self.CS.mads_enabled = False if not self.mads_main_toggle else self.CS.mads_enabled - if ret.cruiseState.available: if not self.CP.pcmCruiseSpeed: if self.CS.prev_main_buttons == 1: @@ -220,15 +220,16 @@ class CarInterface(CarInterfaceBase): elif self.CS.prev_cruise_buttons == 4: if self.CS.cruise_buttons[-1] != 4: self.accEnabled = True - if self.enable_mads: - if not self.CS.prev_mads_enabled and self.CS.mads_enabled: - self.CS.madsEnabled = True - if self.CS.prev_lfa_enabled != 1 and self.CS.lfa_enabled == 1: - self.CS.madsEnabled = not self.CS.madsEnabled - self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) else: self.CS.madsEnabled = False + if self.enable_mads: + if not self.CS.prev_mads_enabled and self.CS.mads_enabled: + self.CS.madsEnabled = True + if self.CS.prev_lfa_enabled != 1 and self.CS.lfa_enabled == 1: + self.CS.madsEnabled = not self.CS.madsEnabled + self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) + if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed: if not self.CP.pcmCruise: if any(b.type == ButtonType.cancel for b in buttonEvents): diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 5fe64832c8..55b1adfccf 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -472,7 +472,7 @@ class CarInterfaceBase(ABC): events.add(EventName.spReverseGear) elif cs_out.vEgo >= 5: events.add(EventName.reverseGear) - if not cs_out.cruiseState.available: + if not cs_out.cruiseState.available and cs_out.cruiseState.enabled: events.add(EventName.wrongCarMode) if cs_out.espDisabled: events.add(EventName.espDisabled)