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 正常退出,无崩溃
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# VehicleManage — 载具管理(共享库 / DLL)
|
||||
add_library(VehicleManage SHARED
|
||||
src/Vehicle.cpp
|
||||
src/VehicleManage.cpp
|
||||
inc/Vehicle.h
|
||||
inc/VehicleManage.h
|
||||
inc/VehicleType.h
|
||||
)
|
||||
|
||||
target_include_directories(VehicleManage PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/inc
|
||||
)
|
||||
|
||||
target_link_libraries(VehicleManage PUBLIC
|
||||
Qt${QT_VERSION_MAJOR}::Core
|
||||
Qt${QT_VERSION_MAJOR}::Widgets
|
||||
mavlink_headers
|
||||
)
|
||||
|
||||
target_compile_definitions(VehicleManage PRIVATE VEHICLEMANAGE_LIBRARY)
|
||||
set_target_properties(VehicleManage PROPERTIES PREFIX "" SUFFIX ".dll" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/plugins/VehicleManage")
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef VEHICLEMANAGE_GLOBAL_H
|
||||
#define VEHICLEMANAGE_GLOBAL_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#if defined(VEHICLEMANAGE_LIBRARY)
|
||||
# define VEHICLEMANAGE_EXPORT Q_DECL_EXPORT
|
||||
#else
|
||||
# define VEHICLEMANAGE_EXPORT Q_DECL_IMPORT
|
||||
#endif
|
||||
|
||||
#endif // VEHICLEMANAGE_GLOBAL_H
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="VehicleManage_zh_CN">
|
||||
</TS>
|
||||
@@ -0,0 +1,320 @@
|
||||
#ifndef VEHICLE_H
|
||||
#define VEHICLE_H
|
||||
|
||||
#include "VehicleManage_global.h"
|
||||
#include <QObject>
|
||||
#include "QIcon"
|
||||
#include "QHash"
|
||||
#include "QMap"
|
||||
#include "QDebug"
|
||||
#include "QDateTime"
|
||||
#include "mavlink.h"
|
||||
#include "QTimer"
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
定时往外发消息
|
||||
|
||||
航线 航迹 图片 颜色
|
||||
|
||||
参数 状态 指令
|
||||
|
||||
消息 警告
|
||||
|
||||
|
||||
自己在发送心跳
|
||||
|
||||
|
||||
有自己的定时器,定时查询是否要解码,定时检查是不是来数据了
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
class VEHICLEMANAGE_EXPORT Vehicle : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Vehicle(int id = 1, QObject *parent = nullptr);
|
||||
~Vehicle();
|
||||
|
||||
|
||||
public slots:
|
||||
|
||||
QString Name(void)
|
||||
{
|
||||
return name;
|
||||
}
|
||||
void setName(QString value)
|
||||
{
|
||||
name = value;
|
||||
}
|
||||
|
||||
QIcon Icon(void)
|
||||
{
|
||||
return icon;
|
||||
}
|
||||
void setIcon(QIcon value)
|
||||
{
|
||||
icon = value;
|
||||
}
|
||||
|
||||
QColor TailColor(void)
|
||||
{
|
||||
return tailColor;
|
||||
}
|
||||
void setTailColor(QColor value)
|
||||
{
|
||||
tailColor = value;
|
||||
}
|
||||
|
||||
QColor WayColor(void)
|
||||
{
|
||||
return wayColor;
|
||||
}
|
||||
void setWayColor(QColor value)
|
||||
{
|
||||
wayColor = value;
|
||||
}
|
||||
|
||||
|
||||
int SysID(void)
|
||||
{
|
||||
return sysid;
|
||||
}
|
||||
void setSysID(int value)
|
||||
{
|
||||
sysid = value;
|
||||
}
|
||||
|
||||
|
||||
int Type(void)
|
||||
{
|
||||
return type;
|
||||
}
|
||||
void setType(int value)
|
||||
{
|
||||
type = value;
|
||||
}
|
||||
|
||||
|
||||
bool Selected(void)
|
||||
{
|
||||
return isSelected;
|
||||
}
|
||||
void setSelected(bool value)
|
||||
{
|
||||
isSelected = value;
|
||||
}
|
||||
|
||||
bool Heartbeat(void)
|
||||
{
|
||||
return heartbeat;
|
||||
}
|
||||
void setHeartbeat(bool value)
|
||||
{
|
||||
heartbeat = value;
|
||||
//发一次声音 beep
|
||||
}
|
||||
|
||||
bool Arm(void)
|
||||
{
|
||||
return arm;
|
||||
}
|
||||
void setArm(bool value)
|
||||
{
|
||||
arm = value;
|
||||
//有变化后要播报语音
|
||||
}
|
||||
|
||||
int Flightmode(void)
|
||||
{
|
||||
return flightmode;
|
||||
}
|
||||
void setFlightmode(int value)
|
||||
{
|
||||
flightmode = value;
|
||||
//有变化后要播报语音
|
||||
}
|
||||
|
||||
int Flightstate(void)
|
||||
{
|
||||
return flightstate;
|
||||
}
|
||||
void setFlightstate(int value)
|
||||
{
|
||||
flightstate = value;
|
||||
//有变化后要播报语音
|
||||
}
|
||||
|
||||
void setMsg(mavlink_message_t *msg);
|
||||
void setParam(mavlink_param_value_t *param);
|
||||
void setMission(mavlink_mission_item_int_t *item);
|
||||
|
||||
void _Handler(mavlink_message_t msg);
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
void receiveMessage(mavlink_message_t message);
|
||||
|
||||
|
||||
void heartbeattimeout(void);
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
private:
|
||||
|
||||
QTimer *heartbeattimer = nullptr;
|
||||
|
||||
|
||||
|
||||
//一些可以配置的东西可以存在json里面,一旦生成这个飞机就导入json的设置
|
||||
//基本信息
|
||||
QString name = "vehicle";
|
||||
QIcon icon = QIcon("fixwing.png");
|
||||
QColor tailColor = "#026F80";
|
||||
QColor wayColor = "#F09382";
|
||||
|
||||
qint32 group = 0;//当前飞机的组别
|
||||
qint32 sysid = 0;//当前飞机的ID
|
||||
qint32 type = 0;//设备类型
|
||||
bool isSelected = false;
|
||||
|
||||
bool issendheartbeat = false;
|
||||
bool heartbeat = false;//反复变化
|
||||
bool arm = false;//false 上锁 true 解锁
|
||||
qint32 flightmode = 0;//飞行模式 stanby bit operational
|
||||
qint32 flightstate = 0;//
|
||||
|
||||
qint32 imu_select = 0;//惯导选择
|
||||
qint32 das_select = 0;//大气选择
|
||||
|
||||
//健康字
|
||||
bool inner_INS = false;
|
||||
bool outer_INS = false;
|
||||
bool servosystem = false;
|
||||
bool loadinggear = false;
|
||||
bool recorder = false;//数据记录健康
|
||||
bool inner_das = false;
|
||||
bool outer_das = false;
|
||||
|
||||
//惯性
|
||||
qreal roll = 0;
|
||||
qreal pitch = 0;
|
||||
qreal yaw = 0;
|
||||
|
||||
qreal p = 0;
|
||||
qreal q = 0;
|
||||
qreal r = 0;
|
||||
|
||||
qreal ax = 0;
|
||||
qreal ay = 0;
|
||||
qreal az = 0;
|
||||
|
||||
//导航
|
||||
qreal lat = 0;
|
||||
qreal lng = 0;
|
||||
qreal gpsalt = 0;//GPS海拔
|
||||
qreal relalt = 0;//相对海拔
|
||||
qreal absalt = 0;//绝对海拔
|
||||
qreal baroalt = 0;//气压海拔
|
||||
|
||||
qreal groudspeed = 0;
|
||||
qreal heading = 0;
|
||||
|
||||
qint32 fixtype = 0;
|
||||
qint32 directioncapture = false;
|
||||
qint32 satellites = 0;
|
||||
|
||||
qreal vn = 0;
|
||||
qreal ve = 0;
|
||||
qreal vd = 0;
|
||||
|
||||
//大气
|
||||
qreal tas = 0;//真空速
|
||||
qreal cas = 0;//表速
|
||||
qreal Ma = 0;//马赫数
|
||||
qreal alpha = 0;//攻角
|
||||
qreal beta = 0;//侧滑角
|
||||
|
||||
//控制
|
||||
qreal aileron = 0;//副翼
|
||||
qreal elevator = 0;//升降舵
|
||||
qreal throttle = 0;//油门
|
||||
qreal ruddor = 0;//方向舵
|
||||
//...
|
||||
|
||||
|
||||
|
||||
//遥控
|
||||
QList<uint16_t> rc = {0};//收到的rc信号
|
||||
QList<uint16_t> rc_cmd = {0};//地面站站发出的rc指令
|
||||
|
||||
//电压
|
||||
qreal mainvoltage = 0;//飞控电压
|
||||
qreal servovoltage = 0;//舵机电压
|
||||
qreal powervoltage = 0;//动力电压
|
||||
QList<qreal> battery = {0};//其余电压
|
||||
QList<qreal> voltagegain = {1};//电压转换系数
|
||||
|
||||
//数据链
|
||||
bool isOnline = false;//数据链有没有丢失
|
||||
qreal rssi = 0;//数据链强度
|
||||
qint32 datain = 0;//数据输入量
|
||||
qint32 dataout = 0;//数据输出量
|
||||
|
||||
//数据记录
|
||||
bool isrecording = false;//是否在记录
|
||||
|
||||
|
||||
/*
|
||||
* 航线组
|
||||
* |
|
||||
* / \
|
||||
* / \
|
||||
* 航线1 航线2
|
||||
* / | \ | \
|
||||
* p p p p p
|
||||
*
|
||||
* 组下面有航线,航线下面有航点
|
||||
*
|
||||
*/
|
||||
|
||||
//当前飞机的航线
|
||||
QMap<int,QMap<int,mavlink_mission_item_int_t *>> missions;//航线组 航线
|
||||
|
||||
|
||||
//电子围栏 geoFancy
|
||||
|
||||
//飞机的参数
|
||||
QMap<int,mavlink_param_value_t *> parameters;
|
||||
|
||||
//飞机收到的消息
|
||||
QMap<int,mavlink_message_t *> messages;
|
||||
|
||||
//飞机已经发出去的消息
|
||||
|
||||
|
||||
|
||||
|
||||
//飞机收到的指令
|
||||
|
||||
|
||||
|
||||
|
||||
//飞机要发出去的指令
|
||||
|
||||
|
||||
|
||||
|
||||
//log文件,各种操作都要记录
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // VEHICLE_H
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef VEHICLEMANAGE_H
|
||||
#define VEHICLEMANAGE_H
|
||||
|
||||
#include "VehicleManage_global.h"
|
||||
#include "QObject"
|
||||
#include "QDebug"
|
||||
|
||||
|
||||
#include "Vehicle.h"
|
||||
|
||||
|
||||
|
||||
//收到信息,根据信息的ID,生成载具,管理各个载具的通讯,数据进出,航线,参数等,和界面的交流
|
||||
//独立线程
|
||||
|
||||
|
||||
|
||||
class VEHICLEMANAGE_EXPORT VehicleManage : public QObject
|
||||
{
|
||||
public:
|
||||
explicit VehicleManage();
|
||||
~VehicleManage();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
void PluginLoading(bool flag);
|
||||
|
||||
public slots:
|
||||
|
||||
Vehicle *addVehicle(int id);
|
||||
|
||||
private slots:
|
||||
void setMsg(int sysid, mavlink_message_t *msg);
|
||||
|
||||
private:
|
||||
|
||||
|
||||
QMap<int,Vehicle *> Vehicles;
|
||||
|
||||
};
|
||||
|
||||
#endif // VEHICLEMANAGE_H
|
||||
@@ -0,0 +1,139 @@
|
||||
#ifndef VEHICLETYPE_H
|
||||
#define VEHICLETYPE_H
|
||||
|
||||
#include "QDebug"
|
||||
#include "QObject"
|
||||
|
||||
|
||||
#include "mavlink.h"
|
||||
|
||||
typedef struct __state
|
||||
{
|
||||
bool isSeleted = false;
|
||||
|
||||
int type;//设备类型
|
||||
|
||||
bool arm;
|
||||
int flightmode;
|
||||
|
||||
|
||||
int lat;
|
||||
int lng;
|
||||
int alt;
|
||||
|
||||
float vel;
|
||||
float heading;
|
||||
|
||||
int fix;
|
||||
int svn;
|
||||
|
||||
|
||||
|
||||
float tas;
|
||||
float cas;
|
||||
float gs;
|
||||
float ma;
|
||||
float as_err;
|
||||
|
||||
|
||||
|
||||
|
||||
float rol;
|
||||
float pit;
|
||||
float yaw;
|
||||
|
||||
float p;
|
||||
float q;
|
||||
float r;
|
||||
|
||||
float ax;
|
||||
float ay;
|
||||
float az;
|
||||
|
||||
|
||||
|
||||
}state;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct __param {
|
||||
float param_value; /*< Onboard parameter value*/
|
||||
uint16_t param_count; /*< Total number of onboard parameters*/
|
||||
uint16_t param_index; /*< Index of this onboard parameter*/
|
||||
char param_id[16]; /*< Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string*/
|
||||
uint8_t param_type; /*< Onboard parameter type.*/
|
||||
} param;
|
||||
|
||||
typedef struct __item_int {
|
||||
float param1; /*< PARAM1, see MAV_CMD enum*/
|
||||
float param2; /*< PARAM2, see MAV_CMD enum*/
|
||||
float param3; /*< PARAM3, see MAV_CMD enum*/
|
||||
float param4; /*< PARAM4, see MAV_CMD enum*/
|
||||
int32_t x; /*< PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7*/
|
||||
int32_t y; /*< PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7*/
|
||||
float z; /*< PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.*/
|
||||
uint16_t target_system; /*< System ID*/
|
||||
uint16_t seq; /*< Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4).*/
|
||||
uint16_t command; /*< The scheduled action for the waypoint.*/
|
||||
uint8_t target_component; /*< Component ID*/
|
||||
uint8_t frame; /*< The coordinate system of the waypoint.*/
|
||||
uint8_t current; /*< false:0, true:1*/
|
||||
uint8_t autocontinue; /*< Autocontinue to next waypoint*/
|
||||
uint8_t mission_type; /*< Mission type.*/
|
||||
} item_int;
|
||||
|
||||
|
||||
typedef struct {
|
||||
int sysid; /* ID of message sender system/aircraft */
|
||||
int 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_ins1_t ins1;
|
||||
mavlink_ins2_t ins2;
|
||||
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;
|
||||
mavlink_aoa_ssa_t aoa_ssa;
|
||||
mavlink_emb_atmo_com_t emb_atom_com;
|
||||
mavlink_turbinestate_t turbinstate;
|
||||
mavlink_bmustate_t bmustate;
|
||||
mavlink_ccmstate_t ccmstate;
|
||||
mavlink_serial_control_t serial_control;
|
||||
|
||||
}_vehicle;
|
||||
|
||||
|
||||
/*
|
||||
* 历史 -1指令
|
||||
* -2参数
|
||||
* -3消息
|
||||
* -4状态
|
||||
* 当前 -状态
|
||||
* -参数
|
||||
* -指令
|
||||
* -消息
|
||||
* -航线
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#endif // VEHICLETYPE_H
|
||||
@@ -0,0 +1,38 @@
|
||||
#include "Vehicle.h"
|
||||
|
||||
Vehicle::Vehicle(int id, QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
}
|
||||
|
||||
Vehicle::~Vehicle() {}
|
||||
|
||||
void Vehicle::setMsg(mavlink_message_t *msg)
|
||||
{
|
||||
Q_UNUSED(msg)
|
||||
}
|
||||
|
||||
void Vehicle::setParam(mavlink_param_value_t *param)
|
||||
{
|
||||
Q_UNUSED(param)
|
||||
}
|
||||
|
||||
void Vehicle::setMission(mavlink_mission_item_int_t *item)
|
||||
{
|
||||
Q_UNUSED(item)
|
||||
}
|
||||
|
||||
void Vehicle::_Handler(mavlink_message_t msg)
|
||||
{
|
||||
Q_UNUSED(msg)
|
||||
}
|
||||
|
||||
void Vehicle::receiveMessage(mavlink_message_t message)
|
||||
{
|
||||
Q_UNUSED(message)
|
||||
}
|
||||
|
||||
void Vehicle::heartbeattimeout(void)
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#include "VehicleManage.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
VehicleManage::VehicleManage() {}
|
||||
VehicleManage::~VehicleManage() {}
|
||||
|
||||
Vehicle *VehicleManage::addVehicle(int id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void VehicleManage::setMsg(int sysid, mavlink_message_t *msg)
|
||||
{
|
||||
Q_UNUSED(sysid)
|
||||
Q_UNUSED(msg)
|
||||
}
|
||||
Reference in New Issue
Block a user