|
|
@ -1,8 +1,9 @@ |
|
|
|
from dataclasses import dataclass, field |
|
|
|
from dataclasses import dataclass, field |
|
|
|
from enum import StrEnum |
|
|
|
from enum import IntFlag |
|
|
|
|
|
|
|
|
|
|
|
from cereal import car |
|
|
|
from cereal import car |
|
|
|
from openpilot.selfdrive.car import dbc_dict |
|
|
|
from openpilot.common.conversions import Conversions as CV |
|
|
|
|
|
|
|
from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict |
|
|
|
from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts |
|
|
|
from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts |
|
|
|
from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries |
|
|
|
from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries |
|
|
|
|
|
|
|
|
|
|
@ -25,29 +26,54 @@ class CarControllerParams: |
|
|
|
pass |
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CAR(StrEnum): |
|
|
|
|
|
|
|
CX5 = "MAZDA CX-5" |
|
|
|
|
|
|
|
CX9 = "MAZDA CX-9" |
|
|
|
|
|
|
|
MAZDA3 = "MAZDA 3" |
|
|
|
|
|
|
|
MAZDA6 = "MAZDA 6" |
|
|
|
|
|
|
|
CX9_2021 = "MAZDA CX-9 2021" |
|
|
|
|
|
|
|
CX5_2022 = "MAZDA CX-5 2022" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass |
|
|
|
@dataclass |
|
|
|
class MazdaCarInfo(CarInfo): |
|
|
|
class MazdaCarInfo(CarInfo): |
|
|
|
package: str = "All" |
|
|
|
package: str = "All" |
|
|
|
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda])) |
|
|
|
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda])) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CAR_INFO: dict[str, MazdaCarInfo | list[MazdaCarInfo]] = { |
|
|
|
class MazdaFlags(IntFlag): |
|
|
|
CAR.CX5: MazdaCarInfo("Mazda CX-5 2017-21"), |
|
|
|
# Gen 1 hardware: same CAN messages and same camera |
|
|
|
CAR.CX9: MazdaCarInfo("Mazda CX-9 2016-20"), |
|
|
|
GEN1 = 1 |
|
|
|
CAR.MAZDA3: MazdaCarInfo("Mazda 3 2017-18"), |
|
|
|
|
|
|
|
CAR.MAZDA6: MazdaCarInfo("Mazda 6 2017-20"), |
|
|
|
|
|
|
|
CAR.CX9_2021: MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), |
|
|
|
@dataclass |
|
|
|
CAR.CX5_2022: MazdaCarInfo("Mazda CX-5 2022-24"), |
|
|
|
class MazdaPlatformConfig(PlatformConfig): |
|
|
|
} |
|
|
|
dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None)) |
|
|
|
|
|
|
|
flags: int = field(default=MazdaFlags.GEN1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CAR(Platforms): |
|
|
|
|
|
|
|
CX5 = MazdaPlatformConfig( |
|
|
|
|
|
|
|
"MAZDA CX-5", |
|
|
|
|
|
|
|
MazdaCarInfo("Mazda CX-5 2017-21"), |
|
|
|
|
|
|
|
specs=CarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
CX9 = MazdaPlatformConfig( |
|
|
|
|
|
|
|
"MAZDA CX-9", |
|
|
|
|
|
|
|
MazdaCarInfo("Mazda CX-9 2016-20"), |
|
|
|
|
|
|
|
specs=CarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
MAZDA3 = MazdaPlatformConfig( |
|
|
|
|
|
|
|
"MAZDA 3", |
|
|
|
|
|
|
|
MazdaCarInfo("Mazda 3 2017-18"), |
|
|
|
|
|
|
|
specs=CarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
MAZDA6 = MazdaPlatformConfig( |
|
|
|
|
|
|
|
"MAZDA 6", |
|
|
|
|
|
|
|
MazdaCarInfo("Mazda 6 2017-20"), |
|
|
|
|
|
|
|
specs=CarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
CX9_2021 = MazdaPlatformConfig( |
|
|
|
|
|
|
|
"MAZDA CX-9 2021", |
|
|
|
|
|
|
|
MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), |
|
|
|
|
|
|
|
specs=CX9.specs |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
CX5_2022 = MazdaPlatformConfig( |
|
|
|
|
|
|
|
"MAZDA CX-5 2022", |
|
|
|
|
|
|
|
MazdaCarInfo("Mazda CX-5 2022-24"), |
|
|
|
|
|
|
|
specs=CX5.specs, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LKAS_LIMITS: |
|
|
|
class LKAS_LIMITS: |
|
|
@ -76,14 +102,5 @@ FW_QUERY_CONFIG = FwQueryConfig( |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DBC = { |
|
|
|
CAR_INFO = CAR.create_carinfo_map() |
|
|
|
CAR.CX5: dbc_dict('mazda_2017', None), |
|
|
|
DBC = CAR.create_dbc_map() |
|
|
|
CAR.CX9: dbc_dict('mazda_2017', None), |
|
|
|
|
|
|
|
CAR.MAZDA3: dbc_dict('mazda_2017', None), |
|
|
|
|
|
|
|
CAR.MAZDA6: dbc_dict('mazda_2017', None), |
|
|
|
|
|
|
|
CAR.CX9_2021: dbc_dict('mazda_2017', None), |
|
|
|
|
|
|
|
CAR.CX5_2022: dbc_dict('mazda_2017', None), |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Gen 1 hardware: same CAN messages and same camera |
|
|
|
|
|
|
|
GEN1 = {CAR.CX5, CAR.CX9, CAR.CX9_2021, CAR.MAZDA3, CAR.MAZDA6, CAR.CX5_2022} |
|
|
|
|
|
|
|