Refactor radar system

This commit is contained in:
Ayzen
2026-10-05 16:46:28 +03:00
parent 515049d2ed
commit 8f097dfa2e
179 changed files with 8212 additions and 6676 deletions
+23 -26
View File
@@ -1,16 +1,16 @@
"""Raw acquisition producer for matrix-mode radars (LibreVNA multi-device, SN9000)."""
"""Raw producer for native matrix radars and the shared single/multi mock scene."""
from __future__ import annotations
import argparse
import logging
from contextlib import suppress
from contextlib import ExitStack, suppress
from pathlib import Path
import signal
import threading
import time
from python_app.hardware_full.matrix_radar_service import MatrixRadarService, create_matrix_radar_service
from python_app.hardware_full.matrix_radar_service import MatrixRadarService, create_acquisition_service
from python_app.logging_setup import coerce_level
from python_app.models.run_config_model import RunConfigModel
from python_app.orchestration.shm import ShmRingWriter
@@ -48,7 +48,7 @@ def _open_radar_with_retry(
attempt = 0
delay = _OPEN_RETRY_MIN_S
while not stop_requested.is_set():
radar = create_matrix_radar_service(config)
radar = create_acquisition_service(config)
try:
radar.open()
radar.configure(config.radar.sweep)
@@ -100,33 +100,31 @@ def main() -> int:
# turned on from the profile instead of requiring a code edit. basicConfig above
# only installed the handler; the package logger owns the level.
logging.getLogger("python_app").setLevel(coerce_level(config.logging.level))
if not config.is_matrix_radar:
raise RuntimeError(
"matrix_raw_producer requires a matrix-mode radar.model "
"(librevna_multi or sn9000)"
)
logger.info(
"Matrix radar raw producer starting: config=%s, model=%s, continuous=%s",
args.config, config.radar.model, config.runtime.continuous,
)
raw_writer = ShmRingWriter(
config.rings.raw.name,
config.rings.raw.capacity,
config.rings.raw.slot_size_bytes,
)
raw_tap_writer = ShmRingWriter(
config.rings.raw_tap.name,
config.rings.raw_tap.capacity,
config.rings.raw_tap.slot_size_bytes,
)
logger.debug(
"Opened SHM ring writers: raw=%s, raw_tap=%s",
config.rings.raw.name, config.rings.raw_tap.name,
)
radar: MatrixRadarService | None = None
cleanup = ExitStack()
try:
raw_writer = ShmRingWriter(
config.rings.raw.name,
config.rings.raw.capacity,
config.rings.raw.slot_size_bytes,
)
cleanup.callback(raw_writer.close)
raw_tap_writer = ShmRingWriter(
config.rings.raw_tap.name,
config.rings.raw_tap.capacity,
config.rings.raw_tap.slot_size_bytes,
)
cleanup.callback(raw_tap_writer.close)
logger.debug(
"Opened SHM ring writers: raw=%s, raw_tap=%s",
config.rings.raw.name, config.rings.raw_tap.name,
)
radar = _open_radar_with_retry(config, previous=None, stop_requested=stop_requested)
if radar is None:
return 0 # asked to stop before a device became available
@@ -174,8 +172,7 @@ def main() -> int:
if radar is not None:
with suppress(Exception):
radar.close()
raw_tap_writer.close()
raw_writer.close()
cleanup.close()
logger.info("matrix radar raw producer stopped")
return 0