#pragma once #include #include #include #include "az_mission.h" #include "plugins/action/action.h" using namespace mavsdk; class AzMissionController : public QObject { Q_OBJECT public: explicit AzMissionController(AzMission &mission, QObject *parent = nullptr); void setAction(Action *action); bool startMissions(float absoluteAltitude); void stopMissions(void); public slots: void newPosition(Telemetry::Position position); signals: void missionProgressChanged(int currentIndex, int totalIndexes); void finished(void); private: bool flyToNextMissionItem(void); AzMission &mMission; Action *mAction; int mCurrentMissionIndex; bool mMissionStarted; bool mFlyingToReturnPoint; float mAbsoluteAltitude; QElapsedTimer mPlaneCirclingTime; };