diff --git a/selfdrive/car/fw_query_definitions.py b/selfdrive/car/fw_query_definitions.py index 114de6cc5d..b339ee136e 100755 --- a/selfdrive/car/fw_query_definitions.py +++ b/selfdrive/car/fw_query_definitions.py @@ -75,7 +75,7 @@ class FwQueryConfig: # Ecus added for data collection, not to be fingerprinted on extra_ecus: List[Tuple[capnp.lib.capnp._EnumModule, int, Optional[int]]] = field(default_factory=list) - # Brand-specific fuzzy fingerprinting options: + # Brand-specific fuzzy fingerprinting config: # The minimum number of version matches to fuzzy fingerprint fuzzy_min_match_count: int = 2 # A function to get uniquely identifiable codes for a version diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index c069280d11..bd4a3e40d1 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -99,6 +99,15 @@ class TestFwFingerprint(unittest.TestCase): with self.subTest(): self.fail(f"Brands do not implement FW_QUERY_CONFIG: {brand_versions - brand_configs}") + def test_fuzzy_fingerprint_config(self): + for brand, config in FW_QUERY_CONFIGS.items(): + with self.subTest(brand=brand): + if config.fuzzy_get_platform_codes is None: + self.assertEqual(config.fuzzy_min_match_count, 2, "Cannot override minimum match count without full config") + self.assertEqual(len(config.fuzzy_ecus), 0, "Cannot specify fuzzy ECUs without full config") + else: + self.assertGreater(len(config.fuzzy_ecus), 0, "Need to specify fuzzy ECUs") + def test_fw_request_ecu_whitelist(self): for brand, config in FW_QUERY_CONFIGS.items(): with self.subTest(brand=brand):