diff --git a/opendbc_repo/opendbc/car/car.capnp b/opendbc_repo/opendbc/car/car.capnp index cbc95e9ee5d..59d5853c135 100644 --- a/opendbc_repo/opendbc/car/car.capnp +++ b/opendbc_repo/opendbc/car/car.capnp @@ -259,6 +259,7 @@ struct CarState { rightRearLongDist @78 :Float32; # rear-right corner radar longitudinal distance leftRearLatDist @79 :Float32; # rear-left corner radar lateral distance rightRearLatDist @80 :Float32; # rear-right corner radar lateral distance + trailerConnected @81 :Bool; # trailer connection state after disconnect debounce struct Tpms { fl @0 :Float32; diff --git a/opendbc_repo/opendbc/car/hyundai/carstate.py b/opendbc_repo/opendbc/car/hyundai/carstate.py index 31c8dc3f985..fb2aa7722ac 100644 --- a/opendbc_repo/opendbc/car/hyundai/carstate.py +++ b/opendbc_repo/opendbc/car/hyundai/carstate.py @@ -29,6 +29,7 @@ GearShifter = structs.CarState.GearShifter READY_COUNT_OK = 200 +TRAILER_DISCONNECT_GRACE_FRAMES = int(5.0 / DT_CTRL) NUMERIC_TO_TZ = { @@ -88,19 +89,19 @@ def __init__(self, CP): self.scc14 = None self.lkas11 = None self.clu11 = None - + # for CANFD parsing - self.scc_control = None - self.lfa = None - self.lfa_alt = None - self.lfahda_cluster = None + self.scc_control = None + self.lfa = None + self.lfa_alt = None + self.lfahda_cluster = None self.adrv_0x161 = None self.adrv_0x200 = None self.adrv_0x1ea = None self.adrv_0x160 = None - self.ccnc_0x162 = None - self.hda_info_4a3 = None - self.tcs = None + self.ccnc_0x162 = None + self.hda_info_4a3 = None + self.tcs = None self.mdps = None self.steer_touch_2af = None self.cruise_buttons_msg = None @@ -146,7 +147,7 @@ def __init__(self, CP): if self.CP.openpilotLongitudinalControl and not (self.CP.flags & HyundaiFlags.CANFD_CAMERA_SCC): ecu_disabled = True - + self.HAS_LFA_BUTTON = True if 913 in fingerprints[0] else False self.CRUISE_BUTTON_ALT = True if 1007 in fingerprints[0] else False @@ -160,12 +161,18 @@ def __init__(self, CP): self.cp_bsm = None self.time_zone = "UTC" - + self.cp = None self.cp_cam = None self.cp_alt = None self.controls_ready_count = 0 + # trailer detection + self.trailer_connected = False + self.trailer_timeout_cnt = 0 + self.trailer_connected_prev = False + self.trailer_status = None + def monitor_fingerprint(self, can_parsers, canfd): if self.controls_ready_count <= READY_COUNT_OK: if Params().get_bool("ControlsReady"): @@ -192,7 +199,7 @@ def add_and_cache(parser, name: str, attr: str, ignore_counter: bool = False): setattr(self, attr, parser.vl[name]) return True return False - + if self.controls_ready_count == 50: self.cp.controls_ready = self.cp_cam.controls_ready = True if self.cp_alt is not None: @@ -215,7 +222,7 @@ def add_and_cache(parser, name: str, attr: str, ignore_counter: bool = False): if not add_and_cache(self.cp_cam, "FCA11", "fca11"): add_and_cache(self.cp, "FCA11", "fca11") add_and_cache(self.cp_cam, "LKAS11", "lkas11") - add_and_cache(self.cp, "CLU11", "clu11") + add_and_cache(self.cp, "CLU11", "clu11") elif self.controls_ready_count == 105: cp_cruise = self.cp_cam if self.CP.flags & HyundaiFlags.CAMERA_SCC else self.cp add_and_cache(cp_cruise, "SCC11", "scc11") @@ -225,20 +232,20 @@ def add_and_cache(parser, name: str, attr: str, ignore_counter: bool = False): else: # canfd if self.controls_ready_count == 120: cp_cruise = self.cp_cam if self.CP.flags & HyundaiFlags.CANFD_CAMERA_SCC else self.cp - add_and_cache(cp_cruise, "SCC_CONTROL", "scc_control") + add_and_cache(cp_cruise, "SCC_CONTROL", "scc_control") elif self.controls_ready_count == 121: add_and_cache(self.cp, "TCS", "tcs") add_and_cache(self.cp, "MDPS", "mdps") add_and_cache(self.cp_cam, "LFA", "lfa") - add_and_cache(self.cp_cam, "LFA_ALT", "lfa_alt") + add_and_cache(self.cp_cam, "LFA_ALT", "lfa_alt") add_and_cache(self.cp_cam, "LFAHDA_CLUSTER", "lfahda_cluster") elif self.controls_ready_count == 122: - add_and_cache(self.cp_cam, "ADRV_0x161", "adrv_0x161") + add_and_cache(self.cp_cam, "ADRV_0x161", "adrv_0x161") add_and_cache(self.cp_cam, "ADRV_0x200", "adrv_0x200") add_and_cache(self.cp_cam, "ADRV_0x1ea", "adrv_0x1ea") add_and_cache(self.cp_cam, "ADRV_0x160", "adrv_0x160") add_and_cache(self.cp_cam, "CCNC_0x162", "ccnc_0x162") - elif self.controls_ready_count == 123: + elif self.controls_ready_count == 123: add_and_cache(self.cp, "HDA_INFO_4A3", "hda_info_4a3") add_and_cache(self.cp, "STEER_TOUCH_2AF", "steer_touch_2af") elif self.controls_ready_count == 124: @@ -256,11 +263,12 @@ def add_and_cache(parser, name: str, attr: str, ignore_counter: bool = False): add_and_cache(self.cp, "DOORS_SEATBELTS", "doors_seatbelts") elif self.controls_ready_count == 126: add_and_cache(self.cp, "CRUISE_BUTTONS_ALT2", "cruise_buttons_alt2", ignore_counter = True) - - - - - + add_and_cache(self.cp, "TRAILER_STATUS", "trailer_status", ignore_counter = True) + + + + + def update(self, can_parsers) -> structs.CarState: self.monitor_fingerprint(can_parsers, self.CP.flags & HyundaiFlags.CANFD) cp = can_parsers[Bus.pt] @@ -504,7 +512,7 @@ def update_canfd(self, can_parsers) -> structs.CarState: if self.doors_seatbelts is not None: ret.doorOpen = self.doors_seatbelts["DRIVER_DOOR"] == 1 ret.seatbeltUnlatched = self.doors_seatbelts["DRIVER_SEATBELT"] == 0 - + gear = cp.vl[self.gear_msg_canfd]["GEAR"] if not self.use_accelerator else 0 if self.accelerator is None else self.accelerator["GEAR"] ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(gear)) @@ -537,7 +545,28 @@ def update_canfd(self, can_parsers) -> structs.CarState: ret.steeringAngleDeg = cp.vl["MDPS"]["STEERING_ANGLE_2"] * -1 else: ret.steeringAngleDeg = cp.vl["STEERING_SENSORS"]["STEERING_ANGLE"] * -1 - + + trailer_signal = self.trailer_status is not None and self.trailer_status["TRAILER_CONNECTED"] != 0 + if trailer_signal: + # Rising edge is immediate so trailer-specific behavior is preserved. + self.trailer_timeout_cnt = 0 + self.trailer_connected = True + elif self.trailer_connected: + # During ignition-off, the trailer bit can clear before the cluster shuts down. + # Keep suppression active through that transient, while still detecting a real + # disconnect after 5 seconds at the 100 Hz CarState update rate. + self.trailer_timeout_cnt += 1 + if self.trailer_timeout_cnt > TRAILER_DISCONNECT_GRACE_FRAMES: + self.trailer_connected = False + else: + self.trailer_timeout_cnt = 0 + + ret.trailerConnected = self.trailer_connected + + if self.trailer_connected != self.trailer_connected_prev: + print(f"[TRAILER_DEBUG] connected={self.trailer_connected} timeout={self.trailer_timeout_cnt}") + self.trailer_connected_prev = self.trailer_connected + ret.steeringTorque = cp.vl["MDPS"]["STEERING_COL_TORQUE"] ret.steeringTorqueEps = cp.vl["MDPS"]["STEERING_OUT_TORQUE"] ret.steeringPressed = self.update_steering_pressed(abs(ret.steeringTorque) > self.params.STEER_THRESHOLD, 5) @@ -576,7 +605,7 @@ def update_canfd(self, can_parsers) -> structs.CarState: self.MainMode_ACC = cp_cam.vl["SCC_CONTROL"]["MainMode_ACC"] == 1 self.ACCMode = cp_cam.vl["SCC_CONTROL"]["ACCMode"] self.LFA_ICON = cp_cam.vl["LFAHDA_CLUSTER"]["HDA_LFA_SymSta"] - + if self.CP.openpilotLongitudinalControl: # These are not used for engage/disengage since openpilot keeps track of state using the buttons ret.cruiseState.enabled = cp.vl["TCS"]["ACC_REQ"] == 1 @@ -618,7 +647,7 @@ def corner_max(signal): ret.leftBlindspot = True if right_block: ret.rightBlindspot = True - + if self.hda_info_4a3 is not None: speedLimit = self.hda_info_4a3["SPEED_LIMIT"] if not self.is_metric: @@ -729,6 +758,7 @@ def corner_max(signal): *create_button_events(self.main_buttons[-1], prev_main_buttons, {1: ButtonType.mainCruise})] self.paddle_button_prev = paddle_button + return ret def get_can_parsers_canfd(self, CP): @@ -738,6 +768,7 @@ def get_can_parsers_canfd(self, CP): msgs += [ ("CRUISE_BUTTONS", 50) ] + return { Bus.pt: CANParser(DBC[CP.carFingerprint][Bus.pt], msgs, CanBus(CP).ECAN), Bus.cam: CANParser(DBC[CP.carFingerprint][Bus.pt], [], CanBus(CP).CAM), diff --git a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py index b32ea1579f3..fa56b1abbd8 100644 --- a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py +++ b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py @@ -127,7 +127,7 @@ def create_steering_messages_camera_scc(frame, packer, CP, CAN, CC, lat_active, if CS.lfa_alt is not None: values = copy.copy(CS.lfa_alt) rx_counter = values.pop("COUNTER", None) - if emergency_steering: + if emergency_steering: pass else: #values = {} #CS.lfa_alt @@ -164,7 +164,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 @@ -330,7 +330,7 @@ def create_lfa_icon_non_camera_scc(packer, CS, CAN, CC): return ret def create_acc_control_scc2(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed, hud_control, hyundai_jerk, CS): - + if CS.scc_control is None: return None enabled = (enabled or CS.softHoldActive > 0) and CS.paddle_button_prev == 0 @@ -341,7 +341,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 @@ -399,7 +399,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 values["ZEROS_7"] = 1 @@ -568,7 +568,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)): @@ -643,6 +643,12 @@ def _apply_radar_blink(values, radar_pairs, frame, *, values[det_key] = 2 - blink values[dist_key] = min_dist +def _suppress_trailer_mode_warning(values, CS): + # Logs from IONIQ 9 show ALERTS_5=6 is the periodic + # "driver assistance limited in trailer mode" popup. + if CS.trailer_connected and values.get("ALERTS_5") == 6: + values["ALERTS_5"] = 0 + def _make_ccnc_values(values, CS, lat_active, frame, hud_control, lane_line=True, corner_radar=True, desire=0, @@ -701,7 +707,7 @@ def create_ccnc_messages(CP, packer, CAN, frame, CC, CS, hud_control, if HDA_LFA_SymSta == 0 and 0 < frame % 200 < 12: values["LFA_BTN"] = 1 - if CC.enabled: + if CC.enabled: if not CS.MainMode_ACC: if 10 < frame % 200 <= 16 and CS.out.vEgo > 3.: values["ADAPTIVE_CRUISE_MAIN_BTN"] = 1 @@ -783,40 +789,51 @@ def create_ccnc_messages(CP, packer, CAN, frame, CC, CS, hud_control, values["ALERTS_5"] = 0 # curvature 표시(0x161쪽 기존 로직 유지) + _suppress_trailer_mode_warning(values, CS) + curvature = round(CS.out.steeringAngleDeg / 3) 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 md is not None and md.meta.laneChangeAvailableLeft else 2 - if lane_line_check >= 1: - lane_line_warn_left = CS.out.leftLaneLine % 10 not in (0, 5) # 실선이면 주황 - else: - lane_line_warn_left = CS.out.leftLaneLine // 10 == 2 # 노란색이면 주황 - lane_color = 4 if lane_line_warn_left or CS.out.leftBlindspot else lane_color - if hud_control.leftLaneDepart: - values["LANELINE_LEFT"] = 4 if (frame // 50) % 2 == 0 else 1 + trailer_lane_change_blocked = CS.trailer_connected + if trailer_lane_change_blocked: + values["LANELINE_LEFT"] = 2 if hud_control.leftLaneVisible else 0 + values["LANELINE_RIGHT"] = 2 if hud_control.rightLaneVisible else 0 else: - values["LANELINE_LEFT"] = lane_color if hud_control.leftLaneVisible else 0 + lane_color = 6 if md is not None and md.meta.laneChangeAvailableLeft else 2 + if lane_line_check >= 1: + lane_line_warn_left = CS.out.leftLaneLine % 10 not in (0, 5) + else: + lane_line_warn_left = CS.out.leftLaneLine // 10 == 2 + lane_color = 4 if lane_line_warn_left or CS.out.leftBlindspot else lane_color + if hud_control.leftLaneDepart: + values["LANELINE_LEFT"] = 4 if (frame // 50) % 2 == 0 else 1 + else: + values["LANELINE_LEFT"] = lane_color if hud_control.leftLaneVisible else 0 - lane_color = 6 if md is not None and md.meta.laneChangeAvailableRight else 2 - if lane_line_check >= 1: - lane_line_warn_right = CS.out.rightLaneLine % 10 not in (0, 5) - else: - lane_line_warn_right = CS.out.rightLaneLine // 10 == 2 - lane_color = 4 if lane_line_warn_right or CS.out.rightBlindspot else lane_color - if hud_control.rightLaneDepart: - values["LANELINE_RIGHT"] = 4 if (frame // 50) % 2 == 0 else 1 - else: - values["LANELINE_RIGHT"] = lane_color if hud_control.rightLaneVisible else 0 + lane_color = 6 if md is not None and md.meta.laneChangeAvailableRight else 2 + if lane_line_check >= 1: + lane_line_warn_right = CS.out.rightLaneLine % 10 not in (0, 5) + else: + lane_line_warn_right = CS.out.rightLaneLine // 10 == 2 + lane_color = 4 if lane_line_warn_right or CS.out.rightBlindspot else lane_color + if hud_control.rightLaneDepart: + values["LANELINE_RIGHT"] = 4 if (frame // 50) % 2 == 0 else 1 + else: + values["LANELINE_RIGHT"] = lane_color if hud_control.rightLaneVisible else 0 values["LCA_LEFT_ARROW"] = 2 if CS.out.leftBlinker else 0 values["LCA_RIGHT_ARROW"] = 2 if CS.out.rightBlinker else 0 - values["LCA_LEFT_ICON"] = (1 if CS.out.leftBlindspot else 2) if lat_active else 0 - values["LCA_RIGHT_ICON"] = (1 if CS.out.rightBlindspot else 2) if lat_active else 0 + if trailer_lane_change_blocked: + values["LCA_LEFT_ICON"] = 1 if lat_active else 0 + values["LCA_RIGHT_ICON"] = 1 if lat_active else 0 + else: + values["LCA_LEFT_ICON"] = (1 if CS.out.leftBlindspot else 2) if lat_active else 0 + values["LCA_RIGHT_ICON"] = (1 if CS.out.rightBlindspot else 2) if lat_active else 0 - values["LANE_LEFT"] = 1 if desire in (1, 3) else 0 - values["LANE_RIGHT"] = 1 if desire in (2, 4) else 0 + values["LANE_LEFT"] = 0 if trailer_lane_change_blocked else 1 if desire in (1, 3) else 0 + values["LANE_RIGHT"] = 0 if trailer_lane_change_blocked else 1 if desire in (2, 4) else 0 ret.append(packer.make_can_msg("ADRV_0x161", CAN.ECAN, values, rx_counter = rx_counter)) diff --git a/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc b/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc index f88f20be605..c9065d9c542 100644 --- a/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc +++ b/opendbc_repo/opendbc/dbc/generator/hyundai/hyundai_canfd.dbc @@ -39,8 +39,8 @@ BU_: XXX CAMERA FRONT_RADAR ADRV APRK BO_ 53 ACCELERATOR: 32 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ GEAR : 192|3@1+ (1,0) [0|7] "" XXX SG_ ACCELERATOR_PEDAL : 40|8@1+ (1,0) [0|255] "" XXX + SG_ GEAR : 192|3@1+ (1,0) [0|7] "" XXX BO_ 64 GEAR_ALT: 32 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -81,8 +81,8 @@ BO_ 80 LKAS: 16 XXX SG_ DampingGain : 104|8@1+ (1,0) [0|255] "" XXX BO_ 81 ADRV_0x51: 32 ADRV - SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX BO_ 96 ESP_STATUS: 32 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -183,8 +183,8 @@ BO_ 272 LKAS_ALT: 32 XXX BO_ 293 STEERING_SENSORS: 16 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ STEERING_RATE : 40|8@1+ (4,0) [0|1016] "deg/s" XXX SG_ STEERING_ANGLE : 24|16@1- (-0.1,0) [0|255] "deg" XXX + SG_ STEERING_RATE : 40|8@1+ (4,0) [0|1016] "deg/s" XXX BO_ 298 LFA: 16 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -214,59 +214,11 @@ BO_ 304 GEAR_SHIFTER: 16 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ PARK_BUTTON : 32|2@1+ (1,0) [0|3] "" XXX - SG_ GEAR : 64|3@1+ (1,0) [0|7] "" XXX SG_ KNOB_POSITION : 40|3@1+ (1,0) [0|3] "" XXX + SG_ GEAR : 64|3@1+ (1,0) [0|7] "" XXX -BO_ 357 SPAS1: 24 APRK - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|0] "" XXX - SG_ NEW_SIGNAL_1 : 96|16@1- (0.1,0) [0|0] "" XXX - SG_ NEW_SIGNAL_2 : 90|3@1+ (1,0) [0|0] "" XXX - -BO_ 362 SPAS2: 32 APRK - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|0] "" XXX - SG_ BLINKER_CONTROL : 133|3@1+ (1,0) [0|0] "" XXX - -BO_ 373 TCS: 24 XXX - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_4 : 24|7@1+ (1,0) [0|127] "" XXX - SG_ NEW_SIGNAL_9 : 31|1@0+ (1,0) [0|1] "" XXX - SG_ aBasis : 32|11@1+ (0.01,-10.23) [0|7] "m/s^2" XXX - SG_ NEW_SIGNAL_1 : 47|5@0+ (1,0) [0|31] "" XXX - SG_ ACCEL_REF_ACC : 48|11@1- (1,0) [0|1023] "" XXX - SG_ NEW_SIGNAL_2 : 63|5@0+ (1,0) [0|31] "" XXX - SG_ SCC_OptTyp : 64|2@1+ (1,0) [0|0] "" AWD,EMS,FR_CMR,HCU,H_U_MM,TCU,VCU,vBDM - SG_ ACCEnable : 67|2@0+ (1,0) [0|3] "" XXX - SG_ ACC_REQ : 68|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_3 : 69|1@0+ (1,0) [0|1] "" XXX - SG_ SCC_ReqLimSta : 70|2@1+ (1,0) [0|0] "" ADAS_DRV,AWD,Dummy,EMS,FR_CMR,H_U_MM,TCU,vBDM - SG_ ESC_StdStillVal : 72|2@1+ (1,0) [0|3] "" ADAS_DRV,AWD,Dummy,EMS,FR_CMR,H_U_MM,TCU,vBDM - SG_ BrakeLight : 74|2@1+ (1,0) [0|3] "" XXX - SG_ ESC_DclEnblReq : 76|2@1+ (1,0) [0|3] "" AWD,Dummy,EMS,FR_CMR,H_U_MM,TCU,vBDM - SG_ NEW_SIGNAL_5 : 79|2@0+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_21 : 80|1@0+ (1,0) [0|1] "" XXX - SG_ DriverBraking : 81|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_20 : 82|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_11 : 83|1@0+ (1,0) [0|1] "" XXX - SG_ DriverBrakingLowSens : 84|1@1+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_10 : 85|1@0+ (1,0) [0|1] "" XXX - SG_ ESC_PrkBrkActvSta : 86|2@1+ (1,0) [0|3] "" ADAS_DRV,AWD,Dummy,EMS,FR_CMR,H_U_MM,RR_C_RDR,TCU,vBDM - SG_ NEW_SIGNAL_12 : 95|8@0+ (1,0) [0|255] "" XXX - SG_ FCA_EquipSta : 96|2@1+ (1,0) [0|3] "" ADAS_DRV,FR_CMR,H_U_MM,vBDM - SG_ FCA_AvlblSta : 98|2@1+ (1,0) [0|3] "" ADAS_DRV,AFCU_DRV,CLU,Dummy,FR_CMR,H_U_MM,vBDM - SG_ NEW_SIGNAL_13 : 103|4@0+ (1,0) [0|15] "" XXX - SG_ NEW_SIGNAL_14 : 111|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_15 : 119|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_16 : 127|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_6 : 128|4@1+ (1,0) [0|15] "" XXX - SG_ NEW_SIGNAL_17 : 133|2@0+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_7 : 135|2@0+ (1,0) [0|3] "" XXX - SG_ PROBABLY_EQUIP : 136|2@1+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_18 : 143|6@0+ (1,0) [0|63] "" XXX - SG_ NEW_SIGNAL_19 : 151|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_8 : 183|16@0+ (1,0) [0|65535] "" XXX +BO_ 1079 TRAILER_STATUS: 8 XXX + SG_ TRAILER_CONNECTED : 0|1@1+ (1,0) [0|1] "" XXX BO_ 352 ADRV_0x160: 16 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -378,6 +330,57 @@ BO_ 354 CCNC_0x162: 32 CCNC SG_ FAULT_DAS : 246|3@1+ (1,0) [0|7] "" XXX SG_ FAULT_ESS : 249|3@1+ (1,0) [0|7] "" XXX +BO_ 357 SPAS1: 24 APRK + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|0] "" XXX + SG_ NEW_SIGNAL_2 : 90|3@1+ (1,0) [0|0] "" XXX + SG_ NEW_SIGNAL_1 : 96|16@1- (0.1,0) [0|0] "" XXX + +BO_ 362 SPAS2: 32 APRK + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|0] "" XXX + SG_ BLINKER_CONTROL : 133|3@1+ (1,0) [0|0] "" XXX + +BO_ 373 TCS: 24 XXX + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_4 : 24|7@1+ (1,0) [0|127] "" XXX + SG_ NEW_SIGNAL_9 : 31|1@0+ (1,0) [0|1] "" XXX + SG_ aBasis : 32|11@1+ (0.01,-10.23) [0|7] "m/s^2" XXX + SG_ NEW_SIGNAL_1 : 47|5@0+ (1,0) [0|31] "" XXX + SG_ ACCEL_REF_ACC : 48|11@1- (1,0) [0|1023] "" XXX + SG_ NEW_SIGNAL_2 : 63|5@0+ (1,0) [0|31] "" XXX + SG_ SCC_OptTyp : 64|2@1+ (1,0) [0|0] "" AWD,EMS,FR_CMR,HCU,H_U_MM,TCU,VCU,vBDM + SG_ ACCEnable : 67|2@0+ (1,0) [0|3] "" XXX + SG_ ACC_REQ : 68|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_3 : 69|1@0+ (1,0) [0|1] "" XXX + SG_ SCC_ReqLimSta : 70|2@1+ (1,0) [0|0] "" ADAS_DRV,AWD,Dummy,EMS,FR_CMR,H_U_MM,TCU,vBDM + SG_ ESC_StdStillVal : 72|2@1+ (1,0) [0|3] "" ADAS_DRV,AWD,Dummy,EMS,FR_CMR,H_U_MM,TCU,vBDM + SG_ BrakeLight : 74|2@1+ (1,0) [0|3] "" XXX + SG_ ESC_DclEnblReq : 76|2@1+ (1,0) [0|3] "" AWD,Dummy,EMS,FR_CMR,H_U_MM,TCU,vBDM + SG_ NEW_SIGNAL_5 : 79|2@0+ (1,0) [0|3] "" XXX + SG_ NEW_SIGNAL_21 : 80|1@0+ (1,0) [0|1] "" XXX + SG_ DriverBraking : 81|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_20 : 82|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_11 : 83|1@0+ (1,0) [0|1] "" XXX + SG_ DriverBrakingLowSens : 84|1@1+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_10 : 85|1@0+ (1,0) [0|1] "" XXX + SG_ ESC_PrkBrkActvSta : 86|2@1+ (1,0) [0|3] "" ADAS_DRV,AWD,Dummy,EMS,FR_CMR,H_U_MM,RR_C_RDR,TCU,vBDM + SG_ NEW_SIGNAL_12 : 95|8@0+ (1,0) [0|255] "" XXX + SG_ FCA_EquipSta : 96|2@1+ (1,0) [0|3] "" ADAS_DRV,FR_CMR,H_U_MM,vBDM + SG_ FCA_AvlblSta : 98|2@1+ (1,0) [0|3] "" ADAS_DRV,AFCU_DRV,CLU,Dummy,FR_CMR,H_U_MM,vBDM + SG_ NEW_SIGNAL_13 : 103|4@0+ (1,0) [0|15] "" XXX + SG_ NEW_SIGNAL_14 : 111|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_15 : 119|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_16 : 127|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_6 : 128|4@1+ (1,0) [0|15] "" XXX + SG_ NEW_SIGNAL_17 : 133|2@0+ (1,0) [0|3] "" XXX + SG_ NEW_SIGNAL_7 : 135|2@0+ (1,0) [0|3] "" XXX + SG_ PROBABLY_EQUIP : 136|2@1+ (1,0) [0|3] "" XXX + SG_ NEW_SIGNAL_18 : 143|6@0+ (1,0) [0|63] "" XXX + SG_ NEW_SIGNAL_19 : 151|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_8 : 183|16@0+ (1,0) [0|65535] "" XXX + BO_ 384 CAM_0x180: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX @@ -443,8 +446,8 @@ BO_ 426 CRUISE_BUTTONS_ALT: 16 XXX SG_ NEW_SIGNAL_2 : 31|3@1+ (1,0) [0|7] "" XXX SG_ ADAPTIVE_CRUISE_MAIN_BTN : 34|1@1+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_3 : 35|1@1+ (1,0) [0|1] "" XXX - SG_ LFA_BTN : 39|1@1+ (1,0) [0|1] "" XXX SG_ CRUISE_BUTTONS : 36|3@1+ (1,0) [0|4] "" XXX + SG_ LFA_BTN : 39|1@1+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_4 : 40|1@1+ (1,0) [0|1] "" XXX SG_ NORMAL_CRUISE_MAIN_BTN : 41|1@1+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_5 : 42|2@1+ (1,0) [0|3] "" XXX @@ -462,23 +465,23 @@ BO_ 426 CRUISE_BUTTONS_ALT: 16 XXX SG_ BYTE15 : 120|8@1+ (1,0) [0|255] "" XXX BO_ 437 CCNC_0x1B5: 32 CCNC - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ LEFT_QUAL : 24|3@1+ (1,0) [0|7] "" XXX - SG_ LEFT_LDW : 27|2@1+ (1,0) [0|3] "" XXX - SG_ LEFT_POSITION : 29|14@1- (0.0039625,0) [-32.4608|32.4568375] "m" XXX - SG_ LEFT_HEADING : 43|10@1- (0.000976563,0) [-0.500000256|0.499023693] "rad" XXX - SG_ LEFT_CURVATURE : 64|16@1- (1E-006,0) [-0.032768|0.032767] "1/m" XXX - SG_ LEFT_CURVATURE_DERIVATIVE : 80|16@1- (4E-009,0) [-0.000131072|0.000131068] "1/m2" XXX - SG_ RIGHT_QUAL : 96|3@1+ (1,0) [0|7] "" XXX - SG_ RIGHT_LDW : 99|2@1+ (1,0) [0|3] "" XXX - SG_ RIGHT_POSITION : 101|14@1- (0.0039625,0) [-32.4608|32.4568375] "m" XXX - SG_ RIGHT_HEADING : 115|10@1- (0.000976563,0) [-0.500000256|0.499023693] "rad" XXX - SG_ RIGHT_CURVATURE : 128|16@1- (1E-006,0) [-0.032768|0.032767] "1/m" XXX - SG_ RIGHT_CURVATURE_DERIVATIVE : 144|16@1- (4E-009,0) [-0.000131072|0.000131068] "1/m2" XXX - SG_ LEAD : 192|7@1+ (1,0) [0|127] "" XXX - SG_ LEAD_SPEED : 200|12@1+ (0.05,-100) [-100|104.75] "m/s" XXX - SG_ LEAD_DISTANCE : 212|12@1+ (0.05,0) [0|204.75] "m" XXX + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX + SG_ LEFT_QUAL : 24|3@1+ (1,0) [0|7] "" XXX + SG_ LEFT_LDW : 27|2@1+ (1,0) [0|3] "" XXX + SG_ LEFT_POSITION : 29|14@1- (0.0039625,0) [-32.4608|32.4568375] "m" XXX + SG_ LEFT_HEADING : 43|10@1- (0.000976563,0) [-0.500000256|0.499023693] "rad" XXX + SG_ LEFT_CURVATURE : 64|16@1- (1e-06,0) [-0.032768|0.032767] "1/m" XXX + SG_ LEFT_CURVATURE_DERIVATIVE : 80|16@1- (4e-09,0) [-0.000131072|0.000131068] "1/m2" XXX + SG_ RIGHT_QUAL : 96|3@1+ (1,0) [0|7] "" XXX + SG_ RIGHT_LDW : 99|2@1+ (1,0) [0|3] "" XXX + SG_ RIGHT_POSITION : 101|14@1- (0.0039625,0) [-32.4608|32.4568375] "m" XXX + SG_ RIGHT_HEADING : 115|10@1- (0.000976563,0) [-0.500000256|0.499023693] "rad" XXX + SG_ RIGHT_CURVATURE : 128|16@1- (1e-06,0) [-0.032768|0.032767] "1/m" XXX + SG_ RIGHT_CURVATURE_DERIVATIVE : 144|16@1- (4e-09,0) [-0.000131072|0.000131068] "1/m2" XXX + SG_ LEAD : 192|7@1+ (1,0) [0|127] "" XXX + SG_ LEAD_SPEED : 200|12@1+ (0.05,-100) [-100|104.75] "m/s" XXX + SG_ LEAD_DISTANCE : 212|12@1+ (0.05,0) [0|204.75] "m" XXX BO_ 438 CAM_0x1b6: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -496,16 +499,31 @@ BO_ 441 CAM_0x1b9: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX +BO_ 442 BLINDSPOTS_REAR_CORNERS: 24 XXX + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX + SG_ LEFT_BLOCKED : 24|1@0+ (1,0) [0|1] "" XXX + SG_ INDICATOR_LEFT_TWO : 30|1@0+ (1,0) [0|3] "" XXX + SG_ INDICATOR_RIGHT_TWO : 32|1@1+ (1,0) [0|3] "" XXX + SG_ FL_INDICATOR : 46|6@0+ (1,0) [0|1] "" XXX + SG_ FR_INDICATOR : 54|6@0+ (1,0) [0|63] "" XXX + SG_ RIGHT_BLOCKED : 64|1@0+ (1,0) [0|1] "" XXX + SG_ COLLISION_AVOIDANCE_ACTIVE : 68|1@0+ (1,0) [0|1] "" XXX + SG_ INDICATOR_LEFT_THREE : 128|1@0+ (1,0) [0|1] "" XXX + SG_ INDICATOR_RIGHT_THREE : 130|1@0+ (1,0) [0|1] "" XXX + SG_ INDICATOR_LEFT_FOUR : 138|1@0+ (1,0) [0|1] "" XXX + SG_ INDICATOR_RIGHT_FOUR : 141|1@0+ (1,0) [0|1] "" XXX + BO_ 463 CRUISE_BUTTONS: 8 XXX SG_ _CHECKSUM : 0|8@1+ (1,0) [0|65535] "" XXX - SG_ LFA_BTN : 23|1@1+ (1,0) [0|1] "" XXX - SG_ SET_ME_1 : 29|1@1+ (1,0) [0|1] "" XXX - SG_ ADAPTIVE_CRUISE_MAIN_BTN : 19|1@1+ (1,0) [0|1] "" XXX - SG_ NORMAL_CRUISE_MAIN_BTN : 21|1@1+ (1,0) [0|1] "" XXX SG_ COUNTER : 12|4@1+ (1,0) [0|255] "" XXX SG_ CRUISE_BUTTONS : 16|3@1+ (1,0) [0|3] "" XXX + SG_ ADAPTIVE_CRUISE_MAIN_BTN : 19|1@1+ (1,0) [0|1] "" XXX + SG_ NORMAL_CRUISE_MAIN_BTN : 21|1@1+ (1,0) [0|1] "" XXX + SG_ LFA_BTN : 23|1@1+ (1,0) [0|1] "" XXX SG_ RIGHT_PADDLE : 25|1@1+ (1,0) [0|1] "" XXX SG_ LEFT_PADDLE : 27|1@1+ (1,0) [0|1] "" XXX + SG_ SET_ME_1 : 29|1@1+ (1,0) [0|1] "" XXX SG_ SET_ME_1_ : 40|1@0+ (1,0) [0|1] "" XXX BO_ 474 ADRV_0x1da: 32 ADRV @@ -517,18 +535,31 @@ BO_ 474 ADRV_0x1da: 32 ADRV BO_ 480 LFAHDA_CLUSTER: 16 FR_CMR SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ HDA_OptUsmSta : 24|3@1+ (1,0) [0|0] "" CGW - SG_ LFA_OptUsmSta : 27|3@1+ (1,0) [0|0] "" CGW - SG_ HDA_CntrlModSta : 30|2@1+ (1,0) [0|0] "" CGW - SG_ HDA_InfoPUDis : 32|3@1+ (1,0) [0|0] "" CGW - SG_ HDA_AutoSetSpdSta : 35|2@1+ (1,0) [0|0] "" CGW - SG_ HDA_AutoSetSpdUpdtSta : 37|2@1+ (1,0) [0|0] "" CGW - SG_ HDA_AutoSetSpdVal : 39|8@1+ (1,0) [0|0] "km/h" CGW - SG_ HDA_LFA_SymSta : 47|2@1+ (1,0) [0|0] "" CGW - 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 - + SG_ HDA_OptUsmSta : 24|3@1+ (1,0) [0|0] "" CGW + SG_ LFA_OptUsmSta : 27|3@1+ (1,0) [0|0] "" CGW + SG_ HDA_CntrlModSta : 30|2@1+ (1,0) [0|0] "" CGW + SG_ HDA_InfoPUDis : 32|3@1+ (1,0) [0|0] "" CGW + SG_ HDA_AutoSetSpdSta : 35|2@1+ (1,0) [0|0] "" CGW + SG_ HDA_AutoSetSpdUpdtSta : 37|2@1+ (1,0) [0|0] "" CGW + SG_ HDA_AutoSetSpdVal : 39|8@1+ (1,0) [0|0] "km/h" CGW + SG_ HDA_LFA_SymSta : 47|2@1+ (1,0) [0|0] "" CGW + 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_ 485 BLINDSPOTS_FRONT_CORNER_1: 16 XXX + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX + SG_ REVERSING : 24|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_5 : 31|2@0+ (1,0) [0|3] "" XXX + SG_ NEW_SIGNAL_7 : 32|2@1+ (1,0) [0|3] "" XXX + SG_ NEW_SIGNAL_8 : 47|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_9 : 55|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_4 : 80|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_3 : 88|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_2 : 96|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_1 : 108|2@0+ (1,0) [0|3] "" XXX + 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 @@ -564,6 +595,24 @@ BO_ 490 ADRV_0x1ea: 32 ADRV 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_ 506 CLUSTER_SPEED_LIMIT: 32 CAM + SG_ SPEED_LIMIT_1 : 39|7@0+ (1,0) [0|255] "" XXX + SG_ SPEED_LIMIT_2 : 47|7@0+ (1,0) [0|255] "" XXX + SG_ SECONDARY_LIMIT_1 : 79|8@0+ (1,0) [0|127] "" XXX + SG_ SECONDARY_LIMIT_2 : 103|8@0+ (1,0) [0|127] "" XXX + SG_ SPEED_LIMIT_3 : 119|8@0+ (1,0) [0|255] "" XXX + SG_ ARROW_DOWN : 120|1@0+ (1,0) [0|1] "" XXX + SG_ ARROW_UP : 121|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_2 : 122|3@1+ (1,0) [0|7] "" XXX + SG_ SPEED_CHANGE_BLINKING : 129|1@1+ (1,0) [0|3] "" XXX + SG_ CHIME_1 : 133|1@0+ (1,0) [0|1] "" XXX + SG_ NEW_SIGNAL_4 : 143|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_3 : 146|3@0+ (1,0) [0|7] "" XXX + SG_ NEW_SIGNAL_1 : 147|7@1+ (1,0) [0|127] "" XXX + SG_ SCHOOL_ZONE : 155|1@0+ (1,0) [0|1] "" XXX + SG_ SPEED_LIMIT_4 : 215|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_5 : 223|8@0+ (1,0) [0|255] "" XXX + BO_ 507 CAM_0x1fb: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX @@ -691,6 +740,16 @@ BO_ 676 CAM_0x2a4: 24 XXX SG_ NEW_SIGNAL_14 : 224|16@1+ (1,0) [0|65535] "" XXX SG_ NEW_SIGNAL_15 : 240|16@1+ (1,0) [0|65535] "" XXX +BO_ 687 STEER_TOUCH_2AF: 8 XXX + SG_ CHECKSUM_ : 7|8@0+ (1,0) [0|255] "" XXX + SG_ COUNTER_ : 8|8@1+ (1,0) [0|255] "" XXX + SG_ TOUCH_DETECT : 23|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_2 : 31|8@0+ (1,0) [0|255] "" XXX + SG_ TOUCH1 : 39|8@0+ (1,0) [0|255] "" XXX + SG_ TOUCH2 : 47|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_3 : 55|8@0+ (1,0) [0|255] "" XXX + SG_ NEW_SIGNAL_4 : 63|8@0+ (1,0) [0|255] "" XXX + BO_ 699 CAM_0x2bb: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX @@ -749,6 +808,12 @@ BO_ 866 CAM_0x362: 32 CAMERA SG_ NEW_SIGNAL_14 : 224|16@1+ (1,0) [0|65535] "" XXX SG_ NEW_SIGNAL_15 : 240|16@1+ (1,0) [0|65535] "" XXX +BO_ 874 BLINDSPOTS_FRONT_CORNER_2: 16 XXX + SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX + SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX + SG_ RIGHT_BSD : 27|1@0+ (1,0) [0|1] "" XXX + SG_ LEFT_BSD : 28|1@0+ (1,0) [0|1] "" XXX + BO_ 928 TPMS: 16 XXX SG_ PRESSURE_FL : 39|8@0+ (1,0) [0|255] "" XXX SG_ PRESSURE_FR : 47|8@0+ (1,0) [0|255] "" XXX @@ -761,10 +826,10 @@ BO_ 961 BLINKER_STALKS: 8 XXX SG_ CHECKSUM_MAYBE : 7|8@0+ (1,0) [0|255] "" XXX SG_ COUNTER_ALT : 15|4@0+ (1,0) [0|15] "" XXX SG_ HIGHBEAM_FORWARD : 18|1@0+ (1,0) [0|1] "" XXX + SG_ LIGHT_KNOB_POSITION : 21|2@0+ (1,0) [0|3] "" XXX SG_ HIGHBEAM_BACKWARD : 26|1@0+ (1,0) [0|1] "" XXX - SG_ RIGHT_BLINKER : 32|1@0+ (1,0) [0|1] "" XXX SG_ LEFT_BLINKER : 30|1@0+ (1,0) [0|1] "" XXX - SG_ LIGHT_KNOB_POSITION : 21|2@0+ (1,0) [0|3] "" XXX + SG_ RIGHT_BLINKER : 32|1@0+ (1,0) [0|1] "" XXX BO_ 995 BLINKERS_ALT: 16 XXX SG_ LEFT_BLINKER : 74|1@0+ (1,0) [0|1] "" XXX @@ -781,10 +846,10 @@ BO_ 1041 DOORS_SEATBELTS: 8 XXX SG_ COUNTER_ALT : 15|4@0+ (1,0) [0|15] "" XXX SG_ DRIVER_DOOR : 24|1@1+ (1,0) [0|1] "" XXX SG_ PASSENGER_DOOR : 34|1@0+ (1,0) [0|1] "" XXX + SG_ PASSENGER_SEATBELT : 36|1@0+ (1,0) [0|1] "" XXX + SG_ DRIVER_SEATBELT : 42|1@0+ (1,0) [0|1] "" XXX SG_ DRIVER_REAR_DOOR : 52|1@0+ (1,0) [0|1] "" XXX SG_ PASSENGER_REAR_DOOR : 56|1@0+ (1,0) [0|1] "" XXX - SG_ DRIVER_SEATBELT : 42|1@0+ (1,0) [0|1] "" XXX - SG_ PASSENGER_SEATBELT : 36|1@0+ (1,0) [0|1] "" XXX BO_ 1043 BLINKERS: 8 XXX SG_ LEFT_STALK : 8|1@0+ (1,0) [0|1] "" XXX @@ -796,71 +861,6 @@ BO_ 1043 BLINKERS: 8 XXX SG_ RIGHT_LAMP_ALT : 61|1@0+ (1,0) [0|1] "" XXX SG_ USE_ALT_LAMP : 62|1@0+ (1,0) [0|1] "" XXX -BO_ 1240 CLUSTER_INFO: 8 XXX - SG_ DISTANCE_UNIT : 0|1@1+ (1,0) [0|1] "" XXX - -BO_ 442 BLINDSPOTS_REAR_CORNERS: 24 XXX - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ LEFT_BLOCKED : 24|1@0+ (1,0) [0|1] "" XXX - SG_ INDICATOR_LEFT_TWO : 30|1@0+ (1,0) [0|3] "" XXX - SG_ INDICATOR_RIGHT_TWO : 32|1@1+ (1,0) [0|3] "" XXX - SG_ FL_INDICATOR : 46|6@0+ (1,0) [0|1] "" XXX - SG_ FR_INDICATOR : 54|6@0+ (1,0) [0|63] "" XXX - SG_ RIGHT_BLOCKED : 64|1@0+ (1,0) [0|1] "" XXX - SG_ COLLISION_AVOIDANCE_ACTIVE : 68|1@0+ (1,0) [0|1] "" XXX - SG_ INDICATOR_LEFT_THREE : 128|1@0+ (1,0) [0|1] "" XXX - SG_ INDICATOR_RIGHT_THREE : 130|1@0+ (1,0) [0|1] "" XXX - SG_ INDICATOR_LEFT_FOUR : 138|1@0+ (1,0) [0|1] "" XXX - SG_ INDICATOR_RIGHT_FOUR : 141|1@0+ (1,0) [0|1] "" XXX - -BO_ 874 BLINDSPOTS_FRONT_CORNER_2: 16 XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ RIGHT_BSD : 27|1@0+ (1,0) [0|1] "" XXX - SG_ LEFT_BSD : 28|1@0+ (1,0) [0|1] "" XXX - -BO_ 485 BLINDSPOTS_FRONT_CORNER_1: 16 XXX - SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX - SG_ NEW_SIGNAL_1 : 108|2@0+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_2 : 96|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_3 : 88|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_4 : 80|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_5 : 31|2@0+ (1,0) [0|3] "" XXX - SG_ REVERSING : 24|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_7 : 32|2@1+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_8 : 47|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_9 : 55|8@0+ (1,0) [0|255] "" XXX - -BO_ 506 CLUSTER_SPEED_LIMIT: 32 CAM - SG_ SPEED_LIMIT_1 : 39|7@0+ (1,0) [0|255] "" XXX - SG_ SPEED_LIMIT_2 : 47|7@0+ (1,0) [0|255] "" XXX - SG_ SECONDARY_LIMIT_1 : 79|8@0+ (1,0) [0|127] "" XXX - SG_ SECONDARY_LIMIT_2 : 103|8@0+ (1,0) [0|127] "" XXX - SG_ SPEED_LIMIT_3 : 119|8@0+ (1,0) [0|255] "" XXX - SG_ ARROW_DOWN : 120|1@0+ (1,0) [0|1] "" XXX - SG_ ARROW_UP : 121|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_2 : 122|3@1+ (1,0) [0|7] "" XXX - SG_ SPEED_CHANGE_BLINKING : 129|1@1+ (1,0) [0|3] "" XXX - SG_ CHIME_1 : 133|1@0+ (1,0) [0|1] "" XXX - SG_ NEW_SIGNAL_4 : 143|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_3 : 146|3@0+ (1,0) [0|7] "" XXX - SG_ NEW_SIGNAL_1 : 147|7@1+ (1,0) [0|127] "" XXX - SG_ SCHOOL_ZONE : 155|1@0+ (1,0) [0|1] "" XXX - SG_ SPEED_LIMIT_4 : 215|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_5 : 223|8@0+ (1,0) [0|255] "" XXX - -BO_ 687 STEER_TOUCH_2AF: 8 XXX - SG_ CHECKSUM_ : 7|8@0+ (1,0) [0|255] "" XXX - SG_ COUNTER_ : 8|8@1+ (1,0) [0|255] "" XXX - SG_ TOUCH_DETECT : 23|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_2 : 31|8@0+ (1,0) [0|255] "" XXX - SG_ TOUCH1 : 39|8@0+ (1,0) [0|255] "" XXX - SG_ TOUCH2 : 47|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_3 : 55|8@0+ (1,0) [0|255] "" XXX - SG_ NEW_SIGNAL_4 : 63|8@0+ (1,0) [0|255] "" XXX - BO_ 1052 LIGHT_SENSOR: 8 XXX SG_ CHECKSUM : 7|8@0+ (1,0) [0|255] "" XXX SG_ COUNTER : 15|4@0+ (1,0) [0|15] "" XXX @@ -925,6 +925,9 @@ BO_ 1214 NEW_MSG_4BE: 8 XXX SG_ BYTE_7 : 55|8@0+ (1,0) [0|255] "" XXX SG_ BYTE_8 : 63|8@0+ (1,0) [0|255] "" XXX +BO_ 1240 CLUSTER_INFO: 8 XXX + SG_ DISTANCE_UNIT : 0|1@1+ (1,0) [0|1] "" XXX + BO_ 1259 LOCAL_TIME2: 8 XXX SG_ HOURS : 15|5@0+ (1,0) [0|31] "" XXX SG_ MINUTES : 21|6@0+ (1,0) [0|63] "" XXX @@ -939,20 +942,15 @@ BO_ 1264 LOCAL_TIME: 8 XXX SG_ YEAR : 47|8@0+ (1,0) [0|255] "" XXX SG_ DATE : 48|5@1+ (1,0) [0|31] "" XXX -CM_ 272 "Alternative LKAS message, used on cars such as 2023 Ioniq 6, 2nd gen Kona. Matches LKAS except size is 32 bytes"; -CM_ SG_ 272 LKAS_ANGLE_CMD "tracks MDPS->STEERING_ANGLE when not engaged, not STEERING_SENSORS->STEERING_ANGLE"; -CM_ 676 "Contains signals with detailed lane line information. Used by ADAS ECU on HDA 2 vehicles to operate LFA."; -CM_ 866 "Contains signals with detailed lane line information. Used by ADAS ECU on HDA 2 vehicles to operate LFA. Used on cars that use message 272."; -CM_ 1043 "Lamp signals do not seem universal on cars that use LKAS_ALT, but stalk signals do."; - CM_ SG_ 80 HAS_LANE_SAFETY "If 0, hides LKAS 'Lane Safety' menu from vehicle settings"; CM_ SG_ 96 BRAKE_PRESSURE "User applied brake pedal pressure. Ramps from computer applied pressure on falling edge of cruise. Cruise cancels if !=0"; CM_ SG_ 101 BRAKE_POSITION "User applied brake pedal position, max is ~700. Signed on some vehicles"; -CM_ SG_ 373 PROBABLY_EQUIP "aeb equip?"; +CM_ SG_ 272 LKAS_ANGLE_CMD "tracks MDPS->STEERING_ANGLE when not engaged, not STEERING_SENSORS->STEERING_ANGLE"; +CM_ SG_ 352 SET_ME_9 "has something to do with AEB settings"; CM_ SG_ 373 ACCEnable "Likely a copy of CAN's TCS13->ACCEnable"; CM_ SG_ 373 DriverBraking "Likely derived from BRAKE->BRAKE_POSITION"; CM_ SG_ 373 DriverBrakingLowSens "Higher threshold version of DriverBraking"; -CM_ SG_ 352 SET_ME_9 "has something to do with AEB settings"; +CM_ SG_ 373 PROBABLY_EQUIP "aeb equip?"; CM_ SG_ 416 VSetDis "set speed in display units"; CM_ SG_ 676 LEFT_LANE_LINE "Left lane line confidence"; CM_ SG_ 676 RIGHT_LANE_LINE "Right lane line confidence"; @@ -963,49 +961,41 @@ CM_ SG_ 961 COUNTER_ALT "only increments on change"; CM_ SG_ 1041 COUNTER_ALT "only increments on change"; CM_ SG_ 1043 COUNTER_ALT "only increments on change"; CM_ SG_ 1043 USE_ALT_LAMP "likely 1 on cars that use alt lamp signals"; -VAL_ 53 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ; +VAL_ 53 GEAR 0 "P" 5 "D" 6 "N" 7 "R"; VAL_ 64 GEAR 0 "P" 5 "D" 6 "N" 7 "R" 4 "T"; -VAL_ 69 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ; -VAL_ 112 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ; -VAL_ 80 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ; -VAL_ 80 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ; +VAL_ 69 GEAR 0 "P" 5 "D" 6 "N" 7 "R"; +VAL_ 80 LKA_MODE 1 "warning only" 2 "assist" 6 "off"; +VAL_ 80 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green"; VAL_ 96 TRACTION_AND_STABILITY_CONTROL 0 "On" 5 "Limited" 1 "Off"; -VAL_ 234 LKA_FAULT 0 "ok" 1 "lka fault" ; +VAL_ 112 GEAR 0 "P" 5 "D" 6 "N" 7 "R"; +VAL_ 234 LKA_FAULT 0 "ok" 1 "lka fault"; VAL_ 267 CRUISE_BUTTONS 8 "CRUISE_MAIN" 4 "CANCEL" 1 "RES" 2 "SET" 3 "GAP"; -VAL_ 272 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ; -VAL_ 272 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ; -VAL_ 272 LKAS_ANGLE_ACTIVE 1 "not active" 2 "active" ; -VAL_ 298 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ; -VAL_ 298 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ; +VAL_ 272 LKA_MODE 1 "warning only" 2 "assist" 6 "off"; +VAL_ 272 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green"; +VAL_ 272 LKAS_ANGLE_ACTIVE 1 "not active" 2 "active"; +VAL_ 298 LKA_MODE 1 "warning only" 2 "assist" 6 "off"; +VAL_ 298 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green"; VAL_ 304 PARK_BUTTON 1 "Pressed" 2 "Not Pressed"; VAL_ 304 KNOB_POSITION 1 "R" 2 "N (on R side)" 3 "Centered" 4 "N (on D side)" 5 "D"; -VAL_ 304 GEAR 1 "P" 2 "R" 3 "N" 4 "D" ; -VAL_ 352 AEB_SETTING 1 "off" 2 "warning only" 3 "active assist" ; - +VAL_ 304 GEAR 1 "P" 2 "R" 3 "N" 4 "D"; +VAL_ 352 AEB_SETTING 1 "off" 2 "warning only" 3 "active assist"; VAL_ 353 FCA_ICON 0 "HIDDEN" 1 "ORANGE" 2 "RED"; VAL_ 353 FCA_ALT_ICON 0 "HIDDEN" 1 "ORANGE" 3 "RED"; -VAL_ 353 HDA_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 5 "CYAN HDP"; -VAL_ 353 SLA_ICON 0 "HIDDEN" 1 "WHITE UP" 2 "WHITE DOWN" 3 "GREEN UP" 4 "GREEN DOWN"; -VAL_ 353 NAV_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 4 "WHITE"; -VAL_ 353 LFA_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 5 "CYAN"; -VAL_ 353 DAW_ICON 0 "HIDDEN" 1 "ORANGE"; VAL_ 353 LKA_ICON 0 "HIDDEN" 1 "ORANGE" 3 "GRAY" 4 "GREEN"; VAL_ 353 HBA_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN"; VAL_ 353 FCA_IMAGE 0 "HIDDEN" 2 "VISIBLE"; VAL_ 353 BCA_LEFT 0 "HIDDEN" 1 "VISIBLE" 2 "VISIBLE+ICON"; VAL_ 353 BCA_RIGHT 0 "HIDDEN" 1 "VISIBLE" 2 "VISIBLE+ICON"; +VAL_ 353 LCA_LEFT_ARROW 0 "HIDDEN" 1 "VISIBLE"; +VAL_ 353 LCA_RIGHT_ARROW 0 "HIDDEN" 1 "VISIBLE"; VAL_ 353 CENTERLINE 0 "HIDDEN" 1 "GREEN"; VAL_ 353 TARGET 0 "HIDDEN" 1 "BLUE" 3 "WHITE"; -VAL_ 353 LANE_LEFT 0 "HIDDEN" 1 "GREEN"; -VAL_ 353 LANE_RIGHT 0 "HIDDEN" 1 "GREEN"; -VAL_ 353 LANE_ZOOM 0 "ZOOM" 1 "HIDDEN"; VAL_ 353 LANELINE_LEFT 0 "GRAY" 1 "HIDDEN" 2 "WHITE" 4 "ORANGE" 6 "GREEN"; VAL_ 353 LANELINE_RIGHT 0 "GRAY" 1 "HIDDEN" 2 "WHITE" 4 "ORANGE" 6 "GREEN"; VAL_ 353 LANE_HIGHLIGHT 0 "HIDDEN" 1 "GREEN" 2 "WHITE" 3 "BLUE" 4 "ORANGE" 5 "RED"; -VAL_ 353 LCA_LEFT_ARROW 0 "HIDDEN" 1 "VISIBLE"; -VAL_ 353 LCA_RIGHT_ARROW 0 "HIDDEN" 1 "VISIBLE"; -VAL_ 353 LCA_LEFT_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 4 "WHITE"; -VAL_ 353 LCA_RIGHT_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 4 "WHITE"; +VAL_ 353 LANE_LEFT 0 "HIDDEN" 1 "GREEN"; +VAL_ 353 LANE_RIGHT 0 "HIDDEN" 1 "GREEN"; +VAL_ 353 LANE_ZOOM 0 "ZOOM" 1 "HIDDEN"; VAL_ 353 ALERTS_1 0 "HIDDEN" 1 "WARNING_ONLY_CAR_CENTER" 2 "WARNING_ONLY_CAR_LEFT" 3 "WARNING_ONLY_CAR_RIGHT" 4 "WARNING_ONLY_LEFT" 5 "WARNING_ONLY_RIGHT" 11 "EMERGENCY_BRAKING_CAR_CENTER" 12 "EMERGENCY_BRAKING_CAR_LEFT" 13 "EMERGENCY_BRAKING_CAR_RIGHT" 14 "EMERGENCY_BRAKING_LEFT" 15 "EMERGENCY_BRAKING_RIGHT" 21 "EMERGENCY_STEERING_CAR_LEFT" 22 "EMERGENCY_STEERING_CAR_RIGHT" 23 "EMERGENCY_STEERING_CAR_LEFT_AWAY" 24 "EMERGENCY_STEERING_CAR_RIGHT_AWAY" 25 "EMERGENCY_STEERING_REAR_LEFT" 26 "EMERGENCY_STEERING_REAR_RIGHT" 33 "DRIVE_CAREFULLY"; VAL_ 353 ALERTS_2 0 "HIDDEN" 1 "KEEP_HANDS_ON_STEERING_WHEEL" 2 "KEEP_HANDS_ON_STEERING_WHEEL_RED" 3 "LANE_FOLLOWING_ASSIST_DEACTIVATED" 4 "HIGHWAY_DRIVING_ASSIST_DEACTIVATED" 5 "CONSIDER_TAKING_A_BREAK" 6 "PRESS_OK_BUTTON_TO_ENABLE_LANE_CHANGE_ASSIST" 7 "COLLISION_RISK_VEHICLE_TAKING_EMERGENCY_CONTROL" 8 "TAKE_CONTROL_OF_THE_VEHICLE_IMMEDIATELY_VEHICLE_IS_STOPPING" 9 "TAKE_CONTROL_OF_THE_VEHICLE_IMMEDIATELY" 11 "HIGHWAY_DRIVING_PILOT_SYSTEM_DEACTIVATED_AUDIBLE" 12 "KEEP_YOUR_EYES_ON_THE_ROAD" 13 "HIGHWAY_DRIVING_PILOT_CONDITIONS_NOT_MET_AUDIBLE" 14 "COLLISION_RISK_VEHICLE_TAKING_EMERGENCY_CONTROL" 15 "SET_THE_WIPER_AND_LIGHT_CONTROLS_TO_AUTO" 16 "BE_PREPARED_TO_TAKE_CONTROL_OF_THE_VEHICLE_AT_ANY_TIME" 21 "TAKE_CONTROL_OF_THE_VEHICLE_IMMEDIATELY_VEHICLE_IS_STOPPING" 10 "TAKE_CONTROL_OF_THE_VEHICLE_IMMEDIATELY"; VAL_ 353 ALERTS_3 0 "HIDDEN" 1 "AUTOMATICALLY_ADJUSTING_TO_THE_POSTED_SPEED_LIMIT" 2 "SET_SPEED_CHANGED" 3 "AUTOMATICALLY_ADJUSTING_TO_THE_POSTED_SPEED_LIMIT" 4 "SET_SPEED_CHANGED" 7 "DISTANCE_1" 8 "DISTANCE_2" 9 "DISTANCE_3" 10 "DISTANCE_4" 17 "DRIVE_CAREFULLY" 18 "CHECK_SURROUNDINGS" 19 "CONDITIONS_NOT_MET" 20 "LANES_NOT_DETECTED" 21 "CURVE_TOO_SHARP" 22 "LANE_TOO_NARROW" 23 "ROAD_TYPE_NOT_SUPPORTED" 24 "UNAVAILABLE_WITH_HAZARD_LIGHTS_ON" 25 "VEHICLE_SPEED_IS_TOO_LOW" 26 "KEEP_HANDS_ON_STEERING_WHEEL" 27 "LANE_TYPE_NOT_SUPPORTED" 28 "LANE_ASSIST_CANCELED_STEERING_INPUT_DETECTED"; @@ -1016,24 +1006,30 @@ VAL_ 353 SOUNDS_1 0 "NONE" 3 "FAST BEEP" 6 "CONSTANT BEEP"; VAL_ 353 SOUNDS_2 0 "NONE" 2 "SINGLE CHIME" 3 "CONSTANT CHIME" 6 "FAST BEEP"; VAL_ 353 SOUNDS_3 0 "NONE" 3 "SOFT CHIME" 5 "SINGLE CHIME"; VAL_ 353 SOUNDS_4 0 "NONE" 2 "DOUBLE CHIME"; -VAL_ 353 SETSPEED 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 6 "CYAN"; VAL_ 353 SETSPEED_HUD 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 5 "CYAN"; VAL_ 353 DISTANCE_LEAD 0 "HIDDEN" 1 "GRAY" 2 "WHITE"; VAL_ 353 DISTANCE_CAR 0 "HIDDEN" 1 "GRAY" 2 "WHITE" 3 "CYAN"; VAL_ 353 DISTANCE_SPACING 0 "HIDDEN" 1 "BLUE" 3 "WHITE" 5 "CYAN"; +VAL_ 353 SETSPEED 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 6 "CYAN"; +VAL_ 353 HDA_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 5 "CYAN HDP"; +VAL_ 353 SLA_ICON 0 "HIDDEN" 1 "WHITE UP" 2 "WHITE DOWN" 3 "GREEN UP" 4 "GREEN DOWN"; +VAL_ 353 NAV_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 4 "WHITE"; +VAL_ 353 LFA_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 3 "WHITE" 5 "CYAN"; +VAL_ 353 LCA_LEFT_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 4 "WHITE"; +VAL_ 353 LCA_RIGHT_ICON 0 "HIDDEN" 1 "GRAY" 2 "GREEN" 4 "WHITE"; VAL_ 353 BACKGROUND 0 "HIDDEN" 1 "BLUE" 3 "ORANGE" 4 "FLASHING ORANGE" 6 "FLASHING RED" 7 "GRAY"; +VAL_ 353 DAW_ICON 0 "HIDDEN" 1 "ORANGE"; VAL_ 353 CAR_CIRCLE 0 "HIDDEN" 1 "GRAY" 2 "CYAN"; - VAL_ 354 COUNTRY 0 "HIDDEN" 1 "SOUTH_KOREA" 4 "INTL" 5 "JAPAN" 6 "CANADA" 7 "USA" 8 "CHINA" 9 "INTL"; -VAL_ 354 SIGNS 0 "HIDDEN" 1 "PEDESTRIAN_CROSSING" 2 "SCHOOL_CROSSWALK" 8 "STOP" 9 "YIELD" 16 "DO_NOT_PASS" 19 "DO_NOT_ENTER" 24 "ROUNDABOUT" 26 "RIGHT_CURVE_AHEAD" 27 "LEFT_CURVE_AHEAD" 28 "SLIGHT_RIGHT_CURVE_AHEAD" 29 "SLIGHT_LEFT_CURVE_AHEAD"; VAL_ 354 SPEEDLIMIT_FLASH 0 "HIDDEN" 1 "ERROR" 2 "NORMAL" 4 "RED"; +VAL_ 354 SIGNS 0 "HIDDEN" 1 "PEDESTRIAN_CROSSING" 2 "SCHOOL_CROSSWALK" 8 "STOP" 9 "YIELD" 16 "DO_NOT_PASS" 19 "DO_NOT_ENTER" 24 "ROUNDABOUT" 26 "RIGHT_CURVE_AHEAD" 27 "LEFT_CURVE_AHEAD" 28 "SLIGHT_RIGHT_CURVE_AHEAD" 29 "SLIGHT_LEFT_CURVE_AHEAD"; VAL_ 354 SPEEDLIMIT_WEATHER 0 "HIDDEN" 1 "RAIN" 2 "SNOW" 3 "RAIN+SNOW" 4 "TRAILER"; VAL_ 354 VIBRATE 0 "NONE" 1 "VIBRATE"; VAL_ 354 FF_DETECT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "GRAY CAR" 4 "WHITE CAR" 5 "GRAY TRUCK" 6 "WHITE TRUCK" 7 "GRAY PERSON" 8 "WHITE PERSON" 9 "GRAY BICYCLE" 10 "WHITE BICYCLE" 11 "GRAY MOTORCYCLE" 12 "WHITE MOTORCYCLE" 13 "DARK CONE" 14 "ORANGE CONE"; VAL_ 354 FF_DETECT_ALT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "DIM CONE" 4 "ORANGE CONE"; VAL_ 354 LF_DETECT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "GRAY CAR" 4 "WHITE CAR" 5 "GRAY TRUCK" 6 "WHITE TRUCK" 7 "GRAY PERSON" 8 "WHITE PERSON" 9 "GRAY BICYCLE" 10 "WHITE BICYCLE" 11 "GRAY MOTORCYCLE" 12 "WHITE MOTORCYCLE" 13 "DARK CONE" 14 "ORANGE CONE"; -VAL_ 354 LR_DETECT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "GRAY CAR" 4 "WHITE CAR" 5 "GRAY TRUCK" 6 "WHITE TRUCK" 7 "GRAY PERSON" 8 "WHITE PERSON" 9 "GRAY BICYCLE" 10 "WHITE BICYCLE" 11 "GRAY MOTORCYCLE" 12 "WHITE MOTORCYCLE" 13 "DARK CONE" 14 "ORANGE CONE"; VAL_ 354 RF_DETECT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "GRAY CAR" 4 "WHITE CAR" 5 "GRAY TRUCK" 6 "WHITE TRUCK" 7 "GRAY PERSON" 8 "WHITE PERSON" 9 "GRAY BICYCLE" 10 "WHITE BICYCLE" 11 "GRAY MOTORCYCLE" 12 "WHITE MOTORCYCLE" 13 "DARK CONE" 14 "ORANGE CONE"; +VAL_ 354 LR_DETECT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "GRAY CAR" 4 "WHITE CAR" 5 "GRAY TRUCK" 6 "WHITE TRUCK" 7 "GRAY PERSON" 8 "WHITE PERSON" 9 "GRAY BICYCLE" 10 "WHITE BICYCLE" 11 "GRAY MOTORCYCLE" 12 "WHITE MOTORCYCLE" 13 "DARK CONE" 14 "ORANGE CONE"; VAL_ 354 RR_DETECT 0 "HIDDEN" 1 "GRAY BOX" 2 "WHITE BOX" 3 "GRAY CAR" 4 "WHITE CAR" 5 "GRAY TRUCK" 6 "WHITE TRUCK" 7 "GRAY PERSON" 8 "WHITE PERSON" 9 "GRAY BICYCLE" 10 "WHITE BICYCLE" 11 "GRAY MOTORCYCLE" 12 "WHITE MOTORCYCLE" 13 "DARK CONE" 14 "ORANGE CONE"; VAL_ 354 FAULT_FSS 0 "HIDDEN" 1 "CHECK_FORWARD_SAFETY_SYSTEM" 2 "FORWARD_SAFETY_SYSTEM_LIMITED_CAMERA_OBSCURED" 3 "FORWARD_SAFETY_SYSTEM_LIMITED_RADAR_BLOCKED"; VAL_ 354 FAULT_FCA 0 "HIDDEN" 1 "CHECK_FORWARD_SIDE_SAFETY_SYSTEM" 2 "FORWARD_SIDE_SAFETY_SYSTEM_LIMITED_CAMERA_OBSCURED" 3 "FORWARD_SIDE_SAFETY_SYSTEM_LIMITED_RADAR_BLOCKED"; @@ -1048,31 +1044,30 @@ VAL_ 354 FAULT_LCA 0 "HIDDEN" 1 "CHECK_LANE_CHANGE_ASSIST_FUNCTION" 2 "LANE_CHAN VAL_ 354 FAULT_HDP 0 "HIDDEN" 1 "CHECK_HIGHWAY_DRIVING_PILOT_SYSTEM" 2 "HIGHWAY_DRIVING_PILOT_DISABLED_CAMERA_OBSCURED" 3 "HIGHWAY_DRIVING_PILOT_DISABLED_RADAR_BLOCKED" 4 "HIGHWAY_DRIVING_PILOT_DISABLED_LIDAR_BLOCKED"; VAL_ 354 FAULT_DAS 0 "HIDDEN" 1 "CHECK_DRIVER_ASSISTANCE_SYSTEM" 2 "DRIVER_ASSISTANCE_SYSTEM_LIMITED_CAMERA_OBSCURED" 3 "DRIVER_ASSISTANCE_SYSTEM_LIMITED_RADAR_BLOCKED" 4 "DRIVER_ASSISTANCE_SYSTEM_LIMITED_CAMERA_OBSCURED_AND_RADAR_BLOCKED"; VAL_ 354 FAULT_ESS 0 "HIDDEN" 1 "CHECK_EMERGENCY_STOPPING_FUNCTION" 2 "EMERGENCY_STOPPING_FUNCTION_DISABLED_CAMERA_OBSCURED" 3 "EMERGENCY_STOPPING_FUNCTION_DISABLED_RADAR_BLOCKED"; - VAL_ 362 BLINKER_CONTROL 1 "hazards" 2 "hazards button backlight" 3 "left blinkers" 4 "right blinkers"; +VAL_ 373 SCC_OptTyp 0 "SCC is not equipped" 1 "SCC is equipped" 2 "Not used" 3 "Error Indicator"; VAL_ 373 ACCEnable 0 "SCC ready" 1 "SCC temp fault" 2 "SCC permanent fault" 3 "SCC permanent fault, communication issue"; -VAL_ 373 SCC_OptTyp 0 "SCC is not equipped" 1 "SCC is equipped" 2 "Not used" 3 "Error Indicator" ; -VAL_ 373 SCC_ReqLimSta 0 "No request" 1 "Limited No Limitation" 2 "Acceleration Limited" 3 "Deceleration Limited" ; -VAL_ 373 ESC_StdStillVal 0 "No stand still detected" 1 "stand still detected" 2 "Not used" 3 "Error Indicator" ; -VAL_ 373 ESC_DclEnblReq 0 "Disable deceleration control" 1 "Enable deceleration control" 2 "Not used" 3 "Error Indicator" ; -VAL_ 373 ESC_PrkBrkActvSta 0 "Parking brake is not activated" 1 "Parking brake is activated" 2 "Not used" 3 "Error Indicator" ; -VAL_ 373 FCA_EquipSta 0 "FCA is not equipped" 1 "FCA is equipped" 2 "Not used" 3 "Error Indicator" ; -VAL_ 373 FCA_AvlblSta 0 "Available" 1 "Temporarily not available" 2 "Permanently not available" 3 "FCA Communication Error" ; -VAL_ 416 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault" 4 "cancelled" ; -VAL_ 426 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume" ; -VAL_ 463 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume" ; +VAL_ 373 SCC_ReqLimSta 0 "No request" 1 "Limited No Limitation" 2 "Acceleration Limited" 3 "Deceleration Limited"; +VAL_ 373 ESC_StdStillVal 0 "No stand still detected" 1 "stand still detected" 2 "Not used" 3 "Error Indicator"; +VAL_ 373 ESC_DclEnblReq 0 "Disable deceleration control" 1 "Enable deceleration control" 2 "Not used" 3 "Error Indicator"; +VAL_ 373 ESC_PrkBrkActvSta 0 "Parking brake is not activated" 1 "Parking brake is activated" 2 "Not used" 3 "Error Indicator"; +VAL_ 373 FCA_EquipSta 0 "FCA is not equipped" 1 "FCA is equipped" 2 "Not used" 3 "Error Indicator"; +VAL_ 373 FCA_AvlblSta 0 "Available" 1 "Temporarily not available" 2 "Permanently not available" 3 "FCA Communication Error"; +VAL_ 416 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault" 4 "cancelled"; +VAL_ 426 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume"; +VAL_ 463 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume"; VAL_ 463 RIGHT_PADDLE 0 "Not Pulled" 1 "Pulled"; VAL_ 463 LEFT_PADDLE 0 "Not Pulled" 1 "Pulled"; -VAL_ 480 HDA_OptUsmSta 0 "Not Applied" 1 "Function Off" 2 "Function On" 3 "Reserved" 4 "Reserved" 5 "Reserved" 6 "Reserved" 7 "Invalid (Fail)" ; -VAL_ 480 LFA_OptUsmSta 0 "Not Applied" 1 "Function Off" 2 "Function On" 3 "Reserved" 4 "Reserved" 5 "Reserved" 6 "Reserved" 7 "Invalid (Fail)" ; -VAL_ 480 HDA_CntrlModSta 0 "System Deactive (Default)" 1 "System Ready" 2 "System Active" 3 "Reserved" ; -VAL_ 480 HDA_InfoPUDis 0 "No pop-up" 1 "system start pop-up" 2 "system auto disengaged pop-up by highway off" 3 "system auto disengaged pop-up" 4 "system Fail pop-up" 5 "Hands-off pop up" 6 "Hands-off pop up w/ sound" 7 "System Automatic off" ; -VAL_ 480 HDA_AutoSetSpdSta 0 "Auto Set Speed Off" 1 "Auto Set Speed On" 2 "Reserved" 3 "Error indicator" ; -VAL_ 480 HDA_AutoSetSpdUpdtSta 0 "Auto Set Speed Update Off" 1 "Auto Set Speed Update On" 2 "Reserved" 3 "Error indicator" ; -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_ 480 HDA_OptUsmSta 0 "Not Applied" 1 "Function Off" 2 "Function On" 3 "Reserved" 4 "Reserved" 5 "Reserved" 6 "Reserved" 7 "Invalid (Fail)"; +VAL_ 480 LFA_OptUsmSta 0 "Not Applied" 1 "Function Off" 2 "Function On" 3 "Reserved" 4 "Reserved" 5 "Reserved" 6 "Reserved" 7 "Invalid (Fail)"; +VAL_ 480 HDA_CntrlModSta 0 "System Deactive (Default)" 1 "System Ready" 2 "System Active" 3 "Reserved"; +VAL_ 480 HDA_InfoPUDis 0 "No pop-up" 1 "system start pop-up" 2 "system auto disengaged pop-up by highway off" 3 "system auto disengaged pop-up" 4 "system Fail pop-up" 5 "Hands-off pop up" 6 "Hands-off pop up w/ sound" 7 "System Automatic off"; +VAL_ 480 HDA_AutoSetSpdSta 0 "Auto Set Speed Off" 1 "Auto Set Speed On" 2 "Reserved" 3 "Error indicator"; +VAL_ 480 HDA_AutoSetSpdUpdtSta 0 "Auto Set Speed Update Off" 1 "Auto Set Speed Update On" 2 "Reserved" 3 "Error indicator"; +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 HDA_MODE2 1 "Lane change icon gray" 2 "lane green + lane change icon green" 3 "lane green + lane change icon green (both blinking)" 4 "lane white + lane change icon white (both blinking rapidly)" 5 "Lane Change Assist system check warning"; VAL_ 490 LANE_LEFT 0 "IDLE" 1 "ON_SOURCE" 2 "ON_TARGET"; VAL_ 490 LANE_RIGHT 0 "IDLE" 1 "ON_SOURCE" 2 "ON_TARGET"; @@ -1094,9 +1089,11 @@ VAL_ 866 LEFT_LANE_LINE 0 "Not Detected" 1 "Low Confidence" 2 "Medium Confidence VAL_ 866 RIGHT_LANE_LINE 0 "Not Detected" 1 "Low Confidence" 2 "Medium Confidence" 3 "High Confidence"; VAL_ 1041 DRIVER_DOOR 0 "Closed" 1 "Opened"; VAL_ 1041 PASSENGER_DOOR 0 "Closed" 1 "Opened"; +VAL_ 1041 PASSENGER_SEATBELT 0 "Unlatched" 1 "Latched"; +VAL_ 1041 DRIVER_SEATBELT 0 "Unlatched" 1 "Latched"; VAL_ 1041 DRIVER_REAR_DOOR 0 "Closed" 1 "Opened"; VAL_ 1041 PASSENGER_REAR_DOOR 0 "Closed" 1 "Opened"; -VAL_ 1041 DRIVER_SEATBELT 0 "Unlatched" 1 "Latched"; -VAL_ 1041 PASSENGER_SEATBELT 0 "Unlatched" 1 "Latched"; +VAL_ 1079 TRAILER_CONNECTED 1 "CONNECTED" 0 "DISCONNECTED"; + VAL_ 1144 DRIVE_MODE2 3 "Set Sport" 1 "Set Normal" 2 "Set Eco"; VAL_ 1240 DISTANCE_UNIT 1 "Miles" 0 "Kilometers"; diff --git a/selfdrive/controls/lib/desire_helper.py b/selfdrive/controls/lib/desire_helper.py index 99b8170b76a..53d1668f5db 100644 --- a/selfdrive/controls/lib/desire_helper.py +++ b/selfdrive/controls/lib/desire_helper.py @@ -227,9 +227,18 @@ def update(self, carstate, modeldata, lateral_active, lane_change_prob, carrotMa v_ego = carstate.vEgo below_lane_change_speed = v_ego < LANE_CHANGE_SPEED_MIN + trailer_maneuver_blocked = carstate.trailerConnected # per-side compute (좌/우 모두) self._process_sides(carstate, modeldata, radarState) + if trailer_maneuver_blocked: + self.left.lane_change_available = False + self.right.lane_change_available = False + self.lane_change_available_left = False + self.lane_change_available_right = False + self.auto_lane_change_enable = False + self.next_lane_change = False + self.desireLog = "TRAILER:MANEUVER_BLOCKED" # desire state from model self._check_desire_state(modeldata, carstate, self.maneuver_type) @@ -263,7 +272,7 @@ def update(self, carstate, modeldata, lateral_active, lane_change_prob, carrotMa # auto lane change trigger (기존 로직 유지하되 side 기반) auto_lane_change_trigger = False - if desire_enabled and side is not None: + if desire_enabled and side is not None and not trailer_maneuver_blocked: # carrot_lane_change_count>0이면 강제 허용 if self.carrot_lane_change_count > 0: auto_lane_change_trigger = side.lane_change_available @@ -288,7 +297,7 @@ def update(self, carstate, modeldata, lateral_active, lane_change_prob, carrotMa self.next_lane_change = False # ───────────────────────── FSM ───────────────────────── - if not lateral_active or self.lane_change_timer > LANE_CHANGE_TIME_MAX: + if not lateral_active or self.lane_change_timer > LANE_CHANGE_TIME_MAX or trailer_maneuver_blocked: self.lane_change_state = LaneChangeState.off self.lane_change_direction = LaneChangeDirection.none self.turn_direction = TurnDirection.none @@ -314,6 +323,9 @@ def update(self, carstate, modeldata, lateral_active, lane_change_prob, carrotMa else: new_type = "none" + if trailer_maneuver_blocked and new_type in ("lane_change", "turn"): + new_type = "none" + # switching rules if self.maneuver_type == "lane_change" and new_type == "turn" and self.lane_change_state not in ( LaneChangeState.preLaneChange, LaneChangeState.laneChangeStarting diff --git a/selfdrive/debug/trailer_steering_probe.py b/selfdrive/debug/trailer_steering_probe.py new file mode 100755 index 00000000000..ae8f6dbaa3a --- /dev/null +++ b/selfdrive/debug/trailer_steering_probe.py @@ -0,0 +1,270 @@ +#!/usr/bin/env python3 +""" +Capture openpilot lateral-control state and selected Hyundai CAN-FD messages. + +Run from the openpilot checkout on the comma device: + + python3 selfdrive/debug/trailer_steering_probe.py --label no_trailer --duration 30 + python3 selfdrive/debug/trailer_steering_probe.py --label trailer_idle --duration 30 + python3 selfdrive/debug/trailer_steering_probe.py --label trailer_drive --duration 60 + +The script writes: +