From b7f9803035f63c4cd5d74b22497a16deca85dc2a Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 26 Jan 2026 01:07:54 -0500 Subject: [PATCH] match cur --- .../ui/sunnypilot/onroad/speed_limit_ui.py | 21 +++++++++---------- selfdrive/ui/sunnypilot/ui_state.py | 1 + 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/selfdrive/ui/sunnypilot/onroad/speed_limit_ui.py b/selfdrive/ui/sunnypilot/onroad/speed_limit_ui.py index 9c4611d1a9..abcd4ef9fd 100644 --- a/selfdrive/ui/sunnypilot/onroad/speed_limit_ui.py +++ b/selfdrive/ui/sunnypilot/onroad/speed_limit_ui.py @@ -9,10 +9,12 @@ from dataclasses import dataclass import math import pyray as rl +from cereal import custom from openpilot.common.constants import CV from openpilot.common.filter_simple import FirstOrderFilter from openpilot.selfdrive.ui.onroad.hud_renderer import UI_CONFIG from openpilot.selfdrive.ui.ui_state import ui_state +from openpilot.sunnypilot.selfdrive.controls.lib.speed_limit.common import Mode as SpeedLimitMode from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.system.ui.lib.multilang import tr from openpilot.system.ui.lib.text_measure import measure_text_cached @@ -22,6 +24,8 @@ METER_TO_FOOT = 3.28084 METER_TO_MILE = 0.000621371 AHEAD_THRESHOLD = 5 +AssistState = custom.LongitudinalPlanSP.SpeedLimit.AssistState + @dataclass(frozen=True) class Colors: @@ -34,12 +38,6 @@ class Colors: MUTCD_LINES = rl.Color(255, 255, 255, 100) -class SpeedLimitMode(IntEnum): - OFF = 0 - WARNING = 1 - ASSIST = 2 - - class SpeedLimitRenderer(Widget): def __init__(self): super().__init__() @@ -51,7 +49,7 @@ class SpeedLimitRenderer(Widget): self.speed_limit_last_valid = False self.speed_limit_final_last = 0.0 self.speed_limit_source = 0 - self.speed_limit_assist_state = 0 + self.speed_limit_assist_state = AssistState.disabled self.speed_limit_assist_active = False self.speed_limit_ahead = 0.0 @@ -127,7 +125,7 @@ class SpeedLimitRenderer(Widget): sign_rect = rl.Rectangle(x, y, width, UI_CONFIG.set_speed_height + 6 * 2) - if self.speed_limit_assist_state == 1: + if self.speed_limit_assist_state == AssistState.preActive: self.assist_frame += 1 pulse_value = 0.65 + 0.35 * math.sin(self.assist_frame * math.pi / gui_app.target_fps) alpha = self._sign_alpha_filter.update(pulse_value) @@ -135,16 +133,17 @@ class SpeedLimitRenderer(Widget): else: self.assist_frame = 0 alpha = self._sign_alpha_filter.update(1.0) - show_sign = self.speed_limit_assist_active or self.speed_limit_valid or self.speed_limit_last_valid + show_sign = ui_state.speed_limit_mode != SpeedLimitMode.OFF if show_sign: self._draw_sign_main(sign_rect, alpha) - if self.speed_limit_assist_state == 1: + if self.speed_limit_assist_state == AssistState.preActive: self._draw_pre_active_arrow(sign_rect) else: self._draw_ahead_info(sign_rect) def _draw_sign_main(self, rect, alpha=1.0): + speed_limit_warning_enabled = ui_state.speed_limit_mode >= SpeedLimitMode.WARNING has_limit = self.speed_limit_valid or self.speed_limit_last_valid is_overspeed = has_limit and round(self.speed_limit_final_last) < round(self.speed) @@ -155,7 +154,7 @@ class SpeedLimitRenderer(Widget): sub_text = f"{sign}{round(abs(self.speed_limit_offset))}" txt_color = Colors.BLACK - if is_overspeed: + if speed_limit_warning_enabled and is_overspeed: txt_color = Colors.RED elif not self.speed_limit_valid: txt_color = Colors.GREY diff --git a/selfdrive/ui/sunnypilot/ui_state.py b/selfdrive/ui/sunnypilot/ui_state.py index 9ef4e1d7c8..07f11f070d 100644 --- a/selfdrive/ui/sunnypilot/ui_state.py +++ b/selfdrive/ui/sunnypilot/ui_state.py @@ -127,6 +127,7 @@ class UIStateSP: self.chevron_metrics = self.params.get("ChevronInfo") self.active_bundle = self.params.get("ModelManager_ActiveBundle") self.custom_interactive_timeout = self.params.get("InteractivityTimeout", return_default=True) + self.speed_limit_mode = self.params.get("SpeedLimitMode") # Onroad Screen Brightness self.onroad_brightness = int(float(self.params.get("OnroadScreenOffBrightness", return_default=True)))