Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 134 additions & 9 deletions opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)]
Expand All @@ -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

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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:
Expand Down Expand Up @@ -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)):
Expand Down
42 changes: 22 additions & 20 deletions opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc
Original file line number Diff line number Diff line change
Expand Up @@ -506,37 +506,35 @@ 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
SG_ RF_DETECT_DISTANCE : 75|11@1+ (0.1,0) [0|2047] "" XXX
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
Expand Down Expand Up @@ -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";
Expand Down
Loading