#ifndef MAVLINKNODE_H #define MAVLINKNODE_H #include #include "QThread" #include "QDebug" #include "mavlink.h" #include "missionprocess.h" #include "parameterprocess.h" #include "commandprocess.h" #include "MAVLinkInspector/MAVLinkInspector.h" #ifdef QtMavlinkNode #include 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