openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

45 lines
1.6 KiB

#!/usr/bin/env python3
import random
import unittest
from collections import defaultdict
from parameterized import parameterized
from cereal import car
from selfdrive.car.car_helpers import get_interface_attr, interfaces
from selfdrive.car.fingerprints import FW_VERSIONS
from selfdrive.car.fw_versions import FW_QUERY_CONFIGS, VERSIONS, match_fw_to_car
CarFw = car.CarParams.CarFw
Ecu = car.CarParams.Ecu
ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()}
class TestFwFingerprint(unittest.TestCase):
# TODO: test multiple pandas
@parameterized.expand([(1,), (2,)])
def test_fw_query_metrics(self, num_pandas):
for brand, config in FW_QUERY_CONFIGS.items():
with self.subTest(brand=brand, num_pandas=num_pandas):
requests = [r for r in config.requests if r.bus <= num_pandas * 4 - 1]
multi_panda_requests = [r for r in config.requests if r.bus > 3]
if not len(multi_panda_requests) and num_pandas > 1:
raise unittest.SkipTest("No multi-panda FW queries")
total_time = 0
obd_multiplexing = config.requests[0].obd_multiplexing # only count OBD multiplexing transitions
for r in requests:
total_time += 0.1
if r.obd_multiplexing != obd_multiplexing and r.bus % 4 == 1:
obd_multiplexing = r.obd_multiplexing
total_time += 0.1
total_time = round(total_time, 2)
self.assertLessEqual(total_time, 1.1)
print(f'{brand=}, {num_pandas=}, {len(requests)=}, total FW query time={total_time} seconds')
if __name__ == "__main__":
unittest.main()