Files
gcs-nf/MavLinkNode/statusprocess.h
T
2020-12-10 18:47:49 +08:00

141 lines
2.5 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 STATUSPROCESS_H
#define STATUSPROCESS_H
#include <QObject>
#include "QDebug"
#include "QThread"
#include "mavlink.h"
#include "QTimer"
#include "QTime"
#ifdef QtMavlinkNode
#include <mavlinknodeglobal.h>
class MAVLINKNODESHARED_EXPORT statusprocess : public QObject {
#else
class statusprocess : public QObject
{
#endif
Q_OBJECT
enum _modetype {
Nop_Mode = 0,
RecieveMode,
TransmitMode
};
typedef struct {
//bool isWaitingforCount;
bool isWaitingforValue;
}_recieve;
typedef struct {
bool isWaitingforACK;
uint8_t type;
}_transmit;
typedef struct
{
_recieve recieve;
_transmit transmit;
_modetype m_Mode;
}_command_;
public:
explicit statusprocess(QObject *parent = nullptr);
_command_ status;
void setGCSID(int m_sysid, int m_compid)
{
Current_sysID = m_sysid;
Current_CompID = m_compid;
}
mavlink_heartbeat_t m_heartbeat;
public slots:
void setID(int m_sysid, int m_compid);
//读取和写入指令
//void ReadCmd(uint8_t m_sysid, uint8_t m_compid, uint8_t type);
void setHeartbeat(QVariant state, QVariant frq );
//线程对外接口
void setRunFrq(uint32_t frq);
void start();
void stop();
bool isActive(void)
{
return running_flag;
}
private slots:
//线程私有接口
void SendMessage(mavlink_message_t msg);
void process();
//状态机
void ReadStateMachine(void);
void WriteStateMachine(void);
//所有相关函数
void heartbeat(uint32_t custom_mode,
uint8_t type,
uint8_t autopilot,
uint8_t base_mode,
uint8_t system_status,
uint8_t mavlink_version);
signals:
void readError();
void SendMessageTo(quint8 ch, quint8 *data,quint16 len);
void commandAccepted(bool flag,uint16_t command,uint8_t result);
void showMessage(const QString &message,int TimeOut = 0);
private:
bool running_flag = false;
quint32 running_frq = 200;//200Hz
QThread *thread = nullptr;
//目标id
uint8_t sysid;
uint8_t compid;
//本机的id
int Current_sysID = 0xF1;
int Current_CompID = 0xF1;
//超时时间(ms
int readTimeout = 5000;
int sendTimeout = 5000;
};
#endif // STATUSPROCESS_H