Files

135 lines
2.9 KiB
C++
Raw Permalink Normal View History

#ifndef PARAMETERPROCESS_H
#define PARAMETERPROCESS_H
#include <QObject>
#include "QDebug"
#include "QThread"
#include "mavlink.h"
#include "QTimer"
#include "QTime"
2021-11-13 20:06:59 +08:00
#include <QtEndian>
2021-11-13 20:06:59 +08:00
#include "ThreadTemplet.h"
2021-11-10 17:20:09 +08:00
#ifdef QtMavlinkNode
#include <mavlinknodeglobal.h>
2021-11-13 20:06:59 +08:00
class MAVLINKNODESHARED_EXPORT ParameterProcess : public ThreadTemplet{
#else
2021-11-13 20:06:59 +08:00
class ParameterProcess : public ThreadTemplet
{
#endif
Q_OBJECT
enum _modetype {
Nop_Mode = 0,
RecieveMode,
TransmitMode
};
enum _readtype {
All = 0,
One = 1
};
typedef struct {
bool isWaitingforValue;
_readtype type;
}_recieve;
typedef struct {
uint32_t count;
//bool isWaiteforRequest;
bool isWaitingforValue;
}_transmit;
typedef struct
{
_recieve recieve;
_transmit transmit;
_modetype m_Mode;
}_parameter_;
public:
explicit ParameterProcess(QObject *parent = nullptr);
2021-11-13 20:06:59 +08:00
~ParameterProcess();
_parameter_ status;
2020-03-23 18:39:05 +08:00
public slots:
2020-06-02 18:39:43 +08:00
//读取和写入指令
void ReadCmd(uint8_t m_sysid, uint8_t m_compid, uint8_t type);
2020-06-05 18:05:16 +08:00
void WriteCmd(uint8_t m_sysid, uint8_t m_compid , const char *id, uint8_t type, float value);
2021-07-02 16:57:39 +08:00
void WriteCmd2(uint8_t m_sysid, uint8_t m_compid ,QVariant id,QVariant type,QVariant value);
2020-03-23 18:39:05 +08:00
//线程对外接口
2020-04-03 09:39:31 +08:00
void Parse(mavlink_message_t msg);
2021-07-02 16:57:39 +08:00
QVariant setvalue(mavlink_param_value_t param);
float getvalue(QVariant param,uint8_t type);
QVariant settype(mavlink_param_value_t param);
uint8_t gettype(QVariant type);
QString setid(char *id);
char * getid(QString id);
2021-11-13 20:06:59 +08:00
private slots:
//线程私有接口
void process();
//状态机
void ReadStateMachine(void);
void WriteStateMachine(void);
//所有的相关函数
void set(const char *id, uint8_t type, float value);
void value(float value);
void ext_ack(float value);
void ext_set(const char *id, uint8_t type, float value);
void ext_value(float value);
void request_list(void);
void request_read(const char *id, int16_t index);
signals:
2020-06-08 17:54:17 +08:00
void RecieveValue(mavlink_message_t msg);
private:
2020-08-08 21:07:33 +08:00
//超时时间(ms
int readTimeout = 3000;
int sendTimeout = 3000;
mavlink_param_set_t param_set;//
mavlink_param_union_t param_union;
mavlink_param_value_t param_value;//
mavlink_param_map_rc_t param_map;
mavlink_param_ext_ack_t param_ext_ack;
mavlink_param_ext_set_t param_ext_set;
mavlink_param_ext_value_t param_ext_value;
mavlink_param_request_list_t param_request_list;//
mavlink_param_request_read_t param_request_read;//
mavlink_param_union_double_t param_union_double;
mavlink_param_ext_request_list_t param_ext_request_list;
mavlink_param_ext_request_read_t param_ext_request_read;
};
#endif // PARAMETERPROCESS_H