nostalgia

This commit is contained in:
firestar5683
2026-04-24 20:44:12 -05:00
parent ca5b641b96
commit 317be3b383
3 changed files with 7 additions and 133 deletions
+6
View File
@@ -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:
@@ -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
+1 -12
View File
@@ -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