You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
from dataclasses import dataclass, field
|
|
from enum import StrEnum
|
|
|
|
from cereal import car
|
|
from openpilot.selfdrive.car import dbc_dict
|
|
from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts
|
|
from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries
|
|
|
|
Ecu = car.CarParams.Ecu
|
|
|
|
|
|
# Steer torque limits
|
|
|
|
class CarControllerParams:
|
|
STEER_MAX = 800 # theoretical max_steer 2047
|
|
STEER_DELTA_UP = 10 # torque increase per refresh
|
|
STEER_DELTA_DOWN = 25 # torque decrease per refresh
|
|
STEER_DRIVER_ALLOWANCE = 15 # allowed driver torque before start limiting
|
|
STEER_DRIVER_MULTIPLIER = 1 # weight driver torque
|
|
STEER_DRIVER_FACTOR = 1 # from dbc
|
|
STEER_ERROR_MAX = 350 # max delta between torque cmd and torque motor
|
|
STEER_STEP = 1 # 100 Hz
|
|
|
|
def __init__(self, CP):
|
|
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
|
|
class MazdaCarInfo(CarInfo):
|
|
package: str = "All"
|
|
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda]))
|
|
|
|
|
|
CAR_INFO: dict[str, MazdaCarInfo | list[MazdaCarInfo]] = {
|
|
CAR.CX5: MazdaCarInfo("Mazda CX-5 2017-21"),
|
|
CAR.CX9: MazdaCarInfo("Mazda CX-9 2016-20"),
|
|
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"),
|
|
CAR.CX5_2022: MazdaCarInfo("Mazda CX-5 2022-24"),
|
|
}
|
|
|
|
|
|
class LKAS_LIMITS:
|
|
STEER_THRESHOLD = 15
|
|
DISABLE_SPEED = 45 # kph
|
|
ENABLE_SPEED = 52 # kph
|
|
|
|
|
|
class Buttons:
|
|
NONE = 0
|
|
SET_PLUS = 1
|
|
SET_MINUS = 2
|
|
RESUME = 3
|
|
CANCEL = 4
|
|
|
|
|
|
FW_QUERY_CONFIG = FwQueryConfig(
|
|
requests=[
|
|
# TODO: check data to ensure ABS does not skip ISO-TP frames on bus 0
|
|
Request(
|
|
[StdQueries.MANUFACTURER_SOFTWARE_VERSION_REQUEST],
|
|
[StdQueries.MANUFACTURER_SOFTWARE_VERSION_RESPONSE],
|
|
bus=0,
|
|
),
|
|
],
|
|
)
|
|
|
|
|
|
DBC = {
|
|
CAR.CX5: dbc_dict('mazda_2017', None),
|
|
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}
|
|
|