From 3fe33cbe97087c8ce2ae0bd86e746f7e72aea0c9 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Fri, 13 Feb 2026 11:33:52 -0500 Subject: [PATCH] [TIZI/TICI] ui: fix toggle states and simplify blindspots/turn signals updates (#1692) * [TIZI/TICI] ui: fix toggle states and simplify blindspots/turn signals updates * more --- selfdrive/ui/sunnypilot/onroad/turn_signal.py | 74 ++++--------------- 1 file changed, 15 insertions(+), 59 deletions(-) diff --git a/selfdrive/ui/sunnypilot/onroad/turn_signal.py b/selfdrive/ui/sunnypilot/onroad/turn_signal.py index 04fff7db76..bd1aa7ee10 100644 --- a/selfdrive/ui/sunnypilot/onroad/turn_signal.py +++ b/selfdrive/ui/sunnypilot/onroad/turn_signal.py @@ -72,72 +72,28 @@ class TurnSignalWidget(Widget): class TurnSignalController: - def __init__(self, config: TurnSignalConfig | None = None): - self._config = config or TurnSignalConfig() + def __init__(self): + self._config = TurnSignalConfig() self._left_signal = TurnSignalWidget(direction=IconSide.left) self._right_signal = TurnSignalWidget(direction=IconSide.right) - self._last_icon_side = None + + @staticmethod + def _update_signal(signal, blindspot, blinker): + if ui_state.blindspot and blindspot: + signal.activate('blind_spot') + elif ui_state.turn_signals and blinker: + signal.activate('signal') + else: + signal.deactivate() def update(self): - sm = ui_state.sm - ss = sm['selfdriveState'] + CS = ui_state.sm['carState'] - event_name = ss.alertType.split('/')[0] if ss.alertType else '' - - if event_name == 'preLaneChangeLeft': - self._last_icon_side = IconSide.left - self._left_signal.activate('signal') - self._right_signal.deactivate() - - elif event_name == 'preLaneChangeRight': - self._last_icon_side = IconSide.right - self._right_signal.activate('signal') - self._left_signal.deactivate() - - elif event_name == 'laneChange': - if self._last_icon_side == IconSide.left: - self._left_signal.activate('signal') - self._right_signal.deactivate() - elif self._last_icon_side == IconSide.right: - self._right_signal.activate('signal') - self._left_signal.deactivate() - - elif event_name == 'laneChangeBlocked': - CS = sm['carState'] - if CS.leftBlinker: - icon_side = IconSide.left - elif CS.rightBlinker: - icon_side = IconSide.right - else: - icon_side = self._last_icon_side - - if icon_side == IconSide.left: - self._left_signal.activate('blind_spot') - self._right_signal.deactivate() - elif icon_side == IconSide.right: - self._right_signal.activate('blind_spot') - self._left_signal.deactivate() - - else: - self._last_icon_side = None - CS = sm['carState'] - - if CS.leftBlindspot: - self._left_signal.activate('blind_spot') - elif CS.leftBlinker: - self._left_signal.activate('signal') - else: - self._left_signal.deactivate() - - if CS.rightBlindspot: - self._right_signal.activate('blind_spot') - elif CS.rightBlinker: - self._right_signal.activate('signal') - else: - self._right_signal.deactivate() + self._update_signal(self._left_signal, CS.leftBlindspot, CS.leftBlinker) + self._update_signal(self._right_signal, CS.rightBlindspot, CS.rightBlinker) def render(self, rect: rl.Rectangle): - if not ui_state.turn_signals: + if not ui_state.turn_signals and not ui_state.blindspot: return x = rect.x + rect.width / 2