|
|
|
@ -1,8 +1,9 @@ |
|
|
|
|
#!/usr/bin/env python3 |
|
|
|
|
import re |
|
|
|
|
import random |
|
|
|
|
|
|
|
|
|
from cereal import car |
|
|
|
|
from selfdrive.car.hyundai.values import FW_VERSIONS |
|
|
|
|
from selfdrive.car.hyundai.values import FW_VERSIONS, match_fw_to_hyundai_fuzzy |
|
|
|
|
|
|
|
|
|
Ecu = car.CarParams.Ecu |
|
|
|
|
|
|
|
|
@ -17,6 +18,7 @@ RADAR_REGEX = br'([A-Z]+[A-Z0-9]*)' |
|
|
|
|
def get_platform_codes(car_fw): |
|
|
|
|
radar_codes = set() |
|
|
|
|
camera_codes = set() |
|
|
|
|
if (Ecu.fwdRadar, 0x7d0, None) in car_fw: |
|
|
|
|
for fw in car_fw[(Ecu.fwdRadar, 0x7d0, None)]: |
|
|
|
|
start_idx = fw.index(b'\xf1\x00') |
|
|
|
|
fw = fw[start_idx + 2:][:4] |
|
|
|
@ -49,3 +51,28 @@ for car, car_fw in FW_VERSIONS.items(): |
|
|
|
|
radar_codes, camera_codes = get_platform_codes(car_fw) |
|
|
|
|
|
|
|
|
|
print(f"{car:36}: radar: {radar_codes}, camera: {camera_codes}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
issue = set() |
|
|
|
|
for i in range(200): |
|
|
|
|
for car, versions in FW_VERSIONS.items(): |
|
|
|
|
if 'HYUNDAI GENESIS' in car: |
|
|
|
|
continue |
|
|
|
|
versions = {(ecu[1], ecu[2]): [random.choice(fws)] for ecu, fws in versions.items()} |
|
|
|
|
# print(versions) |
|
|
|
|
|
|
|
|
|
ret = match_fw_to_hyundai_fuzzy(versions) |
|
|
|
|
# is_exact, ret = match_fw_to_car(versions, allow_exact=False) |
|
|
|
|
# ret = match_fw_to_car_fuzzy(versions, config=None) |
|
|
|
|
if len(ret) != 1: |
|
|
|
|
print(f'Not one match! {car=}: {ret=}') |
|
|
|
|
issue.add(car) |
|
|
|
|
elif list(ret)[0] != car: |
|
|
|
|
print(f'Matched to wrong car! real: {car}, match: {ret}') |
|
|
|
|
issue.add(car) |
|
|
|
|
|
|
|
|
|
print() |
|
|
|
|
print('bad:', issue) |
|
|
|
|
print() |
|
|
|
|
print('good:', set(FW_VERSIONS) - issue) |
|
|
|
|
# raise Exception |
|
|
|
|