#pragma once #include #include #include #include #include "az_mission.h" using namespace mavsdk; class AzMissionController : public QObject { Q_OBJECT public: explicit AzMissionController(System &system, AzMission &mission, QObject *parent = nullptr); bool startMission(); void stopMission(void); bool uploadMission(void); private: MissionRaw::MissionItem makeRawMissionItem(float latitudeDeg1e7, float longitudeDeg1e7, int32_t altitude, float doPhoto, MAV_FRAME frame, MAV_CMD command, float p2 = 0, float p3 = 0); public slots: void newPosition(Telemetry::Position position); signals: void missionProgressChanged(int currentIndex, int totalIndexes); void finished(void); private: AzMission &mAzMission; int mCurrentMissionIndex; bool mMissionStarted; int mMissionItemSeqNum; MissionRaw *mMissionRaw; System &mSystem; };