Controls - Quality of Life - Cruise Increase Interval

Set a custom interval to increase the max set speed by.
This commit is contained in:
FrogAi 2024-05-10 16:41:55 -07:00
parent 78638715cd
commit cf96018f3f
2 changed files with 7 additions and 6 deletions

View File

@ -479,7 +479,7 @@ class Controls:
def state_transition(self, CS): def state_transition(self, CS):
"""Compute conditional state transitions and execute actions on state transitions""" """Compute conditional state transitions and execute actions on state transitions"""
self.v_cruise_helper.update_v_cruise(CS, self.enabled, self.is_metric) self.v_cruise_helper.update_v_cruise(CS, self.enabled, self.is_metric, self.frogpilot_toggles)
# decrement the soft disable timer at every step, as it's reset on # decrement the soft disable timer at every step, as it's reset on
# entrance in SOFT_DISABLING state # entrance in SOFT_DISABLING state

View File

@ -53,13 +53,13 @@ class VCruiseHelper:
def v_cruise_initialized(self): def v_cruise_initialized(self):
return self.v_cruise_kph != V_CRUISE_UNSET return self.v_cruise_kph != V_CRUISE_UNSET
def update_v_cruise(self, CS, enabled, is_metric): def update_v_cruise(self, CS, enabled, is_metric, frogpilot_variables):
self.v_cruise_kph_last = self.v_cruise_kph self.v_cruise_kph_last = self.v_cruise_kph
if CS.cruiseState.available: if CS.cruiseState.available:
if not self.CP.pcmCruise: if not self.CP.pcmCruise:
# if stock cruise is completely disabled, then we can use our own set speed logic # if stock cruise is completely disabled, then we can use our own set speed logic
self._update_v_cruise_non_pcm(CS, enabled, is_metric) self._update_v_cruise_non_pcm(CS, enabled, is_metric, frogpilot_variables)
self.v_cruise_cluster_kph = self.v_cruise_kph self.v_cruise_cluster_kph = self.v_cruise_kph
self.update_button_timers(CS, enabled) self.update_button_timers(CS, enabled)
else: else:
@ -69,7 +69,7 @@ class VCruiseHelper:
self.v_cruise_kph = V_CRUISE_UNSET self.v_cruise_kph = V_CRUISE_UNSET
self.v_cruise_cluster_kph = V_CRUISE_UNSET self.v_cruise_cluster_kph = V_CRUISE_UNSET
def _update_v_cruise_non_pcm(self, CS, enabled, is_metric): def _update_v_cruise_non_pcm(self, CS, enabled, is_metric, frogpilot_variables):
# handle button presses. TODO: this should be in state_control, but a decelCruise press # 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 # would have the effect of both enabling and changing speed is checked after the state transition
if not enabled: if not enabled:
@ -105,8 +105,9 @@ class VCruiseHelper:
if not self.button_change_states[button_type]["enabled"]: if not self.button_change_states[button_type]["enabled"]:
return return
v_cruise_delta = v_cruise_delta * (5 if long_press else 1) v_cruise_delta_interval = frogpilot_variables.custom_cruise_increase_long if long_press else frogpilot_variables.custom_cruise_increase
if long_press and self.v_cruise_kph % v_cruise_delta != 0: # partial 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 self.v_cruise_kph = CRUISE_NEAREST_FUNC[button_type](self.v_cruise_kph / v_cruise_delta) * v_cruise_delta
else: else:
self.v_cruise_kph += v_cruise_delta * CRUISE_INTERVAL_SIGN[button_type] self.v_cruise_kph += v_cruise_delta * CRUISE_INTERVAL_SIGN[button_type]