From f81099af79309babc688495361a796e847cb34fc Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Mon, 13 Jul 2026 09:55:10 -0500 Subject: [PATCH] buttonAOl --- starpilot/controls/starpilot_card.py | 5 +++-- starpilot/controls/tests/test_starpilot_card.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/starpilot/controls/starpilot_card.py b/starpilot/controls/starpilot_card.py index f3f1182ff..442ab0741 100644 --- a/starpilot/controls/starpilot_card.py +++ b/starpilot/controls/starpilot_card.py @@ -118,7 +118,8 @@ class StarPilotCard: def update(self, carState, starpilotCarState, sm, starpilot_toggles): self.switchback_mode_enabled = self.params_memory.get_bool("SwitchbackModeEnabled") button_event_types = [self._button_type_raw(be) for be in carState.buttonEvents] - button_managed_aol = starpilot_toggles.always_on_lateral_lkas or starpilot_toggles.main_cruise_aol_toggle + button_aol_supported = self.CP.brand == "hyundai" or starpilot_toggles.lkas_allowed_for_aol + button_managed_aol = starpilot_toggles.always_on_lateral_lkas or (button_aol_supported and starpilot_toggles.main_cruise_aol_toggle) if self.hyundai_aol_needs_engagement: if carState.gearShifter in NON_DRIVING_GEARS: @@ -136,7 +137,7 @@ class StarPilotCard: elif sm["selfdriveState"].active: self.nissan_aol_ready = True - if self.CP.brand == "hyundai" or starpilot_toggles.lkas_allowed_for_aol: + if button_aol_supported: for be, be_type in zip(carState.buttonEvents, button_event_types, strict=False): if be_type == ButtonType.lkas and be.pressed and starpilot_toggles.always_on_lateral_lkas: if self.hyundai_aol_needs_engagement: diff --git a/starpilot/controls/tests/test_starpilot_card.py b/starpilot/controls/tests/test_starpilot_card.py index 3d5c36339..6e8784ed9 100644 --- a/starpilot/controls/tests/test_starpilot_card.py +++ b/starpilot/controls/tests/test_starpilot_card.py @@ -486,6 +486,23 @@ def test_hyundai_main_aol_persists_after_brake_disengage_without_manual_aol_butt assert ret.alwaysOnLateralEnabled is True +def test_non_button_aol_platform_keeps_main_aol_when_main_cruise_is_mapped(monkeypatch, tmp_path): + monkeypatch.setattr(spc, "Params", FakeParams) + monkeypatch.setattr(spc, "is_FrogsGoMoo", lambda: False) + monkeypatch.setattr(spc, "ERROR_LOGS_PATH", tmp_path) + + card = spc.StarPilotCard( + SimpleNamespace(brand="gm"), + SimpleNamespace(alternativeExperience=spc.ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL), + ) + + toggles = make_toggles(always_on_lateral_main=True, main_cruise_aol_toggle=True) + ret = card.update(make_car_state(available=True), SimpleNamespace(distancePressed=False), make_sm(), toggles) + + assert ret.alwaysOnLateralAllowed is True + assert ret.alwaysOnLateralEnabled is True + + def test_main_aol_still_follows_cruise_main_for_other_platforms(monkeypatch, tmp_path): monkeypatch.setattr(spc, "Params", FakeParams) monkeypatch.setattr(spc, "is_FrogsGoMoo", lambda: False)