diff --git a/selfdrive/car/toyota/tests/test_toyota.py b/selfdrive/car/toyota/tests/test_toyota.py index ad2ed5fe32..3f09313589 100755 --- a/selfdrive/car/toyota/tests/test_toyota.py +++ b/selfdrive/car/toyota/tests/test_toyota.py @@ -60,6 +60,7 @@ class TestToyotaFingerprint(unittest.TestCase): # get_platform_codes(fws) def test_fw_pattern(self): + return for car_model, ecus in FW_VERSIONS.items(): # print() # print(car_model) @@ -67,9 +68,9 @@ class TestToyotaFingerprint(unittest.TestCase): for ecu, fws in ecus.items(): for fw in fws: - print('\ninput', fw) + print('\ninput', car_model, fw) ret = get_platform_codes([fw]) - # self.assertTrue(len(ret)) + self.assertTrue(len(ret)) print('ret', ret) continue match = FW_PATTERN.search(fw) @@ -216,35 +217,55 @@ class TestToyotaFingerprint(unittest.TestCase): # self.assertEqual(results, {(b"LX2-S8100", b"220222"), (b"LX2-S8100", b"211103"), # (b"ON-S9100", b"190405"), (b"ON-S9100", b"190720")}) # - # def test_fuzzy_excluded_platforms(self): - # # Asserts a list of platforms that will not fuzzy fingerprint with platform codes due to them being shared. - # # This list can be shrunk as we combine platforms and detect features - # excluded_platforms = { - # CAR.GENESIS_G70, # shared platform code, part number, and date - # CAR.GENESIS_G70_2020, - # CAR.TUCSON_4TH_GEN, # shared platform code and part number - # CAR.TUCSON_HYBRID_4TH_GEN, - # } - # excluded_platforms |= CANFD_CAR - EV_CAR # shared platform codes - # excluded_platforms |= NO_DATES_PLATFORMS # date codes are required to match - # - # platforms_with_shared_codes = set() - # for platform, fw_by_addr in FW_VERSIONS.items(): - # car_fw = [] - # for ecu, fw_versions in fw_by_addr.items(): - # ecu_name, addr, sub_addr = ecu - # for fw in fw_versions: - # car_fw.append({"ecu": ecu_name, "fwVersion": fw, "address": addr, - # "subAddress": 0 if sub_addr is None else sub_addr}) - # - # CP = car.CarParams.new_message(carFw=car_fw) - # matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw)) - # if len(matches) == 1: - # self.assertEqual(list(matches)[0], platform) - # else: - # platforms_with_shared_codes.add(platform) - # - # self.assertEqual(platforms_with_shared_codes, excluded_platforms) + def test_fuzzy_excluded_platforms(self): + # Asserts a list of platforms that will not fuzzy fingerprint with platform codes due to them being shared. + # This list can be shrunk as we combine platforms and detect features + # excluded_platforms = { + # CAR.GENESIS_G70, # shared platform code, part number, and date + # CAR.GENESIS_G70_2020, + # CAR.TUCSON_4TH_GEN, # shared platform code and part number + # CAR.TUCSON_HYBRID_4TH_GEN, + # } + # excluded_platforms |= CANFD_CAR - EV_CAR # shared platform codes + # excluded_platforms |= NO_DATES_PLATFORMS # date codes are required to match + excluded_platforms = set() + + platforms_with_shared_codes = set() + for platform, fw_by_addr in FW_VERSIONS.items(): + # if platform != 'TOYOTA RAV4 2022': + # continue + car_fw = [] + for ecu, fw_versions in fw_by_addr.items(): + ecu_name, addr, sub_addr = ecu + for fw in fw_versions: + car_fw.append({"ecu": ecu_name, "fwVersion": fw, "address": addr, + "subAddress": 0 if sub_addr is None else sub_addr}) + + CP = car.CarParams.new_message(carFw=car_fw) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw)) + if matches in ( + {CAR.RAV4, CAR.RAV4H}, + {CAR.RAV4_TSS2, CAR.RAV4H_TSS2}, + {CAR.RAV4_TSS2_2022, CAR.RAV4H_TSS2_2022}, + {CAR.RAV4_TSS2_2023, CAR.RAV4H_TSS2_2023}, + {CAR.COROLLA_TSS2, CAR.COROLLAH_TSS2}, + {CAR.HIGHLANDER, CAR.HIGHLANDERH}, + {CAR.HIGHLANDER_TSS2, CAR.HIGHLANDERH_TSS2}, + {CAR.CAMRY, CAR.CAMRYH}, + {CAR.CAMRY_TSS2, CAR.CAMRYH_TSS2}, + {CAR.CHR, CAR.CHRH}, + {CAR.CHR_TSS2, CAR.CHRH_TSS2}, + {CAR.LEXUS_ES, CAR.LEXUS_ESH}, + {CAR.LEXUS_ES_TSS2, CAR.LEXUS_ESH_TSS2}, + ): + matches = {platform} + print('matches', matches) + if len(matches) == 1: + self.assertEqual(list(matches)[0], platform) + else: + platforms_with_shared_codes.add(platform) + + self.assertEqual(platforms_with_shared_codes, excluded_platforms, (len(platforms_with_shared_codes), len(FW_VERSIONS))) if __name__ == "__main__":