From b5340a3f3dd94610f2f46cf12cd2490a2be539ec Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Wed, 29 Apr 2026 23:11:46 -0500 Subject: [PATCH] blinky --- opendbc_repo/opendbc/car/hyundai/carcontroller.py | 7 ++++++- opendbc_repo/opendbc/car/hyundai/carstate.py | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/opendbc_repo/opendbc/car/hyundai/carcontroller.py b/opendbc_repo/opendbc/car/hyundai/carcontroller.py index 12d35788b..5b56014a3 100644 --- a/opendbc_repo/opendbc/car/hyundai/carcontroller.py +++ b/opendbc_repo/opendbc/car/hyundai/carcontroller.py @@ -21,6 +21,7 @@ MAX_ANGLE = 85 MAX_ANGLE_FRAMES = 89 MAX_ANGLE_CONSECUTIVE_FRAMES = 2 CANFD_BLINDSPOT_STATUS_STALE_NS = 200_000_000 +CANFD_BLINKER_STALKS_STALE_NS = 200_000_000 HYUNDAI_CANFD_SCC_ACCEL_STEP = 5.0 / 50.0 HYUNDAI_CANFD_SCC_DECEL_STEP = 12.5 / 50.0 IONIQ_6_LONG_MIN_JERK = 0.5 @@ -348,12 +349,16 @@ class CarController(CarControllerBase): lane_change_ui_side = "left" elif CC.rightBlinker and not CC.leftBlinker: lane_change_ui_side = "right" + stock_blinker_stalks_live = now_nanos - CS.stock_blinker_stalks_ts <= CANFD_BLINKER_STALKS_STALE_NS if lane_change_ui_side != self._ioniq_6_lane_change_ui_side: self._ioniq_6_lane_change_ui_side = lane_change_ui_side self._ioniq_6_lane_change_ui_trigger_frames = 6 if lane_change_ui_side is not None else 0 - if lane_change_ui_side is not None: + if stock_blinker_stalks_live: + self._ioniq_6_lane_change_ui_trigger_frames = 0 + + if lane_change_ui_side is not None and not stock_blinker_stalks_live: trigger = self._ioniq_6_lane_change_ui_trigger_frames > 0 can_sends.extend(hyundaicanfd.create_ioniq_6_cluster_lane_change_messages(self.CAN, self.frame, lane_change_ui_side, trigger)) diff --git a/opendbc_repo/opendbc/car/hyundai/carstate.py b/opendbc_repo/opendbc/car/hyundai/carstate.py index 3dd2b355b..ce9770a20 100644 --- a/opendbc_repo/opendbc/car/hyundai/carstate.py +++ b/opendbc_repo/opendbc/car/hyundai/carstate.py @@ -88,6 +88,7 @@ class CarState(CarStateBase): self.cruise_info = {} self.stock_lfa_msg = {} self.stock_lfahda_cluster_msg = {} + self.stock_blinker_stalks_ts = 0 self.blindspots_rear_corners = {} self.blindspots_front_corner_1 = {} self.blindspots_rear_corners_ts = 0 @@ -365,6 +366,8 @@ class CarState(CarStateBase): self.stock_lfa_msg = copy.copy(cp.vl["LFA"]) if cp.ts_nanos["LFAHDA_CLUSTER"]["CHECKSUM"] > 0: self.stock_lfahda_cluster_msg = copy.copy(cp.vl["LFAHDA_CLUSTER"]) + if cp.ts_nanos["BLINKER_STALKS"]["CHECKSUM_MAYBE"] > 0: + self.stock_blinker_stalks_ts = cp.ts_nanos["BLINKER_STALKS"]["CHECKSUM_MAYBE"] ret.buttonEvents = [*create_button_events(self.cruise_buttons[-1], prev_cruise_buttons, BUTTONS_DICT), *create_button_events(self.main_buttons[-1], prev_main_buttons, {1: ButtonType.mainCruise}), @@ -408,6 +411,7 @@ class CarState(CarStateBase): msgs += [ ("LFA", 0), # optional: may stop once OP takes over, but preserve stock UI fields when present ("LFAHDA_CLUSTER", 0), # optional: carries cluster icon state on some variants + ("BLINKER_STALKS", 0), # optional: some trims publish live stalk/light state on ECAN during turn camera events ] if CP.flags & HyundaiFlags.EV: msgs.append(("DRIVE_MODE_EV", 0)) # optional: not all CAN-FD EV variants publish drive mode