From f428a2b4392f8b404b6aa25ecd6f6f4bdcca878d Mon Sep 17 00:00:00 2001 From: infiniteCable <75014343+infiniteCable@users.noreply.github.com> Date: Sat, 26 Apr 2025 09:23:08 +0200 Subject: [PATCH] Update cruise.py --- selfdrive/car/cruise.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/selfdrive/car/cruise.py b/selfdrive/car/cruise.py index c73643c3d..303edfb9e 100644 --- a/selfdrive/car/cruise.py +++ b/selfdrive/car/cruise.py @@ -36,6 +36,7 @@ class VCruiseHelper: self.v_cruise_kph_last = 0 self.button_timers = {ButtonType.decelCruise: 0, ButtonType.accelCruise: 0} self.button_change_states = {btn: {"standstill": False, "enabled": False} for btn in self.button_timers} + self.v_speed_limit_kph = 0 @property def v_cruise_initialized(self): @@ -47,6 +48,7 @@ class VCruiseHelper: if CS.cruiseState.available: if not self.CP.pcmCruise: # if stock cruise is completely disabled, then we can use our own set speed logic + self._update_v_speed_limit(CS, enabled) self._update_v_cruise_non_pcm(CS, enabled, is_metric) self.v_cruise_cluster_kph = self.v_cruise_kph self.update_button_timers(CS, enabled) @@ -63,6 +65,15 @@ class VCruiseHelper: self.v_cruise_kph = V_CRUISE_UNSET self.v_cruise_cluster_kph = V_CRUISE_UNSET + def _update_v_speed_limit(self, CS, enabled): + if not enabled: + return + + speed_limit = CS.cruiseState.speedLimit * CV.MS_TO_KPH + if speed_limit != self.v_speed_limit_kph and speed_limit != 0: + self.v_cruise_kph = speed_limit + self.v_cruise_kph = np.clip(round(self.v_cruise_kph, 1), V_CRUISE_MIN, V_CRUISE_MAX) + def _update_v_cruise_non_pcm(self, CS, enabled, is_metric): # handle button presses. TODO: this should be in state_control, but a decelCruise press # would have the effect of both enabling and changing speed is checked after the state transition