Files
robot-command-center/backend/monitoring/services.py
2026-04-18 12:52:32 +08:00

53 lines
1.7 KiB
Python

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