diff --git a/selfdrive/selfdrived/selfdrived.py b/selfdrive/selfdrived/selfdrived.py index ae9f98f2a..be9013f31 100644 --- a/selfdrive/selfdrived/selfdrived.py +++ b/selfdrive/selfdrived/selfdrived.py @@ -240,6 +240,12 @@ class SelfdriveD: self.last_below_steer_speed_alert_time = now self.events.add_from_msg(car_events) + if (getattr(self.starpilot_toggles, "nostalgia_mode", False) and + self.CP.openpilotLongitudinalControl and + self.sm['carControl'].longActive and + any(be.type == ButtonType.altButton2 for be in CS.buttonEvents)): + self.events.add(EventName.buttonCancel) + if self.CP.notCar: # wait for everything to init first if self.sm.frame > int(5. / DT_CTRL) and self.initialized: diff --git a/starpilot/common/tests/test_starpilot_card.py b/starpilot/common/tests/test_starpilot_card.py deleted file mode 100644 index 36098a8c0..000000000 --- a/starpilot/common/tests/test_starpilot_card.py +++ /dev/null @@ -1,121 +0,0 @@ -from types import SimpleNamespace - -from openpilot.selfdrive.car.cruise import ButtonType -from openpilot.starpilot.controls import starpilot_card as sc - - -class FakeParams: - def __init__(self, *args, **kwargs): - self.values = {} - - def get_bool(self, key): - return bool(self.values.get(key, False)) - - def get_int(self, key, default=0): - return int(self.values.get(key, default)) - - def put_bool(self, key, value): - self.values[key] = bool(value) - - def put_int(self, key, value): - self.values[key] = int(value) - - def put_bool_nonblocking(self, key, value): - self.put_bool(key, value) - - -class FakeSubMaster(dict): - def __init__(self, *args, updated=None, **kwargs): - super().__init__(*args, **kwargs) - self.updated = updated or {} - - -def build_card(monkeypatch): - monkeypatch.setattr(sc, "Params", FakeParams) - monkeypatch.setattr(sc.messaging, "PubMaster", lambda *_args, **_kwargs: SimpleNamespace(send=lambda *_a, **_k: None)) - monkeypatch.setattr(sc, "is_FrogsGoMoo", lambda: False) - - cp = SimpleNamespace(brand="hyundai", openpilotLongitudinalControl=True) - fpcp = SimpleNamespace(alternativeExperience=0) - return sc.StarPilotCard(cp, fpcp) - - -def build_sm(long_active): - return FakeSubMaster({ - "carControl": SimpleNamespace(longActive=long_active), - "selfdriveState": SimpleNamespace(active=True, enabled=True, experimentalMode=False, alertType=[]), - "starpilotPlan": SimpleNamespace(lateralCheck=True), - "liveCalibration": SimpleNamespace(calPerc=1), - "starpilotSelfdriveState": SimpleNamespace(alertType=[]), - }, updated={"starpilotPlan": False}) - - -def build_car_state(button_events): - return SimpleNamespace( - buttonEvents=button_events, - cruiseState=SimpleNamespace(available=False), - gearShifter=sc.GearShifter.drive, - brakePressed=False, - gasPressed=False, - standstill=False, - vEgo=15.0, - ) - - -def build_starpilot_car_state(): - return SimpleNamespace( - distancePressed=False, - modePressed=False, - customPressed=False, - ) - - -def build_toggles(nostalgia_mode): - return SimpleNamespace( - nostalgia_mode=nostalgia_mode, - always_on_lateral_lkas=False, - always_on_lateral_main=False, - always_on_lateral_pause_speed=0.0, - has_canfd_media_buttons=False, - ) - - -def test_nostalgia_mode_paddle_pauses_longitudinal(monkeypatch): - card = build_card(monkeypatch) - car_state = build_car_state([SimpleNamespace(type=ButtonType.altButton2, pressed=True)]) - starpilot_car_state = build_starpilot_car_state() - - ret = card.update(car_state, starpilot_car_state, build_sm(True), build_toggles(True)) - - assert ret.pauseLongitudinal is True - - -def test_nostalgia_mode_resume_button_clears_pause(monkeypatch): - card = build_card(monkeypatch) - toggles = build_toggles(True) - - card.update( - build_car_state([SimpleNamespace(type=ButtonType.altButton2, pressed=True)]), - build_starpilot_car_state(), - build_sm(True), - toggles, - ) - - ret = card.update( - build_car_state([SimpleNamespace(type=ButtonType.resumeCruise, pressed=True)]), - build_starpilot_car_state(), - build_sm(False), - toggles, - ) - - assert ret.pauseLongitudinal is False - - -def test_nostalgia_mode_off_ignores_paddle(monkeypatch): - card = build_card(monkeypatch) - car_state = build_car_state([SimpleNamespace(type=ButtonType.altButton2, pressed=True)]) - starpilot_car_state = build_starpilot_car_state() - - ret = card.update(car_state, starpilot_car_state, build_sm(True), build_toggles(False)) - - assert ret.pauseLongitudinal is False diff --git a/starpilot/controls/starpilot_card.py b/starpilot/controls/starpilot_card.py index 73c795334..eb9ad119a 100644 --- a/starpilot/controls/starpilot_card.py +++ b/starpilot/controls/starpilot_card.py @@ -27,7 +27,6 @@ class StarPilotCard: self.force_coast = False self.modePressed_previously = False self.mode_counter = 0 - self.nostalgia_pause_longitudinal = False self.customPressed_previously = False self.custom_counter = 0 self.pause_lateral = False @@ -80,7 +79,6 @@ class StarPilotCard: def update(self, carState, starpilotCarState, sm, starpilot_toggles): self.switchback_mode_enabled = self.params_memory.get_bool("SwitchbackModeEnabled") - nostalgia_mode = getattr(starpilot_toggles, "nostalgia_mode", False) if self.CP.brand == "hyundai": for be in carState.buttonEvents: @@ -132,15 +130,6 @@ class StarPilotCard: if any(be.pressed and be.type == ButtonType.lkas for be in carState.buttonEvents): self.handle_button_event("lkas", sm, starpilot_toggles) - if not nostalgia_mode or not self.CP.openpilotLongitudinalControl or not sm["selfdriveState"].enabled: - self.nostalgia_pause_longitudinal = False - else: - if any(be.pressed and be.type == ButtonType.altButton2 for be in carState.buttonEvents) and sm["carControl"].longActive: - self.nostalgia_pause_longitudinal = True - if any(be.pressed and be.type in (ButtonType.accelCruise, ButtonType.resumeCruise, - ButtonType.decelCruise, ButtonType.setCruise) for be in carState.buttonEvents): - self.nostalgia_pause_longitudinal = False - if getattr(starpilot_toggles, "has_canfd_media_buttons", False): if starpilotCarState.modePressed: self.mode_counter += 1 @@ -181,7 +170,7 @@ class StarPilotCard: starpilotCarState.forceCoast = self.force_coast starpilotCarState.isParked = carState.gearShifter == GearShifter.park starpilotCarState.pauseLateral = self.pause_lateral - starpilotCarState.pauseLongitudinal = self.pause_longitudinal or self.nostalgia_pause_longitudinal + starpilotCarState.pauseLongitudinal = self.pause_longitudinal starpilotCarState.trafficModeEnabled = self.traffic_mode_enabled return starpilotCarState