diff --git a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py index b4c0fdfecd..62d9f5b4c5 100644 --- a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py +++ b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py @@ -149,7 +149,7 @@ def create_steering_messages_camera_scc(frame, packer, CP, CAN, CC, lat_active, values["HAS_LANE_SAFETY"] = 0 values["LKA_ACTIVE"] = 0 # NEW_SIGNAL_1 - values["DampingGain"] = 0 if lat_active else 100 + values["DampingGain"] = 0 if lat_active else 100 #values["VALUE63"] = 0 #values["VALUE82_SET256"] = 0 @@ -274,7 +274,7 @@ def create_lfahda_cluster(packer, CS, CAN, long_active, lat_active): values["HDA_CntrlModSta"] = 2 if long_active else 0 values["HDA_LFA_SymSta"] = 2 if lat_active else 0 - # + # else: return [] return [packer.make_can_msg("LFAHDA_CLUSTER", CAN.ECAN, values)] @@ -289,7 +289,7 @@ def create_acc_control_scc2(packer, CAN, enabled, accel_last, accel, stopping, g acc_mode = 4 if enabled else 0 enabled = False accel = accel_last = 0.5 - + elif hyundai_jerk.carrot_cruise == 2: accel = accel_last = hyundai_jerk.carrot_cruise_accel @@ -346,7 +346,7 @@ def create_acc_control_scc2(packer, CAN, enabled, accel_last, accel, stopping, g # AccelLimitBandUpper, Lower values["SysFailState"] = 0 # 1: Performance degredation, 2: system temporairy unavailble, 3: SCC Service required , 눈이 묻어 레이더오류시... 2가 됨. 이때 가속을 안함... - values["AccelLimitBandUpper"] = 0.0 # 이값이 1.26일때 가속을 안하는 증상이 보임.. + values["AccelLimitBandUpper"] = 0.0 # 이값이 1.26일때 가속을 안하는 증상이 보임.. values["AccelLimitBandLower"] = 0.0 return packer.make_can_msg("SCC_CONTROL", CAN.ECAN, values) @@ -540,7 +540,7 @@ def create_ccnc_messages(CP, packer, CAN, frame, CC, CS, hud_control, disp_angle values["LANELINE_CURVATURE"] = (min(abs(curvature), 15) + (-1 if curvature < 0 else 0)) if lat_active else 0 values["LANELINE_CURVATURE_DIRECTION"] = 1 if curvature < 0 and lat_active else 0 - # lane_color = 6 if lat_active else 2 + # lane_color = 6 if lat_active else 2 lane_color = 2 # 6: green, 2: white, 4: yellow if hud_control.leftLaneDepart: values["LANELINE_LEFT"] = 4 if (frame // 50) % 2 == 0 else 1 @@ -568,8 +568,11 @@ def create_ccnc_messages(CP, packer, CAN, frame, CC, CS, hud_control, disp_angle if CS.adrv_info_1ea is not None: values = copy.copy(CS.adrv_info_1ea) + lat_active = CC.latActive + #values["HDA_MODE1"] = 8 #values["HDA_MODE2"] = 1 + """ if values['LF_DETECT'] == 0 and hud_control.leadLeftDist > 0: values['LF_DETECT'] = 3 if hud_control.leadLeftDist > 30 else 4 values['LF_DETECT_DISTANCE'] = hud_control.leadLeftDist @@ -578,7 +581,7 @@ def create_ccnc_messages(CP, packer, CAN, frame, CC, CS, hud_control, disp_angle values['RF_DETECT'] = 3 if hud_control.leadRightDist > 30 else 4 values['RF_DETECT_DISTANCE'] = hud_control.leadRightDist values['RF_DETECT_LATERAL'] = hud_control.leadRightLat - """ + if values['LR_DETECT'] == 0 and hud_control.leadLeftDist2 > 0: values['LR_DETECT'] = 4 values['LR_DETECT_DISTANCE'] = 2 @@ -589,8 +592,130 @@ def create_ccnc_messages(CP, packer, CAN, frame, CC, CS, hud_control, disp_angle values['RR_DETECT_LATERAL'] = hud_control.leadRightLat2 """ if canfd_debug > 0: - values['LANE_CHANGING'] = 1 - values['LEFT1'] = 1 + # values['LF_DETECT'] = 0 안나옴 + # values['LF_DETECT'] = 1 회색 + # values['LF_DETECT'] = 2 흰색 + # values['LF_DETECT'] = 3 흰색 + # values['LF_DETECT'] = 4 안나옴 + + # 3.6 ~ 4.5 까지 서서히 어두워지다 사라짐 + # values['LF_DETECT_LATERAL'] = 0 ~ 4.5 + # values['LF_DETECT'] = 2 # 2 랑 3 둘다 동일한듯 + + # 0 ~ 150. 근데 100 부터는 동일함 + # values['LF_DETECT_DISTANCE'] = 50 + + values['LF_DETECT'] = 3 + values['LF_DETECT_LATERAL'] = 3.0 + values['LF_DETECT_DISTANCE'] = 0 + + values['RF_DETECT'] = 3 + values['RF_DETECT_LATERAL'] = 3.0 + values['RF_DETECT_DISTANCE'] = 0 + + + values['CORNER_LR_SIG'] = 1 + values['CORNER_LR_DETECT'] = 3.0 + values['CORNER_LR_DIST'] = 10 # 0 ~ 14 15부터 안보임 + + values['CORNER_RR_SIG'] = 1 + values['CORNER_RR_DETECT'] = 3.0 + values['CORNER_RR_DIST'] = 10 # 0 ~ 14 15부터 안보임 + + + # if canfd_debug == 1: + # values['LF_DETECT'] = 0 + # values['LF_DETECT_LATERAL'] = 2.9 + # values['LF_DETECT_DISTANCE'] = 12.0 + # elif canfd_debug == 2: + # values['LF_DETECT'] = 2 + # values['LF_DETECT_LATERAL'] = 3.1 + # values['LF_DETECT_DISTANCE'] = 12.0 + # elif canfd_debug == 3: + # values['LF_DETECT'] = 3 + # values['LF_DETECT_LATERAL'] = 3.2 + # values['LF_DETECT_DISTANCE'] = 12.0 + # elif canfd_debug == 4: + # values['LF_DETECT'] = 4 + # values['LF_DETECT_LATERAL'] = 3.3 + # values['LF_DETECT_DISTANCE'] = 12.0 + + # values['LEFTBLINK1'] = 1 # 좌깜빡이 켜진상태 유지 + # values['RIGHTBLINK1'] = 1 # 우깜빡이 켜진상태 유지 + + # 이것들은 hud랑 연비막대 자리에 텍스트로 나옴 + # values['AUTOLANECHANGE_MSG'] = 1 # 주변 상황을 확인하세요 + # values['AUTOLANECHANGE_MSG'] = 2 # 작동 조건이 아닙니다 + # values['AUTOLANECHANGE_MSG'] = 3 # 주행 차로를 분석중입니다 + # values['AUTOLANECHANGE_MSG'] = 4 # 급커브 구간입니다 + # values['AUTOLANECHANGE_MSG'] = 5 # 주행 중인 차로의 폭이 좁습니다 + # values['AUTOLANECHANGE_MSG'] = 6 # 작동 구간이 아닙니다. + # values['AUTOLANECHANGE_MSG'] = 7 # 비상등이 켜져있습니다 + # values['AUTOLANECHANGE_MSG'] = 8 # 주행속도가 낮습니다 + # values['AUTOLANECHANGE_MSG'] = 9 # 핸들을 잡으십시오 + # values['AUTOLANECHANGE_MSG'] = 10 # 작동 가능한 차로가 아닙니다 + # values['AUTOLANECHANGE_MSG'] = 11 # 핸들 조작이 감지되었습니다. + # 얘는 우측 RPM 게이지에 크게 나옴 + # values['AUTOLANECHANGE_MSG'] = 12 # ok 버튼을 누르면 차로변경 보조기능이 켜집니다 + # values['AUTOLANECHANGE_MSG'] = 13 # 없음. + # values['AUTOLANECHANGE_MSG'] = 14 # 없음. + # values['AUTOLANECHANGE_MSG'] = 15 # 없음. + + # values['HDA_MODE2'] = 1 # 차선변경 아이콘 회색 + # values['HDA_MODE2'] = 2 # 옆차선 녹색 + 차선변경 아이콘 녹색 + # values['HDA_MODE2'] = 3 # 옆차선 녹색 + 차선변경 아이콘 녹색 둘이 같이 점멸 + # values['HDA_MODE2'] = 4 # 옆차선 흰색 + 차선변경 아이콘 흰색 둘이 같이 삐르게 점멸 + # values['HDA_MODE2'] = 5 # 차로변경보조 기능 점검 경고 + # values['HDA_MODE2'] = 6 # 딱히 뭐 없음 + # values['HDA_MODE2'] = 7 # 딱히 뭐 없음 + + # LANELINE_X_POSITION 값을 줘서 차선을 하나 넘어가면 화살표가 사라지는데 0 한번 넣어주면 다시 나옴. + # values['LANE_CHANGING_1'] = 1 # 왼쪽 화살표 + # values['LANE_CHANGING_1'] = 2 # 오른쪽 화살표 + # values['LANE_CHANGING_1'] = 3 # 왼쪽 화살표 + 바닥 + # values['LANE_CHANGING_1'] = 4 # 오른쪽 화살표 + 바닥 + # values['LANE_CHANGING_1'] = 5 # 딱히 뭐 없음 + # values['LANE_CHANGING_1'] = 6 # 딱히 뭐 없음 + # values['LANE_CHANGING_1'] = 7 # 딱히 뭐 없음 + + # 자동차선변경할때 차선 포지션 15 중앙 0~30 + # 좌, 우 둘다 중앙 기준에서 각 방향으로 멀어짐 + # L30 R30 이면 아주 넓은 차선을 가짐. + # 어쩌면 콤마가 인식하는 차선폭 보고 조정 가능할듯.. + # 새로운 차선이 생기는게 아니라 그냥 반대방향으로 텔레포트 시킴.. ㅋㅋ + # LANE_CHANGING_1 이거 안켜주면 hud 에서만 움직임.. + if canfd_debug > 0: + # 중앙 + values['HDA_MODE2'] = 2 + values['LANE_CHANGING_1'] = 0 + values['LANELINE_LEFT_POSITION'] = 15 + values['LANELINE_RIGHT_POSITION'] = 15 + # elif canfd_debug == 2: + # # 왼쪽 + # values['HDA_MODE2'] = 3 + # lp_counter = (frame / 5) % 31 + # if lp_counter == 0 : + # values['LANE_CHANGING_1'] = 0 + # else: + # # values['LANE_CHANGING_1'] = 1 # 왼쪽 화살표 + # values['LANE_CHANGING_1'] = 3 # 왼쪽 화살표 + 바닥 + + # values['LANELINE_LEFT_POSITION'] = (15 - lp_counter + 31) % 31 + # values['LANELINE_RIGHT_POSITION'] = (lp_counter + 15) % 31 + + # elif canfd_debug == 3: + # # 오른쪽 + # values['HDA_MODE2'] = 3 + # lp_counter = (frame / 5) % 31 + # if lp_counter == 0 : + # values['LANE_CHANGING_1'] = 0 + # else: + # # values['LANE_CHANGING_1'] = 2 # 오른쪽 화살표 + # values['LANE_CHANGING_1'] = 4 # 오른쪽 화살표 + 바닥 + + # values['LANELINE_LEFT_POSITION'] = (lp_counter + 15) % 31 + # values['LANELINE_RIGHT_POSITION'] = (15 - lp_counter + 31) % 31 + ret.append(packer.make_can_msg("ADRV_0x1ea", CAN.ECAN, values)) if CS.adrv_info_162 is not None: @@ -714,7 +839,7 @@ def alt_cruise_buttons(packer, CP, CAN, buttons, cruise_btns_msg, cnt): cruise_btns_msg["COUNTER"] = (cruise_btns_msg["COUNTER"] + 1 + cnt) % 256 bus = CAN.ECAN if CP.flags & HyundaiFlags.CANFD_HDA2 else CAN.CAM return packer.make_can_msg("CRUISE_BUTTONS_ALT", bus, cruise_btns_msg) - + def hkg_can_fd_checksum(address: int, sig, d: bytearray) -> int: crc = 0 for i in range(2, len(d)): diff --git a/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc b/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc index 0e44e46ab7..c2d1a01286 100644 --- a/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc +++ b/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc @@ -506,19 +506,16 @@ BO_ 480 LFAHDA_CLUSTER: 16 FR_CMR SG_ HDA_LFA_WrnSnd : 49|2@1+ (1,0) [0|0] "" Dummy SG_ HDA_InfoPUDis1 : 51|3@1+ (1,0) [0|7] "" CLU,CGW SG_ HDA_TDMRMDclReq : 54|2@1+ (1,0) [0|3] "" Dummy - + BO_ 490 ADRV_0x1ea: 32 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ HDA_MODE1 : 31|8@0+ (1,0) [0|255] "" XXX + SG_ LEFT_BLINK_HOLD : 29|1@0+ (1,0) [0|1] "" XXX + SG_ RIGHT_BLINK_HOLD : 30|1@0+ (1,0) [0|1] "" XXX SG_ HDA_MODE2 : 32|3@1+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_4 : 35|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_8 : 36|1@0+ (1,0) [0|1] "" XXX - SG_ RIGHT1 : 40|1@0+ (1,0) [0|1] "" XXX - SG_ RIGHT2 : 41|1@0+ (1,0) [0|1] "" XXX - SG_ LEFT1 : 43|1@0+ (1,0) [0|1] "" XXX - SG_ LANE_CHANGING : 44|1@0+ (1,0) [0|1] "" XXX - SG_ RIGHT_LANE_CHANGING : 45|1@0+ (1,0) [0|1] "" XXX + SG_ LANE_LEFT : 36|2@0+ (1,0) [0|3] "" XXX + SG_ LANE_RIGHT : 41|2@0+ (1,0) [0|3] "" XXX + SG_ LANE_CHANGING : 45|3@0+ (1,0) [0|1] "" XXX SG_ LF_DETECT_DISTANCE : 46|11@1+ (0.1,0) [0|2047] "" XXX SG_ LF_DETECT_LATERAL : 70|7@0+ (0.1,0) [0|127] "" XXX SG_ LF_DETECT : 74|3@0+ (1,0) [0|7] "" XXX @@ -526,17 +523,18 @@ BO_ 490 ADRV_0x1ea: 32 ADRV SG_ RF_DETECT_LATERAL : 94|7@0+ (0.1,0) [0|127] "" XXX SG_ RF_DETECT : 98|3@0+ (1,0) [0|7] "" XXX SG_ SET_ME_FF : 120|8@1+ (1,0) [0|255] "" XXX - SG_ CORNER_LR_DIST : 138|9@1+ (0.1,0) [0|511] "m" XXX - SG_ CORNER_LR_DETECT : 152|6@1+ (1,0) [0|63] "" XXX - SG_ CORNER_LR_SIG : 160|1@0+ (1,0) [0|1] "" XXX - SG_ CORNER_RR_DIST : 162|9@1+ (0.1,0) [0|511] "m" XXX - SG_ CORNER_RR_DETECT : 172|6@1+ (1,0) [0|63] "" XXX - SG_ CORNER_RR_SIG : 184|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_5 : 205|1@0+ (1,0) [0|1] "" XXX - SG_ AUTOLANECHANGE_CONFIRM_MSG_MAYBE : 207|2@0+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_2 : 208|5@1+ (1,0) [0|31] "" XXX - SG_ NEW_SIGNAL_3 : 239|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_1 : 247|8@0+ (1,0) [0|255] "" XXX + SG_ LR_DETECT_DISTANCE : 139|8@1+ (0.1,0) [0|511] "m" XXX + SG_ LR_DETECT_LATERAL : 152|6@1+ (0.1,0) [0|63] "" XXX + SG_ LR_DETECT : 162|3@0+ (1,0) [0|1] "" XXX + SG_ RR_DETECT_DISTANCE : 163|8@1+ (0.1,0) [0|511] "m" XXX + SG_ RR_DETECT_LATERAL : 172|6@1+ (0.1,0) [0|63] "" XXX + SG_ RR_DETECT : 186|3@0+ (1,0) [0|1] "" XXX + SG_ AUTOLANECHANGE_MSG : 207|4@0+ (1,0) [0|3] "" XXX + SG_ LANELINE_CURVATURE : 208|4@1+ (1,0) [0|31] "" XXX + SG_ LANELINE_CURVATURE_DIRECTION : 212|1@0+ (1,0) [0|1] "" XXX + SG_ LANELINE_LEFT_POSITION : 239|8@0+ (1,0) [0|255] "" XXX + SG_ LANELINE_RIGHT_POSITION : 247|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_7 : 248|1@0+ (1,0) [0|1] "" XXX BO_ 507 CAM_0x1fb: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -1001,6 +999,10 @@ VAL_ 480 HDA_LFA_SymSta 0 "Off" 1 "Gray" 2 "Green" 3 "Green blink" ; VAL_ 480 HDA_LFA_WrnSnd 0 "Off " 1 "Additional Warning Sound" 2 "Reserved" 3 "Error indicator" ; VAL_ 480 HDA_InfoPUDis1 0 "No Pop-up" 1 "System Automatic off (LFA)" 2 "System Automatic off (HDA)" 3 "Reserved" 4 "Reserved" 5 "Reserved" 6 "Not Used" 7 "Error Indicator" ; VAL_ 480 HDA_TDMRMDclReq 0 "Not automatically deactivated state of LFA (default)" 1 "Automatically deactivated state of LFA" 2 "Reserved" 3 "Reserved" ; +VAL_ 490 LANE_LEFT 0 "IDLE" 1 "ON_SOURCE" 2 "ON_TARGET"; +VAL_ 490 LANE_RIGHT 0 "IDLE" 1 "ON_SOURCE" 2 "ON_TARGET"; +VAL_ 490 LANE_CHANGING_1 0 "IDLE" 1 "LEFT_CHECK" 3 "LEFT_CHANGING" 2 "RIGHT_CHECK" 4 "RIGHT_CHANGING"; +VAL_ 490 LANELINE_CURVATURE_DIRECTION 0 "LEFT" 1 "RIGHT"; VAL_ 676 LEFT_LANE_LINE 0 "Not Detected" 1 "Low Confidence" 2 "Medium Confidence" 3 "High Confidence"; VAL_ 676 RIGHT_LANE_LINE 0 "Not Detected" 1 "Low Confidence" 2 "Medium Confidence" 3 "High Confidence"; VAL_ 736 MSLA_STATUS 0 "disabled" 1 "active" 2 "paused";