Files
gcs-nf/Plugins/MavLinkNode/inc/missionprocess.h
T
hm e7cf44504c feat: Service Registry + Bridge 解耦架构 + 全工程代码清理
## 架构升级:Service Registry + Bridge 模式

- 新增 PluginSDK/IPluginServices.h:10 个纯虚服务接口(IDataProvider/ILinkProvider/...)
- 新增 MavLinkServiceBridge:单 QObject 实现全部服务,隔离 MavLinkNode 依赖
- 升级 PluginManifest:支持 plugin.json 的 provides/consumes 声明式依赖
- 实现 ExtensionHost::autoWire():元对象自省自动连接信号槽
- 集成到 AppController:initModules() 中创建桥接器并注册到 ServiceRegistry
- CockpitPlugin 演示服务发现:initialize() 中通过 PluginContext 查找服务

## 代码清理

- Plugins/opmap:~280 行死代码(waypointsetting 100行注释块/tilematrix 54行/等27个文件)
- Plugins/MavLinkNode:~200 行 GBK 乱码注释翻译为 UTF-8 + 12 行注释死代码
- Plugins/ToolsUI:~222 行死代码(ECU.cpp 82行/INS.cpp 113行/Parse/ToolsUI 等)
- StatusUI/Setting/MissionUI:~65 行注释死代码
- Cockpit/leftladder.cpp:10 处 GBK 乱码翻译为中文
- 清理头文件注释掉的 #include(19 处)、空 if-else 分支、注释变量声明

## 编译验证

- [100%] Built target GCS 零错误
- 运行时 timeout 3s 正常退出,无崩溃
2026-06-01 09:46:36 +08:00

220 lines
5.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 MISSIONPROCESS_H
#define MISSIONPROCESS_H
#include <QObject>
#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