Files
robot-command-center/backend/monitoring/services.py
2026-04-11 12:15:59 +08:00

44 lines
1.2 KiB
Python

from __future__ import annotations
import atexit
from .control import ControlArbiter, NativeUdpControlIngress, OmniSocketControlSender
from .telemetry import GpsDataService, HubTelemetryReceiver, NetworkTelemetryService
from .video import OmniSocketVideoReceiver, VideoFrameService
_video_receiver = OmniSocketVideoReceiver()
_control_sender = OmniSocketControlSender()
_hub_telemetry_receiver = HubTelemetryReceiver()
control_arbiter = ControlArbiter(_control_sender)
native_control_ingress = NativeUdpControlIngress(control_arbiter)
video_service = VideoFrameService(_video_receiver)
gps_service = GpsDataService(_video_receiver)
network_service = NetworkTelemetryService(
_video_receiver,
_control_sender,
control_arbiter,
native_control_ingress,
_hub_telemetry_receiver,
)
def shutdown_monitoring_services() -> None:
for closer in (
network_service.close,
native_control_ingress.close,
control_arbiter.close,
_hub_telemetry_receiver.close,
_video_receiver.close,
_control_sender.close,
):
try:
closer()
except Exception:
pass
atexit.register(shutdown_monitoring_services)