dragonpilot - 基於 openpilot 的開源駕駛輔助系統
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
4.8 KiB

from openpilot.selfdrive.car.interfaces import get_interface_attr
from openpilot.selfdrive.car.honda.values import CAR as HONDA
from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI
from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA
from openpilot.selfdrive.car.volkswagen.values import CAR as VW
5 years ago
FW_VERSIONS = get_interface_attr('FW_VERSIONS', combine_brands=True, ignore_none=True)
_FINGERPRINTS = get_interface_attr('FINGERPRINTS', combine_brands=True, ignore_none=True)
5 years ago
_DEBUG_ADDRESS = {1880: 8} # reserved for debug purposes
def is_valid_for_fingerprint(msg, car_fingerprint: dict[int, int]):
5 years ago
adr = msg.address
# ignore addresses that are more than 11 bits
return (adr in car_fingerprint and car_fingerprint[adr] == len(msg.dat)) or adr >= 0x800
def eliminate_incompatible_cars(msg, candidate_cars):
"""Removes cars that could not have sent msg.
Inputs:
msg: A cereal/log CanData message from the car.
candidate_cars: A list of cars to consider.
Returns:
A list containing the subset of candidate_cars that could have sent msg.
"""
compatible_cars = []
for car_name in candidate_cars:
car_fingerprints = _FINGERPRINTS[car_name]
for fingerprint in car_fingerprints:
# add alien debug address
if is_valid_for_fingerprint(msg, fingerprint | _DEBUG_ADDRESS):
5 years ago
compatible_cars.append(car_name)
break
return compatible_cars
def all_known_cars():
"""Returns a list of all known car strings."""
return list({*FW_VERSIONS.keys(), *_FINGERPRINTS.keys()})
def all_legacy_fingerprint_cars():
"""Returns a list of all known car strings, FPv1 only."""
5 years ago
return list(_FINGERPRINTS.keys())
# A dict that maps old platform strings to their latest representations
MIGRATION = {
"ACURA ILX 2016 ACURAWATCH PLUS": HONDA.ACURA_ILX,
"ACURA RDX 2018 ACURAWATCH PLUS": HONDA.ACURA_RDX,
"ACURA RDX 2020 TECH": HONDA.ACURA_RDX_3G,
"AUDI A3": VW.AUDI_A3_MK3,
"HONDA ACCORD 2018 HYBRID TOURING": HONDA.ACCORD,
"HONDA ACCORD 1.5T 2018": HONDA.ACCORD,
"HONDA ACCORD 2018 LX 1.5T": HONDA.ACCORD,
"HONDA ACCORD 2018 SPORT 2T": HONDA.ACCORD,
"HONDA ACCORD 2T 2018": HONDA.ACCORD,
"HONDA ACCORD HYBRID 2018": HONDA.ACCORD,
"HONDA CIVIC 2016 TOURING": HONDA.CIVIC,
"HONDA CIVIC HATCHBACK 2017 SEDAN/COUPE 2019": HONDA.CIVIC_BOSCH,
"HONDA CIVIC SEDAN 1.6 DIESEL": HONDA.CIVIC_BOSCH_DIESEL,
"HONDA CR-V 2016 EXECUTIVE": HONDA.CRV_EU,
"HONDA CR-V 2016 TOURING": HONDA.CRV,
"HONDA CR-V 2017 EX": HONDA.CRV_5G,
"HONDA CR-V 2019 HYBRID": HONDA.CRV_HYBRID,
"HONDA FIT 2018 EX": HONDA.FIT,
"HONDA HRV 2019 TOURING": HONDA.HRV,
"HONDA INSIGHT 2019 TOURING": HONDA.INSIGHT,
"HONDA ODYSSEY 2018 EX-L": HONDA.ODYSSEY,
"HONDA ODYSSEY 2019 EXCLUSIVE CHN": HONDA.ODYSSEY_CHN,
"HONDA PILOT 2017 TOURING": HONDA.PILOT,
"HONDA PILOT 2019 ELITE": HONDA.PILOT,
"HONDA PILOT 2019": HONDA.PILOT,
"HONDA PASSPORT 2021": HONDA.PILOT,
"HONDA RIDGELINE 2017 BLACK EDITION": HONDA.RIDGELINE,
"HYUNDAI ELANTRA LIMITED ULTIMATE 2017": HYUNDAI.ELANTRA,
"HYUNDAI SANTA FE LIMITED 2019": HYUNDAI.SANTA_FE,
"HYUNDAI TUCSON DIESEL 2019": HYUNDAI.TUCSON,
"KIA OPTIMA 2016": HYUNDAI.KIA_OPTIMA_G4,
"KIA OPTIMA 2019": HYUNDAI.KIA_OPTIMA_G4_FL,
"KIA OPTIMA SX 2019 & 2016": HYUNDAI.KIA_OPTIMA_G4_FL,
"LEXUS CT 200H 2018": TOYOTA.LEXUS_CTH,
"LEXUS ES 300H 2018": TOYOTA.LEXUS_ES,
"LEXUS ES 300H 2019": TOYOTA.LEXUS_ES_TSS2,
"LEXUS IS300 2018": TOYOTA.LEXUS_IS,
"LEXUS NX300 2018": TOYOTA.LEXUS_NX,
"LEXUS NX300H 2018": TOYOTA.LEXUS_NX,
"LEXUS RX 350 2016": TOYOTA.LEXUS_RX,
"LEXUS RX350 2020": TOYOTA.LEXUS_RX_TSS2,
"LEXUS RX450 HYBRID 2020": TOYOTA.LEXUS_RX_TSS2,
"TOYOTA SIENNA XLE 2018": TOYOTA.SIENNA,
"TOYOTA C-HR HYBRID 2018": TOYOTA.CHR,
"TOYOTA COROLLA HYBRID TSS2 2019": TOYOTA.COROLLA_TSS2,
"TOYOTA RAV4 HYBRID 2019": TOYOTA.RAV4_TSS2,
"LEXUS ES HYBRID 2019": TOYOTA.LEXUS_ES_TSS2,
"LEXUS NX HYBRID 2018": TOYOTA.LEXUS_NX,
"LEXUS NX HYBRID 2020": TOYOTA.LEXUS_NX_TSS2,
"LEXUS RX HYBRID 2020": TOYOTA.LEXUS_RX_TSS2,
"TOYOTA ALPHARD HYBRID 2021": TOYOTA.ALPHARD_TSS2,
"TOYOTA AVALON HYBRID 2019": TOYOTA.AVALON_2019,
"TOYOTA AVALON HYBRID 2022": TOYOTA.AVALON_TSS2,
"TOYOTA CAMRY HYBRID 2018": TOYOTA.CAMRY,
"TOYOTA CAMRY HYBRID 2021": TOYOTA.CAMRY_TSS2,
"TOYOTA C-HR HYBRID 2022": TOYOTA.CHR_TSS2,
"TOYOTA HIGHLANDER HYBRID 2020": TOYOTA.HIGHLANDER_TSS2,
"TOYOTA RAV4 HYBRID 2022": TOYOTA.RAV4_TSS2_2022,
"TOYOTA RAV4 HYBRID 2023": TOYOTA.RAV4_TSS2_2023,
"TOYOTA HIGHLANDER HYBRID 2018": TOYOTA.HIGHLANDER,
"LEXUS ES HYBRID 2018": TOYOTA.LEXUS_ES,
"LEXUS RX HYBRID 2017": TOYOTA.LEXUS_RX,
"HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.TUCSON_4TH_GEN,
"KIA SPORTAGE HYBRID 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN,
"KIA SORENTO PLUG-IN HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN,
}