diff --git a/selfdrive/car/gm/fingerprints.py b/selfdrive/car/gm/fingerprints.py index 9159ddefbf..9ba8262557 100644 --- a/selfdrive/car/gm/fingerprints.py +++ b/selfdrive/car/gm/fingerprints.py @@ -54,3 +54,7 @@ FINGERPRINTS = { 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 257: 8, 288: 5, 289: 8, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 413: 8, 451: 8, 452: 8, 453: 6, 455: 7, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 510: 8, 528: 5, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 869: 4, 880: 6, 977: 8, 1001: 8, 1011: 6, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1611: 8, 1930: 7 }], } + +FW_VERSIONS = { + # CAR.BOLT_EUV: {} +} diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 302381bc01..b9ef968a97 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -189,10 +189,6 @@ FW_QUERY_CONFIG = FwQueryConfig( extra_ecus=[(Ecu.fwdCamera, 0x24b, None)], ) -# FW_VERSIONS = { -# CAR.BOLT_EUV: {} -# } - DBC: Dict[str, Dict[str, str]] = defaultdict(lambda: dbc_dict('gm_global_a_powertrain_generated', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis')) EV_CAR = {CAR.VOLT, CAR.BOLT_EUV} diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index d640b32ac6..a835291f0d 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -241,6 +241,7 @@ class TestFwFingerprintTiming(unittest.TestCase): total_ref_time = 6.5 brand_ref_times = { 1: { + 'gm': 0.15, 'body': 0.1, 'chrysler': 0.3, 'ford': 0.2, diff --git a/selfdrive/car/vin.py b/selfdrive/car/vin.py index 80bcef9dc4..8801e98dfe 100755 --- a/selfdrive/car/vin.py +++ b/selfdrive/car/vin.py @@ -16,12 +16,13 @@ def is_valid_vin(vin: str): def get_vin(logcan, sendcan, buses, timeout=0.1, retry=3, debug=False): - addrs = list(range(0x7e0, 0x7e8)) + list(range(0x18DA00F1, 0x18DB00F1, 0x100)) # addrs to process/wait for + addrs = [0x200] + list(range(0x7e0, 0x7e8)) + list(range(0x18DA00F1, 0x18DB00F1, 0x100)) # addrs to process/wait for for i in range(retry): for bus in buses: - for request, response, vin_addrs, rx_offset in ((StdQueries.UDS_VIN_REQUEST, StdQueries.UDS_VIN_RESPONSE, STANDARD_VIN_ADDRS, 0x8), - (StdQueries.OBD_VIN_REQUEST, StdQueries.OBD_VIN_RESPONSE, STANDARD_VIN_ADDRS, 0x8), - (StdQueries.GM_VIN_REQUEST, StdQueries.GM_VIN_RESPONSE, [0x200], 0x400)): + # TODO: can you send to 0x7df on bolt? + for request, response, vin_addrs, rx_offset in ((StdQueries.GM_VIN_REQUEST, StdQueries.GM_VIN_RESPONSE, STANDARD_VIN_ADDRS + [0x200], 0x400), + (StdQueries.UDS_VIN_REQUEST, StdQueries.UDS_VIN_RESPONSE, STANDARD_VIN_ADDRS, 0x8), + (StdQueries.OBD_VIN_REQUEST, StdQueries.OBD_VIN_RESPONSE, STANDARD_VIN_ADDRS, 0x8)): try: query = IsoTpParallelQuery(sendcan, logcan, bus, addrs, [request, ], [response, ], functional_addrs=FUNCTIONAL_ADDRS, debug=debug) results = query.get_data(timeout)