From 523bdf98530cbff7491edeed856e81f1b7968c09 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 16:39:41 -0400 Subject: [PATCH 01/26] there is no spoon --- opendbc/car/__init__.py | 33 ++++++++++------- opendbc/car/docs_definitions.py | 64 ++++++++++++++++++++++----------- opendbc/car/extra_cars.py | 62 ++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+), 34 deletions(-) create mode 100644 opendbc/car/extra_cars.py diff --git a/opendbc/car/__init__.py b/opendbc/car/__init__.py index 455d8c3803..761dff3509 100644 --- a/opendbc/car/__init__.py +++ b/opendbc/car/__init__.py @@ -8,7 +8,7 @@ from panda import uds from opendbc.car import structs from opendbc.car.can_definitions import CanData -from opendbc.car.docs_definitions import CarDocs +from opendbc.car.docs_definitions import CarDocs, ExtraCarDocs from opendbc.car.common.numpy_fast import clip, interp # set up logging @@ -270,16 +270,7 @@ def __setattr__(self, *args, **kwargs): @dataclass(order=True) -class PlatformConfig(Freezable): - car_docs: list[CarDocs] - specs: CarSpecs - - dbc_dict: DbcDict - - flags: int = 0 - - platform_str: str | None = None - +class PlatformConfigBase(Freezable): def __hash__(self) -> int: return hash(self.platform_str) @@ -287,12 +278,28 @@ def override(self, **kwargs): return replace(self, **kwargs) def init(self): - pass + self.platform_str = None def __post_init__(self): self.init() +@dataclass(order=True) +class PlatformConfig(PlatformConfigBase): + car_docs: list[CarDocs] + specs: CarSpecs + dbc_dict: DbcDict + flags: int = 0 + platform_str: str | None = None + + +@dataclass(order=True) +class ExtraPlatformConfig(PlatformConfigBase): + car_docs: list[ExtraCarDocs] + platform_str: str | None = None + flags: int = 0 + + class PlatformsType(EnumType): def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **kwds): for key in classdict._member_names.keys(): @@ -303,7 +310,7 @@ def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **k class Platforms(str, ReprEnum, metaclass=PlatformsType): - config: PlatformConfig + config: PlatformConfigBase def __new__(cls, platform_config: PlatformConfig): member = str.__new__(cls, platform_config.platform_str) diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 5e0fa28a00..d76d74c8d2 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -24,6 +24,15 @@ class Column(Enum): VIDEO = "Video" +class SupportType(Enum): + UPSTREAM = "Upstream" # Actively maintained by comma, plug-and-play in release versions of openpilot + REVIEW = "Under review" # Dashcam, but planned for official support after safety validation + DASHCAM = "Dashcam mode" # Dashcam, but may be drivable in a community fork + COMMUNITY = "Community" # Not upstream, but available in a custom community fork, not validated by comma + LEGACY = "Legacy" # Cars that would be in dashcam mode, but work in release for historical reasons + INCOMPATIBLE = "Not compatible" # Known fundamental incompatibility such as Flexray or hydraulic power steering + + class Star(Enum): FULL = "full" HALF = "half" @@ -222,30 +231,10 @@ def split_name(name: str) -> tuple[str, str, str]: @dataclass -class CarDocs: +class CarDocsBase: # make + model + model years name: str - # Example for Toyota Corolla MY20 - # requirements: Lane Tracing Assist (LTA) and Dynamic Radar Cruise Control (DRCC) - # US Market reference: "All", since all Corolla in the US come standard with LTA and DRCC - - # the simplest description of the requirements for the US market - package: str - - # the minimum compatibility requirements for this model, regardless - # of market. can be a package, trim, or list of features - requirements: str | None = None - - video_link: str | None = None - footnotes: list[Enum] = field(default_factory=list) - min_steer_speed: float | None = None - min_enable_speed: float | None = None - auto_resume: bool | None = None - - # all the parts needed for the supported car - car_parts: CarParts = field(default_factory=CarParts) - def __post_init__(self): self.make, self.model, self.years = split_name(self.name) self.year_list = get_year_list(self.years) @@ -368,3 +357,36 @@ def get_column(self, column: Column, star_icon: str, video_icon: str, footnote_t item += footnote_tag.format(f'{",".join(map(str, sups))}') return item + + +@dataclass +class CarDocs(CarDocsBase): + # Example for Toyota Corolla MY20 + # requirements: Lane Tracing Assist (LTA) and Dynamic Radar Cruise Control (DRCC) + # US Market reference: "All", since all Corolla in the US come standard with LTA and DRCC + + # the simplest description of the requirements for the US market + package: str + + merged: bool = True + support_type: SupportType = SupportType.UPSTREAM + support_link: str | None = None # TODO: have a default link to the definition of an upstream car + + requirements: str | None = None # Minimum compatibility requirements, regardless of market + video_link: str | None = None + footnotes: list[Enum] = field(default_factory=list) + min_steer_speed: float | None = None + min_enable_speed: float | None = None + auto_resume: bool | None = None + car_parts: CarParts = field(default_factory=CarParts) # All the parts needed for a supported car + + +@dataclass +class ExtraCarDocs(CarDocsBase): + package: str = "Any" + merged: bool = False + support_type: SupportType = SupportType.INCOMPATIBLE + support_link: str | None = None # TODO: have a default link to the definition of an incompatible car + + video_link: str | None = None + footnotes: list[Enum] = field(default_factory=list) diff --git a/opendbc/car/extra_cars.py b/opendbc/car/extra_cars.py new file mode 100644 index 0000000000..6439479472 --- /dev/null +++ b/opendbc/car/extra_cars.py @@ -0,0 +1,62 @@ +from dataclasses import dataclass + +from opendbc.car import structs, Platforms, ExtraPlatformConfig +from opendbc.car.docs_definitions import ExtraCarDocs, SupportType + + +@dataclass +class CommunityCarDocs(ExtraCarDocs): + def init_make(self, CP: structs.CarParams): + self.support_type = SupportType.COMMUNITY + self.support_link = "#community-maintained-cars" + + +@dataclass +class ToyotaSecurityCarDocs(ExtraCarDocs): + def init_make(self, CP: structs.CarParams): + self.support_type = SupportType.INCOMPATIBLE + self.support_link = "#toyota-security" + + +@dataclass +class FlexRayCarDocs(ExtraCarDocs): + def init_make(self, CP: structs.CarParams): + self.support_type = SupportType.INCOMPATIBLE + self.support_link = "#flexray" + + +class CAR(Platforms): + config: ExtraPlatformConfig + + HYUNDAI_PALISADE_FACELIFT = ExtraPlatformConfig( + [ + CommunityCarDocs("Hyundai Palisade 2023-24", package="HDA2"), + CommunityCarDocs("Kia Telluride 2023-24", package="HDA2"), + ], + ) + + TOYOTA_SECURITY_CARS = ExtraPlatformConfig( + [ + ToyotaSecurityCarDocs("Subaru Solterra 2023-25"), + ToyotaSecurityCarDocs("Lexus NS 2022-25"), + ToyotaSecurityCarDocs("Toyota bZ4x 2023-25"), + ToyotaSecurityCarDocs("Toyota Camry 2025"), + ToyotaSecurityCarDocs("Toyota Corolla Cross 2022-25"), + ToyotaSecurityCarDocs("Toyota Highlander 2025"), + CommunityCarDocs("Toyota RAV4 Prime 2021-23"), + ToyotaSecurityCarDocs("Toyota RAV4 Prime 2024-25"), + ToyotaSecurityCarDocs("Toyota Sequoia 2023-25"), + CommunityCarDocs("Toyota Sienna 2021-23"), + ToyotaSecurityCarDocs("Toyota Sienna 2024-25"), + ToyotaSecurityCarDocs("Toyota Tundra 2022-25"), + ToyotaSecurityCarDocs("Toyota Venza 2021-25"), + ], + ) + + AUDI_FLEXRAY = ExtraPlatformConfig( + [ + FlexRayCarDocs("Audi A4 2016-24", package="All"), + FlexRayCarDocs("Audi A5 2016-24", package="All"), + FlexRayCarDocs("Audi Q5 2017-24", package="All"), + ], + ) From c7e501e8757d3d56dc68c44c7f28eaf14c25171a Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 17:46:33 -0400 Subject: [PATCH 02/26] he's starting to believe --- opendbc/car/__init__.py | 19 ++++++++---- opendbc/car/docs_definitions.py | 55 ++++++++++++++++----------------- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/opendbc/car/__init__.py b/opendbc/car/__init__.py index 761dff3509..32f53fcdee 100644 --- a/opendbc/car/__init__.py +++ b/opendbc/car/__init__.py @@ -1,7 +1,7 @@ # functions common among cars import logging from collections import namedtuple -from dataclasses import dataclass +from dataclasses import dataclass, field from enum import IntFlag, ReprEnum, EnumType from dataclasses import replace @@ -271,6 +271,15 @@ def __setattr__(self, *args, **kwargs): @dataclass(order=True) class PlatformConfigBase(Freezable): + car_docs: list[CarDocs] | list[ExtraCarDocs] + specs: CarSpecs + + dbc_dict: DbcDict + + flags: int = 0 + + platform_str: str | None = None + def __hash__(self) -> int: return hash(self.platform_str) @@ -278,7 +287,7 @@ def override(self, **kwargs): return replace(self, **kwargs) def init(self): - self.platform_str = None + pass def __post_init__(self): self.init() @@ -289,15 +298,13 @@ class PlatformConfig(PlatformConfigBase): car_docs: list[CarDocs] specs: CarSpecs dbc_dict: DbcDict - flags: int = 0 - platform_str: str | None = None @dataclass(order=True) class ExtraPlatformConfig(PlatformConfigBase): car_docs: list[ExtraCarDocs] - platform_str: str | None = None - flags: int = 0 + specs: CarSpecs = CarSpecs(mass=0., wheelbase=0., steerRatio=0.) + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('unknown', None)) class PlatformsType(EnumType): diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index d76d74c8d2..98bb5bbeaf 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -231,10 +231,34 @@ def split_name(name: str) -> tuple[str, str, str]: @dataclass -class CarDocsBase: +class CarDocs: # make + model + model years name: str + # Example for Toyota Corolla MY20 + # requirements: Lane Tracing Assist (LTA) and Dynamic Radar Cruise Control (DRCC) + # US Market reference: "All", since all Corolla in the US come standard with LTA and DRCC + + # the simplest description of the requirements for the US market + package: str + + # the minimum compatibility requirements for this model, regardless + # of market. can be a package, trim, or list of features + requirements: str | None = None + + video_link: str | None = None + footnotes: list[Enum] = field(default_factory=list) + min_steer_speed: float | None = None + min_enable_speed: float | None = None + auto_resume: bool | None = None + + # all the parts needed for the supported car + car_parts: CarParts = field(default_factory=CarParts) + + merged: bool = True + support_type: SupportType = SupportType.UPSTREAM + support_link: str | None = "#upstream" # TODO: have a default link to the definition of an upstream car + def __post_init__(self): self.make, self.model, self.years = split_name(self.name) self.year_list = get_year_list(self.years) @@ -360,33 +384,8 @@ def get_column(self, column: Column, star_icon: str, video_icon: str, footnote_t @dataclass -class CarDocs(CarDocsBase): - # Example for Toyota Corolla MY20 - # requirements: Lane Tracing Assist (LTA) and Dynamic Radar Cruise Control (DRCC) - # US Market reference: "All", since all Corolla in the US come standard with LTA and DRCC - - # the simplest description of the requirements for the US market - package: str - - merged: bool = True - support_type: SupportType = SupportType.UPSTREAM - support_link: str | None = None # TODO: have a default link to the definition of an upstream car - - requirements: str | None = None # Minimum compatibility requirements, regardless of market - video_link: str | None = None - footnotes: list[Enum] = field(default_factory=list) - min_steer_speed: float | None = None - min_enable_speed: float | None = None - auto_resume: bool | None = None - car_parts: CarParts = field(default_factory=CarParts) # All the parts needed for a supported car - - -@dataclass -class ExtraCarDocs(CarDocsBase): +class ExtraCarDocs(CarDocs): package: str = "Any" merged: bool = False support_type: SupportType = SupportType.INCOMPATIBLE - support_link: str | None = None # TODO: have a default link to the definition of an incompatible car - - video_link: str | None = None - footnotes: list[Enum] = field(default_factory=list) + support_link: str | None = "#incompatible" # TODO: have a default link to the definition of an incompatible car From 620cda3988f1bb5855d547e039c7cc15194a0509 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 20:52:34 -0400 Subject: [PATCH 03/26] i know crappy derivative kung-fu --- docs/CARS.md | 385 ++++++++++++++++++++++++++++++++ opendbc/car/CARS_template.md | 54 +++++ opendbc/car/docs.py | 56 ++++- opendbc/car/docs_definitions.py | 28 ++- opendbc/car/values.py | 5 + 5 files changed, 525 insertions(+), 3 deletions(-) create mode 100644 docs/CARS.md create mode 100644 opendbc/car/CARS_template.md mode change 100644 => 100755 opendbc/car/docs.py diff --git a/docs/CARS.md b/docs/CARS.md new file mode 100644 index 0000000000..9abf935a58 --- /dev/null +++ b/docs/CARS.md @@ -0,0 +1,385 @@ + + +# Support Information for 336 Known Cars + +|Make|Model|Package|Support Level| +|---|---|---|:---:| +|Acura|ILX|AcuraWatch Plus|[Upstream](#upstream)| +|Acura|RDX|AcuraWatch Plus|[Upstream](#upstream)| +|Acura|RDX|All|[Upstream](#upstream)| +|Audi|A3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|A3 Sportback e-tron|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|A4|All|[Not compatible](#flexray)| +|Audi|A5|All|[Not compatible](#flexray)| +|Audi|Q2|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|Q3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|Q5|All|[Not compatible](#flexray)| +|Audi|RS3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|S3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Chevrolet|Bolt EUV|Premier or Premier Redline Trim without Super Cruise Package|[Upstream](#upstream)| +|Chevrolet|Bolt EV|2LT Trim with Adaptive Cruise Control Package|[Upstream](#upstream)| +|Chevrolet|Equinox|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chevrolet|Silverado 1500|Safety Package II|[Upstream](#upstream)| +|Chevrolet|Trailblazer|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica|All|[Upstream](#upstream)| +|Chrysler|Pacifica Hybrid|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica Hybrid|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|comma|body|All|[Upstream](#upstream)| +|CUPRA|Ateca|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Dodge|Durango|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Ford|Bronco Sport|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Escape|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Escape Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Escape Plug-in Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Explorer|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Explorer Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|F-150|Co-Pilot360 Active 2.0|[Upstream](#upstream)| +|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Upstream](#upstream)| +|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Upstream](#upstream)| +|Ford|Focus|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Focus Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Kuga|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Kuga Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Kuga Plug-in Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Maverick|LARIAT Luxury|[Upstream](#upstream)| +|Ford|Maverick|Co-Pilot360 Assist|[Upstream](#upstream)| +|Ford|Maverick Hybrid|LARIAT Luxury|[Upstream](#upstream)| +|Ford|Maverick Hybrid|Co-Pilot360 Assist|[Upstream](#upstream)| +|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Upstream](#upstream)| +|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Genesis|G70|All|[Upstream](#upstream)| +|Genesis|G70|All|[Upstream](#upstream)| +|Genesis|G70|All|[Upstream](#upstream)| +|Genesis|G80|All|[Upstream](#upstream)| +|Genesis|G80|All|[Upstream](#upstream)| +|Genesis|G80 (2.5T Advanced Trim, with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| +|Genesis|G90|All|[Upstream](#upstream)| +|Genesis|GV60 (Advanced Trim)|All|[Upstream](#upstream)| +|Genesis|GV60 (Performance Trim)|All|[Upstream](#upstream)| +|Genesis|GV70 (2.5T Trim, without HDA II)|All|[Upstream](#upstream)| +|Genesis|GV70 (3.5T Trim, without HDA II)|All|[Upstream](#upstream)| +|Genesis|GV70 Electrified (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| +|Genesis|GV80|All|[Upstream](#upstream)| +|GMC|Sierra 1500|Driver Alert Package II|[Upstream](#upstream)| +|Honda|Accord|All|[Upstream](#upstream)| +|Honda|Accord Hybrid|All|[Upstream](#upstream)| +|Honda|Civic|Honda Sensing|[Upstream](#upstream)| +|Honda|Civic|All|[Upstream](#upstream)| +|Honda|Civic|All|[Upstream](#upstream)| +|Honda|Civic Hatchback|Honda Sensing|[Upstream](#upstream)| +|Honda|Civic Hatchback|All|[Upstream](#upstream)| +|Honda|CR-V|Touring Trim|[Upstream](#upstream)| +|Honda|CR-V|Honda Sensing|[Upstream](#upstream)| +|Honda|CR-V Hybrid|Honda Sensing|[Upstream](#upstream)| +|Honda|e|All|[Upstream](#upstream)| +|Honda|Fit|Honda Sensing|[Upstream](#upstream)| +|Honda|Freed|Honda Sensing|[Upstream](#upstream)| +|Honda|HR-V|Honda Sensing|[Upstream](#upstream)| +|Honda|HR-V|All|[Upstream](#upstream)| +|Honda|Insight|All|[Upstream](#upstream)| +|Honda|Inspire|All|[Upstream](#upstream)| +|Honda|Odyssey|Honda Sensing|[Upstream](#upstream)| +|Honda|Passport|All|[Upstream](#upstream)| +|Honda|Pilot|Honda Sensing|[Upstream](#upstream)| +|Honda|Ridgeline|Honda Sensing|[Upstream](#upstream)| +|Hyundai|Azera|All|[Upstream](#upstream)| +|Hyundai|Azera Hybrid|All|[Upstream](#upstream)| +|Hyundai|Azera Hybrid|All|[Upstream](#upstream)| +|Hyundai|Custin|All|[Upstream](#upstream)| +|Hyundai|Elantra|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra GT|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Genesis|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|i30|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq 5 (Non-US only)|All|[Upstream](#upstream)| +|Hyundai|Ioniq 5 (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| +|Hyundai|Ioniq 5 (without HDA II)|Highway Driving Assist|[Upstream](#upstream)| +|Hyundai|Ioniq 6 (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| +|Hyundai|Ioniq Electric|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Electric|All|[Upstream](#upstream)| +|Hyundai|Ioniq Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Plug-in Hybrid|All|[Upstream](#upstream)| +|Hyundai|Kona|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Electric|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Electric|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Electric (with HDA II, Korea only)|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Palisade|All|[Upstream](#upstream)| +|Hyundai|Palisade|HDA2|[Community](#community-maintained-cars)| +|Hyundai|Santa Cruz|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Santa Fe|All|[Upstream](#upstream)| +|Hyundai|Santa Fe|All|[Upstream](#upstream)| +|Hyundai|Santa Fe Hybrid|All|[Upstream](#upstream)| +|Hyundai|Santa Fe Plug-in Hybrid|All|[Upstream](#upstream)| +|Hyundai|Sonata|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Sonata|All|[Upstream](#upstream)| +|Hyundai|Sonata Hybrid|All|[Upstream](#upstream)| +|Hyundai|Staria|All|[Upstream](#upstream)| +|Hyundai|Tucson|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Tucson|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Tucson|All|[Upstream](#upstream)| +|Hyundai|Tucson Diesel|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Tucson Hybrid|All|[Upstream](#upstream)| +|Hyundai|Tucson Plug-in Hybrid|All|[Upstream](#upstream)| +|Hyundai|Veloster|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Jeep|Grand Cherokee|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Jeep|Grand Cherokee|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Kia|Carnival|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Carnival (China only)|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Ceed|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|EV6 (Southeast Asia only)|All|[Upstream](#upstream)| +|Kia|EV6 (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| +|Kia|EV6 (without HDA II)|Highway Driving Assist|[Upstream](#upstream)| +|Kia|Forte|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Forte|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|K5|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|K5 Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|K8 Hybrid (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| +|Kia|Niro EV|All|[Upstream](#upstream)| +|Kia|Niro EV|All|[Upstream](#upstream)| +|Kia|Niro EV|All|[Upstream](#upstream)| +|Kia|Niro EV|All|[Upstream](#upstream)| +|Kia|Niro EV|All|[Upstream](#upstream)| +|Kia|Niro Hybrid|All|[Upstream](#upstream)| +|Kia|Niro Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid|All|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Optima|Advanced Smart Cruise Control|[Upstream](#upstream)| +|Kia|Optima|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Optima Hybrid|Advanced Smart Cruise Control|[Upstream](#upstream)| +|Kia|Optima Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Seltos|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sorento|Advanced Smart Cruise Control & LKAS|[Upstream](#upstream)| +|Kia|Sorento|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sorento|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sorento Hybrid|All|[Upstream](#upstream)| +|Kia|Sorento Plug-in Hybrid|All|[Upstream](#upstream)| +|Kia|Sportage|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sportage Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Stinger|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Stinger|All|[Upstream](#upstream)| +|Kia|Telluride|All|[Upstream](#upstream)| +|Kia|Telluride|HDA2|[Community](#community-maintained-cars)| +|Lexus|CT Hybrid|Lexus Safety System+|[Upstream](#upstream)| +|Lexus|ES|All|[Upstream](#upstream)| +|Lexus|ES|All|[Upstream](#upstream)| +|Lexus|ES Hybrid|All|[Upstream](#upstream)| +|Lexus|ES Hybrid|All|[Upstream](#upstream)| +|Lexus|GS F|All|[Upstream](#upstream)| +|Lexus|IS|All|[Upstream](#upstream)| +|Lexus|IS|All|[Upstream](#upstream)| +|Lexus|LC|All|[Upstream](#upstream)| +|Lexus|NS|Any|[Not compatible](#toyota-security)| +|Lexus|NX|All|[Upstream](#upstream)| +|Lexus|NX|All|[Upstream](#upstream)| +|Lexus|NX Hybrid|All|[Upstream](#upstream)| +|Lexus|NX Hybrid|All|[Upstream](#upstream)| +|Lexus|RC|All|[Upstream](#upstream)| +|Lexus|RX|Lexus Safety System+|[Upstream](#upstream)| +|Lexus|RX|All|[Upstream](#upstream)| +|Lexus|RX|All|[Upstream](#upstream)| +|Lexus|RX Hybrid|Lexus Safety System+|[Upstream](#upstream)| +|Lexus|RX Hybrid|All|[Upstream](#upstream)| +|Lexus|RX Hybrid|All|[Upstream](#upstream)| +|Lexus|UX Hybrid|All|[Upstream](#upstream)| +|Lincoln|Aviator|Co-Pilot360 Plus|[Upstream](#upstream)| +|Lincoln|Aviator Plug-in Hybrid|Co-Pilot360 Plus|[Upstream](#upstream)| +|MAN|eTGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|MAN|TGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Mazda|3|All|[Upstream](#upstream)| +|Mazda|6|All|[Upstream](#upstream)| +|Mazda|CX-5|All|[Upstream](#upstream)| +|Mazda|CX-5|All|[Upstream](#upstream)| +|Mazda|CX-9|All|[Upstream](#upstream)| +|Mazda|CX-9|All|[Upstream](#upstream)| +|Nissan|Altima|ProPILOT Assist|[Upstream](#upstream)| +|Nissan|Leaf|ProPILOT Assist|[Upstream](#upstream)| +|Nissan|Rogue|ProPILOT Assist|[Upstream](#upstream)| +|Nissan|X-Trail|ProPILOT Assist|[Upstream](#upstream)| +|Ram|1500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Ram|2500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Ram|3500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|SEAT|Alhambra|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|SEAT|Ateca|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|SEAT|Leon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Subaru|Ascent|All|[Upstream](#upstream)| +|Subaru|Ascent|All|[Upstream](#upstream)| +|Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Crosstrek Hybrid|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Forester|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Forester|All|[Upstream](#upstream)| +|Subaru|Forester|All|[Upstream](#upstream)| +|Subaru|Forester Hybrid|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Legacy|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Legacy|All|[Upstream](#upstream)| +|Subaru|Outback|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Outback|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Outback|All|[Upstream](#upstream)| +|Subaru|Outback|All|[Upstream](#upstream)| +|Subaru|Solterra|Any|[Not compatible](#toyota-security)| +|Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| +|Škoda|Fabia|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Kamiq|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Karoq|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Kodiaq|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Octavia|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Octavia RS|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Octavia Scout|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Scala|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Superb|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Tesla|Model 3|All|[Upstream](#upstream)| +|Tesla|Model Y|All|[Upstream](#upstream)| +|Toyota|Alphard|All|[Upstream](#upstream)| +|Toyota|Alphard Hybrid|All|[Upstream](#upstream)| +|Toyota|Avalon|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|Avalon|All|[Upstream](#upstream)| +|Toyota|Avalon|All|[Upstream](#upstream)| +|Toyota|Avalon|All|[Upstream](#upstream)| +|Toyota|Avalon Hybrid|All|[Upstream](#upstream)| +|Toyota|Avalon Hybrid|All|[Upstream](#upstream)| +|Toyota|bZ4x|Any|[Not compatible](#toyota-security)| +|Toyota|C-HR|All|[Upstream](#upstream)| +|Toyota|C-HR|All|[Upstream](#upstream)| +|Toyota|C-HR Hybrid|All|[Upstream](#upstream)| +|Toyota|C-HR Hybrid|All|[Upstream](#upstream)| +|Toyota|Camry|All|[Upstream](#upstream)| +|Toyota|Camry|All|[Upstream](#upstream)| +|Toyota|Camry|Any|[Not compatible](#toyota-security)| +|Toyota|Camry Hybrid|All|[Upstream](#upstream)| +|Toyota|Camry Hybrid|All|[Upstream](#upstream)| +|Toyota|Corolla|All|[Upstream](#upstream)| +|Toyota|Corolla|All|[Upstream](#upstream)| +|Toyota|Corolla Cross|Any|[Not compatible](#toyota-security)| +|Toyota|Corolla Cross (Non-US only)|All|[Upstream](#upstream)| +|Toyota|Corolla Cross Hybrid (Non-US only)|All|[Upstream](#upstream)| +|Toyota|Corolla Hatchback|All|[Upstream](#upstream)| +|Toyota|Corolla Hybrid|All|[Upstream](#upstream)| +|Toyota|Corolla Hybrid (South America only)|All|[Upstream](#upstream)| +|Toyota|Highlander|All|[Upstream](#upstream)| +|Toyota|Highlander|All|[Upstream](#upstream)| +|Toyota|Highlander|Any|[Not compatible](#toyota-security)| +|Toyota|Highlander Hybrid|All|[Upstream](#upstream)| +|Toyota|Highlander Hybrid|All|[Upstream](#upstream)| +|Toyota|Mirai|All|[Upstream](#upstream)| +|Toyota|Prius|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|Prius|All|[Upstream](#upstream)| +|Toyota|Prius|All|[Upstream](#upstream)| +|Toyota|Prius Prime|All|[Upstream](#upstream)| +|Toyota|Prius Prime|All|[Upstream](#upstream)| +|Toyota|Prius v|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|RAV4|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|RAV4|All|[Upstream](#upstream)| +|Toyota|RAV4|All|[Upstream](#upstream)| +|Toyota|RAV4|All|[Upstream](#upstream)| +|Toyota|RAV4|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| +|Toyota|RAV4 Prime|Any|[Community](#community-maintained-cars)| +|Toyota|RAV4 Prime|Any|[Not compatible](#toyota-security)| +|Toyota|Sequoia|Any|[Not compatible](#toyota-security)| +|Toyota|Sienna|All|[Upstream](#upstream)| +|Toyota|Sienna|Any|[Community](#community-maintained-cars)| +|Toyota|Sienna|Any|[Not compatible](#toyota-security)| +|Toyota|Tundra|Any|[Not compatible](#toyota-security)| +|Toyota|Venza|Any|[Not compatible](#toyota-security)| +|Volkswagen|Arteon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Arteon eHybrid|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Arteon R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Arteon Shooting Brake|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Atlas|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Atlas Cross Sport|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Caddy|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Caddy Maxi|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Caravelle|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|CC|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Crafter|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|e-Crafter|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|e-Golf|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf Alltrack|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf GTD|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf GTE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf GTI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf SportsVan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Grand California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Jetta GLI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat Alltrack|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat GTE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat NMS|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Polo|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Polo GTI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Sharan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|T-Cross|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|T-Roc|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Taos|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Teramont|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Teramont Cross Sport|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Teramont X|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Tiguan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Tiguan eHybrid|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Touran|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| + +# Types of Support + +**opendbc can support many more cars than it currently does.** There are a few reasons your car may not be supported. +If your car doesn't fit into any of the incompatibility criteria here, then there's a good chance it can be supported! We're adding support for new cars all the time. **We don't have a roadmap for car support**, and in fact, most car support comes from users like you! + +## Upstream + +A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. + +TODO: Refer to openpilot CARS.md + +## Under Review + +TODO: Talk about the merge process, dashcam while under safety review, etc + +## Legacy + +TODO: Talk about situations like Chevy Bolt or Volt or whatever it was + +## Dashcam + +TODO: May collapse this into community, and just set the community support tag in the car port + +## Community + +Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). + +## Incompatible + +### CAN Bus Security + +TODO: Talk about state of Toyota SecOC + +TODO: GM Global B? + +### FlexRay + +All the cars that openpilot supports use a [CAN bus](https://en.wikipedia.org/wiki/CAN_bus) for communication between all the car's computers, however a CAN bus isn't the only way that the computers in your car can communicate. Most, if not all, vehicles from the following manufacturers use [FlexRay](https://en.wikipedia.org/wiki/FlexRay) instead of a CAN bus: **BMW, Mercedes, Audi, Land Rover, and some Volvo**. These cars may one day be supported, but we have no immediate plans to support FlexRay. + +### No Lateral Control API + +TODO: Talk about hydraulic power steering diff --git a/opendbc/car/CARS_template.md b/opendbc/car/CARS_template.md new file mode 100644 index 0000000000..b884a21964 --- /dev/null +++ b/opendbc/car/CARS_template.md @@ -0,0 +1,54 @@ + + +# Support Information for {{car_docs_with_extras | length}} Known Cars + +|{{ExtraCarsColumn | map(attribute='value') | join('|') | replace(hardware_col_name, wide_hardware_col_name)}}| +|---|---|---|{% for _ in range((ExtraCarsColumn | length) - 3) %}{{':---:|'}}{% endfor +%} +{% for car_docs in car_docs_with_extras %} +|{% for column in ExtraCarsColumn %}{{car_docs.get_extra_cars_column(column)}}|{% endfor %} + +{% endfor %} + +# Types of Support + +**opendbc can support many more cars than it currently does.** There are a few reasons your car may not be supported. +If your car doesn't fit into any of the incompatibility criteria here, then there's a good chance it can be supported! We're adding support for new cars all the time. **We don't have a roadmap for car support**, and in fact, most car support comes from users like you! + +## Upstream + +A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. + +TODO: Refer to openpilot CARS.md + +## Under Review + +TODO: Talk about the merge process, dashcam while under safety review, etc + +## Legacy + +TODO: Talk about situations like Chevy Bolt or Volt or whatever it was + +## Dashcam + +TODO: May collapse this into community, and just set the community support tag in the car port + +## Community + +Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). + +## Incompatible + +### CAN Bus Security + +TODO: Talk about state of Toyota SecOC + +TODO: GM Global B? + +### FlexRay + +All the cars that openpilot supports use a [CAN bus](https://en.wikipedia.org/wiki/CAN_bus) for communication between all the car's computers, however a CAN bus isn't the only way that the computers in your car can communicate. Most, if not all, vehicles from the following manufacturers use [FlexRay](https://en.wikipedia.org/wiki/FlexRay) instead of a CAN bus: **BMW, Mercedes, Audi, Land Rover, and some Volvo**. These cars may one day be supported, but we have no immediate plans to support FlexRay. + +### No Lateral Control API + +TODO: Talk about hydraulic power steering + diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py old mode 100644 new mode 100755 index b44c873c3c..7e34747f9a --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -1,13 +1,23 @@ +#!/usr/bin/env python3 +import argparse +import os + from collections import defaultdict import jinja2 from enum import Enum from natsort import natsorted +from opendbc.car.common.basedir import BASEDIR from opendbc.car import gen_empty_fingerprint from opendbc.car.structs import CarParams -from opendbc.car.docs_definitions import CarDocs, Column, CommonFootnote, PartType +from opendbc.car.docs_definitions import CarDocs, ExtraCarDocs, Column, ExtraCarsColumn, CommonFootnote, PartType from opendbc.car.car_helpers import interfaces, get_interface_attr -from opendbc.car.values import PLATFORMS +from opendbc.car.values import PLATFORMS, EXTRA_PLATFORMS +from opendbc.car.mock.values import CAR as MOCK + + +EXTRA_CARS_MD_OUT = os.path.join(BASEDIR, "../", "../", "docs", "CARS.md") +EXTRA_CARS_MD_TEMPLATE = os.path.join(BASEDIR, "CARS_template.md") def get_all_footnotes() -> dict[Enum, int]: @@ -41,6 +51,26 @@ def get_all_car_docs() -> list[CarDocs]: return sorted_cars +def get_car_docs_with_extras() -> list[CarDocs | ExtraCarDocs]: + car_docs_with_extras: list[CarDocs | ExtraCarDocs] = [] + for model, platform in EXTRA_PLATFORMS.items(): + car_docs = platform.config.car_docs + cp_model, cp_platform = (model, platform) if model in interfaces else ("MOCK", MOCK.MOCK) + CP = interfaces[cp_model][0].get_params(cp_platform, fingerprint=gen_empty_fingerprint(), + car_fw=[CarParams.CarFw(ecu=CarParams.Ecu.unknown)], experimental_long=True, docs=True) + + # A platform can include multiple car models + for _car_docs in car_docs: + if not hasattr(_car_docs, "row"): + _car_docs.init_make(CP) + _car_docs.init(CP) + car_docs_with_extras.append(_car_docs) + + # Sort cars by make and model + year + sorted_cars: list[CarDocs | ExtraCarDocs] = natsorted(car_docs_with_extras, key=lambda car: car.name.lower()) + return sorted_cars + + def group_by_make(all_car_docs: list[CarDocs]) -> dict[str, list[CarDocs]]: sorted_car_docs = defaultdict(list) for car_docs in all_car_docs: @@ -57,3 +87,25 @@ def generate_cars_md(all_car_docs: list[CarDocs], template_fn: str) -> str: group_by_make=group_by_make, footnotes=footnotes, Column=Column) return cars_md + + +def generate_cars_md_with_extras(car_docs_with_extras: list[CarDocs | ExtraCarDocs], template_fn: str) -> str: + with open(template_fn) as f: + template = jinja2.Template(f.read(), trim_blocks=True, lstrip_blocks=True) + + cars_md: str = template.render(car_docs_with_extras=car_docs_with_extras, PartType=PartType, + group_by_make=group_by_make, ExtraCarsColumn=ExtraCarsColumn) + return cars_md + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Auto generates supportability info docs for all known cars", + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + parser.add_argument("--template", default=EXTRA_CARS_MD_TEMPLATE, help="Override default template filename") + parser.add_argument("--out", default=EXTRA_CARS_MD_OUT, help="Override default generated filename") + args = parser.parse_args() + + with open(args.out, 'w') as f: + f.write(generate_cars_md_with_extras(get_car_docs_with_extras(), args.template)) + print(f"Generated and written to {args.out}") diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 98bb5bbeaf..5437532810 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -24,6 +24,13 @@ class Column(Enum): VIDEO = "Video" +class ExtraCarsColumn(Enum): + MAKE = "Make" + MODEL = "Model" + PACKAGE = "Package" + SUPPORT = "Support Level" + + class SupportType(Enum): UPSTREAM = "Upstream" # Actively maintained by comma, plug-and-play in release versions of openpilot REVIEW = "Under review" # Dashcam, but planned for official support after safety validation @@ -263,7 +270,7 @@ def __post_init__(self): self.make, self.model, self.years = split_name(self.name) self.year_list = get_year_list(self.years) - def init(self, CP: CarParams, all_footnotes: dict[Enum, int]): + def init(self, CP: CarParams, all_footnotes=None): self.car_name = CP.carName self.car_fingerprint = CP.carFingerprint @@ -321,6 +328,18 @@ def display_func(parts): Column.VIDEO: self.video_link if self.video_link is not None else "", # replaced with an image and link from template in get_column } + if self.support_link is not None: + support_info = f"[{self.support_type.value}]({self.support_link})" + else: + support_info = self.support_type.value + + self.extra_cars_row: dict[Enum, str] = { + ExtraCarsColumn.MAKE: self.make, + ExtraCarsColumn.MODEL: self.model, + ExtraCarsColumn.PACKAGE: self.package, + ExtraCarsColumn.SUPPORT: support_info, + } + # Set steering torque star from max lateral acceleration assert CP.maxLateralAccel > 0.1 if CP.maxLateralAccel >= GOOD_TORQUE_THRESHOLD: @@ -382,6 +401,13 @@ def get_column(self, column: Column, star_icon: str, video_icon: str, footnote_t return item + def get_extra_cars_column(self, column: Column) -> str: + item: str = self.extra_cars_row[column] + if column == Column.MODEL and len(self.years): + item += f" {self.years}" + + return item + @dataclass class ExtraCarDocs(CarDocs): diff --git a/opendbc/car/values.py b/opendbc/car/values.py index 31406441f3..f3a2589fd9 100644 --- a/opendbc/car/values.py +++ b/opendbc/car/values.py @@ -12,8 +12,13 @@ from opendbc.car.tesla.values import CAR as TESLA from opendbc.car.toyota.values import CAR as TOYOTA from opendbc.car.volkswagen.values import CAR as VOLKSWAGEN +from opendbc.car.extra_cars import CAR as EXTRA Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN +ExtraPlatform = Platform | EXTRA + BRANDS = get_args(Platform) +EXTRA_BRANDS = get_args(ExtraPlatform) PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in brand} +EXTRA_PLATFORMS: dict[str, ExtraPlatform] = {str(platform): platform for brand in EXTRA_BRANDS for platform in brand} From 97888e51d015dea1372562fca3f95a037cca00ee Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 21:20:52 -0400 Subject: [PATCH 04/26] fix broken links --- opendbc/car/extra_cars.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opendbc/car/extra_cars.py b/opendbc/car/extra_cars.py index 6439479472..545b8e645d 100644 --- a/opendbc/car/extra_cars.py +++ b/opendbc/car/extra_cars.py @@ -8,14 +8,14 @@ class CommunityCarDocs(ExtraCarDocs): def init_make(self, CP: structs.CarParams): self.support_type = SupportType.COMMUNITY - self.support_link = "#community-maintained-cars" + self.support_link = "#community" @dataclass class ToyotaSecurityCarDocs(ExtraCarDocs): def init_make(self, CP: structs.CarParams): self.support_type = SupportType.INCOMPATIBLE - self.support_link = "#toyota-security" + self.support_link = "#can-bus-security" @dataclass From d60029cc610b041bfec323dbe3ab321930c8961a Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 21:30:13 -0400 Subject: [PATCH 05/26] regen CARS.md with fixed links --- docs/CARS.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 9abf935a58..0cf2454239 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -111,7 +111,7 @@ |Hyundai|Kona Electric (with HDA II, Korea only)|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Hyundai|Kona Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Hyundai|Palisade|All|[Upstream](#upstream)| -|Hyundai|Palisade|HDA2|[Community](#community-maintained-cars)| +|Hyundai|Palisade|HDA2|[Community](#community)| |Hyundai|Santa Cruz|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Hyundai|Santa Fe|All|[Upstream](#upstream)| |Hyundai|Santa Fe|All|[Upstream](#upstream)| @@ -169,7 +169,7 @@ |Kia|Stinger|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Stinger|All|[Upstream](#upstream)| |Kia|Telluride|All|[Upstream](#upstream)| -|Kia|Telluride|HDA2|[Community](#community-maintained-cars)| +|Kia|Telluride|HDA2|[Community](#community)| |Lexus|CT Hybrid|Lexus Safety System+|[Upstream](#upstream)| |Lexus|ES|All|[Upstream](#upstream)| |Lexus|ES|All|[Upstream](#upstream)| @@ -179,7 +179,7 @@ |Lexus|IS|All|[Upstream](#upstream)| |Lexus|IS|All|[Upstream](#upstream)| |Lexus|LC|All|[Upstream](#upstream)| -|Lexus|NS|Any|[Not compatible](#toyota-security)| +|Lexus|NS|Any|[Not compatible](#can-bus-security)| |Lexus|NX|All|[Upstream](#upstream)| |Lexus|NX|All|[Upstream](#upstream)| |Lexus|NX Hybrid|All|[Upstream](#upstream)| @@ -229,7 +229,7 @@ |Subaru|Outback|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|Outback|All|[Upstream](#upstream)| |Subaru|Outback|All|[Upstream](#upstream)| -|Subaru|Solterra|Any|[Not compatible](#toyota-security)| +|Subaru|Solterra|Any|[Not compatible](#can-bus-security)| |Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| |Škoda|Fabia|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| @@ -251,19 +251,19 @@ |Toyota|Avalon|All|[Upstream](#upstream)| |Toyota|Avalon Hybrid|All|[Upstream](#upstream)| |Toyota|Avalon Hybrid|All|[Upstream](#upstream)| -|Toyota|bZ4x|Any|[Not compatible](#toyota-security)| +|Toyota|bZ4x|Any|[Not compatible](#can-bus-security)| |Toyota|C-HR|All|[Upstream](#upstream)| |Toyota|C-HR|All|[Upstream](#upstream)| |Toyota|C-HR Hybrid|All|[Upstream](#upstream)| |Toyota|C-HR Hybrid|All|[Upstream](#upstream)| |Toyota|Camry|All|[Upstream](#upstream)| |Toyota|Camry|All|[Upstream](#upstream)| -|Toyota|Camry|Any|[Not compatible](#toyota-security)| +|Toyota|Camry|Any|[Not compatible](#can-bus-security)| |Toyota|Camry Hybrid|All|[Upstream](#upstream)| |Toyota|Camry Hybrid|All|[Upstream](#upstream)| |Toyota|Corolla|All|[Upstream](#upstream)| |Toyota|Corolla|All|[Upstream](#upstream)| -|Toyota|Corolla Cross|Any|[Not compatible](#toyota-security)| +|Toyota|Corolla Cross|Any|[Not compatible](#can-bus-security)| |Toyota|Corolla Cross (Non-US only)|All|[Upstream](#upstream)| |Toyota|Corolla Cross Hybrid (Non-US only)|All|[Upstream](#upstream)| |Toyota|Corolla Hatchback|All|[Upstream](#upstream)| @@ -271,7 +271,7 @@ |Toyota|Corolla Hybrid (South America only)|All|[Upstream](#upstream)| |Toyota|Highlander|All|[Upstream](#upstream)| |Toyota|Highlander|All|[Upstream](#upstream)| -|Toyota|Highlander|Any|[Not compatible](#toyota-security)| +|Toyota|Highlander|Any|[Not compatible](#can-bus-security)| |Toyota|Highlander Hybrid|All|[Upstream](#upstream)| |Toyota|Highlander Hybrid|All|[Upstream](#upstream)| |Toyota|Mirai|All|[Upstream](#upstream)| @@ -291,14 +291,14 @@ |Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| |Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| |Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| -|Toyota|RAV4 Prime|Any|[Community](#community-maintained-cars)| -|Toyota|RAV4 Prime|Any|[Not compatible](#toyota-security)| -|Toyota|Sequoia|Any|[Not compatible](#toyota-security)| +|Toyota|RAV4 Prime|Any|[Community](#community)| +|Toyota|RAV4 Prime|Any|[Not compatible](#can-bus-security)| +|Toyota|Sequoia|Any|[Not compatible](#can-bus-security)| |Toyota|Sienna|All|[Upstream](#upstream)| -|Toyota|Sienna|Any|[Community](#community-maintained-cars)| -|Toyota|Sienna|Any|[Not compatible](#toyota-security)| -|Toyota|Tundra|Any|[Not compatible](#toyota-security)| -|Toyota|Venza|Any|[Not compatible](#toyota-security)| +|Toyota|Sienna|Any|[Community](#community)| +|Toyota|Sienna|Any|[Not compatible](#can-bus-security)| +|Toyota|Tundra|Any|[Not compatible](#can-bus-security)| +|Toyota|Venza|Any|[Not compatible](#can-bus-security)| |Volkswagen|Arteon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Arteon eHybrid|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Arteon R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| From d411db0a36d5a50000cb3c55addb464ec855a5c2 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 21:30:44 -0400 Subject: [PATCH 06/26] handle dashcam cars --- docs/CARS.md | 58 ++++++++++++++++----------------- opendbc/car/docs_definitions.py | 3 ++ 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 0cf2454239..0c30d2b2cd 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -35,9 +35,9 @@ |Ford|Escape Plug-in Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| |Ford|Explorer|Co-Pilot360 Assist+|[Upstream](#upstream)| |Ford|Explorer Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|F-150|Co-Pilot360 Active 2.0|[Upstream](#upstream)| -|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Upstream](#upstream)| -|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Upstream](#upstream)| +|Ford|F-150|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| +|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| +|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| |Ford|Focus|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| |Ford|Focus Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| |Ford|Kuga|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| @@ -47,8 +47,8 @@ |Ford|Maverick|Co-Pilot360 Assist|[Upstream](#upstream)| |Ford|Maverick Hybrid|LARIAT Luxury|[Upstream](#upstream)| |Ford|Maverick Hybrid|Co-Pilot360 Assist|[Upstream](#upstream)| -|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Upstream](#upstream)| -|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| +|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Dashcam mode](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| @@ -156,7 +156,7 @@ |Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Optima|Advanced Smart Cruise Control|[Upstream](#upstream)| |Kia|Optima|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Optima Hybrid|Advanced Smart Cruise Control|[Upstream](#upstream)| +|Kia|Optima Hybrid|Advanced Smart Cruise Control|[Dashcam mode](#upstream)| |Kia|Optima Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Seltos|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Sorento|Advanced Smart Cruise Control & LKAS|[Upstream](#upstream)| @@ -196,39 +196,39 @@ |Lincoln|Aviator Plug-in Hybrid|Co-Pilot360 Plus|[Upstream](#upstream)| |MAN|eTGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |MAN|TGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Mazda|3|All|[Upstream](#upstream)| -|Mazda|6|All|[Upstream](#upstream)| +|Mazda|3|All|[Dashcam mode](#upstream)| +|Mazda|6|All|[Dashcam mode](#upstream)| +|Mazda|CX-5|All|[Dashcam mode](#upstream)| |Mazda|CX-5|All|[Upstream](#upstream)| -|Mazda|CX-5|All|[Upstream](#upstream)| -|Mazda|CX-9|All|[Upstream](#upstream)| +|Mazda|CX-9|All|[Dashcam mode](#upstream)| |Mazda|CX-9|All|[Upstream](#upstream)| |Nissan|Altima|ProPILOT Assist|[Upstream](#upstream)| |Nissan|Leaf|ProPILOT Assist|[Upstream](#upstream)| |Nissan|Rogue|ProPILOT Assist|[Upstream](#upstream)| |Nissan|X-Trail|ProPILOT Assist|[Upstream](#upstream)| |Ram|1500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Ram|2500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Ram|3500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|SEAT|Alhambra|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Ram|2500|Adaptive Cruise Control (ACC)|[Dashcam mode](#upstream)| +|Ram|3500|Adaptive Cruise Control (ACC)|[Dashcam mode](#upstream)| +|SEAT|Alhambra|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| |SEAT|Ateca|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |SEAT|Leon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Subaru|Ascent|All|[Upstream](#upstream)| -|Subaru|Ascent|All|[Upstream](#upstream)| +|Subaru|Ascent|All|[Dashcam mode](#upstream)| |Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Crosstrek Hybrid|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Forester|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Crosstrek Hybrid|EyeSight Driver Assistance|[Dashcam mode](#upstream)| +|Subaru|Forester|EyeSight Driver Assistance|[Dashcam mode](#upstream)| |Subaru|Forester|All|[Upstream](#upstream)| -|Subaru|Forester|All|[Upstream](#upstream)| -|Subaru|Forester Hybrid|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Forester|All|[Dashcam mode](#upstream)| +|Subaru|Forester Hybrid|EyeSight Driver Assistance|[Dashcam mode](#upstream)| |Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Legacy|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Legacy|EyeSight Driver Assistance|[Dashcam mode](#upstream)| |Subaru|Legacy|All|[Upstream](#upstream)| -|Subaru|Outback|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Outback|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Outback|All|[Upstream](#upstream)| +|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#upstream)| +|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#upstream)| |Subaru|Outback|All|[Upstream](#upstream)| +|Subaru|Outback|All|[Dashcam mode](#upstream)| |Subaru|Solterra|Any|[Not compatible](#can-bus-security)| |Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| @@ -241,8 +241,8 @@ |Škoda|Octavia Scout|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Škoda|Scala|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Škoda|Superb|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Tesla|Model 3|All|[Upstream](#upstream)| -|Tesla|Model Y|All|[Upstream](#upstream)| +|Tesla|Model 3|All|[Dashcam mode](#upstream)| +|Tesla|Model Y|All|[Dashcam mode](#upstream)| |Toyota|Alphard|All|[Upstream](#upstream)| |Toyota|Alphard Hybrid|All|[Upstream](#upstream)| |Toyota|Avalon|Toyota Safety Sense P|[Upstream](#upstream)| @@ -305,8 +305,8 @@ |Volkswagen|Arteon Shooting Brake|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Atlas|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Atlas Cross Sport|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Caddy|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Caddy Maxi|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Caddy|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| +|Volkswagen|Caddy Maxi|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| |Volkswagen|California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Caravelle|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|CC|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| @@ -321,16 +321,16 @@ |Volkswagen|Golf R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Golf SportsVan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Grand California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| |Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Jetta GLI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Passat|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Passat Alltrack|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Passat GTE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Passat NMS|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat NMS|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| |Volkswagen|Polo|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Polo GTI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Sharan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Sharan|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| |Volkswagen|T-Cross|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|T-Roc|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Taos|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 5437532810..2ec7c14d6f 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -274,6 +274,9 @@ def init(self, CP: CarParams, all_footnotes=None): self.car_name = CP.carName self.car_fingerprint = CP.carFingerprint + if self.merged and CP.dashcamOnly and self.support_type != SupportType.REVIEW: + self.support_type = SupportType.DASHCAM + # longitudinal column op_long = "Stock" if CP.experimentalLongitudinalAvailable or CP.enableDsu: From fc732b38e4d2a0fd437a0b756e81990e34c0a4b1 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 21:32:48 -0400 Subject: [PATCH 07/26] fix dashcam inline links --- docs/CARS.md | 58 ++++++++++++++++----------------- opendbc/car/docs_definitions.py | 1 + 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 0c30d2b2cd..e5341433a1 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -35,9 +35,9 @@ |Ford|Escape Plug-in Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| |Ford|Explorer|Co-Pilot360 Assist+|[Upstream](#upstream)| |Ford|Explorer Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|F-150|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| -|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| -|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| +|Ford|F-150|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| +|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| +|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| |Ford|Focus|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| |Ford|Focus Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| |Ford|Kuga|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| @@ -47,8 +47,8 @@ |Ford|Maverick|Co-Pilot360 Assist|[Upstream](#upstream)| |Ford|Maverick Hybrid|LARIAT Luxury|[Upstream](#upstream)| |Ford|Maverick Hybrid|Co-Pilot360 Assist|[Upstream](#upstream)| -|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Dashcam mode](#upstream)| -|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Dashcam mode](#upstream)| +|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| +|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Dashcam mode](#dashcam)| |Genesis|G70|All|[Upstream](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| @@ -156,7 +156,7 @@ |Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Optima|Advanced Smart Cruise Control|[Upstream](#upstream)| |Kia|Optima|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Optima Hybrid|Advanced Smart Cruise Control|[Dashcam mode](#upstream)| +|Kia|Optima Hybrid|Advanced Smart Cruise Control|[Dashcam mode](#dashcam)| |Kia|Optima Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Seltos|Smart Cruise Control (SCC)|[Upstream](#upstream)| |Kia|Sorento|Advanced Smart Cruise Control & LKAS|[Upstream](#upstream)| @@ -196,39 +196,39 @@ |Lincoln|Aviator Plug-in Hybrid|Co-Pilot360 Plus|[Upstream](#upstream)| |MAN|eTGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |MAN|TGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Mazda|3|All|[Dashcam mode](#upstream)| -|Mazda|6|All|[Dashcam mode](#upstream)| -|Mazda|CX-5|All|[Dashcam mode](#upstream)| +|Mazda|3|All|[Dashcam mode](#dashcam)| +|Mazda|6|All|[Dashcam mode](#dashcam)| +|Mazda|CX-5|All|[Dashcam mode](#dashcam)| |Mazda|CX-5|All|[Upstream](#upstream)| -|Mazda|CX-9|All|[Dashcam mode](#upstream)| +|Mazda|CX-9|All|[Dashcam mode](#dashcam)| |Mazda|CX-9|All|[Upstream](#upstream)| |Nissan|Altima|ProPILOT Assist|[Upstream](#upstream)| |Nissan|Leaf|ProPILOT Assist|[Upstream](#upstream)| |Nissan|Rogue|ProPILOT Assist|[Upstream](#upstream)| |Nissan|X-Trail|ProPILOT Assist|[Upstream](#upstream)| |Ram|1500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Ram|2500|Adaptive Cruise Control (ACC)|[Dashcam mode](#upstream)| -|Ram|3500|Adaptive Cruise Control (ACC)|[Dashcam mode](#upstream)| -|SEAT|Alhambra|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| +|Ram|2500|Adaptive Cruise Control (ACC)|[Dashcam mode](#dashcam)| +|Ram|3500|Adaptive Cruise Control (ACC)|[Dashcam mode](#dashcam)| +|SEAT|Alhambra|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| |SEAT|Ateca|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |SEAT|Leon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Subaru|Ascent|All|[Upstream](#upstream)| -|Subaru|Ascent|All|[Dashcam mode](#upstream)| +|Subaru|Ascent|All|[Dashcam mode](#dashcam)| |Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Crosstrek Hybrid|EyeSight Driver Assistance|[Dashcam mode](#upstream)| -|Subaru|Forester|EyeSight Driver Assistance|[Dashcam mode](#upstream)| +|Subaru|Crosstrek Hybrid|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Forester|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| |Subaru|Forester|All|[Upstream](#upstream)| -|Subaru|Forester|All|[Dashcam mode](#upstream)| -|Subaru|Forester Hybrid|EyeSight Driver Assistance|[Dashcam mode](#upstream)| +|Subaru|Forester|All|[Dashcam mode](#dashcam)| +|Subaru|Forester Hybrid|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| |Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Legacy|EyeSight Driver Assistance|[Dashcam mode](#upstream)| +|Subaru|Legacy|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| |Subaru|Legacy|All|[Upstream](#upstream)| -|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#upstream)| -|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#upstream)| +|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| |Subaru|Outback|All|[Upstream](#upstream)| -|Subaru|Outback|All|[Dashcam mode](#upstream)| +|Subaru|Outback|All|[Dashcam mode](#dashcam)| |Subaru|Solterra|Any|[Not compatible](#can-bus-security)| |Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| |Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| @@ -241,8 +241,8 @@ |Škoda|Octavia Scout|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Škoda|Scala|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Škoda|Superb|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Tesla|Model 3|All|[Dashcam mode](#upstream)| -|Tesla|Model Y|All|[Dashcam mode](#upstream)| +|Tesla|Model 3|All|[Dashcam mode](#dashcam)| +|Tesla|Model Y|All|[Dashcam mode](#dashcam)| |Toyota|Alphard|All|[Upstream](#upstream)| |Toyota|Alphard Hybrid|All|[Upstream](#upstream)| |Toyota|Avalon|Toyota Safety Sense P|[Upstream](#upstream)| @@ -305,8 +305,8 @@ |Volkswagen|Arteon Shooting Brake|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Atlas|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Atlas Cross Sport|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Caddy|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| -|Volkswagen|Caddy Maxi|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| +|Volkswagen|Caddy|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|Volkswagen|Caddy Maxi|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| |Volkswagen|California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Caravelle|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|CC|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| @@ -321,16 +321,16 @@ |Volkswagen|Golf R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Golf SportsVan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Grand California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| +|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| |Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Jetta GLI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Passat|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Passat Alltrack|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Passat GTE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Passat NMS|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| +|Volkswagen|Passat NMS|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| |Volkswagen|Polo|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Polo GTI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Sharan|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#upstream)| +|Volkswagen|Sharan|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| |Volkswagen|T-Cross|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|T-Roc|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Volkswagen|Taos|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 2ec7c14d6f..ac5e01bead 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -276,6 +276,7 @@ def init(self, CP: CarParams, all_footnotes=None): if self.merged and CP.dashcamOnly and self.support_type != SupportType.REVIEW: self.support_type = SupportType.DASHCAM + self.support_link = "#dashcam" # longitudinal column op_long = "Stock" From d4420ce218c00e4f37fc952f7095f966abf6952e Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 21:38:15 -0400 Subject: [PATCH 08/26] support under-review, move relevant Fords --- docs/CARS.md | 10 +++++----- opendbc/car/docs_definitions.py | 9 ++++++--- opendbc/car/ford/values.py | 10 +++++----- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index e5341433a1..881236b722 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -35,9 +35,9 @@ |Ford|Escape Plug-in Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| |Ford|Explorer|Co-Pilot360 Assist+|[Upstream](#upstream)| |Ford|Explorer Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|F-150|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| -|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| -|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| +|Ford|F-150|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Under review](#under-review)| |Ford|Focus|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| |Ford|Focus Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| |Ford|Kuga|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| @@ -47,8 +47,8 @@ |Ford|Maverick|Co-Pilot360 Assist|[Upstream](#upstream)| |Ford|Maverick Hybrid|LARIAT Luxury|[Upstream](#upstream)| |Ford|Maverick Hybrid|Co-Pilot360 Assist|[Upstream](#upstream)| -|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Dashcam mode](#dashcam)| -|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Dashcam mode](#dashcam)| +|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Under review](#under-review)| |Genesis|G70|All|[Upstream](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| |Genesis|G70|All|[Upstream](#upstream)| diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index ac5e01bead..a30a27ce5d 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -274,9 +274,12 @@ def init(self, CP: CarParams, all_footnotes=None): self.car_name = CP.carName self.car_fingerprint = CP.carFingerprint - if self.merged and CP.dashcamOnly and self.support_type != SupportType.REVIEW: - self.support_type = SupportType.DASHCAM - self.support_link = "#dashcam" + if self.merged and CP.dashcamOnly: + if self.support_type != SupportType.REVIEW: + self.support_type = SupportType.DASHCAM + self.support_link = "#dashcam" + else: + self.support_link = "#under-review" # longitudinal column op_long = "Stock" diff --git a/opendbc/car/ford/values.py b/opendbc/car/ford/values.py index c3cc9b5641..6ea5177215 100644 --- a/opendbc/car/ford/values.py +++ b/opendbc/car/ford/values.py @@ -7,7 +7,7 @@ from opendbc.car import AngleRateLimit, CarSpecs, dbc_dict, DbcDict, PlatformConfig, Platforms from opendbc.car.structs import CarParams from opendbc.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ - Device + Device, SupportType from opendbc.car.fw_query_definitions import FwQueryConfig, LiveFwVersions, OfflineFwVersions, Request, StdQueries, p16 Ecu = CarParams.Ecu @@ -116,11 +116,11 @@ class CAR(Platforms): CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) FORD_F_150_MK14 = FordCANFDPlatformConfig( - [FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True)], + [FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True, support_type=SupportType.REVIEW)], CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) FORD_F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( - [FordCarDocs("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], + [FordCarDocs("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0", support_type=SupportType.REVIEW)], CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) FORD_FOCUS_MK4 = FordPlatformConfig( @@ -135,11 +135,11 @@ class CAR(Platforms): CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) FORD_MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( - [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], + [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0", support_type=SupportType.REVIEW)], CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) FORD_RANGER_MK2 = FordCANFDPlatformConfig( - [FordCarDocs("Ford Ranger 2024", "Adaptive Cruise Control with Lane Centering")], + [FordCarDocs("Ford Ranger 2024", "Adaptive Cruise Control with Lane Centering", support_type=SupportType.REVIEW)], CarSpecs(mass=2000, wheelbase=3.27, steerRatio=17.0), ) From 86c2d6c9cddf423bc491e84d66f75e29d69c8f8a Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 23:31:07 -0400 Subject: [PATCH 09/26] garbage collect completed TODO --- opendbc/car/docs_definitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index a30a27ce5d..a3f3b3ef16 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -264,7 +264,7 @@ class CarDocs: merged: bool = True support_type: SupportType = SupportType.UPSTREAM - support_link: str | None = "#upstream" # TODO: have a default link to the definition of an upstream car + support_link: str | None = "#upstream" def __post_init__(self): self.make, self.model, self.years = split_name(self.name) From e9b566cfa224ad0891dd14ca5f64214aa77d7691 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 23:37:35 -0400 Subject: [PATCH 10/26] collect docs support stuff in docs.py --- opendbc/car/docs.py | 8 +++++++- opendbc/car/values.py | 4 ---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py index 7e34747f9a..08c0fc95c1 100755 --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import argparse import os +from typing import get_args from collections import defaultdict import jinja2 @@ -12,13 +13,18 @@ from opendbc.car.structs import CarParams from opendbc.car.docs_definitions import CarDocs, ExtraCarDocs, Column, ExtraCarsColumn, CommonFootnote, PartType from opendbc.car.car_helpers import interfaces, get_interface_attr -from opendbc.car.values import PLATFORMS, EXTRA_PLATFORMS +from opendbc.car.values import Platform, PLATFORMS from opendbc.car.mock.values import CAR as MOCK +from opendbc.car.extra_cars import CAR as EXTRA EXTRA_CARS_MD_OUT = os.path.join(BASEDIR, "../", "../", "docs", "CARS.md") EXTRA_CARS_MD_TEMPLATE = os.path.join(BASEDIR, "CARS_template.md") +ExtraPlatform = Platform | EXTRA +EXTRA_BRANDS = get_args(ExtraPlatform) +EXTRA_PLATFORMS: dict[str, ExtraPlatform] = {str(platform): platform for brand in EXTRA_BRANDS for platform in brand} + def get_all_footnotes() -> dict[Enum, int]: all_footnotes = list(CommonFootnote) diff --git a/opendbc/car/values.py b/opendbc/car/values.py index f3a2589fd9..8f901bbb7c 100644 --- a/opendbc/car/values.py +++ b/opendbc/car/values.py @@ -12,13 +12,9 @@ from opendbc.car.tesla.values import CAR as TESLA from opendbc.car.toyota.values import CAR as TOYOTA from opendbc.car.volkswagen.values import CAR as VOLKSWAGEN -from opendbc.car.extra_cars import CAR as EXTRA Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN -ExtraPlatform = Platform | EXTRA BRANDS = get_args(Platform) -EXTRA_BRANDS = get_args(ExtraPlatform) PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in brand} -EXTRA_PLATFORMS: dict[str, ExtraPlatform] = {str(platform): platform for brand in EXTRA_BRANDS for platform in brand} From ade3ac0be5f65cb236f3e07ac911169763e28213 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 23:38:22 -0400 Subject: [PATCH 11/26] whitespace diff reduction --- opendbc/car/values.py | 1 - 1 file changed, 1 deletion(-) diff --git a/opendbc/car/values.py b/opendbc/car/values.py index 8f901bbb7c..31406441f3 100644 --- a/opendbc/car/values.py +++ b/opendbc/car/values.py @@ -14,7 +14,6 @@ from opendbc.car.volkswagen.values import CAR as VOLKSWAGEN Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN - BRANDS = get_args(Platform) PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in brand} From f316e39b2c8eeaa4e4ecff20fb9f39b911f487f1 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 23:49:04 -0400 Subject: [PATCH 12/26] cleanup CarParams fetching --- opendbc/car/docs.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py index 08c0fc95c1..352c6167d5 100755 --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -26,6 +26,13 @@ EXTRA_PLATFORMS: dict[str, ExtraPlatform] = {str(platform): platform for brand in EXTRA_BRANDS for platform in brand} +def get_params_for_docs(model, platform) -> CarParams: + cp_model, cp_platform = (model, platform) if model in interfaces else ("MOCK", MOCK.MOCK) + return interfaces[cp_model][0].get_params(cp_platform, fingerprint=gen_empty_fingerprint(), + car_fw=[CarParams.CarFw(ecu=CarParams.Ecu.unknown)], + experimental_long=True, docs=True) + + def get_all_footnotes() -> dict[Enum, int]: all_footnotes = list(CommonFootnote) for footnotes in get_interface_attr("Footnote", ignore_none=True).values(): @@ -38,9 +45,7 @@ def get_all_car_docs() -> list[CarDocs]: footnotes = get_all_footnotes() for model, platform in PLATFORMS.items(): car_docs = platform.config.car_docs - # If available, uses experimental longitudinal limits for the docs - CP = interfaces[model][0].get_params(platform, fingerprint=gen_empty_fingerprint(), - car_fw=[CarParams.CarFw(ecu=CarParams.Ecu.unknown)], experimental_long=True, docs=True) + CP = get_params_for_docs(model, platform) if CP.dashcamOnly or not len(car_docs): continue @@ -61,9 +66,7 @@ def get_car_docs_with_extras() -> list[CarDocs | ExtraCarDocs]: car_docs_with_extras: list[CarDocs | ExtraCarDocs] = [] for model, platform in EXTRA_PLATFORMS.items(): car_docs = platform.config.car_docs - cp_model, cp_platform = (model, platform) if model in interfaces else ("MOCK", MOCK.MOCK) - CP = interfaces[cp_model][0].get_params(cp_platform, fingerprint=gen_empty_fingerprint(), - car_fw=[CarParams.CarFw(ecu=CarParams.Ecu.unknown)], experimental_long=True, docs=True) + CP = get_params_for_docs(model, platform) # A platform can include multiple car models for _car_docs in car_docs: From 9a5fbb302c68cf47ed5d932039e375eb1880a79e Mon Sep 17 00:00:00 2001 From: Jason Young Date: Thu, 3 Oct 2024 23:57:31 -0400 Subject: [PATCH 13/26] tight tight tight --- opendbc/car/docs.py | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py index 352c6167d5..e051712fb6 100755 --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -40,14 +40,13 @@ def get_all_footnotes() -> dict[Enum, int]: return {fn: idx + 1 for idx, fn in enumerate(all_footnotes)} -def get_all_car_docs() -> list[CarDocs]: - all_car_docs: list[CarDocs] = [] - footnotes = get_all_footnotes() - for model, platform in PLATFORMS.items(): +def build_sorted_car_docs_list(platforms, footnotes=None, include_dashcam=False): + collected_car_docs: list[CarDocs | ExtraCarDocs] = [] + for model, platform in platforms.items(): car_docs = platform.config.car_docs CP = get_params_for_docs(model, platform) - if CP.dashcamOnly or not len(car_docs): + if (CP.dashcamOnly and not include_dashcam) or not len(car_docs): continue # A platform can include multiple car models @@ -55,29 +54,20 @@ def get_all_car_docs() -> list[CarDocs]: if not hasattr(_car_docs, "row"): _car_docs.init_make(CP) _car_docs.init(CP, footnotes) - all_car_docs.append(_car_docs) + collected_car_docs.append(_car_docs) # Sort cars by make and model + year - sorted_cars: list[CarDocs] = natsorted(all_car_docs, key=lambda car: car.name.lower()) + sorted_cars: list[CarDocs] = natsorted(collected_car_docs, key=lambda car: car.name.lower()) return sorted_cars -def get_car_docs_with_extras() -> list[CarDocs | ExtraCarDocs]: - car_docs_with_extras: list[CarDocs | ExtraCarDocs] = [] - for model, platform in EXTRA_PLATFORMS.items(): - car_docs = platform.config.car_docs - CP = get_params_for_docs(model, platform) +def get_all_car_docs() -> list[CarDocs]: + collected_footnotes = get_all_footnotes() + return build_sorted_car_docs_list(PLATFORMS, footnotes=collected_footnotes) - # A platform can include multiple car models - for _car_docs in car_docs: - if not hasattr(_car_docs, "row"): - _car_docs.init_make(CP) - _car_docs.init(CP) - car_docs_with_extras.append(_car_docs) - # Sort cars by make and model + year - sorted_cars: list[CarDocs | ExtraCarDocs] = natsorted(car_docs_with_extras, key=lambda car: car.name.lower()) - return sorted_cars +def get_car_docs_with_extras() -> list[CarDocs | ExtraCarDocs]: + return build_sorted_car_docs_list(EXTRA_PLATFORMS, include_dashcam=True) def group_by_make(all_car_docs: list[CarDocs]) -> dict[str, list[CarDocs]]: From 705399441efd73d5112bf3a27cea87ab4b73a950 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 00:00:49 -0400 Subject: [PATCH 14/26] garbage collect another completed TODO --- opendbc/car/docs_definitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index a3f3b3ef16..3eb194aca3 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -421,4 +421,4 @@ class ExtraCarDocs(CarDocs): package: str = "Any" merged: bool = False support_type: SupportType = SupportType.INCOMPATIBLE - support_link: str | None = "#incompatible" # TODO: have a default link to the definition of an incompatible car + support_link: str | None = "#incompatible" From 4d1b21412cb51a5fe5549aca3a6c076e0f638eb9 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 00:10:16 -0400 Subject: [PATCH 15/26] propitiate type checker --- opendbc/car/docs.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py index e051712fb6..fba42909e2 100755 --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -28,9 +28,10 @@ def get_params_for_docs(model, platform) -> CarParams: cp_model, cp_platform = (model, platform) if model in interfaces else ("MOCK", MOCK.MOCK) - return interfaces[cp_model][0].get_params(cp_platform, fingerprint=gen_empty_fingerprint(), - car_fw=[CarParams.CarFw(ecu=CarParams.Ecu.unknown)], - experimental_long=True, docs=True) + CP: CarParams = interfaces[cp_model][0].get_params(cp_platform, fingerprint=gen_empty_fingerprint(), + car_fw=[CarParams.CarFw(ecu=CarParams.Ecu.unknown)], + experimental_long=True, docs=True) + return CP def get_all_footnotes() -> dict[Enum, int]: @@ -57,17 +58,19 @@ def build_sorted_car_docs_list(platforms, footnotes=None, include_dashcam=False) collected_car_docs.append(_car_docs) # Sort cars by make and model + year - sorted_cars: list[CarDocs] = natsorted(collected_car_docs, key=lambda car: car.name.lower()) + sorted_cars = natsorted(collected_car_docs, key=lambda car: car.name.lower()) return sorted_cars def get_all_car_docs() -> list[CarDocs]: collected_footnotes = get_all_footnotes() - return build_sorted_car_docs_list(PLATFORMS, footnotes=collected_footnotes) + sorted_list: list[CarDocs] = build_sorted_car_docs_list(PLATFORMS, footnotes=collected_footnotes) + return sorted_list def get_car_docs_with_extras() -> list[CarDocs | ExtraCarDocs]: - return build_sorted_car_docs_list(EXTRA_PLATFORMS, include_dashcam=True) + sorted_list: list[CarDocs] = build_sorted_car_docs_list(EXTRA_PLATFORMS, include_dashcam=True) + return sorted_list def group_by_make(all_car_docs: list[CarDocs]) -> dict[str, list[CarDocs]]: From 0ced347d267f746e05316ba7b9c72a3acee8f38a Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 00:19:18 -0400 Subject: [PATCH 16/26] template wordsmithing --- opendbc/car/CARS_template.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/opendbc/car/CARS_template.md b/opendbc/car/CARS_template.md index b884a21964..01dfc838e6 100644 --- a/opendbc/car/CARS_template.md +++ b/opendbc/car/CARS_template.md @@ -12,17 +12,21 @@ # Types of Support **opendbc can support many more cars than it currently does.** There are a few reasons your car may not be supported. -If your car doesn't fit into any of the incompatibility criteria here, then there's a good chance it can be supported! We're adding support for new cars all the time. **We don't have a roadmap for car support**, and in fact, most car support comes from users like you! +If your car doesn't fit into any of the incompatibility criteria here, then there's a good chance it can be supported! +We're adding support for new cars all the time. **We don't have a roadmap for car support**, and in fact, most car +support comes from users like you! ## Upstream -A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. - -TODO: Refer to openpilot CARS.md +A supported vehicle is one that just works when you install a comma device. All supported cars provide a better +experience than any stock system. Supported vehicles reference the US market unless otherwise specified. ## Under Review -TODO: Talk about the merge process, dashcam while under safety review, etc +A vehicle under review is one for which software support has been merged into upstream openpilot, but hasn't yet been +tested for drive quality and conformance with [comma safety guidelines](https://github.com/commaai/openpilot/blob/master/docs/SAFETY.md). +This is a normal part of the development and quality assurance process. This vehicle will not work when upstream +openpilot is installed, but custom forks may allow their use. ## Legacy From a92c3ed3d28f4e9b69d440e21df6753cef6b51e2 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 00:19:41 -0400 Subject: [PATCH 17/26] regen CARS.md --- docs/CARS.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 881236b722..10bab084a2 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -344,17 +344,21 @@ # Types of Support **opendbc can support many more cars than it currently does.** There are a few reasons your car may not be supported. -If your car doesn't fit into any of the incompatibility criteria here, then there's a good chance it can be supported! We're adding support for new cars all the time. **We don't have a roadmap for car support**, and in fact, most car support comes from users like you! +If your car doesn't fit into any of the incompatibility criteria here, then there's a good chance it can be supported! +We're adding support for new cars all the time. **We don't have a roadmap for car support**, and in fact, most car +support comes from users like you! ## Upstream -A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. - -TODO: Refer to openpilot CARS.md +A supported vehicle is one that just works when you install a comma device. All supported cars provide a better +experience than any stock system. Supported vehicles reference the US market unless otherwise specified. ## Under Review -TODO: Talk about the merge process, dashcam while under safety review, etc +A vehicle under review is one for which software support has been merged into upstream openpilot, but hasn't yet been +tested for drive quality and conformance with [comma safety guidelines](https://github.com/commaai/openpilot/blob/master/docs/SAFETY.md). +This is a normal part of the development and quality assurance process. This vehicle will not work when upstream +openpilot is installed, but custom forks may allow their use. ## Legacy From 42dff9312a8047c6bbdc73e3e44657ad4ee5102b Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:04:28 -0400 Subject: [PATCH 18/26] prep for custom install state --- docs/CARS.md | 2 +- opendbc/car/CARS_template.md | 2 +- opendbc/car/docs.py | 5 +++-- opendbc/car/docs_definitions.py | 2 +- opendbc/car/gm/values.py | 3 ++- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 10bab084a2..6267eb6eb4 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -360,7 +360,7 @@ tested for drive quality and conformance with [comma safety guidelines](https:// This is a normal part of the development and quality assurance process. This vehicle will not work when upstream openpilot is installed, but custom forks may allow their use. -## Legacy +## Custom TODO: Talk about situations like Chevy Bolt or Volt or whatever it was diff --git a/opendbc/car/CARS_template.md b/opendbc/car/CARS_template.md index 01dfc838e6..6ca9fa5049 100644 --- a/opendbc/car/CARS_template.md +++ b/opendbc/car/CARS_template.md @@ -28,7 +28,7 @@ tested for drive quality and conformance with [comma safety guidelines](https:// This is a normal part of the development and quality assurance process. This vehicle will not work when upstream openpilot is installed, but custom forks may allow their use. -## Legacy +## Custom TODO: Talk about situations like Chevy Bolt or Volt or whatever it was diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py index fba42909e2..5ecd06dc44 100755 --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -16,6 +16,7 @@ from opendbc.car.values import Platform, PLATFORMS from opendbc.car.mock.values import CAR as MOCK from opendbc.car.extra_cars import CAR as EXTRA +from opendbc_repo.opendbc.car.docs_definitions import SupportType EXTRA_CARS_MD_OUT = os.path.join(BASEDIR, "../", "../", "docs", "CARS.md") @@ -41,7 +42,7 @@ def get_all_footnotes() -> dict[Enum, int]: return {fn: idx + 1 for idx, fn in enumerate(all_footnotes)} -def build_sorted_car_docs_list(platforms, footnotes=None, include_dashcam=False): +def build_sorted_car_docs_list(platforms, footnotes=None, include_dashcam=False, include_custom=False): collected_car_docs: list[CarDocs | ExtraCarDocs] = [] for model, platform in platforms.items(): car_docs = platform.config.car_docs @@ -69,7 +70,7 @@ def get_all_car_docs() -> list[CarDocs]: def get_car_docs_with_extras() -> list[CarDocs | ExtraCarDocs]: - sorted_list: list[CarDocs] = build_sorted_car_docs_list(EXTRA_PLATFORMS, include_dashcam=True) + sorted_list: list[CarDocs] = build_sorted_car_docs_list(EXTRA_PLATFORMS, include_custom=True, include_dashcam=True) return sorted_list diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 3eb194aca3..3724a1344f 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -36,7 +36,7 @@ class SupportType(Enum): REVIEW = "Under review" # Dashcam, but planned for official support after safety validation DASHCAM = "Dashcam mode" # Dashcam, but may be drivable in a community fork COMMUNITY = "Community" # Not upstream, but available in a custom community fork, not validated by comma - LEGACY = "Legacy" # Cars that would be in dashcam mode, but work in release for historical reasons + CUSTOM = "Custom" # Upstream, but don't have a harness available or need an unusual custom install INCOMPATIBLE = "Not compatible" # Known fundamental incompatibility such as Flexray or hydraulic power steering diff --git a/opendbc/car/gm/values.py b/opendbc/car/gm/values.py index 852a6fbf85..0c2991fa73 100644 --- a/opendbc/car/gm/values.py +++ b/opendbc/car/gm/values.py @@ -2,7 +2,7 @@ from opendbc.car import dbc_dict, PlatformConfig, DbcDict, Platforms, CarSpecs from opendbc.car.structs import CarParams -from opendbc.car.docs_definitions import CarHarness, CarDocs, CarParts +from opendbc.car.docs_definitions import CarHarness, CarDocs, CarParts, SupportType from opendbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = CarParams.Ecu @@ -89,6 +89,7 @@ def init(self): # ASCM is supported, but due to a janky install and hardware configuration, we are not showing in the car docs self.car_docs = [] + @dataclass class GMSDGMPlatformConfig(GMPlatformConfig): def init(self): From 41353ca816928dab7387e3555ce55150a9b6ea77 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:05:07 -0400 Subject: [PATCH 19/26] cleanup --- opendbc/car/docs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/opendbc/car/docs.py b/opendbc/car/docs.py index 5ecd06dc44..2681296e17 100755 --- a/opendbc/car/docs.py +++ b/opendbc/car/docs.py @@ -16,7 +16,6 @@ from opendbc.car.values import Platform, PLATFORMS from opendbc.car.mock.values import CAR as MOCK from opendbc.car.extra_cars import CAR as EXTRA -from opendbc_repo.opendbc.car.docs_definitions import SupportType EXTRA_CARS_MD_OUT = os.path.join(BASEDIR, "../", "../", "docs", "CARS.md") From 31d798ec974c83d4ceb2079359d21adf2621db7f Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:05:24 -0400 Subject: [PATCH 20/26] cleanup --- opendbc/car/gm/values.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opendbc/car/gm/values.py b/opendbc/car/gm/values.py index 0c2991fa73..3f758d161b 100644 --- a/opendbc/car/gm/values.py +++ b/opendbc/car/gm/values.py @@ -2,7 +2,7 @@ from opendbc.car import dbc_dict, PlatformConfig, DbcDict, Platforms, CarSpecs from opendbc.car.structs import CarParams -from opendbc.car.docs_definitions import CarHarness, CarDocs, CarParts, SupportType +from opendbc.car.docs_definitions import CarHarness, CarDocs, CarParts from opendbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = CarParams.Ecu From 1126e5d65dc63dad690a9f4b42e54bf3a030c4f1 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:42:33 -0400 Subject: [PATCH 21/26] whitespace diff reduction --- opendbc/car/gm/values.py | 1 - 1 file changed, 1 deletion(-) diff --git a/opendbc/car/gm/values.py b/opendbc/car/gm/values.py index 3f758d161b..852a6fbf85 100644 --- a/opendbc/car/gm/values.py +++ b/opendbc/car/gm/values.py @@ -89,7 +89,6 @@ def init(self): # ASCM is supported, but due to a janky install and hardware configuration, we are not showing in the car docs self.car_docs = [] - @dataclass class GMSDGMPlatformConfig(GMPlatformConfig): def init(self): From 6d5316e2257c44e43f6e097d12c15c30d812a2c9 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:50:20 -0400 Subject: [PATCH 22/26] template wordsmithing --- opendbc/car/CARS_template.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/opendbc/car/CARS_template.md b/opendbc/car/CARS_template.md index 6ca9fa5049..6b9a39a538 100644 --- a/opendbc/car/CARS_template.md +++ b/opendbc/car/CARS_template.md @@ -30,29 +30,31 @@ openpilot is installed, but custom forks may allow their use. ## Custom -TODO: Talk about situations like Chevy Bolt or Volt or whatever it was +Vehicles in this category are not considered plug-and-play. Software support is included in upstream openpilot, but +these vehicles might not have a harness in the comma store, or the physical install might be at an unusual or cumbersome +location, or they might need unusual configuration after install. ## Dashcam -TODO: May collapse this into community, and just set the community support tag in the car port +Dashcam vehicles have software support in upstream openpilot, but will go into "dashcam mode" at startup and will not +engage. This is usually due to known issues with driving safety or quality. ## Community -Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). +Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community +Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). ## Incompatible ### CAN Bus Security -TODO: Talk about state of Toyota SecOC - -TODO: GM Global B? +Vehicles with CAN security measures, such as AUTOSAR Secure Onboard Communication (SecOC) are not usable with openpilot +unless the owner can recover the message signing key and implement CAN message signing. Examples include certain newer +Toyota, and the GM Global B platform. ### FlexRay -All the cars that openpilot supports use a [CAN bus](https://en.wikipedia.org/wiki/CAN_bus) for communication between all the car's computers, however a CAN bus isn't the only way that the computers in your car can communicate. Most, if not all, vehicles from the following manufacturers use [FlexRay](https://en.wikipedia.org/wiki/FlexRay) instead of a CAN bus: **BMW, Mercedes, Audi, Land Rover, and some Volvo**. These cars may one day be supported, but we have no immediate plans to support FlexRay. - -### No Lateral Control API - -TODO: Talk about hydraulic power steering - +All the cars that openpilot supports use a [CAN bus](https://en.wikipedia.org/wiki/CAN_bus) for communication between all the car's computers, however a +CAN bus isn't the only way that the computers in your car can communicate. Most, if not all, vehicles from the following +manufacturers use [FlexRay](https://en.wikipedia.org/wiki/FlexRay) instead of a CAN bus: **BMW, Mercedes, Audi, Land Rover, and some Volvo**. These cars +may one day be supported, but we have no immediate plans to support FlexRay. From 9b38e9ab3cfc293440be30ecec59623e467d702e Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:50:43 -0400 Subject: [PATCH 23/26] regen CARS.md --- docs/CARS.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 6267eb6eb4..23cbd3c2b9 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -362,28 +362,31 @@ openpilot is installed, but custom forks may allow their use. ## Custom -TODO: Talk about situations like Chevy Bolt or Volt or whatever it was +Vehicles in this category are not considered plug-and-play. Software support is included in upstream openpilot, but +these vehicles might not have a harness in the comma store, or the physical install might be at an unusual or cumbersome +location, or they might need unusual configuration after install. ## Dashcam -TODO: May collapse this into community, and just set the community support tag in the car port +Dashcam vehicles have software support in upstream openpilot, but will go into "dashcam mode" at startup and will not +engage. This is usually due to known issues with driving safety or quality. ## Community -Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). +Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community +Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). ## Incompatible ### CAN Bus Security -TODO: Talk about state of Toyota SecOC - -TODO: GM Global B? +Vehicles with CAN security measures, such as AUTOSAR Secure Onboard Communication (SecOC) are not usable with openpilot +unless the owner can recover the message signing key and implement CAN message signing. Examples include certain newer +Toyota, and the GM Global B platform. ### FlexRay -All the cars that openpilot supports use a [CAN bus](https://en.wikipedia.org/wiki/CAN_bus) for communication between all the car's computers, however a CAN bus isn't the only way that the computers in your car can communicate. Most, if not all, vehicles from the following manufacturers use [FlexRay](https://en.wikipedia.org/wiki/FlexRay) instead of a CAN bus: **BMW, Mercedes, Audi, Land Rover, and some Volvo**. These cars may one day be supported, but we have no immediate plans to support FlexRay. - -### No Lateral Control API - -TODO: Talk about hydraulic power steering +All the cars that openpilot supports use a [CAN bus](https://en.wikipedia.org/wiki/CAN_bus) for communication between all the car's computers, however a +CAN bus isn't the only way that the computers in your car can communicate. Most, if not all, vehicles from the following +manufacturers use [FlexRay](https://en.wikipedia.org/wiki/FlexRay) instead of a CAN bus: **BMW, Mercedes, Audi, Land Rover, and some Volvo**. These cars +may one day be supported, but we have no immediate plans to support FlexRay. \ No newline at end of file From 19c1942d39c64a193f7319b920f584879929d94c Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 01:56:25 -0400 Subject: [PATCH 24/26] LOL how did I miss model-years --- docs/CARS.md | 666 ++++++++++++++++---------------- opendbc/car/docs_definitions.py | 2 +- 2 files changed, 334 insertions(+), 334 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 23cbd3c2b9..5b4b7be4b3 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,342 +4,342 @@ |Make|Model|Package|Support Level| |---|---|---|:---:| -|Acura|ILX|AcuraWatch Plus|[Upstream](#upstream)| -|Acura|RDX|AcuraWatch Plus|[Upstream](#upstream)| -|Acura|RDX|All|[Upstream](#upstream)| -|Audi|A3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Audi|A3 Sportback e-tron|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Audi|A4|All|[Not compatible](#flexray)| -|Audi|A5|All|[Not compatible](#flexray)| -|Audi|Q2|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Audi|Q3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Audi|Q5|All|[Not compatible](#flexray)| -|Audi|RS3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Audi|S3|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Chevrolet|Bolt EUV|Premier or Premier Redline Trim without Super Cruise Package|[Upstream](#upstream)| -|Chevrolet|Bolt EV|2LT Trim with Adaptive Cruise Control Package|[Upstream](#upstream)| -|Chevrolet|Equinox|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Chevrolet|Silverado 1500|Safety Package II|[Upstream](#upstream)| -|Chevrolet|Trailblazer|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Chrysler|Pacifica|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Chrysler|Pacifica|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Chrysler|Pacifica|All|[Upstream](#upstream)| -|Chrysler|Pacifica Hybrid|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Chrysler|Pacifica Hybrid|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Acura|ILX 2016-19|AcuraWatch Plus|[Upstream](#upstream)| +|Acura|RDX 2016-18|AcuraWatch Plus|[Upstream](#upstream)| +|Acura|RDX 2019-22|All|[Upstream](#upstream)| +|Audi|A3 2014-19|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|A3 Sportback e-tron 2017-18|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|A4 2016-24|All|[Not compatible](#flexray)| +|Audi|A5 2016-24|All|[Not compatible](#flexray)| +|Audi|Q2 2018|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|Q5 2017-24|All|[Not compatible](#flexray)| +|Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|[Upstream](#upstream)| +|Chevrolet|Bolt EV 2022-23|2LT Trim with Adaptive Cruise Control Package|[Upstream](#upstream)| +|Chevrolet|Equinox 2019-22|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chevrolet|Silverado 1500 2020-21|Safety Package II|[Upstream](#upstream)| +|Chevrolet|Trailblazer 2021-22|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica 2017-18|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica 2019-20|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica 2021-23|All|[Upstream](#upstream)| +|Chrysler|Pacifica Hybrid 2017-18|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Chrysler|Pacifica Hybrid 2019-24|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| |comma|body|All|[Upstream](#upstream)| -|CUPRA|Ateca|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Dodge|Durango|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Ford|Bronco Sport|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|Escape|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|Escape Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|Escape Plug-in Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|Explorer|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|Explorer Hybrid|Co-Pilot360 Assist+|[Upstream](#upstream)| -|Ford|F-150|Co-Pilot360 Active 2.0|[Under review](#under-review)| -|Ford|F-150 Hybrid|Co-Pilot360 Active 2.0|[Under review](#under-review)| -|Ford|F-150 Lightning|Co-Pilot360 Active 2.0|[Under review](#under-review)| -|Ford|Focus|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| -|Ford|Focus Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| -|Ford|Kuga|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| -|Ford|Kuga Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| -|Ford|Kuga Plug-in Hybrid|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| -|Ford|Maverick|LARIAT Luxury|[Upstream](#upstream)| -|Ford|Maverick|Co-Pilot360 Assist|[Upstream](#upstream)| -|Ford|Maverick Hybrid|LARIAT Luxury|[Upstream](#upstream)| -|Ford|Maverick Hybrid|Co-Pilot360 Assist|[Upstream](#upstream)| -|Ford|Mustang Mach-E|Co-Pilot360 Active 2.0|[Under review](#under-review)| -|Ford|Ranger|Adaptive Cruise Control with Lane Centering|[Under review](#under-review)| -|Genesis|G70|All|[Upstream](#upstream)| -|Genesis|G70|All|[Upstream](#upstream)| -|Genesis|G70|All|[Upstream](#upstream)| -|Genesis|G80|All|[Upstream](#upstream)| -|Genesis|G80|All|[Upstream](#upstream)| -|Genesis|G80 (2.5T Advanced Trim, with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| -|Genesis|G90|All|[Upstream](#upstream)| -|Genesis|GV60 (Advanced Trim)|All|[Upstream](#upstream)| -|Genesis|GV60 (Performance Trim)|All|[Upstream](#upstream)| -|Genesis|GV70 (2.5T Trim, without HDA II)|All|[Upstream](#upstream)| -|Genesis|GV70 (3.5T Trim, without HDA II)|All|[Upstream](#upstream)| -|Genesis|GV70 Electrified (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| -|Genesis|GV80|All|[Upstream](#upstream)| -|GMC|Sierra 1500|Driver Alert Package II|[Upstream](#upstream)| -|Honda|Accord|All|[Upstream](#upstream)| -|Honda|Accord Hybrid|All|[Upstream](#upstream)| -|Honda|Civic|Honda Sensing|[Upstream](#upstream)| -|Honda|Civic|All|[Upstream](#upstream)| -|Honda|Civic|All|[Upstream](#upstream)| -|Honda|Civic Hatchback|Honda Sensing|[Upstream](#upstream)| -|Honda|Civic Hatchback|All|[Upstream](#upstream)| -|Honda|CR-V|Touring Trim|[Upstream](#upstream)| -|Honda|CR-V|Honda Sensing|[Upstream](#upstream)| -|Honda|CR-V Hybrid|Honda Sensing|[Upstream](#upstream)| -|Honda|e|All|[Upstream](#upstream)| -|Honda|Fit|Honda Sensing|[Upstream](#upstream)| -|Honda|Freed|Honda Sensing|[Upstream](#upstream)| -|Honda|HR-V|Honda Sensing|[Upstream](#upstream)| -|Honda|HR-V|All|[Upstream](#upstream)| -|Honda|Insight|All|[Upstream](#upstream)| -|Honda|Inspire|All|[Upstream](#upstream)| -|Honda|Odyssey|Honda Sensing|[Upstream](#upstream)| -|Honda|Passport|All|[Upstream](#upstream)| -|Honda|Pilot|Honda Sensing|[Upstream](#upstream)| -|Honda|Ridgeline|Honda Sensing|[Upstream](#upstream)| -|Hyundai|Azera|All|[Upstream](#upstream)| -|Hyundai|Azera Hybrid|All|[Upstream](#upstream)| -|Hyundai|Azera Hybrid|All|[Upstream](#upstream)| -|Hyundai|Custin|All|[Upstream](#upstream)| -|Hyundai|Elantra|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Elantra|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Elantra|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Elantra GT|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Elantra Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Genesis|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|i30|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Ioniq 5 (Non-US only)|All|[Upstream](#upstream)| -|Hyundai|Ioniq 5 (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| -|Hyundai|Ioniq 5 (without HDA II)|Highway Driving Assist|[Upstream](#upstream)| -|Hyundai|Ioniq 6 (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| -|Hyundai|Ioniq Electric|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Ioniq Electric|All|[Upstream](#upstream)| -|Hyundai|Ioniq Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Ioniq Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Ioniq Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Ioniq Plug-in Hybrid|All|[Upstream](#upstream)| -|Hyundai|Kona|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Kona Electric|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Kona Electric|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Kona Electric (with HDA II, Korea only)|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Kona Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Palisade|All|[Upstream](#upstream)| -|Hyundai|Palisade|HDA2|[Community](#community)| -|Hyundai|Santa Cruz|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Santa Fe|All|[Upstream](#upstream)| -|Hyundai|Santa Fe|All|[Upstream](#upstream)| -|Hyundai|Santa Fe Hybrid|All|[Upstream](#upstream)| -|Hyundai|Santa Fe Plug-in Hybrid|All|[Upstream](#upstream)| -|Hyundai|Sonata|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Sonata|All|[Upstream](#upstream)| -|Hyundai|Sonata Hybrid|All|[Upstream](#upstream)| -|Hyundai|Staria|All|[Upstream](#upstream)| -|Hyundai|Tucson|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Tucson|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Tucson|All|[Upstream](#upstream)| -|Hyundai|Tucson Diesel|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Hyundai|Tucson Hybrid|All|[Upstream](#upstream)| -|Hyundai|Tucson Plug-in Hybrid|All|[Upstream](#upstream)| -|Hyundai|Veloster|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Jeep|Grand Cherokee|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Jeep|Grand Cherokee|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Kia|Carnival|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Carnival (China only)|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Ceed|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|EV6 (Southeast Asia only)|All|[Upstream](#upstream)| -|Kia|EV6 (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| -|Kia|EV6 (without HDA II)|Highway Driving Assist|[Upstream](#upstream)| -|Kia|Forte|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Forte|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|K5|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|K5 Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|K8 Hybrid (with HDA II)|Highway Driving Assist II|[Upstream](#upstream)| -|Kia|Niro EV|All|[Upstream](#upstream)| -|Kia|Niro EV|All|[Upstream](#upstream)| -|Kia|Niro EV|All|[Upstream](#upstream)| -|Kia|Niro EV|All|[Upstream](#upstream)| -|Kia|Niro EV|All|[Upstream](#upstream)| -|Kia|Niro Hybrid|All|[Upstream](#upstream)| -|Kia|Niro Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Niro Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Niro Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Niro Plug-in Hybrid|All|[Upstream](#upstream)| -|Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Niro Plug-in Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Optima|Advanced Smart Cruise Control|[Upstream](#upstream)| -|Kia|Optima|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Optima Hybrid|Advanced Smart Cruise Control|[Dashcam mode](#dashcam)| -|Kia|Optima Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Seltos|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Sorento|Advanced Smart Cruise Control & LKAS|[Upstream](#upstream)| -|Kia|Sorento|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Sorento|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Sorento Hybrid|All|[Upstream](#upstream)| -|Kia|Sorento Plug-in Hybrid|All|[Upstream](#upstream)| -|Kia|Sportage|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Sportage Hybrid|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Stinger|Smart Cruise Control (SCC)|[Upstream](#upstream)| -|Kia|Stinger|All|[Upstream](#upstream)| -|Kia|Telluride|All|[Upstream](#upstream)| -|Kia|Telluride|HDA2|[Community](#community)| -|Lexus|CT Hybrid|Lexus Safety System+|[Upstream](#upstream)| -|Lexus|ES|All|[Upstream](#upstream)| -|Lexus|ES|All|[Upstream](#upstream)| -|Lexus|ES Hybrid|All|[Upstream](#upstream)| -|Lexus|ES Hybrid|All|[Upstream](#upstream)| -|Lexus|GS F|All|[Upstream](#upstream)| -|Lexus|IS|All|[Upstream](#upstream)| -|Lexus|IS|All|[Upstream](#upstream)| -|Lexus|LC|All|[Upstream](#upstream)| -|Lexus|NS|Any|[Not compatible](#can-bus-security)| -|Lexus|NX|All|[Upstream](#upstream)| -|Lexus|NX|All|[Upstream](#upstream)| -|Lexus|NX Hybrid|All|[Upstream](#upstream)| -|Lexus|NX Hybrid|All|[Upstream](#upstream)| -|Lexus|RC|All|[Upstream](#upstream)| -|Lexus|RX|Lexus Safety System+|[Upstream](#upstream)| -|Lexus|RX|All|[Upstream](#upstream)| -|Lexus|RX|All|[Upstream](#upstream)| -|Lexus|RX Hybrid|Lexus Safety System+|[Upstream](#upstream)| -|Lexus|RX Hybrid|All|[Upstream](#upstream)| -|Lexus|RX Hybrid|All|[Upstream](#upstream)| -|Lexus|UX Hybrid|All|[Upstream](#upstream)| -|Lincoln|Aviator|Co-Pilot360 Plus|[Upstream](#upstream)| -|Lincoln|Aviator Plug-in Hybrid|Co-Pilot360 Plus|[Upstream](#upstream)| -|MAN|eTGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|MAN|TGE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Mazda|3|All|[Dashcam mode](#dashcam)| -|Mazda|6|All|[Dashcam mode](#dashcam)| -|Mazda|CX-5|All|[Dashcam mode](#dashcam)| -|Mazda|CX-5|All|[Upstream](#upstream)| -|Mazda|CX-9|All|[Dashcam mode](#dashcam)| -|Mazda|CX-9|All|[Upstream](#upstream)| -|Nissan|Altima|ProPILOT Assist|[Upstream](#upstream)| -|Nissan|Leaf|ProPILOT Assist|[Upstream](#upstream)| -|Nissan|Rogue|ProPILOT Assist|[Upstream](#upstream)| -|Nissan|X-Trail|ProPILOT Assist|[Upstream](#upstream)| -|Ram|1500|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| -|Ram|2500|Adaptive Cruise Control (ACC)|[Dashcam mode](#dashcam)| -|Ram|3500|Adaptive Cruise Control (ACC)|[Dashcam mode](#dashcam)| -|SEAT|Alhambra|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| -|SEAT|Ateca|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|SEAT|Leon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Subaru|Ascent|All|[Upstream](#upstream)| -|Subaru|Ascent|All|[Dashcam mode](#dashcam)| -|Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Crosstrek|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Crosstrek Hybrid|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| -|Subaru|Forester|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| -|Subaru|Forester|All|[Upstream](#upstream)| -|Subaru|Forester|All|[Dashcam mode](#dashcam)| -|Subaru|Forester Hybrid|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| -|Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Impreza|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|Legacy|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| -|Subaru|Legacy|All|[Upstream](#upstream)| -|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| -|Subaru|Outback|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| -|Subaru|Outback|All|[Upstream](#upstream)| -|Subaru|Outback|All|[Dashcam mode](#dashcam)| -|Subaru|Solterra|Any|[Not compatible](#can-bus-security)| -|Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| -|Subaru|XV|EyeSight Driver Assistance|[Upstream](#upstream)| -|Škoda|Fabia|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Kamiq|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Karoq|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Kodiaq|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Octavia|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Octavia RS|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Octavia Scout|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Scala|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Škoda|Superb|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|CUPRA|Ateca 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Dodge|Durango 2020-21|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Ford|Bronco Sport 2021-23|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Escape 2020-22|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Escape Hybrid 2020-22|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Escape Plug-in Hybrid 2020-22|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Explorer 2020-23|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|Explorer Hybrid 2020-23|Co-Pilot360 Assist+|[Upstream](#upstream)| +|Ford|F-150 2022-23|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|F-150 Hybrid 2022-23|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|F-150 Lightning 2021-23|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|Focus 2018|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Focus Hybrid 2018|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Kuga 2020-22|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Kuga Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Kuga Plug-in Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|[Upstream](#upstream)| +|Ford|Maverick 2022|LARIAT Luxury|[Upstream](#upstream)| +|Ford|Maverick 2023-24|Co-Pilot360 Assist|[Upstream](#upstream)| +|Ford|Maverick Hybrid 2022|LARIAT Luxury|[Upstream](#upstream)| +|Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|[Upstream](#upstream)| +|Ford|Mustang Mach-E 2021-23|Co-Pilot360 Active 2.0|[Under review](#under-review)| +|Ford|Ranger 2024|Adaptive Cruise Control with Lane Centering|[Under review](#under-review)| +|Genesis|G70 2018|All|[Upstream](#upstream)| +|Genesis|G70 2019-21|All|[Upstream](#upstream)| +|Genesis|G70 2022-23|All|[Upstream](#upstream)| +|Genesis|G80 2017|All|[Upstream](#upstream)| +|Genesis|G80 2018-19|All|[Upstream](#upstream)| +|Genesis|G80 (2.5T Advanced Trim, with HDA II) 2024|Highway Driving Assist II|[Upstream](#upstream)| +|Genesis|G90 2017-20|All|[Upstream](#upstream)| +|Genesis|GV60 (Advanced Trim) 2023|All|[Upstream](#upstream)| +|Genesis|GV60 (Performance Trim) 2022-23|All|[Upstream](#upstream)| +|Genesis|GV70 (2.5T Trim, without HDA II) 2022-23|All|[Upstream](#upstream)| +|Genesis|GV70 (3.5T Trim, without HDA II) 2022-23|All|[Upstream](#upstream)| +|Genesis|GV70 Electrified (with HDA II) 2023|Highway Driving Assist II|[Upstream](#upstream)| +|Genesis|GV80 2023|All|[Upstream](#upstream)| +|GMC|Sierra 1500 2020-21|Driver Alert Package II|[Upstream](#upstream)| +|Honda|Accord 2018-22|All|[Upstream](#upstream)| +|Honda|Accord Hybrid 2018-22|All|[Upstream](#upstream)| +|Honda|Civic 2016-18|Honda Sensing|[Upstream](#upstream)| +|Honda|Civic 2019-21|All|[Upstream](#upstream)| +|Honda|Civic 2022-24|All|[Upstream](#upstream)| +|Honda|Civic Hatchback 2017-21|Honda Sensing|[Upstream](#upstream)| +|Honda|Civic Hatchback 2022-24|All|[Upstream](#upstream)| +|Honda|CR-V 2015-16|Touring Trim|[Upstream](#upstream)| +|Honda|CR-V 2017-22|Honda Sensing|[Upstream](#upstream)| +|Honda|CR-V Hybrid 2017-21|Honda Sensing|[Upstream](#upstream)| +|Honda|e 2020|All|[Upstream](#upstream)| +|Honda|Fit 2018-20|Honda Sensing|[Upstream](#upstream)| +|Honda|Freed 2020|Honda Sensing|[Upstream](#upstream)| +|Honda|HR-V 2019-22|Honda Sensing|[Upstream](#upstream)| +|Honda|HR-V 2023|All|[Upstream](#upstream)| +|Honda|Insight 2019-22|All|[Upstream](#upstream)| +|Honda|Inspire 2018|All|[Upstream](#upstream)| +|Honda|Odyssey 2018-20|Honda Sensing|[Upstream](#upstream)| +|Honda|Passport 2019-23|All|[Upstream](#upstream)| +|Honda|Pilot 2016-22|Honda Sensing|[Upstream](#upstream)| +|Honda|Ridgeline 2017-24|Honda Sensing|[Upstream](#upstream)| +|Hyundai|Azera 2022|All|[Upstream](#upstream)| +|Hyundai|Azera Hybrid 2019|All|[Upstream](#upstream)| +|Hyundai|Azera Hybrid 2020|All|[Upstream](#upstream)| +|Hyundai|Custin 2023|All|[Upstream](#upstream)| +|Hyundai|Elantra 2017-18|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra 2021-23|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra GT 2017-19|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Elantra Hybrid 2021-23|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Genesis 2015-16|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|i30 2017-19|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq 5 (Non-US only) 2022-24|All|[Upstream](#upstream)| +|Hyundai|Ioniq 5 (with HDA II) 2022-24|Highway Driving Assist II|[Upstream](#upstream)| +|Hyundai|Ioniq 5 (without HDA II) 2022-24|Highway Driving Assist|[Upstream](#upstream)| +|Hyundai|Ioniq 6 (with HDA II) 2023-24|Highway Driving Assist II|[Upstream](#upstream)| +|Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Electric 2020|All|[Upstream](#upstream)| +|Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Hybrid 2020-22|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Plug-in Hybrid 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Ioniq Plug-in Hybrid 2020-22|All|[Upstream](#upstream)| +|Hyundai|Kona 2020|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Electric 2022-23|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Electric (with HDA II, Korea only) 2023|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Palisade 2020-22|All|[Upstream](#upstream)| +|Hyundai|Palisade 2023-24|HDA2|[Community](#community)| +|Hyundai|Santa Cruz 2022-24|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Santa Fe 2019-20|All|[Upstream](#upstream)| +|Hyundai|Santa Fe 2021-23|All|[Upstream](#upstream)| +|Hyundai|Santa Fe Hybrid 2022-23|All|[Upstream](#upstream)| +|Hyundai|Santa Fe Plug-in Hybrid 2022-23|All|[Upstream](#upstream)| +|Hyundai|Sonata 2018-19|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Sonata 2020-23|All|[Upstream](#upstream)| +|Hyundai|Sonata Hybrid 2020-23|All|[Upstream](#upstream)| +|Hyundai|Staria 2023|All|[Upstream](#upstream)| +|Hyundai|Tucson 2021|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Tucson 2022|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Tucson 2023-24|All|[Upstream](#upstream)| +|Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Hyundai|Tucson Hybrid 2022-24|All|[Upstream](#upstream)| +|Hyundai|Tucson Plug-in Hybrid 2024|All|[Upstream](#upstream)| +|Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Kia|Carnival 2022-24|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Carnival (China only) 2023|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Ceed 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|EV6 (Southeast Asia only) 2022-24|All|[Upstream](#upstream)| +|Kia|EV6 (with HDA II) 2022-24|Highway Driving Assist II|[Upstream](#upstream)| +|Kia|EV6 (without HDA II) 2022-24|Highway Driving Assist|[Upstream](#upstream)| +|Kia|Forte 2019-21|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Forte 2022-23|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|K5 2021-24|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|K5 Hybrid 2020-22|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|K8 Hybrid (with HDA II) 2023|Highway Driving Assist II|[Upstream](#upstream)| +|Kia|Niro EV 2019|All|[Upstream](#upstream)| +|Kia|Niro EV 2020|All|[Upstream](#upstream)| +|Kia|Niro EV 2021|All|[Upstream](#upstream)| +|Kia|Niro EV 2022|All|[Upstream](#upstream)| +|Kia|Niro EV 2023|All|[Upstream](#upstream)| +|Kia|Niro Hybrid 2018|All|[Upstream](#upstream)| +|Kia|Niro Hybrid 2021|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Hybrid 2023|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid 2018-19|All|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid 2020|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid 2021|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Niro Plug-in Hybrid 2022|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Optima 2017|Advanced Smart Cruise Control|[Upstream](#upstream)| +|Kia|Optima 2019-20|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Optima Hybrid 2017|Advanced Smart Cruise Control|[Dashcam mode](#dashcam)| +|Kia|Optima Hybrid 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Seltos 2021|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sorento 2018|Advanced Smart Cruise Control & LKAS|[Upstream](#upstream)| +|Kia|Sorento 2019|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sorento 2021-23|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sorento Hybrid 2021-23|All|[Upstream](#upstream)| +|Kia|Sorento Plug-in Hybrid 2022-23|All|[Upstream](#upstream)| +|Kia|Sportage 2023-24|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Sportage Hybrid 2023|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Stinger 2018-20|Smart Cruise Control (SCC)|[Upstream](#upstream)| +|Kia|Stinger 2022-23|All|[Upstream](#upstream)| +|Kia|Telluride 2020-22|All|[Upstream](#upstream)| +|Kia|Telluride 2023-24|HDA2|[Community](#community)| +|Lexus|CT Hybrid 2017-18|Lexus Safety System+|[Upstream](#upstream)| +|Lexus|ES 2017-18|All|[Upstream](#upstream)| +|Lexus|ES 2019-24|All|[Upstream](#upstream)| +|Lexus|ES Hybrid 2017-18|All|[Upstream](#upstream)| +|Lexus|ES Hybrid 2019-24|All|[Upstream](#upstream)| +|Lexus|GS F 2016|All|[Upstream](#upstream)| +|Lexus|IS 2017-19|All|[Upstream](#upstream)| +|Lexus|IS 2022-23|All|[Upstream](#upstream)| +|Lexus|LC 2024|All|[Upstream](#upstream)| +|Lexus|NS 2022-25|Any|[Not compatible](#can-bus-security)| +|Lexus|NX 2018-19|All|[Upstream](#upstream)| +|Lexus|NX 2020-21|All|[Upstream](#upstream)| +|Lexus|NX Hybrid 2018-19|All|[Upstream](#upstream)| +|Lexus|NX Hybrid 2020-21|All|[Upstream](#upstream)| +|Lexus|RC 2018-20|All|[Upstream](#upstream)| +|Lexus|RX 2016|Lexus Safety System+|[Upstream](#upstream)| +|Lexus|RX 2017-19|All|[Upstream](#upstream)| +|Lexus|RX 2020-22|All|[Upstream](#upstream)| +|Lexus|RX Hybrid 2016|Lexus Safety System+|[Upstream](#upstream)| +|Lexus|RX Hybrid 2017-19|All|[Upstream](#upstream)| +|Lexus|RX Hybrid 2020-22|All|[Upstream](#upstream)| +|Lexus|UX Hybrid 2019-23|All|[Upstream](#upstream)| +|Lincoln|Aviator 2020-23|Co-Pilot360 Plus|[Upstream](#upstream)| +|Lincoln|Aviator Plug-in Hybrid 2020-23|Co-Pilot360 Plus|[Upstream](#upstream)| +|MAN|eTGE 2020-24|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|MAN|TGE 2017-24|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Mazda|3 2017-18|All|[Dashcam mode](#dashcam)| +|Mazda|6 2017-20|All|[Dashcam mode](#dashcam)| +|Mazda|CX-5 2017-21|All|[Dashcam mode](#dashcam)| +|Mazda|CX-5 2022-24|All|[Upstream](#upstream)| +|Mazda|CX-9 2016-20|All|[Dashcam mode](#dashcam)| +|Mazda|CX-9 2021-23|All|[Upstream](#upstream)| +|Nissan|Altima 2019-20|ProPILOT Assist|[Upstream](#upstream)| +|Nissan|Leaf 2018-23|ProPILOT Assist|[Upstream](#upstream)| +|Nissan|Rogue 2018-20|ProPILOT Assist|[Upstream](#upstream)| +|Nissan|X-Trail 2017|ProPILOT Assist|[Upstream](#upstream)| +|Ram|1500 2019-24|Adaptive Cruise Control (ACC)|[Upstream](#upstream)| +|Ram|2500 2020-24|Adaptive Cruise Control (ACC)|[Dashcam mode](#dashcam)| +|Ram|3500 2019-22|Adaptive Cruise Control (ACC)|[Dashcam mode](#dashcam)| +|SEAT|Alhambra 2018-20|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|SEAT|Ateca 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Subaru|Ascent 2019-21|All|[Upstream](#upstream)| +|Subaru|Ascent 2023|All|[Dashcam mode](#dashcam)| +|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Crosstrek 2020-23|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Crosstrek Hybrid 2020|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Forester 2017-18|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Forester 2019-21|All|[Upstream](#upstream)| +|Subaru|Forester 2022-24|All|[Dashcam mode](#dashcam)| +|Subaru|Forester Hybrid 2020|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Impreza 2017-19|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Impreza 2020-22|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|Legacy 2015-18|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Legacy 2020-22|All|[Upstream](#upstream)| +|Subaru|Outback 2015-17|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Outback 2018-19|EyeSight Driver Assistance|[Dashcam mode](#dashcam)| +|Subaru|Outback 2020-22|All|[Upstream](#upstream)| +|Subaru|Outback 2023|All|[Dashcam mode](#dashcam)| +|Subaru|Solterra 2023-25|Any|[Not compatible](#can-bus-security)| +|Subaru|XV 2018-19|EyeSight Driver Assistance|[Upstream](#upstream)| +|Subaru|XV 2020-21|EyeSight Driver Assistance|[Upstream](#upstream)| +|Škoda|Fabia 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Kamiq 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Karoq 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Kodiaq 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Octavia 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Octavia RS 2016|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Octavia Scout 2017-19|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Scala 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Škoda|Superb 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| |Tesla|Model 3|All|[Dashcam mode](#dashcam)| |Tesla|Model Y|All|[Dashcam mode](#dashcam)| -|Toyota|Alphard|All|[Upstream](#upstream)| -|Toyota|Alphard Hybrid|All|[Upstream](#upstream)| -|Toyota|Avalon|Toyota Safety Sense P|[Upstream](#upstream)| -|Toyota|Avalon|All|[Upstream](#upstream)| -|Toyota|Avalon|All|[Upstream](#upstream)| -|Toyota|Avalon|All|[Upstream](#upstream)| -|Toyota|Avalon Hybrid|All|[Upstream](#upstream)| -|Toyota|Avalon Hybrid|All|[Upstream](#upstream)| -|Toyota|bZ4x|Any|[Not compatible](#can-bus-security)| -|Toyota|C-HR|All|[Upstream](#upstream)| -|Toyota|C-HR|All|[Upstream](#upstream)| -|Toyota|C-HR Hybrid|All|[Upstream](#upstream)| -|Toyota|C-HR Hybrid|All|[Upstream](#upstream)| -|Toyota|Camry|All|[Upstream](#upstream)| -|Toyota|Camry|All|[Upstream](#upstream)| -|Toyota|Camry|Any|[Not compatible](#can-bus-security)| -|Toyota|Camry Hybrid|All|[Upstream](#upstream)| -|Toyota|Camry Hybrid|All|[Upstream](#upstream)| -|Toyota|Corolla|All|[Upstream](#upstream)| -|Toyota|Corolla|All|[Upstream](#upstream)| -|Toyota|Corolla Cross|Any|[Not compatible](#can-bus-security)| -|Toyota|Corolla Cross (Non-US only)|All|[Upstream](#upstream)| -|Toyota|Corolla Cross Hybrid (Non-US only)|All|[Upstream](#upstream)| -|Toyota|Corolla Hatchback|All|[Upstream](#upstream)| -|Toyota|Corolla Hybrid|All|[Upstream](#upstream)| -|Toyota|Corolla Hybrid (South America only)|All|[Upstream](#upstream)| -|Toyota|Highlander|All|[Upstream](#upstream)| -|Toyota|Highlander|All|[Upstream](#upstream)| -|Toyota|Highlander|Any|[Not compatible](#can-bus-security)| -|Toyota|Highlander Hybrid|All|[Upstream](#upstream)| -|Toyota|Highlander Hybrid|All|[Upstream](#upstream)| -|Toyota|Mirai|All|[Upstream](#upstream)| -|Toyota|Prius|Toyota Safety Sense P|[Upstream](#upstream)| -|Toyota|Prius|All|[Upstream](#upstream)| -|Toyota|Prius|All|[Upstream](#upstream)| -|Toyota|Prius Prime|All|[Upstream](#upstream)| -|Toyota|Prius Prime|All|[Upstream](#upstream)| -|Toyota|Prius v|Toyota Safety Sense P|[Upstream](#upstream)| -|Toyota|RAV4|Toyota Safety Sense P|[Upstream](#upstream)| -|Toyota|RAV4|All|[Upstream](#upstream)| -|Toyota|RAV4|All|[Upstream](#upstream)| -|Toyota|RAV4|All|[Upstream](#upstream)| -|Toyota|RAV4|All|[Upstream](#upstream)| -|Toyota|RAV4 Hybrid|Toyota Safety Sense P|[Upstream](#upstream)| -|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| -|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| -|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| -|Toyota|RAV4 Hybrid|All|[Upstream](#upstream)| -|Toyota|RAV4 Prime|Any|[Community](#community)| -|Toyota|RAV4 Prime|Any|[Not compatible](#can-bus-security)| -|Toyota|Sequoia|Any|[Not compatible](#can-bus-security)| -|Toyota|Sienna|All|[Upstream](#upstream)| -|Toyota|Sienna|Any|[Community](#community)| -|Toyota|Sienna|Any|[Not compatible](#can-bus-security)| -|Toyota|Tundra|Any|[Not compatible](#can-bus-security)| -|Toyota|Venza|Any|[Not compatible](#can-bus-security)| -|Volkswagen|Arteon|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Arteon eHybrid|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Arteon R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Arteon Shooting Brake|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Atlas|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Atlas Cross Sport|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Caddy|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| -|Volkswagen|Caddy Maxi|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| -|Volkswagen|California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Caravelle|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|CC|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Crafter|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|e-Crafter|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|e-Golf|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf Alltrack|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf GTD|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf GTE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf GTI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf R|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Golf SportsVan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Grand California|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| -|Volkswagen|Jetta|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Jetta GLI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Passat|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Passat Alltrack|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Passat GTE|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Passat NMS|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| -|Volkswagen|Polo|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Polo GTI|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Sharan|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| -|Volkswagen|T-Cross|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|T-Roc|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Taos|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Teramont|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Teramont Cross Sport|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Teramont X|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Tiguan|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Tiguan eHybrid|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| -|Volkswagen|Touran|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Toyota|Alphard 2019-20|All|[Upstream](#upstream)| +|Toyota|Alphard Hybrid 2021|All|[Upstream](#upstream)| +|Toyota|Avalon 2016|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|Avalon 2017-18|All|[Upstream](#upstream)| +|Toyota|Avalon 2019-21|All|[Upstream](#upstream)| +|Toyota|Avalon 2022|All|[Upstream](#upstream)| +|Toyota|Avalon Hybrid 2019-21|All|[Upstream](#upstream)| +|Toyota|Avalon Hybrid 2022|All|[Upstream](#upstream)| +|Toyota|bZ4x 2023-25|Any|[Not compatible](#can-bus-security)| +|Toyota|C-HR 2017-20|All|[Upstream](#upstream)| +|Toyota|C-HR 2021|All|[Upstream](#upstream)| +|Toyota|C-HR Hybrid 2017-20|All|[Upstream](#upstream)| +|Toyota|C-HR Hybrid 2021-22|All|[Upstream](#upstream)| +|Toyota|Camry 2018-20|All|[Upstream](#upstream)| +|Toyota|Camry 2021-24|All|[Upstream](#upstream)| +|Toyota|Camry 2025|Any|[Not compatible](#can-bus-security)| +|Toyota|Camry Hybrid 2018-20|All|[Upstream](#upstream)| +|Toyota|Camry Hybrid 2021-24|All|[Upstream](#upstream)| +|Toyota|Corolla 2017-19|All|[Upstream](#upstream)| +|Toyota|Corolla 2020-22|All|[Upstream](#upstream)| +|Toyota|Corolla Cross 2022-25|Any|[Not compatible](#can-bus-security)| +|Toyota|Corolla Cross (Non-US only) 2020-23|All|[Upstream](#upstream)| +|Toyota|Corolla Cross Hybrid (Non-US only) 2020-22|All|[Upstream](#upstream)| +|Toyota|Corolla Hatchback 2019-22|All|[Upstream](#upstream)| +|Toyota|Corolla Hybrid 2020-22|All|[Upstream](#upstream)| +|Toyota|Corolla Hybrid (South America only) 2020-23|All|[Upstream](#upstream)| +|Toyota|Highlander 2017-19|All|[Upstream](#upstream)| +|Toyota|Highlander 2020-23|All|[Upstream](#upstream)| +|Toyota|Highlander 2025|Any|[Not compatible](#can-bus-security)| +|Toyota|Highlander Hybrid 2017-19|All|[Upstream](#upstream)| +|Toyota|Highlander Hybrid 2020-23|All|[Upstream](#upstream)| +|Toyota|Mirai 2021|All|[Upstream](#upstream)| +|Toyota|Prius 2016|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|Prius 2017-20|All|[Upstream](#upstream)| +|Toyota|Prius 2021-22|All|[Upstream](#upstream)| +|Toyota|Prius Prime 2017-20|All|[Upstream](#upstream)| +|Toyota|Prius Prime 2021-22|All|[Upstream](#upstream)| +|Toyota|Prius v 2017|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|RAV4 2016|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|RAV4 2017-18|All|[Upstream](#upstream)| +|Toyota|RAV4 2019-21|All|[Upstream](#upstream)| +|Toyota|RAV4 2022|All|[Upstream](#upstream)| +|Toyota|RAV4 2023-24|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid 2017-18|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid 2019-21|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid 2022|All|[Upstream](#upstream)| +|Toyota|RAV4 Hybrid 2023-24|All|[Upstream](#upstream)| +|Toyota|RAV4 Prime 2021-23|Any|[Community](#community)| +|Toyota|RAV4 Prime 2024-25|Any|[Not compatible](#can-bus-security)| +|Toyota|Sequoia 2023-25|Any|[Not compatible](#can-bus-security)| +|Toyota|Sienna 2018-20|All|[Upstream](#upstream)| +|Toyota|Sienna 2021-23|Any|[Community](#community)| +|Toyota|Sienna 2024-25|Any|[Not compatible](#can-bus-security)| +|Toyota|Tundra 2022-25|Any|[Not compatible](#can-bus-security)| +|Toyota|Venza 2021-25|Any|[Not compatible](#can-bus-security)| +|Volkswagen|Arteon 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Arteon eHybrid 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Arteon R 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Arteon Shooting Brake 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Atlas 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Atlas Cross Sport 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Caddy 2019|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|Volkswagen|Caddy Maxi 2019|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|Volkswagen|California 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Caravelle 2020|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|CC 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Crafter 2017-24|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|e-Crafter 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|e-Golf 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf Alltrack 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf GTD 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf GTE 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf GTI 2015-21|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Grand California 2019-24|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Jetta 2015-18|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|Volkswagen|Jetta 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Jetta GLI 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Passat NMS 2017-22|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|Volkswagen|Polo 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Polo GTI 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Sharan 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|[Dashcam mode](#dashcam)| +|Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|T-Roc 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Taos 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Teramont X 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Tiguan 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Tiguan eHybrid 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| +|Volkswagen|Touran 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|[Upstream](#upstream)| # Types of Support diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 3724a1344f..13ef1d8c92 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -410,7 +410,7 @@ def get_column(self, column: Column, star_icon: str, video_icon: str, footnote_t def get_extra_cars_column(self, column: Column) -> str: item: str = self.extra_cars_row[column] - if column == Column.MODEL and len(self.years): + if column == ExtraCarsColumn.MODEL and len(self.years): item += f" {self.years}" return item From 05103e30d76c3543e9b92fb94d9b730cb61cee89 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 02:03:02 -0400 Subject: [PATCH 25/26] more template wordsmithing --- docs/CARS.md | 3 ++- opendbc/car/CARS_template.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 5b4b7be4b3..4ba4d6ad3c 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -369,7 +369,8 @@ location, or they might need unusual configuration after install. ## Dashcam Dashcam vehicles have software support in upstream openpilot, but will go into "dashcam mode" at startup and will not -engage. This is usually due to known issues with driving safety or quality. +engage. This may be due to known issues with driving safety or quality, or it may be a work in progress that isn't yet +ready for safety and quality review. ## Community diff --git a/opendbc/car/CARS_template.md b/opendbc/car/CARS_template.md index 6b9a39a538..2bc868cb04 100644 --- a/opendbc/car/CARS_template.md +++ b/opendbc/car/CARS_template.md @@ -37,7 +37,8 @@ location, or they might need unusual configuration after install. ## Dashcam Dashcam vehicles have software support in upstream openpilot, but will go into "dashcam mode" at startup and will not -engage. This is usually due to known issues with driving safety or quality. +engage. This may be due to known issues with driving safety or quality, or it may be a work in progress that isn't yet +ready for safety and quality review. ## Community From 4fe781ffb14b8566db95c30108a9df636f6b0f87 Mon Sep 17 00:00:00 2001 From: Jason Young Date: Fri, 4 Oct 2024 02:05:35 -0400 Subject: [PATCH 26/26] propitiate type checker --- opendbc/car/docs_definitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py index 13ef1d8c92..3775e317d6 100644 --- a/opendbc/car/docs_definitions.py +++ b/opendbc/car/docs_definitions.py @@ -408,7 +408,7 @@ def get_column(self, column: Column, star_icon: str, video_icon: str, footnote_t return item - def get_extra_cars_column(self, column: Column) -> str: + def get_extra_cars_column(self, column: ExtraCarsColumn) -> str: item: str = self.extra_cars_row[column] if column == ExtraCarsColumn.MODEL and len(self.years): item += f" {self.years}"