mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-07-15 13:12:07 +08:00
big
This commit is contained in:
@@ -10,7 +10,7 @@ from openpilot.selfdrive.ui.mici.onroad.hud_renderer import HudRenderer
|
||||
from openpilot.selfdrive.ui.mici.onroad.model_renderer import ModelRenderer
|
||||
from openpilot.selfdrive.ui.mici.onroad.confidence_ball import ConfidenceBall
|
||||
from openpilot.selfdrive.ui.mici.onroad.cameraview import CameraView
|
||||
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_status
|
||||
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_onroad_status
|
||||
from openpilot.system.ui.lib.application import FontWeight, gui_app, MousePos, MouseEvent
|
||||
from openpilot.system.ui.widgets.label import UnifiedLabel
|
||||
from openpilot.system.ui.widgets import Widget
|
||||
@@ -160,10 +160,10 @@ class AugmentedRoadView(CameraView):
|
||||
text_color=rl.Color(255, 255, 255, int(255 * 0.9)),
|
||||
alignment=rl.GuiTextAlignment.TEXT_ALIGN_CENTER,
|
||||
alignment_vertical=rl.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE)
|
||||
self._radar_tracks_label = UnifiedLabel("radar: none", 18, FontWeight.SEMI_BOLD,
|
||||
self._radar_tracks_label = UnifiedLabel("range: none\ntracks: none", 26, FontWeight.SEMI_BOLD,
|
||||
text_color=rl.Color(0, 255, 64, 255),
|
||||
alignment=rl.GuiTextAlignment.TEXT_ALIGN_RIGHT,
|
||||
alignment_vertical=rl.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE,
|
||||
alignment=rl.GuiTextAlignment.TEXT_ALIGN_LEFT,
|
||||
alignment_vertical=rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP,
|
||||
wrap_text=False)
|
||||
|
||||
self._fade_texture = gui_app.texture("icons_mici/onroad/onroad_fade.png")
|
||||
@@ -176,10 +176,10 @@ class AugmentedRoadView(CameraView):
|
||||
super()._update_state()
|
||||
|
||||
if ui_state.sm.updated["liveTracks"]:
|
||||
status = format_radar_tracks_status(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else "none"
|
||||
self._radar_tracks_label.set_text(f"radar: {status}")
|
||||
status = format_radar_tracks_onroad_status(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else "range: none\ntracks: none"
|
||||
self._radar_tracks_label.set_text(status)
|
||||
elif not ui_state.sm.alive["liveTracks"]:
|
||||
self._radar_tracks_label.set_text("radar: none")
|
||||
self._radar_tracks_label.set_text("range: none\ntracks: none")
|
||||
|
||||
# update offroad label
|
||||
if ui_state.panda_type == log.PandaState.PandaType.unknown:
|
||||
@@ -237,14 +237,14 @@ class AugmentedRoadView(CameraView):
|
||||
self._content_rect.x + 78,
|
||||
self._content_rect.y + 8,
|
||||
self._content_rect.width - 90,
|
||||
34,
|
||||
70,
|
||||
)
|
||||
rl.draw_rectangle_rounded(radar_status_rect, 0.5, 8, rl.Color(0, 0, 0, 170))
|
||||
self._radar_tracks_label.render(rl.Rectangle(
|
||||
radar_status_rect.x + 8,
|
||||
radar_status_rect.y,
|
||||
radar_status_rect.y + 5,
|
||||
radar_status_rect.width - 16,
|
||||
radar_status_rect.height,
|
||||
radar_status_rect.height - 10,
|
||||
))
|
||||
|
||||
alert_to_render, not_animating_out = self._alert_renderer.will_render()
|
||||
|
||||
@@ -8,8 +8,12 @@ import math
|
||||
import pyray as rl
|
||||
|
||||
|
||||
def _radar_track_ranges(live_tracks) -> list[tuple[int, int]]:
|
||||
return sorted({(source.startAddress, source.endAddress) for source in live_tracks.trackSources})
|
||||
|
||||
|
||||
def format_radar_tracks_status(live_tracks) -> str:
|
||||
ranges = sorted({(source.startAddress, source.endAddress) for source in live_tracks.trackSources})
|
||||
ranges = _radar_track_ranges(live_tracks)
|
||||
if not ranges:
|
||||
return "none"
|
||||
|
||||
@@ -19,6 +23,15 @@ def format_radar_tracks_status(live_tracks) -> str:
|
||||
return f"{range_text} · {track_count} {track_label}"
|
||||
|
||||
|
||||
def format_radar_tracks_onroad_status(live_tracks) -> str:
|
||||
ranges = _radar_track_ranges(live_tracks)
|
||||
if not ranges:
|
||||
return "range: none\ntracks: none"
|
||||
|
||||
range_text = ", ".join(f"0x{start:X}-0x{end:X}" for start, end in ranges)
|
||||
return f"range: {range_text}\ntracks: {len(live_tracks.points)}"
|
||||
|
||||
|
||||
class RadarTracks:
|
||||
def draw_radar_tracks(self, live_tracks, map_to_screen, path_offset_z, track_size=6):
|
||||
for track in live_tracks.points:
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
from cereal import car
|
||||
|
||||
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_status
|
||||
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_onroad_status, format_radar_tracks_status
|
||||
|
||||
|
||||
def test_format_radar_tracks_status_none():
|
||||
live_tracks = car.RadarData.new_message()
|
||||
|
||||
assert format_radar_tracks_status(live_tracks) == "none"
|
||||
assert format_radar_tracks_onroad_status(live_tracks) == "range: none\ntracks: none"
|
||||
|
||||
|
||||
def test_format_radar_tracks_status_range_and_count():
|
||||
@@ -15,6 +16,7 @@ def test_format_radar_tracks_status_range_and_count():
|
||||
live_tracks.init("points", 2)
|
||||
|
||||
assert format_radar_tracks_status(live_tracks) == "0x500-0x51F · 2 tracks"
|
||||
assert format_radar_tracks_onroad_status(live_tracks) == "range: 0x500-0x51F\ntracks: 2"
|
||||
|
||||
|
||||
def test_format_radar_tracks_status_deduplicates_and_sorts_ranges():
|
||||
|
||||
Reference in New Issue
Block a user