tiny clean up

pull/26939/head
Shane Smiskol 2 years ago
parent 2909adb643
commit ebd1a0ecab
  1. 33
      selfdrive/car/fw_versions.py

@ -125,16 +125,13 @@ def match_fw_to_car_fuzzy(fw_versions_dict, config, log=True, exclude=None):
for platform_code in config.fuzzy_get_platform_codes(fws): for platform_code in config.fuzzy_get_platform_codes(fws):
all_platform_codes[(addr[1], addr[2], platform_code)].append(candidate) all_platform_codes[(addr[1], addr[2], platform_code)].append(candidate)
matches = defaultdict(set) matched_ecus = set()
match_count = 0
candidate = None candidate = None
print('herererer')
print(fw_versions_dict)
for addr, versions in fw_versions_dict.items(): for addr, versions in fw_versions_dict.items():
for version in versions: for version in versions:
# All cars that have this FW response on the specified address # All cars that have this FW response on the specified address
candidates = all_fw_versions[(addr[0], addr[1], version)] ecu_key = (addr[0], addr[1])
# matches[(addr[0], addr[1])] |= candidates candidates = all_fw_versions[(*ecu_key, version)]
print(candidates) print(candidates)
# If no exact FW matches, try brand-specific fuzzy fingerprinting # If no exact FW matches, try brand-specific fuzzy fingerprinting
@ -145,37 +142,21 @@ def match_fw_to_car_fuzzy(fw_versions_dict, config, log=True, exclude=None):
if len(platform_codes) == 1: if len(platform_codes) == 1:
print('one platform code') print('one platform code')
platform_code = list(platform_codes)[0] platform_code = list(platform_codes)[0]
candidates = all_platform_codes[(addr[0], addr[1], platform_code)] candidates = all_platform_codes[(*ecu_key, platform_code)]
# matches[(addr[0], addr[1])] |= candidates
print('candidates', candidates) print('candidates', candidates)
matches[(addr[0], addr[1])] |= set(candidates)
print() print()
if len(candidates) == 1: if len(candidates) == 1:
match_count += 1 matched_ecus.add(ecu_key)
if candidate is None: if candidate is None:
candidate = candidates[0] candidate = candidates[0]
# We uniquely matched two different cars. No fuzzy match possible # We uniquely matched two different cars. No fuzzy match possible
elif candidate != candidates[0]: elif candidate != candidates[0]:
return set() return set()
print('matches', matches) if len(matched_ecus) >= config.fuzzy_min_match_count:
if len(matches) > 0:
candidates = set.union(*matches.values())
print('final candidates', candidates)
print('final matches', dict(matches))
else:
return set()
# for addr, candidates in matches.items():
# if
# print(addr, candidates)
if match_count >= config.fuzzy_min_match_count:
if log: if log:
cloudlog.error(f"Fingerprinted {candidate} using fuzzy match. {match_count} matching ECUs") cloudlog.error(f"Fingerprinted {candidate} using fuzzy match. {len(matched_ecus)} matching ECUs")
return {candidate} return {candidate}
else: else:
return set() return set()

Loading…
Cancel
Save