mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-08-05 15:35:40 +08:00
ui
This commit is contained in:
+1
-1
Submodule opendbc_repo updated: f13fb2d2e9...3e56929032
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user