mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-23 18:22:13 +08:00
nostalgia
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user