78 lines
1.6 KiB
Python
78 lines
1.6 KiB
Python
|
|
"""Pydantic request and response models for the RT-OSS HTTP server."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from pydantic import BaseModel
|
||
|
|
|
||
|
|
# ---------------------------------------------------------------------------
|
||
|
|
# Orchestrator
|
||
|
|
# ---------------------------------------------------------------------------
|
||
|
|
|
||
|
|
|
||
|
|
class DeployRequest(BaseModel):
|
||
|
|
config: dict
|
||
|
|
|
||
|
|
|
||
|
|
class DeployResponse(BaseModel):
|
||
|
|
campaign_id: str
|
||
|
|
|
||
|
|
|
||
|
|
class CampaignStatusResponse(BaseModel):
|
||
|
|
campaign_id: str
|
||
|
|
status: str
|
||
|
|
config_name: str
|
||
|
|
progress: int
|
||
|
|
total_steps: int
|
||
|
|
started_at: float
|
||
|
|
ended_at: float | None = None
|
||
|
|
result: dict | None = None
|
||
|
|
error: str | None = None
|
||
|
|
|
||
|
|
|
||
|
|
class CancelResponse(BaseModel):
|
||
|
|
campaign_id: str
|
||
|
|
cancelled: bool
|
||
|
|
|
||
|
|
|
||
|
|
# ---------------------------------------------------------------------------
|
||
|
|
# Inference
|
||
|
|
# ---------------------------------------------------------------------------
|
||
|
|
|
||
|
|
|
||
|
|
class SdrConfig(BaseModel):
|
||
|
|
device: str
|
||
|
|
center_freq: float
|
||
|
|
sample_rate: float
|
||
|
|
gain: float | str = "auto"
|
||
|
|
|
||
|
|
|
||
|
|
class LoadModelRequest(BaseModel):
|
||
|
|
model_path: str
|
||
|
|
label_map: dict[str, int] # class_name -> class_index
|
||
|
|
|
||
|
|
|
||
|
|
class LoadModelResponse(BaseModel):
|
||
|
|
loaded: bool
|
||
|
|
model_path: str
|
||
|
|
num_classes: int
|
||
|
|
|
||
|
|
|
||
|
|
class StartInferenceRequest(BaseModel):
|
||
|
|
sdr_config: SdrConfig
|
||
|
|
|
||
|
|
|
||
|
|
class StartInferenceResponse(BaseModel):
|
||
|
|
running: bool
|
||
|
|
|
||
|
|
|
||
|
|
class StopInferenceResponse(BaseModel):
|
||
|
|
stopped: bool
|
||
|
|
|
||
|
|
|
||
|
|
class InferenceStatusResponse(BaseModel):
|
||
|
|
timestamp: float
|
||
|
|
prediction: str
|
||
|
|
confidence: float
|
||
|
|
snr_db: float
|
||
|
|
zone: str | None = None
|