#pragma once #include #include #include #include "aienginedefinitions.h" #include "aienginegimbalserveractions.h" #include "aienginegimbalserverudpcommand.h" #include "aienginegimbalserverudpresponse.h" #include "aienginegimbalserverudp.h" class AiEngineGimbalServer : public QObject { Q_OBJECT public: explicit AiEngineGimbalServer(QObject *parent = nullptr); bool isAvailable(void); public slots: void dronePositionSlot(AiEngineDronePosition); void zoomToAiTargetSlot(AiEngineCameraTarget); void cameraPositionSlot(AiEngineCameraPosition); signals: void aiTargetZoomed(AiEngineTargetPosition); void newCameraPosition(AiEngineCameraPosition); private: AiEngineGimbalServerUDP mUdpSocket; AiEngineGimbalStatus mGimbalStatus; AiEngineDronePosition mDronePosition; AiEngineGimbalServerUDPCommand mUdpCommand; AiEngineGimbalServerUDPResponse mUdpResponse; AiEngineGimbalServerActions mActions; bool mIsAvailable; QUdpSocket *mReceiveUdpSocket; // UDP socket for receiving commands private slots: // void processPendingDatagrams(void); // Handles incoming UDP messages void processUdpCommands(void); };