Rework radar system

This commit is contained in:
Ayzen
2026-10-06 12:32:26 +03:00
parent 552cdc688a
commit 5bb86b7165
299 changed files with 13537 additions and 27763 deletions
+10 -7
View File
@@ -99,6 +99,13 @@ async def post_remove_last(request: Request) -> dict:
return controller.status()
@router.post("/api/clear_history")
async def post_clear_history(request: Request) -> dict:
controller = _controller(request)
await _run_action(controller.clear_history)
return controller.status()
@router.get("/api/configs")
async def get_configs(request: Request) -> dict:
return {"names": _controller(request).list_configs()}
@@ -157,18 +164,14 @@ async def ws(websocket: WebSocket) -> None:
"""Stream frames and status to one client until it disconnects."""
await websocket.accept()
broadcaster: RingBroadcaster = websocket.app.state.broadcaster
queue: asyncio.Queue[dict] = asyncio.Queue(maxsize=1)
broadcaster.register(queue)
client = broadcaster.register()
logger.info("Web UI client connected")
try:
frame = await asyncio.to_thread(websocket.app.state.controller.peek_frame)
if frame is not None:
await websocket.send_json(frame)
while True:
await websocket.send_json(await queue.get())
await websocket.send_json(await client.get())
except WebSocketDisconnect:
logger.info("Web UI client disconnected")
finally:
broadcaster.unregister(queue)
broadcaster.unregister(client)
with contextlib.suppress(Exception):
await websocket.close()