Node Software Processes and Inter-Process Communication
Migrated from Original Docs/Node/Node-SoftwareProcesses-IPC.md
Node Software Processes and Inter-Process Communication
Due to document length constraints, this document is a reference outline. For detailed specifications, see:
- Section 4: Software Process Architecture , Process model, five independent processes (FastAPI, Antenna Control, DSP, Telemetry Router, Health Monitor)
- Section 5: Inter-Process Communication (IPC) Buses , Control bus (ZeroMQ), Status/Telemetry bus, DSP-to-Router stream, Antenna feedback loop
Key Concepts
Five independent processes communicate via dedicated IPC buses:
-
FastAPI Control Server (Python, port 8080)
- Listens for REST calls from central
- Publishes control messages to all subsystems
- Collects status from each worker
- Exposes /status, /capabilities, /metrics endpoints
-
Antenna Control Daemon (Python or C++)
- Receives az/el or coordinate-based pointing requests
- Converts to device commands (FPGA weights, motor PWM, etc.)
- Reports actual position and motor status
-
DSP Pipeline (C++/GNU Radio)
- Continuous high-rate IQ processing (40 MSPS)
- Outputs decoded frames, lock metrics, Doppler tracking
-
Telemetry Router (Python or C++)
- Extracts frames from the active DSP bit stream
- Applies field schemas and payload typing for configured payloads
- Emits telemetry events to output port 9002 as raw frame bytes or schema-backed JSON objects
-
Health Monitor (Python)
- Collects CPU, memory, temperature, FPGA load
- Publishes to Prometheus metrics(:9003) and status bus
IPC Buses:
- Control Bus (port 5555, ZeroMQ Pub-Sub): FastAPI → all workers
- Status Bus (port 5556, ZeroMQ Push-Pull): Workers → FastAPI
- DSP-to-Router Stream (Unix socket): High-bandwidth frame transfer
- Antenna Feedback: Position and encoder updates back to FastAPI
Design principle: Decouple API path from DSP path. DSP restarts don't kill the HTTP server.
Full details in node-specific documents: See Node-NetworkPorts for port allocation, Node-ConfigurationProtocols for control messaging.