This commit is contained in:
royjr
2026-07-14 14:54:36 -04:00
parent 9a7d28c672
commit 572ebe35ec
4 changed files with 20 additions and 18 deletions
@@ -160,9 +160,9 @@ 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("range: none\ntracks: none", 26, FontWeight.SEMI_BOLD,
self._radar_tracks_label = UnifiedLabel("none", 26, FontWeight.SEMI_BOLD,
text_color=rl.Color(0, 255, 64, 255),
alignment=rl.GuiTextAlignment.TEXT_ALIGN_LEFT,
alignment=rl.GuiTextAlignment.TEXT_ALIGN_RIGHT,
alignment_vertical=rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP,
wrap_text=False)
@@ -176,10 +176,10 @@ class AugmentedRoadView(CameraView):
super()._update_state()
if ui_state.sm.updated["liveTracks"]:
status = format_radar_tracks_onroad_status(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else "range: none\ntracks: none"
status = format_radar_tracks_onroad_status(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else "none"
self._radar_tracks_label.set_text(status)
elif not ui_state.sm.alive["liveTracks"]:
self._radar_tracks_label.set_text("range: none\ntracks: none")
self._radar_tracks_label.set_text("none")
# update offroad label
if ui_state.panda_type == log.PandaState.PandaType.unknown:
@@ -233,11 +233,13 @@ class AugmentedRoadView(CameraView):
rl.draw_texture_ex(self._fade_texture, rl.Vector2(self._content_rect.x, self._content_rect.y), 0.0, 1.0, rl.WHITE)
if ui_state.radar_tracks:
radar_status_width = self._content_rect.width - 90
radar_status_height = max(42, self._radar_tracks_label.get_content_height(int(radar_status_width - 16)) + 10)
radar_status_rect = rl.Rectangle(
self._content_rect.x + 78,
self._content_rect.y + 8,
self._content_rect.width - 90,
70,
radar_status_width,
radar_status_height,
)
rl.draw_rectangle_rounded(radar_status_rect, 0.5, 8, rl.Color(0, 0, 0, 170))
self._radar_tracks_label.render(rl.Rectangle(
@@ -24,12 +24,11 @@ def format_radar_tracks_status(live_tracks) -> str:
def format_radar_tracks_onroad_status(live_tracks) -> str:
ranges = _radar_track_ranges(live_tracks)
if not ranges:
return "range: none\ntracks: none"
sources = sorted(live_tracks.trackSources, key=lambda source: (source.startAddress, source.endAddress, source.bus))
if not sources:
return "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)}"
return "\n".join(f"0x{source.startAddress:X}-0x{source.endAddress:X} - {source.trackCount}" for source in sources)
class RadarTracks:
@@ -7,25 +7,26 @@ 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"
assert format_radar_tracks_onroad_status(live_tracks) == "none"
def test_format_radar_tracks_status_range_and_count():
live_tracks = car.RadarData.new_message()
live_tracks.trackSources = [{"startAddress": 0x500, "endAddress": 0x51F, "bus": 1}]
live_tracks.trackSources = [{"startAddress": 0x500, "endAddress": 0x51F, "bus": 1, "trackCount": 2}]
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"
assert format_radar_tracks_onroad_status(live_tracks) == "0x500-0x51F - 2"
def test_format_radar_tracks_status_deduplicates_and_sorts_ranges():
live_tracks = car.RadarData.new_message()
live_tracks.trackSources = [
{"startAddress": 0x500, "endAddress": 0x51F, "bus": 2},
{"startAddress": 0x210, "endAddress": 0x21F, "bus": 1},
{"startAddress": 0x500, "endAddress": 0x51F, "bus": 0},
{"startAddress": 0x500, "endAddress": 0x51F, "bus": 2, "trackCount": 3},
{"startAddress": 0x210, "endAddress": 0x21F, "bus": 1, "trackCount": 1},
{"startAddress": 0x500, "endAddress": 0x51F, "bus": 0, "trackCount": 2},
]
live_tracks.init("points", 1)
assert format_radar_tracks_status(live_tracks) == "0x210-0x21F, 0x500-0x51F · 1 track"
assert format_radar_tracks_onroad_status(live_tracks) == "0x210-0x21F - 1\n0x500-0x51F - 2\n0x500-0x51F - 3"