enforce message checks in can parser (#20742)
* enforce message checks in can parser * nissan * vw * hkg * subaru * toyota * honda bosch * gm * honda nidec * bump opendbc * not all tss2 have bsm * toyota fixes * honda fixes * vw fix * fix subaru * fix long tests * update refs * crv bsmpull/20748/head
parent
c9a29d6deb
commit
6c7ed8f2e4
19 changed files with 251 additions and 152 deletions
@ -1 +1 @@ |
||||
Subproject commit 8e5eb3ba4db9975e3370f3e4f5e60c0e7b73d078 |
||||
Subproject commit 9532238f186a5022235decc22f3eaf91b636cedc |
@ -1 +1 @@ |
||||
Subproject commit 774b4c98f6b2ae22f23703521e368918014d74b7 |
||||
Subproject commit df29a0726ba95b185241c1e0b8b1c1e37fc96e76 |
@ -1,70 +1,69 @@ |
||||
#!/usr/bin/env python3 |
||||
import unittest |
||||
import importlib |
||||
from parameterized import parameterized |
||||
|
||||
from cereal import car |
||||
from selfdrive.car.fingerprints import all_known_cars |
||||
from selfdrive.car.car_helpers import interfaces |
||||
from selfdrive.car.fingerprints import _FINGERPRINTS as FINGERPRINTS |
||||
|
||||
from cereal import car |
||||
|
||||
|
||||
class TestCarInterfaces(unittest.TestCase): |
||||
def test_car_interfaces(self): |
||||
all_cars = all_known_cars() |
||||
|
||||
for car_name in all_cars: |
||||
print(car_name) |
||||
fingerprint = FINGERPRINTS[car_name][0] |
||||
@parameterized.expand([(car,) for car in all_known_cars()]) |
||||
def test_car_interfaces(self, car_name): |
||||
print(car_name) |
||||
fingerprint = FINGERPRINTS[car_name][0] |
||||
|
||||
CarInterface, CarController, CarState = interfaces[car_name] |
||||
fingerprints = { |
||||
0: fingerprint, |
||||
1: fingerprint, |
||||
2: fingerprint, |
||||
} |
||||
CarInterface, CarController, CarState = interfaces[car_name] |
||||
fingerprints = { |
||||
0: fingerprint, |
||||
1: fingerprint, |
||||
2: fingerprint, |
||||
} |
||||
|
||||
car_fw = [] |
||||
car_fw = [] |
||||
|
||||
car_params = CarInterface.get_params(car_name, fingerprints, car_fw) |
||||
car_interface = CarInterface(car_params, CarController, CarState) |
||||
assert car_params |
||||
assert car_interface |
||||
car_params = CarInterface.get_params(car_name, fingerprints, car_fw) |
||||
car_interface = CarInterface(car_params, CarController, CarState) |
||||
assert car_params |
||||
assert car_interface |
||||
|
||||
self.assertGreater(car_params.mass, 1) |
||||
self.assertGreater(car_params.steerRateCost, 1e-3) |
||||
self.assertGreater(car_params.mass, 1) |
||||
self.assertGreater(car_params.steerRateCost, 1e-3) |
||||
|
||||
if car_params.steerControlType != car.CarParams.SteerControlType.angle: |
||||
tuning = car_params.lateralTuning.which() |
||||
if tuning == 'pid': |
||||
self.assertTrue(len(car_params.lateralTuning.pid.kpV)) |
||||
elif tuning == 'lqr': |
||||
self.assertTrue(len(car_params.lateralTuning.lqr.a)) |
||||
elif tuning == 'indi': |
||||
self.assertTrue(len(car_params.lateralTuning.indi.outerLoopGainV)) |
||||
if car_params.steerControlType != car.CarParams.SteerControlType.angle: |
||||
tuning = car_params.lateralTuning.which() |
||||
if tuning == 'pid': |
||||
self.assertTrue(len(car_params.lateralTuning.pid.kpV)) |
||||
elif tuning == 'lqr': |
||||
self.assertTrue(len(car_params.lateralTuning.lqr.a)) |
||||
elif tuning == 'indi': |
||||
self.assertTrue(len(car_params.lateralTuning.indi.outerLoopGainV)) |
||||
|
||||
# Run car interface |
||||
CC = car.CarControl.new_message() |
||||
for _ in range(10): |
||||
car_interface.update(CC, []) |
||||
car_interface.apply(CC) |
||||
car_interface.apply(CC) |
||||
# Run car interface |
||||
CC = car.CarControl.new_message() |
||||
for _ in range(10): |
||||
car_interface.update(CC, []) |
||||
car_interface.apply(CC) |
||||
car_interface.apply(CC) |
||||
|
||||
CC = car.CarControl.new_message() |
||||
CC.enabled = True |
||||
for _ in range(10): |
||||
car_interface.update(CC, []) |
||||
car_interface.apply(CC) |
||||
car_interface.apply(CC) |
||||
CC = car.CarControl.new_message() |
||||
CC.enabled = True |
||||
for _ in range(10): |
||||
car_interface.update(CC, []) |
||||
car_interface.apply(CC) |
||||
car_interface.apply(CC) |
||||
|
||||
# Test radar interface |
||||
RadarInterface = importlib.import_module('selfdrive.car.%s.radar_interface' % car_params.carName).RadarInterface |
||||
radar_interface = RadarInterface(car_params) |
||||
assert radar_interface |
||||
# Test radar interface |
||||
RadarInterface = importlib.import_module('selfdrive.car.%s.radar_interface' % car_params.carName).RadarInterface |
||||
radar_interface = RadarInterface(car_params) |
||||
assert radar_interface |
||||
|
||||
# Run radar interface once |
||||
radar_interface.update([]) |
||||
if not car_params.radarOffCan and hasattr(radar_interface, '_update') and hasattr(radar_interface, 'trigger_msg'): |
||||
radar_interface._update([radar_interface.trigger_msg]) |
||||
# Run radar interface once |
||||
radar_interface.update([]) |
||||
if not car_params.radarOffCan and hasattr(radar_interface, '_update') and hasattr(radar_interface, 'trigger_msg'): |
||||
radar_interface._update([radar_interface.trigger_msg]) |
||||
|
||||
if __name__ == "__main__": |
||||
unittest.main() |
||||
|
@ -1 +1 @@ |
||||
381c4976c45f232f413b37945fbcd43391174089 |
||||
8539d7c0d5186cd2d13e7f031ecb93e64b5ed8ae |
Loading…
Reference in new issue