This commit is contained in:
firestar5683
2026-05-29 14:41:07 -05:00
parent a80d3680d0
commit d55d1bff69
2 changed files with 28 additions and 2 deletions
+7 -1
View File
@@ -85,6 +85,9 @@ class StarPilotCard:
def update(self, carState, starpilotCarState, sm, starpilot_toggles):
self.switchback_mode_enabled = self.params_memory.get_bool("SwitchbackModeEnabled")
hyundai_main_cruise_can_toggle_aol = self.CP.brand == "hyundai" and starpilot_toggles.always_on_lateral and (
starpilot_toggles.always_on_lateral_lkas or starpilot_toggles.always_on_lateral_main
)
if self.CP.brand == "hyundai" or starpilot_toggles.lkas_allowed_for_aol:
for be in carState.buttonEvents:
@@ -93,7 +96,10 @@ class StarPilotCard:
if carState.cruiseState.enabled or self.pause_lateral:
self.pause_lateral = not self.always_on_lateral_allowed
elif be.type == ButtonType.mainCruise and be.pressed:
if starpilot_toggles.always_on_lateral_main:
# Hyundai owners use both the LKAS button and the cruise main button
# as AOL engage inputs. Keep the safety-derived LKAS capability while
# still honoring the cruise main button as a shared AOL toggle.
if hyundai_main_cruise_can_toggle_aol or starpilot_toggles.always_on_lateral_main:
self.always_on_lateral_allowed = not self.always_on_lateral_allowed
elif starpilot_toggles.speed_limit_controller:
self.params_memory.put_bool("SLCAdoptSpeedLimit", True)
@@ -43,6 +43,7 @@ def make_sm():
def make_toggles(**overrides):
defaults = {
"always_on_lateral": False,
"always_on_lateral_lkas": False,
"always_on_lateral_main": False,
"always_on_lateral_pause_speed": 0.0,
@@ -107,7 +108,7 @@ def test_hyundai_lkas_button_still_toggles_aol_with_cruise_button_events(monkeyp
])
starpilot_car_state = SimpleNamespace(distancePressed=False)
sm = make_sm()
toggles = make_toggles(always_on_lateral_lkas=True)
toggles = make_toggles(always_on_lateral=True, always_on_lateral_lkas=True)
ret = card.update(car_state, starpilot_car_state, sm, toggles)
@@ -115,6 +116,25 @@ def test_hyundai_lkas_button_still_toggles_aol_with_cruise_button_events(monkeyp
assert ret.pauseLateral is False
def test_hyundai_main_cruise_button_toggles_aol_while_lkas_mode_is_enabled(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="hyundai"), SimpleNamespace(alternativeExperience=0))
car_state = make_car_state(button_events=[SimpleNamespace(type=spc.ButtonType.mainCruise, pressed=True)])
starpilot_car_state = SimpleNamespace(distancePressed=False)
sm = make_sm()
toggles = make_toggles(always_on_lateral=True, always_on_lateral_lkas=True)
ret = card.update(car_state, starpilot_car_state, sm, toggles)
assert ret.alwaysOnLateralAllowed is True
ret = card.update(car_state, starpilot_car_state, sm, toggles)
assert ret.alwaysOnLateralAllowed is False
def test_honda_lkas_button_pauses_lateral_when_cruise_is_active(monkeypatch, tmp_path):
monkeypatch.setattr(spc, "Params", FakeParams)
monkeypatch.setattr(spc, "is_FrogsGoMoo", lambda: False)