encapsulate in a class

This commit is contained in:
Jason Wen
2024-07-20 18:48:07 -04:00
parent 93226506fa
commit b95079bf7a
12 changed files with 42 additions and 38 deletions
+17 -14
View File
@@ -43,25 +43,28 @@ 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] = []
class ButtonEvents:
def __init__(self) -> None:
self.mads_event_lock: bool = True
if not long_enabled and prev_long_enabled:
events.append(car.CarState.ButtonEvent(pressed=True,
type=ButtonType.cancel))
return events
@staticmethod
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] = []
def create_mads_event(self, mads_enabled: bool, prev_mads_enabled: bool) -> list[capnp.lib.capnp._DynamicStructBuilder]:
events: list[capnp.lib.capnp._DynamicStructBuilder] = []
mads_changed = prev_mads_enabled != mads_enabled
if (mads_changed and mads_event_lock) or (not mads_changed and not mads_event_lock):
events.append(car.CarState.ButtonEvent(pressed=mads_event_lock, type=ButtonType.altButton1))
mads_event_lock = not mads_event_lock
mads_changed = prev_mads_enabled != mads_enabled
if (mads_changed and self.mads_event_lock) or (not mads_changed and not self.mads_event_lock):
events.append(car.CarState.ButtonEvent(pressed=self.mads_event_lock, type=ButtonType.altButton1))
self.mads_event_lock = not self.mads_event_lock
return events, mads_event_lock
return events
def gen_empty_fingerprint():
+2 -2
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
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
from openpilot.selfdrive.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, ChryslerFlagsSP
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
@@ -139,7 +139,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
# events
+2 -2
View File
@@ -1,7 +1,7 @@
from cereal import car
from panda import Panda
from openpilot.common.conversions import Conversions as CV
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
from openpilot.selfdrive.car.ford.fordcan import CanBus
from openpilot.selfdrive.car.ford.values import Ecu, FordFlags
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
@@ -109,7 +109,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
events = self.create_common_events(ret, c, extra_gears=[GearShifter.manumatic], pcm_enable=False)
+2 -2
View File
@@ -6,7 +6,7 @@ from panda import Panda
from openpilot.common.basedir import BASEDIR
from openpilot.common.conversions import Conversions as CV
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
from openpilot.selfdrive.car.gm.radar_interface import RADAR_HEADER_MSG
from openpilot.selfdrive.car.gm.values import CAR, CruiseButtons, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, CanBus
from openpilot.selfdrive.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, FRICTION_THRESHOLD, LatControlInputs, NanoFFModel
@@ -252,7 +252,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
# The ECM allows enabling on falling edge of set, but only rising edge of resume
+2 -2
View File
@@ -6,7 +6,7 @@ from openpilot.common.numpy_fast import interp
from openpilot.selfdrive.car.honda.hondacan import CanBus
from openpilot.selfdrive.car.honda.values import CarControllerParams, CruiseButtons, CruiseSettings, HondaFlags, CAR, HONDA_BOSCH, \
HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS
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
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot.selfdrive.car.disable_ecu import disable_ecu
@@ -305,7 +305,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
# events
+2 -2
View File
@@ -7,7 +7,7 @@ from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP,
CANFD_UNSUPPORTED_LONGITUDINAL_CAR, NON_SCC_CAR, EV_CAR, HYBRID_CAR, LEGACY_SAFETY_MODE_CAR, \
UNSUPPORTED_LONGITUDINAL_CAR, Buttons
from openpilot.selfdrive.car.hyundai.radar_interface import RADAR_START_ADDR
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
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot.selfdrive.car.disable_ecu import disable_ecu
@@ -243,7 +243,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
# On some newer model years, the CANCEL button acts as a pause/resume button based on the PCM state
+2 -1
View File
@@ -18,7 +18,7 @@ from openpilot.common.simple_kalman import KF1D, get_kalman_gain
from openpilot.common.numpy_fast import clip
from openpilot.common.params import Params
from openpilot.common.realtime import DT_CTRL
from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG
from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG, ButtonEvents
from openpilot.selfdrive.car.values import PLATFORMS
from openpilot.selfdrive.controls.lib.desire_helper import get_min_lateral_speed
from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, V_CRUISE_UNSET, get_friction
@@ -254,6 +254,7 @@ class CarInterfaceBase(ABC):
self.last_mads_init = 0.
self.madsEnabledInit = False
self.madsEnabledInitPrev = False
self.button_events = ButtonEvents()
self.lat_torque_nn_model = None
eps_firmware = str(next((fw.fwVersion for fw in CP.carFw if fw.ecu == "eps"), ""))
+2 -2
View File
@@ -2,7 +2,7 @@
from cereal import car
from openpilot.common.conversions import Conversions as CV
from openpilot.selfdrive.car.mazda.values import CAR, LKAS_LIMITS
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
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
ButtonType = car.CarState.ButtonEvent.Type
@@ -75,7 +75,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
# events
+3 -3
View File
@@ -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, create_cancel_event
from openpilot.selfdrive.car import create_button_events, get_safety_config
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot.selfdrive.car.nissan.values import CAR
@@ -55,8 +55,8 @@ class CarInterface(CarInterfaceBase):
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
*self.button_events.create_cancel_event(ret.cruiseState.enabled, self.CS.out.cruiseState.enabled),
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low, GearShifter.brake],
+3 -3
View File
@@ -1,6 +1,6 @@
from cereal import car
from panda import Panda
from openpilot.selfdrive.car import get_safety_config, create_mads_event, create_cancel_event
from openpilot.selfdrive.car import get_safety_config
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
@@ -145,8 +145,8 @@ class CarInterface(CarInterfaceBase):
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
*self.button_events.create_cancel_event(ret.cruiseState.enabled, self.CS.out.cruiseState.enabled),
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
events = self.create_common_events(ret, c, extra_gears=[GearShifter.sport, GearShifter.low], pcm_enable=False)
+3 -3
View File
@@ -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, create_cancel_event
from openpilot.selfdrive.car import create_button_events, get_safety_config
from openpilot.selfdrive.car.disable_ecu import disable_ecu
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
@@ -246,8 +246,8 @@ class CarInterface(CarInterfaceBase):
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
*self.button_events.create_cancel_event(ret.cruiseState.enabled, self.CS.out.cruiseState.enabled),
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
# events
+2 -2
View File
@@ -1,7 +1,7 @@
from cereal import car
from panda import Panda
from openpilot.common.params import Params
from openpilot.selfdrive.car import get_safety_config, create_mads_event
from openpilot.selfdrive.car import get_safety_config
from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot.selfdrive.car.volkswagen.values import CAR, CANBUS, CarControllerParams, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags, \
VolkswagenFlagsSP
@@ -146,7 +146,7 @@ class CarInterface(CarInterfaceBase):
ret.buttonEvents = [
*ret.buttonEvents,
*create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
*self.button_events.create_mads_event(self.CS.madsEnabled, self.CS.out.madsEnabled, self.mads_event_lock) # MADS BUTTON
]
events = self.create_common_events(ret, c, extra_gears=[GearShifter.eco, GearShifter.sport, GearShifter.manumatic],