Files
gcs-nf/MavLinkNode/mavlinknode.h
T
2020-04-09 20:19:56 +08:00

134 lines
2.9 KiB
C++

#ifndef MAVLINKNODE_H
#define MAVLINKNODE_H
#include <QObject>
#include "QThread"
#include "QDebug"
#include "mavlink.h"
#include "missionprocess.h"
#include "parameterprocess.h"
#include "commandprocess.h"
#include "MAVLinkInspector/MAVLinkInspector.h"
#ifdef QtMavlinkNode
#include <mavlinknodeglobal.h>
class MAVLINKNODESHARED_EXPORT MavLinkNode : public QObject {
#else
class MavLinkNode : public QObject
{
#endif
Q_OBJECT
typedef struct {
qint32 max_size;
quint8 select;
QByteArray buff[2];
}_buffdef;
typedef struct {
uint8_t sysid; /* ID of message sender system/aircraft */
uint8_t compid; /* ID of the message sender component */
mavlink_autopilot_version_t autopilot_version;
mavlink_sys_status_t sys_status;
mavlink_heartbeat_t heartbeat;
mavlink_ping_t ping;
mavlink_attitude_t attitude;
mavlink_gps_raw_int_t gps_raw_int;
mavlink_global_position_int_t global_position_int;
mavlink_servo_output_raw_t servo_output_raw;
mavlink_rc_channels_raw_t rc_channels_raw;
mavlink_nav_controller_output_t nav_controller_output;
mavlink_airspeed_autocal_t airspeed_autocal;
mavlink_rpm_t rpm;
mavlink_scaled_pressure_t scaled_pressure;
mavlink_extended_sys_state_t extended_sys_state;
mavlink_battery_status_t battery_status;
mavlink_vibration_t vibration;
mavlink_enginestate_t enginestate;
mavlink_vfr_hud_t vfr_hud;
}_vehicle;
public:
explicit MavLinkNode(QObject *parent = nullptr);
~MavLinkNode();
_vehicle vehicle;
MissionProcess *Mission;
ParameterProcess *Parameter;
commandprocess *Commander;
MAVLinkInspector *mavlinkinspector = nullptr;
signals:
void SendMessageTo(quint8 ch, quint8 *data,quint16 len);
void recievemsg(mavlink_message_t msg);
void state_updated();
void parameter_updated();
//void mission_updated();
public slots:
//线程对外接口
void setRunFrq(uint32_t frq);
void start();
void stop();
//缓存对外接口
void setbuff(quint32 src, QByteArray data);
private slots:
//线程私有接口
void process();
//缓存私有接口
void initbuff(void);
QByteArray readbuff(quint32 src);
//解析
void Mavlinkparse(quint32 src,QByteArray datagram);
void MAVLinkRcv_Handler(mavlink_message_t msg);
void StatusParse(mavlink_message_t msg);
void CommandParse(mavlink_message_t msg);
//
protected:
enum SourceType{
c_sock = 0,
s_port = 1
};
bool running_flag = false;
quint32 running_frq = 200;//200Hz
QThread *Nodethread;
QThread *Parameterthread;
_buffdef serial_buff;
_buffdef client_buff;
};
#endif // MAVLINKNODE_H