Files
radar_system/python_app/orchestration/producer_selection.py
T
2026-10-05 16:46:28 +03:00

36 lines
1.5 KiB
Python

"""One acquisition producer selection shared by supervisor and launcher."""
from __future__ import annotations
import json
from pathlib import Path
import sys
from python_app.models.run_config_schema import RadarModel
def acquisition_command(project_root: Path, config_path: Path) -> list[str]:
"""Select replay first, then the configured model's acquisition producer."""
payload = json.loads(config_path.read_text(encoding="utf-8"))
radar = payload.get("radar", {}) if isinstance(payload, dict) else {}
radar = radar if isinstance(radar, dict) else {}
replay = radar.get("replay", {})
dataset = replay.get("dataset_dir") if isinstance(replay, dict) else None
defaults = RadarModel()
model = radar.get("model")
if model is None and isinstance(payload, dict):
model = defaults.model
driver_mode = radar.get("driver_mode")
if driver_mode is None:
driver_mode = defaults.driver_mode
if model in ("librevna", "librevna_multi") and driver_mode == "mock":
model = "librevna_multi"
module = "replay_raw_producer" if isinstance(dataset, str) and dataset.strip() else {
"librevna_multi": "matrix_raw_producer",
"kamil_adc": "kamil_adc_raw_producer",
}.get(model if isinstance(model, str) else "")
command = [sys.executable, "-m", f"python_app.scripts.{module}"] if module else [
str(project_root / "build/bin/sweep_orchestrator"),
]
return [*command, "--config", str(config_path)]