Files
gcs-nf/Plugins/VehicleManage/inc/Vehicle.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

321 lines
5.6 KiB
C++

#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