diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index cda15dbbdb..3716caf5bf 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -1,3 +1,4 @@ +from dataclasses import dataclass from typing import Dict, List, Union from selfdrive.car import dbc_dict @@ -22,13 +23,18 @@ class CAR: JEEP_CHEROKEE_2019 = "JEEP GRAND CHEROKEE 2019" # includes 2020 Trailhawk -CAR_INFO: Dict[str, Union[CarInfo, List[CarInfo]]] = { - CAR.PACIFICA_2017_HYBRID: CarInfo("Chrysler Pacifica Hybrid 2017-18", "Adaptive Cruise"), - CAR.PACIFICA_2019_HYBRID: CarInfo("Chrysler Pacifica Hybrid 2019-21", "Adaptive Cruise"), - CAR.PACIFICA_2018: CarInfo("Chrysler Pacifica 2017-18", "Adaptive Cruise"), - CAR.PACIFICA_2020: CarInfo("Chrysler Pacifica 2020", "Adaptive Cruise"), - CAR.JEEP_CHEROKEE: CarInfo("Jeep Grand Cherokee 2016-18", "Adaptive Cruise", "https://www.youtube.com/watch?v=eLR9o2JkuRk"), - CAR.JEEP_CHEROKEE_2019: CarInfo("Jeep Grand Cherokee 2019-20", "Adaptive Cruise", "https://www.youtube.com/watch?v=jBe4lWnRSu4"), +@dataclass +class ChryslerCarInfo(CarInfo): + package: str = "Adaptive Cruise" + + +CAR_INFO: Dict[str, Union[ChryslerCarInfo, List[ChryslerCarInfo]]] = { + CAR.PACIFICA_2017_HYBRID: ChryslerCarInfo("Chrysler Pacifica Hybrid 2017-18"), + CAR.PACIFICA_2019_HYBRID: ChryslerCarInfo("Chrysler Pacifica Hybrid 2019-21"), + CAR.PACIFICA_2018: ChryslerCarInfo("Chrysler Pacifica 2017-18"), + CAR.PACIFICA_2020: ChryslerCarInfo("Chrysler Pacifica 2020"), + CAR.JEEP_CHEROKEE: ChryslerCarInfo("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk"), + CAR.JEEP_CHEROKEE_2019: ChryslerCarInfo("Jeep Grand Cherokee 2019-20", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4"), } # Unique CAN messages: diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index ab1f44ac87..fa369d1c9a 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -1,14 +1,16 @@ +from dataclasses import dataclass from enum import Enum, IntFlag from typing import Dict, List, Union from cereal import car +from common.conversions import Conversions as CV from selfdrive.car import dbc_dict from selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column -from common.conversions import Conversions as CV Ecu = car.CarParams.Ecu VisualAlert = car.CarControl.HUDControl.VisualAlert + class CarControllerParams: # Allow small margin below -3.5 m/s^2 from ISO 15622:2018 since we # perform the closed loop control, and might need some @@ -53,6 +55,7 @@ class CruiseButtons: CANCEL = 2 MAIN = 1 + # See dbc files for info on values VISUAL_HUD = { VisualAlert.none: 0, @@ -97,33 +100,39 @@ class Footnote(Enum): Column.FSR_STEERING) -CAR_INFO: Dict[str, Union[CarInfo, List[CarInfo]]] = { +@dataclass +class HondaCarInfo(CarInfo): + package: str = "Honda Sensing" + min_steer_speed: float = 12. * CV.MPH_TO_MS + + +CAR_INFO: Dict[str, Union[HondaCarInfo, List[HondaCarInfo]]] = { CAR.ACCORD: [ - CarInfo("Honda Accord 2018-21", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), - CarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarInfo("Honda Accord 2018-21", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), ], - CAR.ACCORDH: CarInfo("Honda Accord Hybrid 2018-21", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.CIVIC: CarInfo("Honda Civic 2016-18", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), + CAR.ACCORDH: HondaCarInfo("Honda Accord Hybrid 2018-21", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CAR.CIVIC: HondaCarInfo("Honda Civic 2016-18"), CAR.CIVIC_BOSCH: [ - CarInfo("Honda Civic 2019-20", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), - CarInfo("Honda Civic Hatchback 2017-21", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), + HondaCarInfo("Honda Civic 2019-20", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), + HondaCarInfo("Honda Civic Hatchback 2017-21"), ], - CAR.ACURA_ILX: CarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), - CAR.CRV: CarInfo("Honda CR-V 2015-16", "Touring", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.CRV_5G: CarInfo("Honda CR-V 2017-21", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - # CAR.CRV_EU: CarInfo("Honda CR-V EU", "Touring"), # Euro version of CRV Touring - CAR.CRV_HYBRID: CarInfo("Honda CR-V Hybrid 2017-19", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.FIT: CarInfo("Honda Fit 2018-19", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.FREED: CarInfo("Honda Freed 2020", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.HRV: CarInfo("Honda HR-V 2019-20", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.ODYSSEY: CarInfo("Honda Odyssey 2018-20", "Honda Sensing"), - CAR.ACURA_RDX: CarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.ACURA_RDX_3G: CarInfo("Acura RDX 2019-21", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.PILOT: CarInfo("Honda Pilot 2016-21", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.PASSPORT: CarInfo("Honda Passport 2019-21", "All", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.RIDGELINE: CarInfo("Honda Ridgeline 2017-21", "Honda Sensing", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.INSIGHT: CarInfo("Honda Insight 2019-21", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.HONDA_E: CarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CAR.ACURA_ILX: HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), + CAR.CRV: HondaCarInfo("Honda CR-V 2015-16", "Touring"), + CAR.CRV_5G: HondaCarInfo("Honda CR-V 2017-21"), + # CAR.CRV_EU: HondaCarInfo("Honda CR-V EU", "Touring"), # Euro version of CRV Touring + CAR.CRV_HYBRID: HondaCarInfo("Honda CR-V Hybrid 2017-19"), + CAR.FIT: HondaCarInfo("Honda Fit 2018-19"), + CAR.FREED: HondaCarInfo("Honda Freed 2020"), + CAR.HRV: HondaCarInfo("Honda HR-V 2019-20"), + CAR.ODYSSEY: HondaCarInfo("Honda Odyssey 2018-20", min_steer_speed=0.), + CAR.ACURA_RDX: HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus"), + CAR.ACURA_RDX_3G: HondaCarInfo("Acura RDX 2019-21", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CAR.PILOT: HondaCarInfo("Honda Pilot 2016-21"), + CAR.PASSPORT: HondaCarInfo("Honda Passport 2019-21", "All"), + CAR.RIDGELINE: HondaCarInfo("Honda Ridgeline 2017-21"), + CAR.INSIGHT: HondaCarInfo("Honda Insight 2019-21", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CAR.HONDA_E: HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), } diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 6b6aa05c29..a196b82a9e 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -1,3 +1,4 @@ +from dataclasses import dataclass from typing import Dict, List, Union from selfdrive.car import dbc_dict @@ -27,13 +28,18 @@ class CAR: CX5_2022 = "MAZDA CX-5 2022" -CAR_INFO: Dict[str, Union[CarInfo, List[CarInfo]]] = { - CAR.CX5: CarInfo("Mazda CX-5 2017, 2019", "All"), # TODO: verify years and torque for first 4 - CAR.CX9: CarInfo("Mazda CX-9 2016-17", "All"), - CAR.MAZDA3: CarInfo("Mazda 3 2017", "All"), - CAR.MAZDA6: CarInfo("Mazda 6 2017", "All"), - CAR.CX9_2021: CarInfo("Mazda CX-9 2021", "All", good_torque=True), - CAR.CX5_2022: CarInfo("Mazda CX-5 2022", "All", good_torque=True), +@dataclass +class MazdaCarInfo(CarInfo): + package: str = "All" + + +CAR_INFO: Dict[str, Union[MazdaCarInfo, List[MazdaCarInfo]]] = { + CAR.CX5: MazdaCarInfo("Mazda CX-5 2017, 2019"), # TODO: verify years and torque for first 4 + CAR.CX9: MazdaCarInfo("Mazda CX-9 2016-17"), + CAR.MAZDA3: MazdaCarInfo("Mazda 3 2017"), + CAR.MAZDA6: MazdaCarInfo("Mazda 6 2017"), + CAR.CX9_2021: MazdaCarInfo("Mazda CX-9 2021", good_torque=True), + CAR.CX5_2022: MazdaCarInfo("Mazda CX-5 2022", good_torque=True), } diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index a201c9113c..51ee7b5286 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -1,3 +1,4 @@ +from dataclasses import dataclass from typing import Dict, List, Union from selfdrive.car import dbc_dict @@ -24,11 +25,16 @@ class CAR: ALTIMA = "NISSAN ALTIMA 2020" -CAR_INFO: Dict[str, Union[CarInfo, List[CarInfo]]] = { - CAR.XTRAIL: CarInfo("Nissan X-Trail 2017", "ProPILOT"), - CAR.LEAF: CarInfo("Nissan Leaf 2018-22", "ProPILOT"), - CAR.ROGUE: CarInfo("Nissan Rogue 2018-20", "ProPILOT"), - CAR.ALTIMA: CarInfo("Nissan Altima 2019-20", "ProPILOT"), +@dataclass +class NissanCarInfo(CarInfo): + package: str = "ProPILOT" + + +CAR_INFO: Dict[str, Union[NissanCarInfo, List[NissanCarInfo]]] = { + CAR.XTRAIL: NissanCarInfo("Nissan X-Trail 2017"), + CAR.LEAF: NissanCarInfo("Nissan Leaf 2018-22"), + CAR.ROGUE: NissanCarInfo("Nissan Rogue 2018-20"), + CAR.ALTIMA: NissanCarInfo("Nissan Altima 2019-20"), } FINGERPRINTS = {