@ -39,7 +39,7 @@ class CarControllerParams:
# If the max stock LKAS request is <384, add your car to this list.
elif CP . carFingerprint in ( CAR . GENESIS_G80 , CAR . GENESIS_G90 , CAR . ELANTRA , CAR . IONIQ ,
CAR . IONIQ_EV_LTD , CAR . SANTA_FE_PHEV_2022 , CAR . SONATA_LF , CAR . KIA_FORTE , CAR . KIA_NIRO_PHEV ,
CAR . KIA_OPTIMA_H , CAR . KIA_SORENTO ) :
CAR . KIA_OPTIMA_H , CAR . KIA_OPTIMA_H_G4_FL , CAR . KIA_ SORENTO ) :
self . STEER_MAX = 255
# these cars have significantly more torque than most HKG; limit to 70% of max
@ -70,6 +70,7 @@ class HyundaiFlags(IntFlag):
class CAR :
# Hyundai
AZERA_6TH_GEN = " HYUNDAI AZERA 6TH GEN "
AZERA_HEV_6TH_GEN = " HYUNDAI AZERA HYBRID 6TH GEN "
ELANTRA = " HYUNDAI ELANTRA 2017 "
ELANTRA_2021 = " HYUNDAI ELANTRA 2021 "
ELANTRA_HEV_2021 = " HYUNDAI ELANTRA HYBRID 2021 "
@ -114,6 +115,7 @@ class CAR:
KIA_OPTIMA_G4 = " KIA OPTIMA 4TH GEN "
KIA_OPTIMA_G4_FL = " KIA OPTIMA 4TH GEN FACELIFT "
KIA_OPTIMA_H = " KIA OPTIMA HYBRID 2017 & SPORTS 2019 "
KIA_OPTIMA_H_G4_FL = " KIA OPTIMA HYBRID 4TH GEN FACELIFT "
KIA_SELTOS = " KIA SELTOS 2021 "
KIA_SPORTAGE_5TH_GEN = " KIA SPORTAGE 5TH GEN "
KIA_SORENTO = " KIA SORENTO GT LINE 2018 "
@ -155,6 +157,7 @@ class HyundaiCarInfo(CarInfo):
CAR_INFO : Dict [ str , Optional [ Union [ HyundaiCarInfo , List [ HyundaiCarInfo ] ] ] ] = {
CAR . AZERA_6TH_GEN : HyundaiCarInfo ( " Hyundai Azera 2022 " , " All " , car_parts = CarParts . common ( [ CarHarness . hyundai_k ] ) ) ,
CAR . AZERA_HEV_6TH_GEN : HyundaiCarInfo ( " Hyundai Azera Hybrid 2020 " , " All " , car_parts = CarParts . common ( [ CarHarness . hyundai_k ] ) ) ,
CAR . ELANTRA : [
HyundaiCarInfo ( " Hyundai Elantra 2017-19 " , min_enable_speed = 19 * CV . MPH_TO_MS , car_parts = CarParts . common ( [ CarHarness . hyundai_b ] ) ) ,
HyundaiCarInfo ( " Hyundai Elantra GT 2017-19 " , car_parts = CarParts . common ( [ CarHarness . hyundai_e ] ) ) ,
@ -237,12 +240,11 @@ CAR_INFO: Dict[str, Optional[Union[HyundaiCarInfo, List[HyundaiCarInfo]]]] = {
] ,
CAR . KIA_NIRO_HEV_2ND_GEN : HyundaiCarInfo ( " Kia Niro Hybrid 2023 " , car_parts = CarParts . common ( [ CarHarness . hyundai_a ] ) ) ,
CAR . KIA_OPTIMA_G4 : HyundaiCarInfo ( " Kia Optima 2017 " , " Advanced Smart Cruise Control " ,
car_parts = CarParts . common ( [ CarHarness . hyundai_b ] ) ) , # TODO: may support 2016, 2018
car_parts = CarParts . common ( [ CarHarness . hyundai_b ] ) ) , # TODO: may support 2016, 2018
CAR . KIA_OPTIMA_G4_FL : HyundaiCarInfo ( " Kia Optima 2019-20 " , car_parts = CarParts . common ( [ CarHarness . hyundai_g ] ) ) ,
CAR . KIA_OPTIMA_H : [
HyundaiCarInfo ( " Kia Optima Hybrid 2017 " , " Advanced Smart Cruise Control " ) , # TODO: may support adjacent years
HyundaiCarInfo ( " Kia Optima Hybrid 2019 " ) ,
] ,
# TODO: may support adjacent years. may have a non-zero minimum steering speed
CAR . KIA_OPTIMA_H : HyundaiCarInfo ( " Kia Optima Hybrid 2017 " , " Advanced Smart Cruise Control " ) ,
CAR . KIA_OPTIMA_H_G4_FL : HyundaiCarInfo ( " Kia Optima Hybrid 2019 " , car_parts = CarParts . common ( [ CarHarness . hyundai_h ] ) ) ,
CAR . KIA_SELTOS : HyundaiCarInfo ( " Kia Seltos 2021 " , car_parts = CarParts . common ( [ CarHarness . hyundai_a ] ) ) ,
CAR . KIA_SPORTAGE_5TH_GEN : HyundaiCarInfo ( " Kia Sportage 2023 " , car_parts = CarParts . common ( [ CarHarness . hyundai_n ] ) ) ,
CAR . KIA_SORENTO : [
@ -544,6 +546,23 @@ FW_VERSIONS = {
b ' \xf1 \x81 641KA051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . AZERA_HEV_6TH_GEN : {
( Ecu . fwdCamera , 0x7C4 , None ) : [
b ' \xf1 \x00 IGH MFC AT KOR LHD 1.00 1.02 99211-G8100 191029 ' ,
] ,
( Ecu . eps , 0x7d4 , None ) : [
b ' \xf1 \x00 IG MDPS C 1.00 1.00 56310M9600 \x00 4IHSC100 ' ,
] ,
( Ecu . fwdRadar , 0x7d0 , None ) : [
b ' \xf1 \x00 IGhe SCC FHCUP 1.00 1.00 99110-M9100 ' ,
] ,
( Ecu . transmission , 0x7e1 , None ) : [
b ' \xf1 \x00 6T7N0_C2 \x00 \x00 6T7VA051 \x00 \x00 TIGSH24KA1 \xc7 \x85 \xe2 ` ' ,
] ,
( Ecu . engine , 0x7e0 , None ) : [
b ' \xf1 \x81 6H590051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . HYUNDAI_GENESIS : {
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 DH LKAS 1.1 -150210 ' ,
@ -1624,6 +1643,17 @@ FW_VERSIONS = {
b ' \xf1 \x00 JFP LKAS AT EUR LHD 1.00 1.03 95895-A8100 160711 ' ,
] ,
} ,
CAR . KIA_OPTIMA_H_G4_FL : {
( Ecu . fwdRadar , 0x7d0 , None ) : [
b ' \xf1 \x00 JFhe SCC FHCUP 1.00 1.01 99110-A8500 ' ,
] ,
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 JFH MFC AT KOR LHD 1.00 1.01 95895-A8200 180323 ' ,
] ,
( Ecu . engine , 0x7e0 , None ) : [
b ' \xf1 \x81 6H6D1051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . ELANTRA : {
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 PD LKAS AT USA LHD 1.01 1.01 95740-G3100 A54 ' ,
@ -1987,10 +2017,10 @@ CAN_GEARS = {
# which message has the gear
" use_cluster_gears " : { CAR . ELANTRA , CAR . KONA } ,
" use_tcu_gears " : { CAR . KIA_OPTIMA_G4 , CAR . KIA_OPTIMA_G4_FL , CAR . SONATA_LF , CAR . VELOSTER , CAR . TUCSON } ,
" use_elect_gears " : { CAR . KIA_NIRO_EV , CAR . KIA_NIRO_PHEV , CAR . KIA_NIRO_HEV_2021 , CAR . KIA_OPTIMA_H , CAR . IONIQ_EV_LTD ,
" use_elect_gears " : { CAR . KIA_NIRO_EV , CAR . KIA_NIRO_PHEV , CAR . KIA_NIRO_HEV_2021 , CAR . KIA_OPTIMA_H , CAR . KIA_OPTIMA_H_G4_FL , CAR . IONIQ_EV_LTD ,
CAR . KONA_EV , CAR . IONIQ , CAR . IONIQ_EV_2020 , CAR . IONIQ_PHEV , CAR . ELANTRA_HEV_2021 , CAR . SONATA_HYBRID ,
CAR . KONA_HEV , CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . IONIQ_PHEV_2019 ,
CAR . KONA_EV_2022 , CAR . KIA_K5_HEV_2020 } ,
CAR . KONA_EV_2022 , CAR . KIA_K5_HEV_2020 , CAR . AZERA_HEV_6TH_GEN } ,
}
CANFD_CAR = { CAR . KIA_EV6 , CAR . IONIQ_5 , CAR . IONIQ_6 , CAR . TUCSON_4TH_GEN , CAR . TUCSON_HYBRID_4TH_GEN , CAR . KIA_SPORTAGE_HYBRID_5TH_GEN ,
@ -2009,7 +2039,8 @@ CAMERA_SCC_CAR = {CAR.KONA_EV_2022, }
HYBRID_CAR = { CAR . IONIQ_PHEV , CAR . ELANTRA_HEV_2021 , CAR . KIA_NIRO_PHEV , CAR . KIA_NIRO_HEV_2021 , CAR . SONATA_HYBRID , CAR . KONA_HEV , CAR . IONIQ ,
CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . IONIQ_PHEV_2019 , CAR . TUCSON_HYBRID_4TH_GEN ,
CAR . KIA_SPORTAGE_HYBRID_5TH_GEN , CAR . KIA_SORENTO_PHEV_4TH_GEN , CAR . KIA_K5_HEV_2020 , CAR . KIA_NIRO_HEV_2ND_GEN ,
CAR . KIA_SORENTO_HEV_4TH_GEN , CAR . KIA_OPTIMA_H , CAR . KIA_K8_HEV_1ST_GEN }
CAR . KIA_SORENTO_HEV_4TH_GEN , CAR . KIA_OPTIMA_H , CAR . KIA_OPTIMA_H_G4_FL , CAR . KIA_K8_HEV_1ST_GEN ,
CAR . AZERA_HEV_6TH_GEN }
EV_CAR = { CAR . IONIQ_EV_2020 , CAR . IONIQ_EV_LTD , CAR . KONA_EV , CAR . KIA_NIRO_EV , CAR . KIA_NIRO_EV_2ND_GEN , CAR . KONA_EV_2022 ,
CAR . KIA_EV6 , CAR . IONIQ_5 , CAR . IONIQ_6 , CAR . GENESIS_GV60_EV_1ST_GEN , CAR . KONA_EV_2ND_GEN }
@ -2020,12 +2051,14 @@ LEGACY_SAFETY_MODE_CAR = {CAR.HYUNDAI_GENESIS, CAR.IONIQ_EV_LTD, CAR.KIA_OPTIMA_
CAR . KIA_OPTIMA_H }
# these cars have not been verified to work with longitudinal yet - radar disable, sending correct messages, etc.
UNSUPPORTED_LONGITUDINAL_CAR = LEGACY_SAFETY_MODE_CAR | { CAR . KIA_NIRO_PHEV , CAR . KIA_SORENTO , CAR . SONATA_LF , CAR . KIA_OPTIMA_G4_FL }
UNSUPPORTED_LONGITUDINAL_CAR = LEGACY_SAFETY_MODE_CAR | { CAR . KIA_NIRO_PHEV , CAR . KIA_SORENTO , CAR . SONATA_LF , CAR . KIA_OPTIMA_G4_FL ,
CAR . KIA_OPTIMA_H_G4_FL }
# If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points.
# If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py
DBC = {
CAR . AZERA_6TH_GEN : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . AZERA_HEV_6TH_GEN : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA_2021 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . ELANTRA_HEV_2021 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
@ -2049,6 +2082,7 @@ DBC = {
CAR . KIA_OPTIMA_G4 : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_OPTIMA_G4_FL : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_OPTIMA_H : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_OPTIMA_H_G4_FL : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_SELTOS : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_SORENTO : dbc_dict ( ' hyundai_kia_generic ' , None ) , # Has 0x5XX messages, but different format
CAR . KIA_STINGER : dbc_dict ( ' hyundai_kia_generic ' , None ) ,