Files
gcs-nf/MavLinkNode/missionprocess.h
T
2022-07-29 01:43:16 +08:00

220 lines
5.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef MISSIONPROCESS_H
#define MISSIONPROCESS_H
#include <QObject>
//#include "mavlinknode.h"
#include "opmapwidget.h"
#include "waypointitem.h"
#include "maptype.h"
#include "QDebug"
#include "QThread"
#include "mavlink.h"
#include "QTimer"
#include "QTime"
#include "ThreadTemplet.h"
#ifdef QtMavlinkNode
#include <mavlinknodeglobal.h>
class MAVLINKNODESHARED_EXPORT MissionProcess : public ThreadTemplet {
#else
class MissionProcess : public ThreadTemplet
{
#endif
Q_OBJECT
enum _modetype {
Nop_Mode = 0,
RecieveMode,
TransmitMode
};
typedef struct {
bool isWaitingforCount;
bool isWaitingforItem;
int group;
}_recieve;
typedef struct {
uint32_t count;
bool isWaiteforRequest;
bool isWaiteforACK;
int seq;
uint8_t type;
int group;
}_transmit;
typedef struct
{
_recieve recieve;
_transmit transmit;
_modetype m_Mode;
}_mission_;
public:
explicit MissionProcess(QObject *parent = nullptr);
~MissionProcess();
_mission_ mission_status;
int currentGroup = 3;
QMap<int,QMap<int,QMap<int,mavlink_mission_item_int_t >>> missions;//SysID 航线组 航线
public slots:
void Parse(mavlink_message_t msg);
//读取航线的指令
void ReadCmd(uint8_t m_sysid, uint8_t m_compid, int m_group);
void WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count ,int m_group);
void SetCurrentPoint(int seq);
void transmitPoint(float param1,float param2,float param3,float param4,
int32_t x,int32_t y,float z,
uint16_t seq,
uint16_t group,
uint16_t command,
uint8_t target_system,
uint8_t target_component,
uint8_t frame,
uint8_t current,
uint8_t autocontinue,
uint8_t mission_type);
void sendFence(qreal Vertex,
qreal group,
qreal Lat,
qreal Lng,
uint16_t FecneSeq,
uint16_t command,
uint16_t sysid,
uint16_t compid,
uint16_t mission_type);
void checkoutVehicle(int sysid);
private slots:
//线程私有接口
void process();
//定时器
//状态机
void ReadStateMachine(void);
void WriteStateMachine(void);
//所有的相关函数
void request_list(int missiontype);
void count(uint16_t count,int missiontype);
void request_int(uint16_t seq,int missiontype);
void request(uint16_t seq, int missiontype);
void item_int(float param1, float param2, float param3, float param4,
int32_t x, int32_t 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(uint16_t seq);
void clear_all(void);
void item_reached(void);
void request_partial_list(void);
void write_partial_list(void);
signals:
void clearWaypoint(void);
void readReady();
void readError();
void sendItemOK(uint16_t seq,bool flag);
void receivedPoint(float param1,float param2,float param3,float param4,
int32_t x,int32_t y,float z,
uint16_t seq,
uint16_t group,
uint16_t command,
uint8_t target_system,
uint8_t target_component,
uint8_t frame,
uint8_t current,
uint8_t autocontinue,
uint8_t mission_type);
void vehicleChanged(float param1,float param2,float param3,float param4,
int32_t x,int32_t y,float z,
uint16_t seq,
uint16_t group,
uint16_t command,
uint8_t target_system,
uint8_t target_component,
uint8_t frame,
uint8_t current,
uint8_t autocontinue,
uint8_t mission_type);
//void currentGroup(int group);
void currentPoint(int seq);
private:
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;
//超时时间(ms
int readTimeout = 3000;
int sendTimeout = 3000;
QList<mapcontrol::WayPointItem *> wplist;
QMap<int,mapcontrol::WayPointItem::_property> items;
QMap<int,mapcontrol::WayPointItem::_property> FenceItems;
};
#endif // MISSIONPROCESS_H