from cereal import car
from panda import Panda
from openpilot . selfdrive . car import create_button_events , get_safety_config , structs
from openpilot . selfdrive . car . interfaces import CarInterfaceBase
from openpilot . selfdrive . car . nissan . values import CAR
ButtonType = structs . CarState . ButtonEvent . Type
class CarInterface ( CarInterfaceBase ) :
@staticmethod
def _get_params ( ret : structs . CarParams , candidate , fingerprint , car_fw , experimental_long , docs ) :
ret . carName = " nissan "
ret . safetyConfigs = [ get_safety_config ( structs . CarParams . SafetyModel . nissan ) ]
ret . autoResumeSng = False
ret . steerLimitTimer = 1.0
ret . steerActuatorDelay = 0.1
ret . steerControlType = structs . CarParams . SteerControlType . angle
ret . radarUnavailable = True
if candidate == CAR . NISSAN_ALTIMA :
# Altima has EPS on C-CAN unlike the others that have it on V-CAN
ret . safetyConfigs [ 0 ] . safetyParam | = Panda . FLAG_NISSAN_ALT_EPS_BUS
return ret
# returns a car.CarState
def _update ( self , c ) :
ret = self . CS . update ( self . cp , self . cp_adas , self . cp_cam )
ret . buttonEvents = create_button_events ( self . CS . distance_button , self . CS . prev_distance_button , { 1 : ButtonType . gapAdjustCruise } )
events = self . create_common_events ( ret , extra_gears = [ structs . CarState . GearShifter . brake ] )
if self . CS . lkas_enabled :
events . add ( car . CarEvent . EventName . invalidLkasSetting )
ret . events = events . to_msg ( )
return ret