cruise interval

This commit is contained in:
firestar5683
2026-04-02 20:43:30 -05:00
parent 74e580c584
commit 1c95f0ebd0
2 changed files with 37 additions and 3 deletions
+9 -3
View File
@@ -44,10 +44,15 @@ class VCruiseHelper:
def _get_short_press_delta(self, is_metric, starpilot_toggles: SimpleNamespace) -> float:
base_delta = 1. if is_metric else IMPERIAL_INCREMENT
return base_delta * starpilot_toggles.cruise_increase
return base_delta * self._get_cruise_delta_interval(starpilot_toggles.cruise_increase)
@staticmethod
def _get_cruise_delta_interval(interval: float | None) -> float:
return interval if isinstance(interval, (int, float)) and interval > 0 else 1.0
def _normalize_initialized_v_cruise(self, v_cruise_kph: float, starpilot_toggles: SimpleNamespace) -> float:
if starpilot_toggles.cruise_increase % 5 != 0:
cruise_increase = self._get_cruise_delta_interval(starpilot_toggles.cruise_increase)
if cruise_increase % 5 != 0:
return v_cruise_kph
v_cruise_delta = self._get_short_press_delta(starpilot_toggles.is_metric, starpilot_toggles)
@@ -119,7 +124,8 @@ class VCruiseHelper:
if not self.button_change_states[button_type]["enabled"]:
return
v_cruise_delta_interval = starpilot_toggles.cruise_increase_long if long_press else starpilot_toggles.cruise_increase
delta_interval = starpilot_toggles.cruise_increase_long if long_press else starpilot_toggles.cruise_increase
v_cruise_delta_interval = self._get_cruise_delta_interval(delta_interval)
v_cruise_delta = v_cruise_delta * v_cruise_delta_interval
if v_cruise_delta_interval % 5 == 0 and self.v_cruise_kph % v_cruise_delta != 0: # partial interval
self.v_cruise_kph = CRUISE_NEAREST_FUNC[button_type](self.v_cruise_kph / v_cruise_delta) * v_cruise_delta
+28
View File
@@ -232,3 +232,31 @@ class TestVCruiseHelper:
)
assert self.v_cruise_helper.v_cruise_kph == initial_v_cruise_kph
def test_missing_custom_cruise_toggles_fall_back_to_single_step(self):
self.enable(V_CRUISE_INITIAL * CV.KPH_TO_MS, False)
initial_v_cruise_kph = self.v_cruise_helper.v_cruise_kph
self.starpilot_toggles.cruise_increase = None
self.starpilot_toggles.cruise_increase_long = None
pressed_cs = car.CarState(cruiseState={"available": True})
pressed_cs.buttonEvents = [ButtonEvent(type=ButtonType.accelCruise, pressed=True)]
self.v_cruise_helper.update_v_cruise(
pressed_cs,
enabled=True,
is_metric=False,
speed_limit_changed=False,
starpilot_toggles=self.starpilot_toggles,
)
released_cs = car.CarState(cruiseState={"available": True})
released_cs.buttonEvents = [ButtonEvent(type=ButtonType.accelCruise, pressed=False)]
self.v_cruise_helper.update_v_cruise(
released_cs,
enabled=True,
is_metric=False,
speed_limit_changed=False,
starpilot_toggles=self.starpilot_toggles,
)
assert self.v_cruise_helper.v_cruise_kph == pytest.approx(initial_v_cruise_kph + IMPERIAL_INCREMENT)