#ifndef MISSIONPROCESS_H #define MISSIONPROCESS_H #include //#include "mavlinknode.h" #include "QDebug" #include "QThread" #include "mavlink.h" #include "QTimer" #include "QTime" #ifdef QtMavlinkNode #include class MAVLINKNODESHARED_EXPORT MissionProcess : public QObject { #else class MissionProcess : public QObject { #endif Q_OBJECT enum _modetype { Nop_Mode = 0, RecieveMode, TransmitMode }; typedef struct { bool isWaitingforCount; bool isWaitingforItem; }_recieve; typedef struct { uint32_t count; bool isWaiteforRequest; bool isWaiteforACK; }_transmit; typedef struct { _recieve recieve; _transmit transmit; _modetype m_Mode; }_mission_; public: explicit MissionProcess(QObject *parent = nullptr); _mission_ mission_status; //读取航线的指令 void ReadCmd(uint8_t m_sysid, uint8_t m_compid); void WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count ); public slots: //线程对外接口 void setRunFrq(uint32_t frq); void start(); void stop(); void Parse(mavlink_message_t msg); private slots: //线程私有接口 void SendMessage(mavlink_message_t msg); void process(); //定时器 //状态机 void ReadStateMachine(void); void WriteStateMachine(void); //所有的相关函数 void request_list(void); void count(uint16_t count); void request_int(uint16_t seq); void request(uint16_t seq); void item_int(float param1,float param2,float param3,float param4, float x,float y,float z, uint16_t seq,uint16_t command, uint8_t frame,uint8_t current, uint8_t autocontinue,uint8_t mission_type); void item(float param1,float param2,float param3,float param4, float x,float y,float z, uint16_t seq,uint16_t command, uint8_t frame,uint8_t current, uint8_t autocontinue,uint8_t mission_type); void ack(void); void current(void); void setcurrent(void); void clear_all(void); void item_reached(void); void request_partial_list(void); void write_partial_list(void); signals: void readError(); void SendMessageTo(quint8 ch, quint8 *data,quint16 len); private: uint8_t sysid; uint8_t compid; mavlink_mission_request_list_t mission_request_list; mavlink_mission_count_t mission_count; mavlink_mission_request_int_t mission_request_int; mavlink_mission_request_t mission_request; mavlink_mission_item_int_t mission_item_int; mavlink_mission_item_t mission_item; mavlink_mission_ack_t mission_ack; mavlink_mission_current_t mission_current; mavlink_mission_set_current_t mission_set_current; mavlink_mission_clear_all_t mission_clear_all; mavlink_mission_item_reached_t mission_item_reached; mavlink_mission_request_partial_list_t mission_request_partial_list; mavlink_mission_write_partial_list_t mission_write_partial_list; bool running_flag = false; quint32 running_frq = 200;//200Hz QThread *Missionthread = nullptr; //bool isReadMission = false; //bool isWriteMission = false; //bool ismTimerTimeOut = false; }; #endif // MISSIONPROCESS_H