mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-06-25 20:42:10 +08:00
car: Check params before car state is updated
This commit is contained in:
@@ -91,7 +91,6 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.button_events.extend(create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}))
|
||||
self.CS.button_events.extend(create_button_events(self.CS.lkas_enabled, self.CS.prev_lkas_enabled, {1: ButtonType.altButton1}))
|
||||
|
||||
@@ -72,7 +72,6 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.button_events.extend(create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}))
|
||||
self.CS.button_events.extend(create_button_events(self.CS.lkas_enabled, self.CS.prev_lkas_enabled, {1: ButtonType.altButton1}))
|
||||
|
||||
@@ -204,7 +204,6 @@ class CarInterface(CarInterfaceBase):
|
||||
# returns a car.CarState
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam, self.cp_loopback)
|
||||
self.sp_update_params()
|
||||
|
||||
distance_button = 0
|
||||
|
||||
|
||||
@@ -266,7 +266,6 @@ class CarInterface(CarInterfaceBase):
|
||||
# returns a car.CarState
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam, self.cp_body)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.button_events = [
|
||||
*create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT),
|
||||
|
||||
@@ -203,7 +203,6 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.button_events.extend(create_button_events(self.CS.cruise_buttons[-1], self.CS.prev_cruise_buttons, BUTTONS_DICT))
|
||||
self.CS.button_events.extend(create_button_events(self.CS.lfa_enabled, self.CS.prev_lfa_enabled, {1: ButtonType.altButton1}))
|
||||
|
||||
+24
-21
@@ -239,16 +239,10 @@ class CarInterfaceBase(ABC):
|
||||
self.gear_warning = 0
|
||||
self.cruise_cancelled_btn = True
|
||||
self.acc_mads_combo = self.param_s.get_bool("AccMadsCombo")
|
||||
self.is_metric = self.param_s.get_bool("IsMetric")
|
||||
self.below_speed_pause = self.param_s.get_bool("BelowSpeedPause")
|
||||
self.pause_lateral_speed = int(self.param_s.get("PauseLateralSpeed", encoding="utf8"))
|
||||
self.prev_acc_mads_combo = False
|
||||
self.mads_event_lock = True
|
||||
self.gap_button_counter = 0
|
||||
self.experimental_mode_hold = False
|
||||
self.experimental_mode = self.param_s.get_bool("ExperimentalMode")
|
||||
self._frame = 0
|
||||
self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam")
|
||||
self.mads_main_toggle = self.param_s.get_bool("MadsCruiseMain")
|
||||
self.lkas_toggle = self.param_s.get_bool("LkasToggle")
|
||||
self.last_mads_init = 0.
|
||||
@@ -429,6 +423,8 @@ class CarInterfaceBase(ABC):
|
||||
|
||||
self.CS.button_events = []
|
||||
|
||||
self.CS.sp_update_params()
|
||||
|
||||
# get CarState
|
||||
ret = self._update(c)
|
||||
|
||||
@@ -472,7 +468,7 @@ class CarInterfaceBase(ABC):
|
||||
else:
|
||||
events.add(EventName.wrongGear)
|
||||
if cs_out.gearShifter == GearShifter.reverse:
|
||||
if not self.reverse_dm_cam and cs_out.vEgo < 5:
|
||||
if not self.CS.reverse_dm_cam and cs_out.vEgo < 5:
|
||||
events.add(EventName.spReverseGear)
|
||||
elif cs_out.vEgo >= 5:
|
||||
events.add(EventName.reverseGear)
|
||||
@@ -634,9 +630,9 @@ class CarInterfaceBase(ABC):
|
||||
if self.CP.openpilotLongitudinalControl:
|
||||
self.toggle_exp_mode(gap_button)
|
||||
|
||||
lane_change_speed_min = get_min_lateral_speed(self.pause_lateral_speed, self.is_metric)
|
||||
lane_change_speed_min = get_min_lateral_speed(self.CS.pause_lateral_speed, self.CS.sp_is_metric)
|
||||
|
||||
cs_out.belowLaneChangeSpeed = cs_out.vEgo < lane_change_speed_min and self.below_speed_pause
|
||||
cs_out.belowLaneChangeSpeed = cs_out.vEgo < lane_change_speed_min and self.CS.below_speed_pause
|
||||
|
||||
if cs_out.gearShifter in [GearShifter.park, GearShifter.reverse] or cs_out.doorOpen or \
|
||||
(cs_out.seatbeltUnlatched and cs_out.gearShifter != GearShifter.park):
|
||||
@@ -669,7 +665,7 @@ class CarInterfaceBase(ABC):
|
||||
if self.gap_button_counter > 50:
|
||||
self.gap_button_counter = 0
|
||||
self.experimental_mode_hold = True
|
||||
self.param_s.put_bool_nonblocking("ExperimentalMode", not self.experimental_mode)
|
||||
self.param_s.put_bool_nonblocking("ExperimentalMode", not self.CS.experimental_mode)
|
||||
else:
|
||||
self.gap_button_counter = 0
|
||||
self.experimental_mode_hold = False
|
||||
@@ -735,17 +731,6 @@ class CarInterfaceBase(ABC):
|
||||
|
||||
return events, cs_out
|
||||
|
||||
def sp_update_params(self):
|
||||
self.experimental_mode = self.param_s.get_bool("ExperimentalMode")
|
||||
self._frame += 1
|
||||
if self._frame % 100 == 0:
|
||||
self.is_metric = self.param_s.get_bool("IsMetric")
|
||||
self.below_speed_pause = self.param_s.get_bool("BelowSpeedPause")
|
||||
self.pause_lateral_speed = int(self.param_s.get("PauseLateralSpeed", encoding="utf8"))
|
||||
if self._frame % 300 == 0:
|
||||
self._frame = 0
|
||||
self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam")
|
||||
|
||||
class RadarInterfaceBase(ABC):
|
||||
def __init__(self, CP):
|
||||
self.rcp = None
|
||||
@@ -786,6 +771,13 @@ class CarStateBase(ABC):
|
||||
|
||||
self.button_events: list[capnp.lib.capnp._DynamicStructBuilder] = []
|
||||
|
||||
self._frame = 0
|
||||
self.experimental_mode = self.param_s.get_bool("ExperimentalMode")
|
||||
self.sp_is_metric = self.param_s.get_bool("IsMetric")
|
||||
self.below_speed_pause = self.param_s.get_bool("BelowSpeedPause")
|
||||
self.pause_lateral_speed = int(self.param_s.get("PauseLateralSpeed", encoding="utf8"))
|
||||
self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam")
|
||||
|
||||
Q = [[0.0, 0.0], [0.0, 100.0]]
|
||||
R = 0.3
|
||||
A = [[1.0, DT_CTRL], [0.0, 1.0]]
|
||||
@@ -848,6 +840,17 @@ class CarStateBase(ABC):
|
||||
|
||||
return bool(left_blinker_stalk or self.left_blinker_cnt > 0), bool(right_blinker_stalk or self.right_blinker_cnt > 0)
|
||||
|
||||
def sp_update_params(self):
|
||||
self.experimental_mode = self.param_s.get_bool("ExperimentalMode")
|
||||
self._frame += 1
|
||||
if self._frame % 100 == 0:
|
||||
self.sp_is_metric = self.param_s.get_bool("IsMetric")
|
||||
self.below_speed_pause = self.param_s.get_bool("BelowSpeedPause")
|
||||
self.pause_lateral_speed = int(self.param_s.get("PauseLateralSpeed", encoding="utf8"))
|
||||
if self._frame % 300 == 0:
|
||||
self._frame = 0
|
||||
self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam")
|
||||
|
||||
def update_custom_stock_long(self, cruise_button, final_speed_kph, target_speed, v_set_dis, speed_diff, button_type):
|
||||
customStockLong = car.CarState.CustomStockLong.new_message()
|
||||
customStockLong.cruiseButton = 0 if cruise_button is None else cruise_button
|
||||
|
||||
@@ -37,7 +37,6 @@ class CarInterface(CarInterfaceBase):
|
||||
# returns a car.CarState
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam)
|
||||
self.sp_update_params()
|
||||
|
||||
# TODO: add button types for inc and dec
|
||||
self.CS.button_events.extend(create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}))
|
||||
|
||||
@@ -32,7 +32,6 @@ class CarInterface(CarInterfaceBase):
|
||||
# returns a car.CarState
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_adas, self.cp_cam)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.button_events = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise})
|
||||
|
||||
|
||||
@@ -116,7 +116,6 @@ class CarInterface(CarInterfaceBase):
|
||||
def _update(self, c):
|
||||
|
||||
ret = self.CS.update(self.cp, self.cp_cam, self.cp_body)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS)
|
||||
|
||||
|
||||
@@ -207,7 +207,6 @@ class CarInterface(CarInterfaceBase):
|
||||
# returns a car.CarState
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam)
|
||||
self.sp_update_params()
|
||||
|
||||
distance_button = 0
|
||||
|
||||
|
||||
@@ -113,7 +113,6 @@ class CarInterface(CarInterfaceBase):
|
||||
# returns a car.CarState
|
||||
def _update(self, c):
|
||||
ret = self.CS.update(self.cp, self.cp_cam, self.cp_ext, self.CP.transmissionType)
|
||||
self.sp_update_params()
|
||||
|
||||
self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user