diff --git a/core/services/ardupilot_manager/ArduPilotManager.py b/core/services/ardupilot_manager/ArduPilotManager.py index 7ad40dbf0..519a2cae2 100644 --- a/core/services/ardupilot_manager/ArduPilotManager.py +++ b/core/services/ardupilot_manager/ArduPilotManager.py @@ -14,18 +14,17 @@ from exceptions import ( ArdupilotProcessKillFail, - EndpointAlreadyExists, NoDefaultFirmwareAvailable, NoPreferredBoardSet, ) from firmware.FirmwareManagement import FirmwareManager from flight_controller_detector.Detector import Detector as BoardDetector from flight_controller_detector.linux.linux_boards import LinuxFlightController -from mavlink_proxy.Endpoint import Endpoint +from mavlink_proxy.Endpoint import Endpoint, EndpointType +from mavlink_proxy.exceptions import EndpointAlreadyExists from mavlink_proxy.Manager import Manager as MavlinkManager from settings import Settings from typedefs import ( - EndpointType, Firmware, FlightController, FlightControllerFlags, diff --git a/core/services/ardupilot_manager/exceptions.py b/core/services/ardupilot_manager/exceptions.py index 9b4a48639..3dfdbb826 100644 --- a/core/services/ardupilot_manager/exceptions.py +++ b/core/services/ardupilot_manager/exceptions.py @@ -63,37 +63,5 @@ class NoDefaultFirmwareAvailable(RuntimeError): """Default firmware file is not available.""" -class EndpointCreationFail(RuntimeError): - """Failed to add endpoint.""" - - -class EndpointDeleteFail(RuntimeError): - """Failed to delete endpoint.""" - - -class EndpointUpdateFail(RuntimeError): - """Failed to update endpoint.""" - - -class MavlinkRouterStartFail(RuntimeError): - """Failed to initiate Mavlink router.""" - - -class NoMasterMavlinkEndpoint(ValueError): - """No master Mavlink endpoint set.""" - - -class EndpointAlreadyExists(ValueError): - """Mavlink endpoint already exists.""" - - -class DuplicateEndpointName(ValueError): - """Another mavlink endpoint with same name already exists.""" - - -class EndpointDontExist(ValueError): - """Given Mavlink endpoint do not exist.""" - - class NoPreferredBoardSet(RuntimeError): """No preferred board is set yet.""" diff --git a/core/services/ardupilot_manager/mavlink_proxy/AbstractRouter.py b/core/services/ardupilot_manager/mavlink_proxy/AbstractRouter.py index 9feb63bf9..10ce208ce 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/AbstractRouter.py +++ b/core/services/ardupilot_manager/mavlink_proxy/AbstractRouter.py @@ -8,7 +8,7 @@ from loguru import logger -from exceptions import ( +from mavlink_proxy.exceptions import ( DuplicateEndpointName, EndpointAlreadyExists, EndpointDontExist, diff --git a/core/services/ardupilot_manager/mavlink_proxy/Endpoint.py b/core/services/ardupilot_manager/mavlink_proxy/Endpoint.py index 59ac2393d..076ab2392 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/Endpoint.py +++ b/core/services/ardupilot_manager/mavlink_proxy/Endpoint.py @@ -1,10 +1,19 @@ +from enum import Enum from typing import Any, Dict, Iterable, Optional, Type import validators from pydantic import constr, root_validator from pydantic.dataclasses import dataclass -from typedefs import EndpointType + +class EndpointType(str, Enum): + """Supported Mavlink endpoint types.""" + + UDPServer = "udpin" + UDPClient = "udpout" + TCPServer = "tcpin" + TCPClient = "tcpout" + Serial = "serial" @dataclass diff --git a/core/services/ardupilot_manager/mavlink_proxy/MAVLinkRouter.py b/core/services/ardupilot_manager/mavlink_proxy/MAVLinkRouter.py index d18f1e783..475ed1dcc 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/MAVLinkRouter.py +++ b/core/services/ardupilot_manager/mavlink_proxy/MAVLinkRouter.py @@ -3,8 +3,7 @@ from typing import Optional from mavlink_proxy.AbstractRouter import AbstractRouter -from mavlink_proxy.Endpoint import Endpoint -from typedefs import EndpointType +from mavlink_proxy.Endpoint import Endpoint, EndpointType class MAVLinkRouter(AbstractRouter): diff --git a/core/services/ardupilot_manager/mavlink_proxy/MAVLinkServer.py b/core/services/ardupilot_manager/mavlink_proxy/MAVLinkServer.py index f3490f473..414b4f477 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/MAVLinkServer.py +++ b/core/services/ardupilot_manager/mavlink_proxy/MAVLinkServer.py @@ -3,8 +3,7 @@ from typing import Optional from mavlink_proxy.AbstractRouter import AbstractRouter -from mavlink_proxy.Endpoint import Endpoint -from typedefs import EndpointType +from mavlink_proxy.Endpoint import Endpoint, EndpointType class MAVLinkServer(AbstractRouter): diff --git a/core/services/ardupilot_manager/mavlink_proxy/MAVP2P.py b/core/services/ardupilot_manager/mavlink_proxy/MAVP2P.py index 5203c865f..9255ce7e0 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/MAVP2P.py +++ b/core/services/ardupilot_manager/mavlink_proxy/MAVP2P.py @@ -3,8 +3,7 @@ from typing import Optional from mavlink_proxy.AbstractRouter import AbstractRouter -from mavlink_proxy.Endpoint import Endpoint -from typedefs import EndpointType +from mavlink_proxy.Endpoint import Endpoint, EndpointType class MAVP2P(AbstractRouter): diff --git a/core/services/ardupilot_manager/mavlink_proxy/MAVProxy.py b/core/services/ardupilot_manager/mavlink_proxy/MAVProxy.py index c4cd99d68..20c39a9be 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/MAVProxy.py +++ b/core/services/ardupilot_manager/mavlink_proxy/MAVProxy.py @@ -3,8 +3,7 @@ from typing import Optional from mavlink_proxy.AbstractRouter import AbstractRouter -from mavlink_proxy.Endpoint import Endpoint -from typedefs import EndpointType +from mavlink_proxy.Endpoint import Endpoint, EndpointType class MAVProxy(AbstractRouter): diff --git a/core/services/ardupilot_manager/mavlink_proxy/Manager.py b/core/services/ardupilot_manager/mavlink_proxy/Manager.py index 4f38b927e..eb33f976f 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/Manager.py +++ b/core/services/ardupilot_manager/mavlink_proxy/Manager.py @@ -10,7 +10,7 @@ import mavlink_proxy.MAVLinkServer import mavlink_proxy.MAVP2P import mavlink_proxy.MAVProxy -from exceptions import ( +from mavlink_proxy.exceptions import ( EndpointCreationFail, EndpointDeleteFail, EndpointUpdateFail, diff --git a/core/services/ardupilot_manager/mavlink_proxy/exceptions.py b/core/services/ardupilot_manager/mavlink_proxy/exceptions.py new file mode 100644 index 000000000..7c8dfc30d --- /dev/null +++ b/core/services/ardupilot_manager/mavlink_proxy/exceptions.py @@ -0,0 +1,23 @@ +class DuplicateEndpointName(ValueError): + """Another mavlink endpoint with same name already exists.""" + +class EndpointAlreadyExists(ValueError): + """Mavlink endpoint already exists.""" + +class EndpointDontExist(ValueError): + """Given Mavlink endpoint do not exist.""" + +class MavlinkRouterStartFail(RuntimeError): + """Failed to initiate Mavlink router.""" + +class NoMasterMavlinkEndpoint(ValueError): + """No master Mavlink endpoint set.""" + +class EndpointCreationFail(RuntimeError): + """Failed to add endpoint.""" + +class EndpointDeleteFail(RuntimeError): + """Failed to delete endpoint.""" + +class EndpointUpdateFail(RuntimeError): + """Failed to update endpoint.""" diff --git a/core/services/ardupilot_manager/mavlink_proxy/test_all.py b/core/services/ardupilot_manager/mavlink_proxy/test_all.py index 9188641c2..4321527d2 100644 --- a/core/services/ardupilot_manager/mavlink_proxy/test_all.py +++ b/core/services/ardupilot_manager/mavlink_proxy/test_all.py @@ -13,11 +13,10 @@ sys.path.append(str(pathlib.Path(__file__).absolute().parent.parent)) from mavlink_proxy.AbstractRouter import AbstractRouter -from mavlink_proxy.Endpoint import Endpoint +from mavlink_proxy.Endpoint import Endpoint, EndpointType from mavlink_proxy.MAVLinkRouter import MAVLinkRouter from mavlink_proxy.MAVP2P import MAVP2P from mavlink_proxy.MAVProxy import MAVProxy -from typedefs import EndpointType _, slave_port = pty.openpty() serial_port_name = os.ttyname(slave_port) diff --git a/core/services/ardupilot_manager/typedefs.py b/core/services/ardupilot_manager/typedefs.py index 27239ef2f..373886bb4 100644 --- a/core/services/ardupilot_manager/typedefs.py +++ b/core/services/ardupilot_manager/typedefs.py @@ -166,14 +166,7 @@ class FirmwareFormat(str, Enum): ELF = "ELF" -class EndpointType(str, Enum): - """Supported Mavlink endpoint types.""" - - UDPServer = "udpin" - UDPClient = "udpout" - TCPServer = "tcpin" - TCPClient = "tcpout" - Serial = "serial" + class Serial(BaseModel):