45 lines
1.2 KiB
Python
45 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()
|
|
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)
|
|
|