elif msg.which() == "carParams": bts = msg.carParams.as_builder().to_bytes() car_fw = msg.carParams.carFw if len(car_fw) == 0: break dongles.append(dongle_id) live_fingerprint = msg.carParams.carFingerprint if args.car is not None: live_fingerprint = args.car if live_fingerprint not in list( TOYOTA_FINGERPRINTS.keys()) + list( HONDA_FINGERPRINTS.keys()) + list( HYUNDAI_FINGERPRINTS.keys()): break candidates = match_fw_to_car(car_fw) if (len(candidates) == 1) and (list(candidates)[0] == live_fingerprint): good += 1 print("Correct", live_fingerprint, dongle_id) break print(f"{dongle_id}|{time}") print("Old style:", live_fingerprint, "Vin", msg.carParams.carVin) print("New style:", candidates)
for msg in lr: if msg.which() == "health": if msg.health.hwType not in ['uno', 'blackPanda']: dongles.append(dongle_id) break elif msg.which() == "carParams": car_fw = msg.carParams.carFw if len(car_fw) == 0: break dongles.append(dongle_id) live_fingerprint = msg.carParams.carFingerprint if live_fingerprint not in list(TOYOTA_FINGERPRINTS.keys()) + list(HONDA_FINGERPRINTS.keys()): continue candidates = match_fw_to_car(car_fw) if (len(candidates) == 1) and (list(candidates)[0] == live_fingerprint): good += 1 print("Correct", live_fingerprint, dongle_id) break print(f"{dongle_id}|{time}") print("Old style:", live_fingerprint, "Vin", msg.carParams.carVin) print("New style:", candidates) for version in car_fw: subaddr = None if version.subAddress == 0 else hex(version.subAddress) print(f" (Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}],")
if msg.which() == "health": if msg.health.hwType not in ['uno', 'blackPanda']: dongles.append(dongle_id) break elif msg.which() == "carParams": car_fw = msg.carParams.carFw if len(car_fw) == 0: break dongles.append(dongle_id) live_fingerprint = msg.carParams.carFingerprint if live_fingerprint not in list( TOYOTA_FINGERPRINTS.keys()) + list( HONDA_FINGERPRINTS.keys()): continue candidates = match_fw_to_car(car_fw) if (len(candidates) == 1) and (list(candidates)[0] == live_fingerprint): good += 1 print("Correct", live_fingerprint, dongle_id) break print(f"{dongle_id}|{time}") print("Old style:", live_fingerprint, "Vin", msg.carParams.carVin) print("New style:", candidates) for version in car_fw:
from tools.lib.logreader import LogReader from tools.lib.route import Route from selfdrive.car.fw_versions import match_fw_to_car_exact, match_fw_to_car_fuzzy, build_fw_dict from selfdrive.car.toyota.values import FW_VERSIONS as TOYOTA_FW_VERSIONS from selfdrive.car.honda.values import FW_VERSIONS as HONDA_FW_VERSIONS from selfdrive.car.hyundai.values import FW_VERSIONS as HYUNDAI_FW_VERSIONS from selfdrive.car.volkswagen.values import FW_VERSIONS as VW_FW_VERSIONS from selfdrive.car.toyota.values import FINGERPRINTS as TOYOTA_FINGERPRINTS from selfdrive.car.honda.values import FINGERPRINTS as HONDA_FINGERPRINTS from selfdrive.car.hyundai.values import FINGERPRINTS as HYUNDAI_FINGERPRINTS from selfdrive.car.volkswagen.values import FINGERPRINTS as VW_FINGERPRINTS NO_API = "NO_API" in os.environ SUPPORTED_CARS = list(TOYOTA_FINGERPRINTS.keys()) + list( HONDA_FINGERPRINTS.keys()) + list(HYUNDAI_FINGERPRINTS.keys()) + list( VW_FINGERPRINTS.keys()) try: from xx.pipeline.c.CarState import migration except ImportError: migration = {} if __name__ == "__main__": parser = argparse.ArgumentParser( description='Run FW fingerprint on Qlog of route or list of routes') parser.add_argument('route', help='Route or file with list of routes') parser.add_argument('--car', help='Force comparison fingerprint to known car') args = parser.parse_args()
from tqdm import tqdm from tools.lib.logreader import LogReader from tools.lib.route import Route from selfdrive.car.fw_versions import match_fw_to_car_exact, match_fw_to_car_fuzzy, build_fw_dict from selfdrive.car.toyota.values import FW_VERSIONS as TOYOTA_FW_VERSIONS from selfdrive.car.honda.values import FW_VERSIONS as HONDA_FW_VERSIONS from selfdrive.car.hyundai.values import FW_VERSIONS as HYUNDAI_FW_VERSIONS from selfdrive.car.volkswagen.values import FW_VERSIONS as VW_FW_VERSIONS from selfdrive.car.toyota.values import FINGERPRINTS as TOYOTA_FINGERPRINTS from selfdrive.car.honda.values import FINGERPRINTS as HONDA_FINGERPRINTS from selfdrive.car.hyundai.values import FINGERPRINTS as HYUNDAI_FINGERPRINTS from selfdrive.car.volkswagen.values import FINGERPRINTS as VW_FINGERPRINTS NO_API = "NO_API" in os.environ SUPPORTED_CARS = list(TOYOTA_FINGERPRINTS.keys()) + list(HONDA_FINGERPRINTS.keys()) + list(HYUNDAI_FINGERPRINTS.keys())+ list(VW_FINGERPRINTS.keys()) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Run FW fingerprint on Qlog of route or list of routes') parser.add_argument('route', help='Route or file with list of routes') parser.add_argument('--car', help='Force comparison fingerprint to known car') args = parser.parse_args() if os.path.exists(args.route): routes = list(open(args.route)) else: routes = [args.route] mismatches = defaultdict(list) not_fingerprinted = 0