e7cf44504c
## 架构升级: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 正常退出,无崩溃
321 lines
5.6 KiB
C++
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
|