From 93226506fa79efb7aacd50567d4e98094ebdc2f9 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 20 Jul 2024 18:32:50 -0400 Subject: [PATCH] encapsulate cancel event in method --- selfdrive/car/__init__.py | 9 +++++++++ selfdrive/car/nissan/interface.py | 10 ++-------- selfdrive/car/subaru/interface.py | 10 ++-------- selfdrive/car/toyota/interface.py | 10 ++-------- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 293ee2387c..06fa120eee 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -43,6 +43,15 @@ def create_button_events(cur_btn: int, prev_btn: int, buttons_dict: dict[int, ca return events +def create_cancel_event(long_enabled: bool, prev_long_enabled: bool) -> list[capnp.lib.capnp._DynamicStructBuilder]: + events: list[capnp.lib.capnp._DynamicStructBuilder] = [] + + if not long_enabled and prev_long_enabled: + events.append(car.CarState.ButtonEvent(pressed=True, + type=ButtonType.cancel)) + return events + + def create_mads_event(mads_enabled: bool, prev_mads_enabled: bool, mads_event_lock: bool) -> tuple[list[capnp.lib.capnp._DynamicStructBuilder], bool]: events: list[capnp.lib.capnp._DynamicStructBuilder] = [] diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 26467d9f80..2176a4a107 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -1,6 +1,6 @@ from cereal import car from panda import Panda -from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event +from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event, create_cancel_event from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.nissan.values import CAR @@ -53,15 +53,9 @@ class CarInterface(CarInterfaceBase): ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) - # CANCEL - if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: - be = car.CarState.ButtonEvent.new_message() - be.pressed = True - be.type = ButtonType.cancel - self.CS.button_events.append(be) - ret.buttonEvents = [ *self.CS.button_events, + *create_cancel_event(ret.cruiseState.enabled, self.CS.out.cruiseState.enabled) *create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON ] diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index d12aa44e18..f6b6fad9e9 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -1,6 +1,6 @@ from cereal import car from panda import Panda -from openpilot.selfdrive.car import get_safety_config, create_mads_event +from openpilot.selfdrive.car import get_safety_config, create_mads_event, create_cancel_event from openpilot.selfdrive.car.disable_ecu import disable_ecu from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.subaru.values import CAR, GLOBAL_ES_ADDR, SubaruFlags, SubaruFlagsSP @@ -143,15 +143,9 @@ class CarInterface(CarInterfaceBase): ret, self.CS = self.get_sp_common_state(ret, self.CS) - # CANCEL - if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: - be = car.CarState.ButtonEvent.new_message() - be.pressed = True - be.type = ButtonType.cancel - self.CS.button_events.append(be) - ret.buttonEvents = [ *self.CS.button_events, + *create_cancel_event(ret.cruiseState.enabled, self.CS.out.cruiseState.enabled), *create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON ] diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 85b895b3fd..35db87e1f9 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -5,7 +5,7 @@ from panda import Panda from panda.python import uds from openpilot.selfdrive.car.toyota.values import Ecu, CAR, DBC, ToyotaFlags, ToyotaFlagsSP, CarControllerParams, TSS2_CAR, RADAR_ACC_CAR, NO_DSU_CAR, \ MIN_ACC_SPEED, EPS_SCALE, UNSUPPORTED_DSU_CAR, NO_STOP_TIMER_CAR, ANGLE_CONTROL_CAR -from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event +from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event, create_cancel_event from openpilot.selfdrive.car.disable_ecu import disable_ecu from openpilot.selfdrive.car.interfaces import CarInterfaceBase @@ -244,15 +244,9 @@ class CarInterface(CarInterfaceBase): ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(distance_button)) - # CANCEL - if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: - be = car.CarState.ButtonEvent.new_message() - be.pressed = True - be.type = ButtonType.cancel - self.CS.button_events.append(be) - ret.buttonEvents = [ *ret.buttonEvents, + *create_cancel_event(ret.cruiseState.enabled, self.CS.out.cruiseState.enabled) *create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON ]