diff --git a/drb-c2-core/app/internal/mqtt_handler.py b/drb-c2-core/app/internal/mqtt_handler.py index 494dd4c..ab5ece4 100644 --- a/drb-c2-core/app/internal/mqtt_handler.py +++ b/drb-c2-core/app/internal/mqtt_handler.py @@ -111,6 +111,8 @@ class MQTTHandler: "assigned_system_id": None, "approval_status": "pending", "node_type": payload.get("node_type", "fixed"), + "secondary_sdr_mode": payload.get("secondary_sdr_mode", "none"), + "sdr_count": payload.get("sdr_count", 1), "enforce_override_timeout": payload.get("enforce_override_timeout", True), "is_overridden": False, "override_system_id": None, @@ -141,6 +143,11 @@ class MQTTHandler: updates["node_type"] = node_type updates["enforce_override_timeout"] = enforce_timeout + if "secondary_sdr_mode" in payload: + updates["secondary_sdr_mode"] = payload["secondary_sdr_mode"] + if "sdr_count" in payload: + updates["sdr_count"] = payload["sdr_count"] + if node_type == "portable": updates["is_overridden"] = False updates["override_system_id"] = None diff --git a/drb-c2-core/app/models.py b/drb-c2-core/app/models.py index f7233a2..4ddd692 100644 --- a/drb-c2-core/app/models.py +++ b/drb-c2-core/app/models.py @@ -62,6 +62,8 @@ class NodeRecord(BaseModel): last_seen: Optional[datetime] = None assigned_system_id: Optional[str] = None node_type: str = "fixed" # fixed or portable + secondary_sdr_mode: str = "none" # none | adsb | ais | op25_2 — requires a second physical SDR + sdr_count: int = 1 # self-reported by the node's checkin, best-effort enforce_override_timeout: bool = True is_overridden: bool = False override_system_id: Optional[str] = None diff --git a/drb-c2-core/app/routers/nodes.py b/drb-c2-core/app/routers/nodes.py index 8b7f85d..53d3378 100644 --- a/drb-c2-core/app/routers/nodes.py +++ b/drb-c2-core/app/routers/nodes.py @@ -195,6 +195,7 @@ async def assign_system( class NodeUpdateBody(BaseModel): node_type: Optional[str] = None enforce_override_timeout: Optional[bool] = None + secondary_sdr_mode: Optional[str] = None # none | adsb | ais | op25_2 @router.patch("/{node_id}") @@ -227,6 +228,8 @@ async def update_node( } if updated_node.get("ppm_override") is not None: push_payload["ppm_override"] = updated_node["ppm_override"] + if updated_node.get("secondary_sdr_mode") is not None: + push_payload["secondary_sdr_mode"] = updated_node["secondary_sdr_mode"] mqtt_handler.push_config(node_id, push_payload) return {"ok": True}