diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 276fcc7620..dfc1c12bfc 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -20,11 +20,11 @@ class CarInterface(CarInterfaceBase): ret.carName = "mazda" ret.safetyModel = car.CarParams.SafetyModel.mazda + ret.radarOffCan = True + ret.communityFeature = True ret.dashcamOnly = True - ret.radarOffCan = True - ret.steerActuatorDelay = 0.1 ret.steerRateCost = 1.0 ret.steerLimitTimer = 0.8 @@ -37,7 +37,7 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.19], [0.019]] ret.lateralTuning.pid.kf = 0.00006 - elif candidate == CAR.CX9: + elif candidate in [CAR.CX9, CAR.CX9_2021]: ret.mass = 4217 * CV.LB_TO_KG + STD_CARGO_KG ret.wheelbase = 3.1 ret.steerRatio = 17.6 diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index c983026d21..c49b8c86ed 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -8,19 +8,20 @@ Ecu = car.CarParams.Ecu # Steer torque limits class CarControllerParams: - STEER_MAX = 600 # max_steer 2048 - STEER_STEP = 1 # how often we update the steer cmd + STEER_MAX = 800 # theoretical max_steer 2047 STEER_DELTA_UP = 10 # torque increase per refresh - STEER_DELTA_DOWN = 20 # torque decrease 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 class CAR: CX5 = "MAZDA CX-5" CX9 = "MAZDA CX-9" MAZDA3 = "MAZDA 3" MAZDA6 = "MAZDA 6" + CX9_2021 = "Mazda CX-9 2021" # No Steer Lockout class LKAS_LIMITS: STEER_THRESHOLD = 15 @@ -176,6 +177,27 @@ FW_VERSIONS = { (Ecu.transmission, 0x7e1, None): [ b'PYH7-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], + }, + + CAR.CX9_2021 : { + (Ecu.eps, 0x730, None): [ + b'TC3M-3210X-A-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.engine, 0x7e0, None): [ + b'PXM4-188K2-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.fwdRadar, 0x764, None): [ + b'K131-67XK2-E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.esp, 0x760, None): [ + b'TA0B-437K2-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.fwdCamera, 0x706, None): [ + b'GSH7-67XK2-M\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.transmission, 0x7e1, None): [ + b'PXM4-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], } } @@ -185,6 +207,11 @@ DBC = { 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), } -GEN1 = [ CAR.CX5, CAR.CX9, CAR.MAZDA3, CAR.MAZDA6 ] +# Gen 1 hardware: same CAN messages and same camera +GEN1 = set([CAR.CX5, CAR.CX9, CAR.CX9_2021, CAR.MAZDA3, CAR.MAZDA6]) + +# Cars with a steering lockout +STEER_LOCKOUT_CAR = set([CAR.CX5, CAR.CX9, CAR.MAZDA3, CAR.MAZDA6]) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 5f9921ac47..344d1b15a0 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -153,7 +153,7 @@ class Controls: if not sounds_available: self.events.add(EventName.soundsUnavailable, static=True) - if community_feature_disallowed and car_recognized: + if community_feature_disallowed and car_recognized and not self.CP.dashcamOnly: self.events.add(EventName.communityFeatureDisallowed, static=True) if not car_recognized: self.events.add(EventName.carUnrecognized, static=True) diff --git a/selfdrive/test/test_routes.py b/selfdrive/test/test_routes.py index a16f79b55c..7b42ed2081 100755 --- a/selfdrive/test/test_routes.py +++ b/selfdrive/test/test_routes.py @@ -167,6 +167,7 @@ routes = [ TestRoute("10b5a4b380434151|2020-08-26--17-11-45", MAZDA.CX9), TestRoute("74f1038827005090|2020-08-26--20-05-50", MAZDA.MAZDA3), TestRoute("fb53c640f499b73d|2021-06-01--04-17-56", MAZDA.MAZDA6), + TestRoute("f6d5b1a9d7a1c92e|2021-07-08--06-56-59", MAZDA.CX9_2021), TestRoute("6c14ee12b74823ce|2021-06-30--11-49-02", TESLA.AP1_MODELS), TestRoute("bb50caf5f0945ab1|2021-06-19--17-20-18", TESLA.AP2_MODELS), @@ -184,4 +185,6 @@ forced_dashcam_routes = [ "74f1038827005090|2020-08-26--20-05-50", # Mazda6 "fb53c640f499b73d|2021-06-01--04-17-56", + # CX-9 2021 + "f6d5b1a9d7a1c92e|2021-07-08--06-56-59", ]