Revert "Car interface: require fingerprint and FW versions to get params (#26766)"

This reverts commit b68dabb689.
pull/26932/head
Adeeb Shihadeh 2 years ago
parent 97b931a12a
commit f14deae475
  1. 2
      selfdrive/car/docs.py
  2. 13
      selfdrive/car/interfaces.py
  3. 2
      selfdrive/car/tests/test_car_interfaces.py
  4. 2
      selfdrive/car/tests/test_fw_fingerprint.py
  5. 2
      selfdrive/controls/lib/tests/test_latcontrol.py
  6. 2
      selfdrive/controls/lib/tests/test_vehicle_model.py
  7. 2
      selfdrive/controls/tests/test_state_machine.py
  8. 2
      selfdrive/debug/cycle_alerts.py
  9. 2
      selfdrive/debug/internal/test_paramsd.py
  10. 2
      selfdrive/test/longitudinal_maneuvers/plant.py
  11. 2
      selfdrive/test/process_replay/process_replay.py

@ -29,7 +29,7 @@ def get_all_car_info() -> List[CarInfo]:
all_car_info: List[CarInfo] = [] all_car_info: List[CarInfo] = []
footnotes = get_all_footnotes() footnotes = get_all_footnotes()
for model, car_info in get_interface_attr("CAR_INFO", combine_brands=True).items(): for model, car_info in get_interface_attr("CAR_INFO", combine_brands=True).items():
CP = interfaces[model][0].get_params(model, fingerprint=gen_empty_fingerprint(), car_fw=[car.CarParams.CarFw(ecu="unknown")], experimental_long=False) CP = interfaces[model][0].get_params(model, fingerprint=gen_empty_fingerprint(), car_fw=[car.CarParams.CarFw(ecu="unknown")])
if CP.dashcamOnly or car_info is None: if CP.dashcamOnly or car_info is None:
continue continue

@ -88,14 +88,13 @@ class CarInterfaceBase(ABC):
return ACCEL_MIN, ACCEL_MAX return ACCEL_MIN, ACCEL_MAX
@classmethod @classmethod
def get_non_essential_params(cls, candidate: str): def get_params(cls, candidate: str, fingerprint: Optional[Dict[int, Dict[int, int]]] = None, car_fw: Optional[List[car.CarParams.CarFw]] = None, experimental_long: bool = False):
""" if fingerprint is None:
Parameters essential to controlling the car may be incomplete or wrong without FW versions or fingerprints. fingerprint = gen_empty_fingerprint()
"""
return cls.get_params(candidate, gen_empty_fingerprint(), list(), False) if car_fw is None:
car_fw = list()
@classmethod
def get_params(cls, candidate: str, fingerprint: Dict[int, Dict[int, int]], car_fw: List[car.CarParams.CarFw], experimental_long: bool):
ret = CarInterfaceBase.get_std_params(candidate) ret = CarInterfaceBase.get_std_params(candidate)
ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long)

@ -25,7 +25,7 @@ class TestCarInterfaces(unittest.TestCase):
car_fw = [] car_fw = []
car_params = CarInterface.get_params(car_name, fingerprints, car_fw, experimental_long=False) car_params = CarInterface.get_params(car_name, fingerprints, car_fw)
car_interface = CarInterface(car_params, CarController, CarState) car_interface = CarInterface(car_params, CarController, CarState)
assert car_params assert car_params
assert car_interface assert car_interface

@ -67,7 +67,7 @@ class TestFwFingerprint(unittest.TestCase):
blacklisted_addrs = (0x7c4, 0x7d0) # includes A/C ecu and an unknown ecu blacklisted_addrs = (0x7c4, 0x7d0) # includes A/C ecu and an unknown ecu
for car_model, ecus in FW_VERSIONS.items(): for car_model, ecus in FW_VERSIONS.items():
with self.subTest(car_model=car_model): with self.subTest(car_model=car_model):
CP = interfaces[car_model][0].get_non_essential_params(car_model) CP = interfaces[car_model][0].get_params(car_model)
if CP.carName == 'subaru': if CP.carName == 'subaru':
for ecu in ecus.keys(): for ecu in ecus.keys():
self.assertNotIn(ecu[1], blacklisted_addrs, f'{car_model}: Blacklisted ecu: (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])})') self.assertNotIn(ecu[1], blacklisted_addrs, f'{car_model}: Blacklisted ecu: (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])})')

