diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index f4881dd363..6112ded880 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -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})) diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index b0a1c15f34..7d8d5754e3 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -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})) diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 4a1e459722..9bba662906 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -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 diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index af294a63a7..70124a8892 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -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), diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 72a12b0ba8..f0d0154d69 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -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})) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index b8ca13ec86..0a88762e57 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -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 diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 2bd4f71c78..7b9c6120ec 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -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})) diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 4a9e5a9125..661ac668a5 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -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}) diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 7eefeb66eb..185ee8e54d 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -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) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 1b0528d12c..5214cc1265 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -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 diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index d965cf2e8b..0d57539a1b 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -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)