@ -11,6 +11,7 @@ from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot . selfdrive . car . disable_ecu import disable_ecu
Ecu = car . CarParams . Ecu
SafetyModel = car . CarParams . SafetyModel
ButtonType = car . CarState . ButtonEvent . Type
EventName = car . CarEvent . EventName
ENABLE_BUTTONS = ( Buttons . RES_ACCEL , Buttons . SET_DECEL , Buttons . CANCEL )
@ -18,6 +19,17 @@ BUTTONS_DICT = {Buttons.RES_ACCEL: ButtonType.accelCruise, Buttons.SET_DECEL: Bu
Buttons . GAP_DIST : ButtonType . gapAdjustCruise , Buttons . CANCEL : ButtonType . cancel }
def set_safety_config_hyundai ( candidate , CAN , can_fd = False ) :
platform = SafetyModel . hyundaiCanfd if can_fd else \
SafetyModel . hyundaiLegacy if candidate in LEGACY_SAFETY_MODE_CAR else \
SafetyModel . hyundai
cfgs = [ get_safety_config ( platform ) , ]
if CAN . ECAN > = 4 :
cfgs . insert ( 0 , get_safety_config ( SafetyModel . noOutput ) )
return cfgs
class CarInterface ( CarInterfaceBase ) :
@staticmethod
def _get_params ( ret , candidate , fingerprint , car_fw , experimental_long , docs ) :
@ -36,7 +48,6 @@ class CarInterface(CarInterfaceBase):
if candidate in CANFD_CAR :
# detect HDA2 with ADAS Driving ECU
if hda2 :
ret . flags | = HyundaiFlags . CANFD_HDA2 . value
if 0x110 in fingerprint [ CAN . CAM ] :
ret . flags | = HyundaiFlags . CANFD_HDA2_ALT_STEERING . value
else :
@ -286,30 +297,20 @@ class CarInterface(CarInterfaceBase):
ret . enableBsm = 0x58b in fingerprint [ 0 ]
# *** panda safety config ***
ret . safetyConfigs = set_safety_config_hyundai ( candidate , CAN , can_fd = ( candidate in CANFD_CAR ) )
if hda2 :
ret . flags | = HyundaiFlags . CANFD_HDA2 . value
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CANFD_HDA2
if candidate in CANFD_CAR :
cfgs = [ get_safety_config ( car . CarParams . SafetyModel . hyundaiCanfd ) , ]
if CAN . ECAN > = 4 :
cfgs . insert ( 0 , get_safety_config ( car . CarParams . SafetyModel . noOutput ) )
ret . safetyConfigs = cfgs
if ret . flags & HyundaiFlags . CANFD_HDA2 :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CANFD_HDA2
if ret . flags & HyundaiFlags . CANFD_HDA2_ALT_STEERING :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING
if hda2 and ret . flags & HyundaiFlags . CANFD_HDA2_ALT_STEERING :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CANFD_HDA2_ALT_STEERING
if ret . flags & HyundaiFlags . CANFD_ALT_BUTTONS :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CANFD_ALT_BUTTONS
if ret . flags & HyundaiFlags . CANFD_CAMERA_SCC :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CAMERA_SCC
else :
if candidate in LEGACY_SAFETY_MODE_CAR :
# these cars require a special panda safety mode due to missing counters and checksums in the messages
ret . safetyConfigs = [ get_safety_config ( car . CarParams . SafetyModel . hyundaiLegacy ) ]
else :
ret . safetyConfigs = [ get_safety_config ( car . CarParams . SafetyModel . hyundai , 0 ) ]
if candidate in CAMERA_SCC_CAR :
ret . safetyConfigs [ 0 ] . safetyParam | = Panda . FLAG_HYUNDAI_CAMERA_SCC
if ret . flags & HyundaiFlags . CANFD_CAMERA_SCC or candidate in CAMERA_SCC_CAR :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_CAMERA_SCC
if ret . openpilotLongitudinalControl :
ret . safetyConfigs [ - 1 ] . safetyParam | = Panda . FLAG_HYUNDAI_LONG
if candidate in HYBRID_CAR :