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() 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)