|
|
|
@@ -37,7 +37,7 @@ class CarControllerParams:
|
|
|
|
|
|
|
|
|
|
# To determine the limit for your car, find the maximum value that the stock LKAS will request.
|
|
|
|
|
# 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,
|
|
|
|
|
elif CP.carFingerprint in (CAR.GENESIS_G80, CAR.GENESIS_G90, CAR.ELANTRA, CAR.ELANTRA_GT_I30, 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_OPTIMA_H_G4_FL, CAR.KIA_SORENTO):
|
|
|
|
|
self.STEER_MAX = 255
|
|
|
|
@@ -72,6 +72,7 @@ class CAR(StrEnum):
|
|
|
|
|
AZERA_6TH_GEN = "HYUNDAI AZERA 6TH GEN"
|
|
|
|
|
AZERA_HEV_6TH_GEN = "HYUNDAI AZERA HYBRID 6TH GEN"
|
|
|
|
|
ELANTRA = "HYUNDAI ELANTRA 2017"
|
|
|
|
|
ELANTRA_GT_I30 = "HYUNDAI I30 N LINE 2019 & GT 2018 DCT"
|
|
|
|
|
ELANTRA_2021 = "HYUNDAI ELANTRA 2021"
|
|
|
|
|
ELANTRA_HEV_2021 = "HYUNDAI ELANTRA HYBRID 2021"
|
|
|
|
|
HYUNDAI_GENESIS = "HYUNDAI GENESIS 2015-2016"
|
|
|
|
@@ -160,7 +161,11 @@ 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])),
|
|
|
|
|
# TODO: 2017-18 could be Hyundai G
|
|
|
|
|
HyundaiCarInfo("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])),
|
|
|
|
|
HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])),
|
|
|
|
|
],
|
|
|
|
|
CAR.ELANTRA_GT_I30: [
|
|
|
|
|
HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])),
|
|
|
|
|
HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])),
|
|
|
|
|
],
|
|
|
|
@@ -298,9 +303,6 @@ class Buttons:
|
|
|
|
|
CANCEL = 4 # on newer models, this is a pause/resume button
|
|
|
|
|
|
|
|
|
|
FINGERPRINTS = {
|
|
|
|
|
CAR.ELANTRA: [{
|
|
|
|
|
66: 8, 67: 8, 68: 8, 127: 8, 273: 8, 274: 8, 275: 8, 339: 8, 356: 4, 399: 8, 512: 6, 544: 8, 593: 8, 608: 8, 688: 5, 790: 8, 809: 8, 897: 8, 832: 8, 899: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1170: 8, 1265: 4, 1280: 1, 1282: 4, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1314: 8, 1322: 8, 1345: 8, 1349: 8, 1351: 8, 1353: 8, 1363: 8, 1366: 8, 1367: 8, 1369: 8, 1407: 8, 1415: 8, 1419: 8, 1425: 2, 1427: 6, 1440: 8, 1456: 4, 1472: 8, 1486: 8, 1487: 8, 1491: 8, 1530: 8, 1532: 5, 2001: 8, 2003: 8, 2004: 8, 2009: 8, 2012: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8
|
|
|
|
|
}],
|
|
|
|
|
CAR.HYUNDAI_GENESIS: [{
|
|
|
|
|
67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1024: 2, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1342: 6, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1456: 4
|
|
|
|
|
},
|
|
|
|
@@ -1702,6 +1704,33 @@ FW_VERSIONS = {
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
CAR.ELANTRA: {
|
|
|
|
|
(Ecu.fwdCamera, 0x7c4, None): [
|
|
|
|
|
b'\xf1\x00ADP LKAS AT USA LHD 1.00 1.03 99211-F2000 X31',
|
|
|
|
|
b'\xf1\x00AD LKAS AT USA LHD 1.01 1.01 95895-F2000 251',
|
|
|
|
|
],
|
|
|
|
|
(Ecu.transmission, 0x7e1, None): [
|
|
|
|
|
b'\xf1\x006T6K0_C2\x00\x006T6S2051\x00\x00TAD0N20NSD(\xfcA\x9d',
|
|
|
|
|
b'\xf1\x006T6K0_C2\x00\x006T6S2051\x00\x00TAD0N20NSD\x00\x00\x00\x00',
|
|
|
|
|
b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20NS2\x00\x00\x00\x00',
|
|
|
|
|
b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20NS2\xc5\x92\x9e\x8a',
|
|
|
|
|
b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20SS2.~\x90\x87',
|
|
|
|
|
],
|
|
|
|
|
(Ecu.engine, 0x7e0, None): [
|
|
|
|
|
b'\xf1\x8161698051\x00\x00\x00\x00\x00\x00\x00\x00',
|
|
|
|
|
b'\xf1\x8161657051\x00\x00\x00\x00\x00\x00\x00\x00',
|
|
|
|
|
b'\xf1\x816165D051\x00\x00\x00\x00\x00\x00\x00\x00',
|
|
|
|
|
b'\xf1\x816165E051\x00\x00\x00\x00\x00\x00\x00\x00',
|
|
|
|
|
],
|
|
|
|
|
(Ecu.abs, 0x7d1, None): [
|
|
|
|
|
b'\xf1\x00AD ESC \x11 11 \x18\x05\x06 58910-F2840',
|
|
|
|
|
b'\xf1\x00AD ESC \x11 12 \x15\t\t 58920-F2810',
|
|
|
|
|
],
|
|
|
|
|
(Ecu.fwdRadar, 0x7d0, None): [
|
|
|
|
|
b'\xf1\x00AD__ SCC H-CUP 1.00 1.00 99110-F2100 ',
|
|
|
|
|
b'\xf1\x00AD__ SCC H-CUP 1.00 1.01 96400-F2100 ',
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
CAR.ELANTRA_GT_I30: {
|
|
|
|
|
(Ecu.fwdCamera, 0x7c4, None): [
|
|
|
|
|
b'\xf1\x00PD LKAS AT USA LHD 1.01 1.01 95740-G3100 A54',
|
|
|
|
|
b'\xf1\x00PD LKAS AT KOR LHD 1.00 1.02 95740-G3000 A51',
|
|
|
|
@@ -2065,7 +2094,7 @@ CHECKSUM = {
|
|
|
|
|
|
|
|
|
|
CAN_GEARS = {
|
|
|
|
|
# which message has the gear. hybrid and EV use ELECT_GEAR
|
|
|
|
|
"use_cluster_gears": {CAR.ELANTRA, CAR.KONA},
|
|
|
|
|
"use_cluster_gears": {CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KONA},
|
|
|
|
|
"use_tcu_gears": {CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.SONATA_LF, CAR.VELOSTER, CAR.TUCSON},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -2094,7 +2123,7 @@ EV_CAR = {CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.KIA_NIRO_EV, CAR
|
|
|
|
|
# these cars require a special panda safety mode due to missing counters and checksums in the messages
|
|
|
|
|
LEGACY_SAFETY_MODE_CAR = {CAR.HYUNDAI_GENESIS, CAR.IONIQ_EV_LTD, CAR.KIA_OPTIMA_G4,
|
|
|
|
|
CAR.VELOSTER, CAR.GENESIS_G70, CAR.GENESIS_G80, CAR.KIA_CEED, CAR.ELANTRA, CAR.IONIQ_HEV_2022,
|
|
|
|
|
CAR.KIA_OPTIMA_H}
|
|
|
|
|
CAR.KIA_OPTIMA_H, CAR.ELANTRA_GT_I30}
|
|
|
|
|
|
|
|
|
|
# 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,
|
|
|
|
@@ -2106,6 +2135,7 @@ 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_GT_I30: 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),
|
|
|
|
|
CAR.GENESIS_G70: dbc_dict('hyundai_kia_generic', None),
|
|
|
|
|