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)