From cb251230dde2e03ccc72814ba168d2892888e32e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 10 Dec 2024 12:32:08 -0500 Subject: [PATCH] Parse more flags from alt exp, more tests, hyundai main cruise allowed --- common/params.cc | 3 ++- selfdrive/car/card.py | 1 + selfdrive/ui/qt/offroad/developer_panel.cc | 4 ++-- selfdrive/ui/translations/main_ar.ts | 8 +++---- selfdrive/ui/translations/main_de.ts | 8 +++---- selfdrive/ui/translations/main_es.ts | 8 +++---- selfdrive/ui/translations/main_fr.ts | 8 +++---- selfdrive/ui/translations/main_ja.ts | 8 +++---- selfdrive/ui/translations/main_ko.ts | 8 +++---- selfdrive/ui/translations/main_pt-BR.ts | 8 +++---- selfdrive/ui/translations/main_th.ts | 8 +++---- selfdrive/ui/translations/main_tr.ts | 8 +++---- selfdrive/ui/translations/main_zh-CHS.ts | 8 +++---- selfdrive/ui/translations/main_zh-CHT.ts | 8 +++---- sunnypilot/mads/helpers.py | 26 +++++++++++++++++++++- sunnypilot/mads/mads.py | 2 +- system/manager/manager.py | 3 ++- 17 files changed, 77 insertions(+), 50 deletions(-) diff --git a/common/params.cc b/common/params.cc index 78012b8ffb..9716fbbea2 100644 --- a/common/params.cc +++ b/common/params.cc @@ -203,9 +203,10 @@ std::unordered_map keys = { // sunnypilot params {"Mads", PERSISTENT}, - {"MadsCruiseMain", PERSISTENT}, + {"MadsMainCruiseAllowed", PERSISTENT}, {"MadsDisengageLateralOnBrake", PERSISTENT}, {"MadsUnifiedEngagementMode", PERSISTENT}, + {"HyundaiLongitudinalMainCruiseToggleable", PERSISTENT}, }; } // namespace diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index f4df3c5e19..de27851f3e 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -119,6 +119,7 @@ class Car: data_services = list(self.sm.data.keys()) + ['selfdriveStateSP'] self.sm = messaging.SubMaster(data_services, poll='selfdriveStateSP') MadsParams().set_alternative_experience(self.CP) + MadsParams().set_car_specific_params(self.CP) openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") diff --git a/selfdrive/ui/qt/offroad/developer_panel.cc b/selfdrive/ui/qt/offroad/developer_panel.cc index e9f0a94753..1ceb0eea80 100644 --- a/selfdrive/ui/qt/offroad/developer_panel.cc +++ b/selfdrive/ui/qt/offroad/developer_panel.cc @@ -29,8 +29,8 @@ DeveloperPanel::DeveloperPanel(SettingsWindow *parent) : ListWidget(parent) { addItem(madsToggle); // TODO-SP: Rename toggle - auto madsCruiseMainToggle = new ParamControl("MadsCruiseMain", tr("MADS: Cruise Main"), "", ""); - addItem(madsCruiseMainToggle); + auto madsMainCruiseToggle = new ParamControl("MadsMainCruiseAllowed", tr("MADS: Toggle with Main Cruise"), "", ""); + addItem(madsMainCruiseToggle); auto madsDisengageLateralOnBrakeToggle = new ParamControl("MadsDisengageLateralOnBrake", tr("MADS: Disengage Lateral on Brake"), "", ""); addItem(madsDisengageLateralOnBrakeToggle); diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 4973cb4e41..721191790a 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode وضع المناورة الطولية - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index c7a635ea34..1060631f6d 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_es.ts b/selfdrive/ui/translations/main_es.ts index 9a635f0c50..253e295339 100644 --- a/selfdrive/ui/translations/main_es.ts +++ b/selfdrive/ui/translations/main_es.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode Modo de maniobra longitudinal - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index fe58184326..6f09ce0bd4 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index a47c9ed324..cfcabe9d97 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 605d09bc98..6587020a17 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode 롱컨 기동 모드 - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index dea0b190f1..fa8ab03e1d 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode Modo Longitudinal Maneuver - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 0427885ae8..e4f3651359 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index d98eaa9c5a..705b57e980 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 0ddcfcad77..8ae13eb6db 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 7e21302626..c6551dadf8 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -123,10 +123,6 @@ Longitudinal Maneuver Mode - - MADS: Cruise Main - - MADS: Disengage Lateral on Brake @@ -139,6 +135,10 @@ MADS: Unified Engagement Mode + + MADS: Toggle with Main Cruise + + DevicePanel diff --git a/sunnypilot/mads/helpers.py b/sunnypilot/mads/helpers.py index ff0c334924..a36d476664 100644 --- a/sunnypilot/mads/helpers.py +++ b/sunnypilot/mads/helpers.py @@ -1,11 +1,15 @@ -from panda import ALTERNATIVE_EXPERIENCE +from panda import Panda, ALTERNATIVE_EXPERIENCE from openpilot.common.params import Params +from opendbc.car.hyundai.values import HyundaiFlags +from opendbc.sunnypilot.car.hyundai.values import HyundaiFlagsSP + class MadsParams: def __init__(self): self.params = Params() + self.allow_always = False def read_param(self, key: str): return self.params.get_bool(key) @@ -13,9 +17,29 @@ class MadsParams: def set_alternative_experience(self, CP): enabled = self.read_param("Mads") disengage_lateral_on_brake = self.read_param("MadsDisengageLateralOnBrake") + main_cruise = self.read_param("MadsMainCruiseAllowed") + unified_engagement_mode = self.read_param("MadsUnifiedEngagementMode") if enabled: CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS if not disengage_lateral_on_brake: CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_LATERAL_ON_BRAKE + + if main_cruise: + CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MAIN_CRUISE_ALLOWED + + if unified_engagement_mode: + CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.UNIFIED_ENGAGEMENT_MODE + + def set_car_specific_params(self, CP): + if CP.carName == "hyundai": + if (CP.sunnypilotFlags & HyundaiFlagsSP.HAS_LFA_BUTTON) or (CP.flags & HyundaiFlags.CANFD): + self.allow_always = True + CP.safetyConfig[-1].safetyParam |= Panda.FLAG_HYUNDAI_MADS_BUTTON_ALLOWED + + # TODO-SP: This should be separated from MADS module for future implementations + hyundai_cruise_main_toggleable = self.read_param("HyundaiLongitudinalMainCruiseToggleable") + if hyundai_cruise_main_toggleable: + CP.sunnypilotFlags |= HyundaiFlagsSP.LONGITUDINAL_MAIN_CRUISE_TOGGLEABLE.value + CP.safetyConfigs[-1].safetyParam |= Panda.FLAG_HYUNDAI_LONG_MAIN_CRUISE_TOGGLEABLE diff --git a/sunnypilot/mads/mads.py b/sunnypilot/mads/mads.py index 8a62d8b3b4..792737c4e9 100644 --- a/sunnypilot/mads/mads.py +++ b/sunnypilot/mads/mads.py @@ -30,7 +30,7 @@ class ModularAssistiveDrivingSystem: self.allow_always = True self.enabled_toggle = mads_params.read_param("Mads") - self.main_enabled_toggle = mads_params.read_param("MadsCruiseMain") + self.main_enabled_toggle = mads_params.read_param("MadsMainCruiseAllowed") self.disengage_lateral_on_brake_toggle = mads_params.read_param("MadsDisengageLateralOnBrake") self.unified_engagement_mode = mads_params.read_param("MadsUnifiedEngagementMode") diff --git a/system/manager/manager.py b/system/manager/manager.py index 61bc3d4e62..d23cfd1ce9 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -44,9 +44,10 @@ def manager_init() -> None: sunnypilot_default_params: list[tuple[str, str | bytes]] = [ ("Mads", "1"), - ("MadsCruiseMain", "1"), + ("MadsMainCruiseAllowed", "1"), ("MadsDisengageLateralOnBrake", "0"), ("MadsUnifiedEngagementMode", "1"), + ("HyundaiLongitudinalMainCruiseToggleable", "1"), ] if params.get_bool("RecordFrontLock"):