#!/usr/bin/env python3
from cereal import car
from openpilot . common . conversions import Conversions as CV
from openpilot . selfdrive . car . mazda . values import CAR , LKAS_LIMITS
from openpilot . selfdrive . car import create_button_events , get_safety_config
from openpilot . selfdrive . car . interfaces import CarInterfaceBase
ButtonType = car . CarState . ButtonEvent . Type
EventName = car . CarEvent . EventName
class CarInterface ( CarInterfaceBase ) :
@staticmethod
def _get_params ( ret , candidate , fingerprint , car_fw , experimental_long , docs ) :
ret . carName = " mazda "
ret . safetyConfigs = [ get_safety_config ( car . CarParams . SafetyModel . mazda ) ]
ret . radarUnavailable = True
ret . dashcamOnly = candidate not in ( CAR . MAZDA_CX5_2022 , CAR . MAZDA_CX9_2021 )
ret . steerActuatorDelay = 0.1
ret . steerLimitTimer = 0.8
CarInterfaceBase . configure_torque_tune ( candidate , ret . lateralTuning )
if candidate not in ( CAR . MAZDA_CX5_2022 , ) :
ret . minSteerSpeed = LKAS_LIMITS . DISABLE_SPEED * CV . KPH_TO_MS
ret . centerToFront = ret . wheelbase * 0.41
return ret
# returns a car.CarState
def _update ( self , c ) :
ret = self . CS . update ( self . cp , self . cp_cam )
# TODO: add button types for inc and dec
ret . buttonEvents = create_button_events ( self . CS . distance_button , self . CS . prev_distance_button , { 1 : ButtonType . gapAdjustCruise } )
# events
events = self . create_common_events ( ret )
if self . CS . lkas_disabled :
events . add ( EventName . lkasDisabled )
elif self . CS . low_speed_alert :
events . add ( EventName . belowSteerSpeed )
ret . events = events . to_msg ( )
return ret