different method first draft

pull/26939/head
Shane Smiskol 2 years ago
parent 5835570bfa
commit b91139055d
  1. 28
      selfdrive/car/hyundai/values.py

@ -1,10 +1,11 @@
import re import re
from collections import defaultdict
from datetime import datetime from datetime import datetime
from dateutil import rrule from dateutil import rrule
from collections import defaultdict
from dataclasses import dataclass from dataclasses import dataclass
from enum import Enum, IntFlag from enum import Enum, IntFlag
from typing import DefaultDict, Dict, List, Optional, Set, Union import functools
from typing import DefaultDict, Dict, List, Optional, Set, Tuple, Union
from cereal import car from cereal import car
from panda.python import uds from panda.python import uds
@ -348,6 +349,29 @@ FINGERPRINTS = {
} }
@functools.cache
def parse_platform_code(fw_version: bytes) -> Tuple[Optional[bytes], Optional[bytes]]:
match = PLATFORM_CODE_PATTERN.search(fw_version)
code, date = None, None
if match is not None:
code, date = match.groups()
return code, date
def hyundai_fuzzy(fw_versions_dict) -> Set[str]:
all_platform_codes = defaultdict(set)
for candidate, fw_by_addr in FW_VERSIONS.items():
for addr, fws in fw_by_addr.items():
if addr[0] not in FW_QUERY_CONFIG.platform_code_ecus:
continue
for fw in fws:
code, date = parse_platform_code(fw)
if code is not None:
all_platform_codes[(addr[1], addr[2], code)].add(candidate)
def get_platform_codes(fw_versions: List[bytes]) -> Set[bytes]: def get_platform_codes(fw_versions: List[bytes]) -> Set[bytes]:
codes: DefaultDict[bytes, Set[bytes]] = defaultdict(set) codes: DefaultDict[bytes, Set[bytes]] = defaultdict(set)
for fw in fw_versions: for fw in fw_versions:

Loading…
Cancel
Save