@ -20,7 +20,7 @@ class TestLatControl(unittest.TestCase):
@parameterized.expand([(HONDA.CIVIC, LatControlPID), (TOYOTA.RAV4, LatControlTorque), (TOYOTA.PRIUS, LatControlINDI), (NISSAN.LEAF, LatControlAngle)]) @parameterized.expand([(HONDA.CIVIC, LatControlPID), (TOYOTA.RAV4, LatControlTorque), (TOYOTA.PRIUS, LatControlINDI), (NISSAN.LEAF, LatControlAngle)])
def test_saturation(self, car_name, controller): def test_saturation(self, car_name, controller):
CarInterface, CarController, CarState = interfaces[car_name] CarInterface, CarController, CarState = interfaces[car_name]
CP = CarInterface.get_non_essential_params(car_name) CP = CarInterface.get_params(car_name)
CI = CarInterface(CP, CarController, CarState) CI = CarInterface(CP, CarController, CarState)
VM = VehicleModel(CP) VM = VehicleModel(CP)

@ -12,7 +12,7 @@ from selfdrive.controls.lib.vehicle_model import VehicleModel, dyn_ss_sol, creat
class TestVehicleModel(unittest.TestCase): class TestVehicleModel(unittest.TestCase):
def setUp(self): def setUp(self):
CP = CarInterface.get_non_essential_params(CAR.CIVIC) CP = CarInterface.get_params(CAR.CIVIC)
self.VM = VehicleModel(CP) self.VM = VehicleModel(CP)
def test_round_trip_yaw_rate(self): def test_round_trip_yaw_rate(self):

@ -31,7 +31,7 @@ class TestStateMachine(unittest.TestCase):
def setUp(self): def setUp(self):
CarInterface, CarController, CarState = interfaces["mock"] CarInterface, CarController, CarState = interfaces["mock"]
CP = CarInterface.get_non_essential_params("mock") CP = CarInterface.get_params("mock")
CI = CarInterface(CP, CarController, CarState) CI = CarInterface(CP, CarController, CarState)
self.controlsd = Controls(CI=CI) self.controlsd = Controls(CI=CI)

@ -51,7 +51,7 @@ def cycle_alerts(duration=200, is_metric=False):
cameras = ['roadCameraState', 'wideRoadCameraState', 'driverCameraState'] cameras = ['roadCameraState', 'wideRoadCameraState', 'driverCameraState']
CS = car.CarState.new_message() CS = car.CarState.new_message()
CP = CarInterface.get_non_essential_params("HONDA CIVIC 2016") CP = CarInterface.get_params("HONDA CIVIC 2016")
sm = messaging.SubMaster(['deviceState', 'pandaStates', 'roadCameraState', 'modelV2', 'liveCalibration', sm = messaging.SubMaster(['deviceState', 'pandaStates', 'roadCameraState', 'modelV2', 'liveCalibration',
'driverMonitoringState', 'longitudinalPlan', 'lateralPlan', 'liveLocationKalman', 'driverMonitoringState', 'longitudinalPlan', 'lateralPlan', 'liveLocationKalman',
'managerState'] + cameras) 'managerState'] + cameras)

@ -20,7 +20,7 @@ T_SIM = 5 * 60 # s
DT = 0.01 DT = 0.01
CP = CarInterface.get_non_essential_params(CAR.CIVIC) CP = CarInterface.get_params(CAR.CIVIC)
VM = VehicleModel(CP) VM = VehicleModel(CP)
x, y = 0, 0 # m, m x, y = 0, 0 # m, m

@ -49,7 +49,7 @@ class Plant:
from selfdrive.car.honda.values import CAR from selfdrive.car.honda.values import CAR
from selfdrive.car.honda.interface import CarInterface from selfdrive.car.honda.interface import CarInterface
self.planner = LongitudinalPlanner(CarInterface.get_non_essential_params(CAR.CIVIC), init_v=self.speed) self.planner = LongitudinalPlanner(CarInterface.get_params(CAR.CIVIC), init_v=self.speed)
@property @property
def current_time(self): def current_time(self):

@ -180,7 +180,7 @@ def fingerprint(msgs, fsm, can_sock, fingerprint):
def get_car_params(msgs, fsm, can_sock, fingerprint): def get_car_params(msgs, fsm, can_sock, fingerprint):
if fingerprint: if fingerprint:
CarInterface, _, _ = interfaces[fingerprint] CarInterface, _, _ = interfaces[fingerprint]
CP = CarInterface.get_non_essential_params(fingerprint) CP = CarInterface.get_params(fingerprint)
else: else:
can = FakeSocket(wait=False) can = FakeSocket(wait=False)
sendcan = FakeSocket(wait=False) sendcan = FakeSocket(wait=False)

Loading…
Cancel
Save