Files
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

1252 lines
31 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 FLYCONTROLINFO_H
#define FLYCONTROLINFO_H
#include <QObject>
#include <QVariant>
#include <QVariantMap>
#include <QVariantList>
#include <QVariantHash>
#include <QPointF>
#include "GDUModule/glink/glink_m/glink_m.h"
#include "GDUModule/glink/glink_np/glink_np.h"
class FlyControlInfo : public QObject
{
Q_OBJECT
public:
explicit FlyControlInfo(QObject *parent = nullptr);
//**************第1包数据**************
/*<
bit0~6飞行状态
0NULL
1初始化中(不允许解锁,未解锁,未起飞)
2初始化完成(允许解锁,未解锁,未起飞)
3地面(已解锁,未起飞)
4悬停中已起飞
5手动飞行中已起飞
6自主起飞中已起飞
7自主降落中已起飞
8自主返航中已起飞
9自主环绕中已起飞
10指点飞行中已起飞
*/
Q_PROPERTY(uchar fly_state READ fly_state NOTIFY basicStateNoti)
uchar fly_state(){
return state1->SLfly_status & 0b01111111;
}
/*
bit7模拟飞行标志
0真实飞行
1模拟飞行
*/
Q_PROPERTY(uchar sim_fly_state READ sim_fly_state NOTIFY basicStateNoti)
uchar sim_fly_state(){
return state1->SLfly_status & 0b10000000;
}
/*
0:未解锁
1:遥杆解锁
2:指令解锁
3: 遥控器拉油门着陆上锁
4: SDK向下控速着陆上锁
5:地面机身翻转上锁
6: 空中机身翻转上锁
7:指令上锁
8:自主降落着陆上锁
9:地面遥控器失联上锁
*/
Q_PROPERTY(uchar unlock_reason READ unlock_reason NOTIFY basicStateNoti)
uchar unlock_reason(){
return state1->armOrDisarm;
}
/*< 数据,赋值操作,操控模式属性: 0: 极限模式1: 姿态模式2: 位置-标准操控3: 位置-运动操控 4: 视觉模式*/
Q_PROPERTY(uchar control_mode READ control_mode NOTIFY basicStateNoti)
uchar control_mode(){
return state1->controlMode;
}
/*
byte-byte6 uint32 GPS时间UTC
bit0~5共6位年份后两位
21表示2021年
bit6~9共4位
bit10~14共5位
bit15~19共5位
bit20~25共6位
bit26~31共6位
总例0x7DF7BDFF表示2063年7月15日15时31分31秒
*/
typedef struct {
unsigned short year : 6;
unsigned short month : 4;
unsigned short day : 5;
unsigned short hour : 5;
unsigned short minute : 6;
unsigned short second : 6;
}GPS_TIME_t;
GPS_TIME_t p_gps_time_t = {0,0,0,0,0,0};
Q_PROPERTY(QString gsp_time READ gsp_time NOTIFY basicStateNoti)
QString gsp_time(){
p_gps_time_t.year = (state1->GPStime & 0b00000000000000000000000000111111);
p_gps_time_t.month = (state1->GPStime & 0b00000000000000000000001111000000) >> 6;
p_gps_time_t.day = (state1->GPStime & 0b00000000000000000111110000000000) >> 10;
p_gps_time_t.hour = (state1->GPStime & 0b00000000000011111000000000000000) >> 15;
p_gps_time_t.minute = (state1->GPStime & 0b00000011111100000000000000000000) >> 20;
p_gps_time_t.second = (state1->GPStime & 0b11111100000000000000000000000000) >> 26;
//memcpy(&p_gps_time_t,&(state1->GPStime),4);
//return state1->GPStime;
QString time = ""
+ QString::number(p_gps_time_t.year)
+ QString::number(p_gps_time_t.month)
+ QString::number(p_gps_time_t.day)
+ " "
+ QString::number(p_gps_time_t.hour)
+ ":"
+ QString::number(p_gps_time_t.minute)
+ ":"
+ QString::number(p_gps_time_t.second);
return time;
}
/*< byte7-byte8 当次飞行时间 unsigned short 单位秒钟*/
Q_PROPERTY(ushort flight_time READ flight_time NOTIFY basicStateNoti)
ushort flight_time(){
return state1->flytime;
}
/*< byte9-byte10 当前开机时间 unsigned short 单位秒钟*/
Q_PROPERTY(ushort boot_up READ boot_up NOTIFY basicStateNoti)
ushort boot_up(){
return state1->CurrentFlyTime;
}
/*< byte11-byte14 总飞行时间unsigned int 单位秒钟*/
Q_PROPERTY(unsigned int total_time READ total_time NOTIFY basicStateNoti)
unsigned int total_time(){
return state1->TotalFlyTime;
}
/*
byte15-byte18
uint32
飞控版本号
十进制数各位含义(从左向右):
第1~6位共6位日期
210301表示2021年3月1日。
第7~9位共3位序号
值000~999
第10位共1位版本类型
0测试版1发布版
总例210301001 1表示2021年3月1日发布版第一版
*/
Q_PROPERTY(uint fc_Version READ fc_Version NOTIFY basicStateNoti)
uint fc_Version(){
return state1->fcVersion;
}
/*
byte19-byte22
uint32
卫星天线数量及状态
bit0~4主天线星数
bit5~9主天线信号强度
bit10~14从1天线星数
bit30~31位天线数量类型位值为1时该位值无意义
bit15~19从1天线信号强度
bit30~31位天线数量类型位值为1单天线版时该位值无意义
bit20~29预留
值0无意义
bit30~31天线数量类型
1单天线版
2双天线版
*/
/*< 天线 */
Q_PROPERTY(char p_satellite_type READ p_satellite_type NOTIFY basicStateNoti)
char p_satellite_type(){
return (state1->GPSNum & 0xC0000000) >> 30;
}
/* 主天线星数*/
Q_PROPERTY(char p_satellites_number READ p_satellites_number NOTIFY basicStateNoti)
char p_satellites_number(){
return state1->GPSNum & 0b00000000000000000000000000011111;
}
/*主天线信号强度*/
Q_PROPERTY(char p_satellites_strength READ p_satellites_strength NOTIFY basicStateNoti)
char p_satellites_strength(){
return (state1->GPSNum & 0b00000000000000000000001111100000) >> 5;
}
/*从天线星数*/
Q_PROPERTY(char s_satellites_number READ s_satellites_number NOTIFY basicStateNoti)
char s_satellites_number(){
return (state1->GPSNum & 0b00000000000000000111110000000000) >> 10;
}
/*从天线信号强度*/
Q_PROPERTY(char s_satellites_strength READ s_satellites_strength NOTIFY basicStateNoti)
char s_satellites_strength(){
return (state1->GPSNum & 0b0000000000001111100000000000000) >> 15;
}
/*
byte23-byte24
uint16
RTK状态
bit0~bit2主天线定位差分状态
0未定位
12D定位
23D定位
4RTK float
5RTK fixed
bit3~bit5从1天线定位差分状态
9字段bit30~31天线数量类型为1单天线版时该位无意义
0未定位
12D定位
23D定位
4RTK float
5RTK fixed
bit6~14预留
0无意义
bit15抗磁干扰模式定向功能
0关闭
1开启
*/
Q_PROPERTY(ushort rtk_state READ rtk_state NOTIFY basicStateNoti)
ushort rtk_state(){
return state1->RTKstatus;
}
/*<
byte25-byte26
int16
离禁飞区距离 m
在15KM范围里面进行相应播报。
在15KM范围以外表示远离禁飞区这时直接固定填入特定值为20KM
负数表示已在禁飞区内。
*/
Q_PROPERTY(short no_flyzone_distance READ no_flyzone_distance NOTIFY basicStateNoti)
short no_flyzone_distance(){
return state1->flyzoneDistance;
}
/*
byte27
uint8
返航状态
bit0~2返航状态
0不在返航
1指令返航返航中
2失联返航返航中
3累计失联返航返航中
4低电返航返航中
bit3~5返航状态
bit0~2返航状态位值为0该位值无意义
1爬升
2预定高度掉头
3回航
4home点上空掉头
5降落
bit6预留
0无意义
bit7返航点记录状态
0返航点未记录或清除
1返航点已记录
*/
Q_PROPERTY(uchar return_Reason READ return_Reason NOTIFY basicStateNoti)
uchar return_Reason(){
return state1->returnStatus & 0b00000111;
}
Q_PROPERTY(uchar return_status READ return_status NOTIFY basicStateNoti)
uchar return_status(){
return (state1->returnStatus & 0b00111000) >> 3;
}
Q_PROPERTY(uchar return_point_status READ return_point_status NOTIFY basicStateNoti)
uchar return_point_status(){
return (state1->returnStatus & 0b10000000) >> 7;
}
/*
byte28-byte29
uint16
返航高度 dm
*/
Q_PROPERTY(ushort return_height READ return_height NOTIFY basicStateNoti)
ushort return_height(){
return state1->returnHeight;
}
/*<
* byte30-byte33
* int32 返航信息3
* 返航点经度
* deg
* 1e7
*/
Q_PROPERTY(double return_longitude READ return_longitude NOTIFY basicStateNoti)
double return_longitude(){
return state1->returnLong * 1.0 / 10000000.0;
}
/*
byte34 -byte37
int32
返航点纬度
deg
1e7
*/
Q_PROPERTY(double return_latitude READ return_latitude NOTIFY basicStateNoti)
double return_latitude(){
return state1->returnLat * 1.0 / 10000000.0;
}
/*
byte38
uint8
自动降落信息
降落状态:
0不在降落
1指令降落降落中
2失联降落降落中
3低电降落降落中
*/
Q_PROPERTY(uchar auto_landing READ auto_landing NOTIFY basicStateNoti)
uchar auto_landing(){
return state1->autoLanding;
}
/*
byte39-byte40
uint16
水平限距距离 m
0xffff表示未开启限距功能
*/
Q_PROPERTY(ushort distance_limit READ distance_limit NOTIFY basicStateNoti)
ushort distance_limit(){
return state1->levelDistLimit;
}
/*
byte41-byte42
uint16
限高高度 m
0xffff表示未开启限高功能
*/
Q_PROPERTY(ushort height_limit READ height_limit NOTIFY basicStateNoti)
ushort height_limit(){
return state1->heightLimit;
}
/*
byte43-byte44
int16
航向x100,单位度,两位小数
*/
Q_PROPERTY(double heading READ heading NOTIFY basicStateNoti)
double heading(){
return state1->headingAngle /100.0;
}
/*
byte45-byte46
int16
当前横滚角度
deg
1e2
滚转x100,单位度,两位小数
*/
Q_PROPERTY(double roll READ roll NOTIFY basicStateNoti)
double roll(){
return state1->rollAngle /100.0;
}
/*
byte47-byte48
int16
当前俯仰角度
deg
1e2
俯仰x100,单位度,两位小数
*/
Q_PROPERTY(double pitch READ pitch NOTIFY basicStateNoti)
double pitch(){
return state1->pitchAngle /100.0;
}
/*
byte49-byte50
int16
北向速度 cm/s
*/
Q_PROPERTY(short speed_north READ speed_north NOTIFY basicStateNoti)
short speed_north(){
return state1->northSpeed;
}
/*
byte51-byte52
int16
东向速度,单位cm/s
*/
Q_PROPERTY(short speed_east READ speed_east NOTIFY basicStateNoti)
short speed_east(){
return state1->eastSpeed;
}
/*
byte53-byte54
int16
机头速度,单位cm/s
*/
Q_PROPERTY(short speed_heading READ speed_heading NOTIFY basicStateNoti)
short speed_heading (){
return state1->headSpeed;
}
/*
byte55-byte56
int16
右向速度,单位cm/s
*/
Q_PROPERTY(short speed_right READ speed_right NOTIFY basicStateNoti)
short speed_right(){
return state1->rightSpeed;
}
/*
byte57-byte58
int16
垂直速度 cm/s
向上为正
*/
Q_PROPERTY(short speed_vetical READ speed_vetical NOTIFY basicStateNoti)
short speed_vetical(){
return state1->verticalSpeed;
}
/*
byte59-byte62
int32
飞机当前位置
经度 deg 1e7
飞行当前点经度 degrees * 10^7
*/
Q_PROPERTY(double current_longitude READ current_longitude NOTIFY basicStateNoti)
double current_longitude(){
return state1->PositionLong * 1.0 / 10000000.0;
}
/*
byte63-byte66
int32
飞机当前位置
纬度 deg 1e7
飞行当前点纬度 degrees * 10^7
*/
Q_PROPERTY(double current_latitude READ current_latitude NOTIFY basicStateNoti)
double current_latitude(){
return state1->PositionLat * 1.0 / 10000000.0;
}
/*
byte67-byte70
uint32
水平距离
离起飞点距离
单位米
*/
Q_PROPERTY(uint level_distance READ level_distance NOTIFY basicStateNoti)
uint level_distance(){
return state1->levelDist;
}
/*
byte71-byte74
int32
融合高度
cm
*/
Q_PROPERTY(int height READ height NOTIFY basicStateNoti)
int height(){
return state1->height;
}
/*
byte75-byte78
int32
气压高度
cm
*/
Q_PROPERTY(int barometric_height READ barometric_height NOTIFY basicStateNoti)
int barometric_height(){
return state1->heightBarometric;
}
/*
byte79-byte82
int32
GNSS 椭球高度
单位cm
*/
Q_PROPERTY(int height_GNSS READ height_GNSS NOTIFY basicStateNoti)
int height_GNSS(){
return state1->heightEllipsoid;
}
/*
byte83-byte86
int32
cm
GNSS 海拔高度
*/
Q_PROPERTY(int altitude_GNSS READ altitude_GNSS NOTIFY basicStateNoti)
int altitude_GNSS(){
return state1->Altitude;
}
/*
byte87-byte88
uint16
近地辅助高度TOF/超声)
cm
*/
Q_PROPERTY(int height_tof READ height_tof NOTIFY basicStateNoti)
int height_tof(){
return state1->TOFheight;
}
/*
byte89
uint8
bit0~1RCRC异常类型
1:已连接
2:连接不稳定
3:未连接
bit2电量值异常标志1标志生效
bit3电压值异常标志1标志生效
bit4~6电池报警
0无报警
1电量一级报警
2电量二级报警
3电量三级报警
4电池不在线
bit7电池温度报警标志1标志生效
RC连接状态
未连接
连接不稳
已连接
*/
Q_PROPERTY(uchar rc_connect_state READ rc_connect_state NOTIFY basicStateNoti)
uchar rc_connect_state(){
return state1->RCabnstatus & 0b00000011;
}
/*电池异常状态 */
Q_PROPERTY(uchar battery_error READ battery_error NOTIFY basicStateNoti)
uchar battery_error(){
return (state1->RCabnstatus & 0b11111100) >> 2;
}
/*
byte90 uint8
IMU异常状态
bit0~1异常类型
1通信异常
2数据异常
bit2震动标志1标志生效
bit3晃动标志1标志生效
bit4未校准标志1标志生效
bit5~7传感器编号
*/
Q_PROPERTY(uchar imu_error READ imu_error NOTIFY basicStateNoti)
uchar imu_error(){
return state1->IMUsabntatus;
}
/*
byte91-byte92
磁、气压计、光流、超声/TOF异常状态
bit0~1磁异常类型
1通信异常
2数据异常
3环境干扰大
bit2 需校磁标志1标志生效
bit3~4磁传感器编号
bit5~6气压计异常类型
1通信异常
2数据异常
bit7气压计温度异常标志1标志生效
bit8~9气压计编号
bit10~11光流模块异常类型
1通信异常
2数据异常
bit12光流置信度低标志1标志生效
bit13~14超声/TOF异常类型
1通信异常
2数据异常
bit15预留 0无意义
磁力计异常状态
*/
//https://docs.microsoft.com/en-us/cpp/cpp/cpp-bit-fields?view=msvc-160
//https://en.cppreference.com/w/cpp/language/bit_field
typedef struct {
/* byte 0 */
unsigned short magWarngingType : 2;/* bit: 0~1 */
unsigned short needCalibrationFlag : 1;/* bit:2 */
unsigned short magNubmer : 2;/* bit: 3~4 */
unsigned short barometerWarningType : 2;/* bit: 5~6 */
unsigned short barometerTemperatureFlag : 1;/* bit:7 */
/* byte 2 */
unsigned short barometerNumber : 2;/* bit:8~9 */
unsigned short visionWarngingType : 2;/* bit:10~11 */
unsigned short visionLowConfidenceFlag : 1;/* bit:12 */
unsigned short tofWarngingType : 2;/* bit:13~14 */
unsigned short : 1; /*bit15预留*/
}MAGNETOMETER_ERROR_t;
MAGNETOMETER_ERROR_t p_magnetometer_error_t = {0,0,0,0,0,0,0,0,0};
Q_PROPERTY(int magWarngingType READ magWarngingType NOTIFY basicStateNoti)
int magWarngingType(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.magWarngingType;
}
Q_PROPERTY(bool needCalibrationFlag READ needCalibrationFlag NOTIFY basicStateNoti)
bool needCalibrationFlag(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.needCalibrationFlag;
}
Q_PROPERTY(int magNubmer READ magNubmer NOTIFY basicStateNoti)
int magNubmer(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.magNubmer;
}
Q_PROPERTY(int barometerWarngingType READ barometerWarngingType NOTIFY basicStateNoti)
int barometerWarngingType(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.barometerWarningType;
}
Q_PROPERTY(bool barometerTemperatureFlag READ barometerTemperatureFlag NOTIFY basicStateNoti)
bool barometerTemperatureFlag(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.barometerTemperatureFlag;
}
Q_PROPERTY(int barometerNumber READ barometerNumber NOTIFY basicStateNoti)
int barometerNumber(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.barometerNumber;
}
Q_PROPERTY(int visionWarngingType READ visionWarngingType NOTIFY basicStateNoti)
int visionWarngingType(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.visionWarngingType;
}
Q_PROPERTY(bool visionLowConfidenceFlag READ visionLowConfidenceFlag NOTIFY basicStateNoti)
bool visionLowConfidenceFlag(){
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
return p_magnetometer_error_t.visionLowConfidenceFlag;
}
Q_PROPERTY(int tofWarngingType READ tofWarngingType NOTIFY basicStateNoti)
int tofWarngingType(){
memset(&p_magnetometer_error_t, state1->TOFabnstatus,2);
return p_magnetometer_error_t.tofWarngingType;
}
/*
byte93
uint8
EEPROM、存储器、GPS模块异常状态
bit0EEPROM通信异常标志1标志生效
bit1存储器通信异常标志1标志生效
bit2存储器已满标志1标志生效
bit3存储器保护标志1标志生效
bit4~5GPS异常类型
1通信异常
2数据异常
bit6~7GPS模块编号
*/
typedef struct {
/* byte 0 */
unsigned short EEPROMComFlag : 1;/* bit: 0 */
unsigned short memoryComFlag : 1;/* bit: 1 */
unsigned short memoryFullFlag : 1;/* bit: 2 */
unsigned short memorySafeFlag : 1;/* bit: 3 */
unsigned short gpsWarningType : 2;/* bit: 4~5 */
unsigned short gpsNumber : 2;/* bit: 6~7 */
}MEMORY_STATE_t;
MEMORY_STATE_t p_momory_state_t = {0,0,0,0,0,0};
Q_PROPERTY(bool EEPROMComFlag READ EEPROMComFlag NOTIFY basicStateNoti)
bool EEPROMComFlag(){
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
return p_momory_state_t.EEPROMComFlag;
}
Q_PROPERTY(bool memoryComFlag READ memoryComFlag NOTIFY basicStateNoti)
bool memoryComFlag(){
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
return p_momory_state_t.memoryComFlag;
}
Q_PROPERTY(bool memoryFullFlag READ memoryFullFlag NOTIFY basicStateNoti)
bool memoryFullFlag(){
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
return p_momory_state_t.memoryFullFlag;
}
Q_PROPERTY(bool memorySafeFlag READ memorySafeFlag NOTIFY basicStateNoti)
bool memorySafeFlag(){
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
return p_momory_state_t.memorySafeFlag;
}
Q_PROPERTY(int gpsWarningType READ gpsWarningType NOTIFY basicStateNoti)
int gpsWarningType(){
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
return p_momory_state_t.gpsWarningType;
}
Q_PROPERTY(int gpsNumber READ gpsNumber NOTIFY basicStateNoti)
int gpsNumber(){
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
return p_momory_state_t.gpsNumber;
}
/*
byte94
uint8
飞控主控异常状态
bit0温度异常标志1标志生效
bit1与协处理器通信异常标志1标志生效
bit2~7预留 0无意义
*/
typedef struct {
/* byte 0 */
unsigned short fcTemperatureWaringFlag : 1;/* bit: 0 */
unsigned short fcProcesssorComFlag : 1;/* bit: 1 */
unsigned short : 6;/* bit: 2~7 */
}FCMAIN_STATE_t;
FCMAIN_STATE_t p_fcmain_state_t = {0,0};
Q_PROPERTY(bool fcTemperatureWaringFlag READ fcTemperatureWaringFlag NOTIFY basicStateNoti)
bool fcTemperatureWaringFlag(){
memcpy(&p_fcmain_state_t,&(state1->FCabnstatus),1);
return p_fcmain_state_t.fcTemperatureWaringFlag;
}
Q_PROPERTY(bool fcProcesssorComFlag READ fcProcesssorComFlag NOTIFY basicStateNoti)
bool fcProcesssorComFlag(){
memcpy(&p_fcmain_state_t,&(state1->FCabnstatus),1);
return p_fcmain_state_t.fcProcesssorComFlag;
}
/*
byte0 uint8 SDK控制使能(RC以外的控制接入) 1标志生效
bit0SDK使能
bit 1航向角度控制
bit 2航向速度控制
bit 3水平速度控制
bit 4水平位置控制
bit 5高度控制
bit 6高度速度控制
*/
Q_PROPERTY(uchar sdk_control READ sdk_control NOTIFY basicStateNoti)
uchar sdk_control(){
return {state2->SDKswitch};
}
/*
byte1
uint8
遥杆屏蔽状态1标志生效
Bit0: 前进杆屏蔽状态
Bit1: 后退杆屏蔽状态
Bit2: 向左杆屏蔽状态
Bit3: 向右杆屏蔽状态
Bit4: 向上杆屏蔽状态
Bit5: 向下杆屏蔽状态
Bit6: 右旋杆屏蔽状态
*/
Q_PROPERTY(uchar rc_shield READ rc_shield NOTIFY basicStateNoti)
uchar rc_shield(){
return {state2->RCshield};
}
/*
byte2 uint8
飞控任务、功能
bit0~3任务
0:NONE_TASK
1:IDLE_TASK
2:MANUALPILOT_TASK
3:RTL_TASK
4:AUTO_TAKEOFF_TASK
5:AUTO_LAND_TASK
6:GNSS_SURROUND_TASK
7:TRAJECTOR_PLAN_TASK
bit4~7功能
1:idle
2:standby
3:guide
4:takeoff
5:land
6:circle
7:NONE_FUNC
*/
typedef struct {
/* byte 0 */
unsigned short fcTask : 4;/* bit: 0~3 */
unsigned short fcFunc : 4;/* bit: 4~7 */
}FCTASKFUNC_t;
FCTASKFUNC_t p_fcTaskFunc_t = {0,0};
//zxtested
Q_PROPERTY(int task READ task NOTIFY basicStateNoti)
int task(){
memcpy(&p_fcTaskFunc_t,&(state2->fcTask),1);
return p_fcTaskFunc_t.fcTask;
}
//zxtested
Q_PROPERTY(int funcProper READ funcProper NOTIFY basicStateNoti)
int funcProper(){
memcpy(&p_fcTaskFunc_t,&(state2->fcTask),1);
return p_fcTaskFunc_t.fcFunc;
}
/*
byte3-byte4
int16
油门通道控制量
zxtested
*/
Q_PROPERTY(short throttle READ throttle NOTIFY basicStateNoti)
short throttle(){
return state2->throttle;
}
/*
byte5-byte6
int16
航向通道控制量
zxtested
*/
Q_PROPERTY(short headingChannel READ headingChannel NOTIFY basicStateNoti)
short headingChannel(){
return state2->heading;
}
/*
byte7-byte8
int16
横滚通道控制量
zxtested
*/
Q_PROPERTY(short rollChannel READ rollChannel NOTIFY basicStateNoti)
short rollChannel(){
return state2->roll;
}
/*
byte9-byte10
int16
俯仰通道控制量
zxtested
*/
Q_PROPERTY(short pitchChannel READ pitchChannel NOTIFY basicStateNoti)
short pitchChannel(){
return state2->pitch;
}
/*
byte11-byte14
uint32
电机控制量减去1000
1~3号
bit0~9 1号电机
bit10~19 2号电机
bit20~29 3号电机
bit30~31预留 0无意义
*/
typedef struct {
short a : 10;/* bit: 0~9 */
short b : 10;/* bit: 10~19 */
short c : 10;/* bit: 20~29 */
short : 2;/* bit: 30~21 */
}ELECTRIC_MACHINERY_t;
ELECTRIC_MACHINERY_t moter_1to3 = {0,0,0};
ELECTRIC_MACHINERY_t moter_4to6 = {0,0,0};
ELECTRIC_MACHINERY_t moter_7to9 = {0,0,0};
ELECTRIC_MACHINERY_t moter_10to12 = {0,0,0};
Q_PROPERTY(short electric_machinery_1 READ electric_machinery_1 NOTIFY basicStateNoti)
short electric_machinery_1(){
moter_1to3.a = (state2->moter_1 & 0b00000000000000000000001111111111);
moter_1to3.b = (state2->moter_1 & 0b00000000000011111111110000000000) >> 10;
moter_1to3.c = (state2->moter_1 & 0b00111111111100000000000000000000) >> 20;
return moter_1to3.a;
}
Q_PROPERTY(short electric_machinery_2 READ electric_machinery_2 NOTIFY basicStateNoti)
short electric_machinery_2(){
moter_1to3.a = (state2->moter_1 & 0b00000000000000000000001111111111);
moter_1to3.b = (state2->moter_1 & 0b00000000000011111111110000000000) >> 10;
moter_1to3.c = (state2->moter_1 & 0b00111111111100000000000000000000) >> 20;
return moter_1to3.b;
}
Q_PROPERTY(short electric_machinery_3 READ electric_machinery_3 NOTIFY basicStateNoti)
short electric_machinery_3(){
moter_1to3.a = (state2->moter_1 & 0b00000000000000000000001111111111);
moter_1to3.b = (state2->moter_1 & 0b00000000000011111111110000000000) >> 10;
moter_1to3.c = (state2->moter_1 & 0b00111111111100000000000000000000) >> 20;
return moter_1to3.c;
}
Q_PROPERTY(short electric_machinery_4 READ electric_machinery_4 NOTIFY basicStateNoti)
short electric_machinery_4(){
moter_4to6.a = (state2->moter_4 & 0b00000000000000000000001111111111);
moter_4to6.b = (state2->moter_4 & 0b00000000000011111111110000000000) >> 10;
moter_4to6.c = (state2->moter_4 & 0b00111111111100000000000000000000) >> 20;
return moter_4to6.a;
}
Q_PROPERTY(short electric_machinery_5 READ electric_machinery_5 NOTIFY basicStateNoti)
short electric_machinery_5(){
moter_4to6.a = (state2->moter_4 & 0b00000000000000000000001111111111);
moter_4to6.b = (state2->moter_4 & 0b00000000000011111111110000000000) >> 10;
moter_4to6.c = (state2->moter_4 & 0b00111111111100000000000000000000) >> 20;
return moter_4to6.b;
}
Q_PROPERTY(short electric_machinery_6 READ electric_machinery_6 NOTIFY basicStateNoti)
short electric_machinery_6(){
moter_4to6.a = (state2->moter_4 & 0b00000000000000000000001111111111);
moter_4to6.b = (state2->moter_4 & 0b00000000000011111111110000000000) >> 10;
moter_4to6.c = (state2->moter_4 & 0b00111111111100000000000000000000) >> 20;
return moter_4to6.c;
}
Q_PROPERTY(short electric_machinery_7 READ electric_machinery_7 NOTIFY basicStateNoti)
short electric_machinery_7(){
moter_7to9.a = (state2->moter_7 & 0b00000000000000000000001111111111);
moter_7to9.b = (state2->moter_7 & 0b00000000000011111111110000000000) >> 10;
moter_7to9.c = (state2->moter_7 & 0b00111111111100000000000000000000) >> 20;
return moter_7to9.a;
}
Q_PROPERTY(short electric_machinery_8 READ electric_machinery_8 NOTIFY basicStateNoti)
short electric_machinery_8(){
moter_7to9.a = (state2->moter_7 & 0b00000000000000000000001111111111);
moter_7to9.b = (state2->moter_7 & 0b00000000000011111111110000000000) >> 10;
moter_7to9.c = (state2->moter_7 & 0b00111111111100000000000000000000) >> 20;
return moter_7to9.b;
}
Q_PROPERTY(short electric_machinery_9 READ electric_machinery_9 NOTIFY basicStateNoti)
short electric_machinery_9(){
moter_7to9.a = (state2->moter_7 & 0b00000000000000000000001111111111);
moter_7to9.b = (state2->moter_7 & 0b00000000000011111111110000000000) >> 10;
moter_7to9.c = (state2->moter_7 & 0b00111111111100000000000000000000) >> 20;
return moter_7to9.c;
}
Q_PROPERTY(short electric_machinery_10 READ electric_machinery_10 NOTIFY basicStateNoti)
short electric_machinery_10(){
moter_10to12.a = (state2->moter_10 & 0b00000000000000000000001111111111);
moter_10to12.b = (state2->moter_10 & 0b00000000000011111111110000000000) >> 10;
moter_10to12.c = (state2->moter_10 & 0b00111111111100000000000000000000) >> 20;
return moter_10to12.a;
}
Q_PROPERTY(short electric_machinery_11 READ electric_machinery_11 NOTIFY basicStateNoti)
short electric_machinery_11(){
moter_10to12.a = (state2->moter_10 & 0b00000000000000000000001111111111);
moter_10to12.b = (state2->moter_10 & 0b00000000000011111111110000000000) >> 10;
moter_10to12.c = (state2->moter_10 & 0b00111111111100000000000000000000) >> 20;
return moter_10to12.b;
}
Q_PROPERTY(short electric_machinery_12 READ electric_machinery_12 NOTIFY basicStateNoti)
short electric_machinery_12(){
moter_10to12.a = (state2->moter_10 & 0b00000000000000000000001111111111);
moter_10to12.b = (state2->moter_10 & 0b00000000000011111111110000000000) >> 10;
moter_10to12.c = (state2->moter_10 & 0b00111111111100000000000000000000) >> 20;;
return moter_10to12.c;
}
/*
byte27
uint8
振动晃动系数
bit0~3
振动系数
bit4~7
晃动系数
zxtested
*/
Q_PROPERTY(uchar vibrated_number READ vibrated_number NOTIFY basicStateNoti)
uchar vibrated_number(){
return (state2->vibrationNum);
}
/*
byte28-byte31
int32
GPS北向速度
cm/s
*/
Q_PROPERTY(short GNSSspeed_N READ GNSSspeed_N NOTIFY basicStateNoti)
short GNSSspeed_N(){
return (state2->GPSnorthSpeed);
}
/*
byte32-byte35
int32
GPS东向速度
cm/s
*/
Q_PROPERTY(short GNSSspeed_E READ GNSSspeed_E NOTIFY basicStateNoti)
short GNSSspeed_E(){
return (state2->GPSeastSpeed);
}
/*
byte36-byte39
int32
GPS地向速度
cm/s
*/
Q_PROPERTY(short GNSSspeed_D READ GNSSspeed_D NOTIFY basicStateNoti)
short GNSSspeed_D(){
return (state2->GPSgroundSpeed);
}
/*
byte40-byte43
int32
目标位置经度
deg
1e7
*/
Q_PROPERTY(double target_longitude READ target_longitude NOTIFY basicStateNoti)
double target_longitude(){
return state2->targetLong * 1.0 / 10000000.0;
}
/*
byte44-byte47
int32
目标位置纬度
deg
1e7
*/
Q_PROPERTY(double target_latitude READ target_latitude NOTIFY basicStateNoti)
double target_latitude(){
return state2->targetLat * 1.0 / 10000000.0;
}
/*
数据,赋值操作,地向速度,单位cm/s
*/
Q_PROPERTY(short speed_ground READ speed_ground NOTIFY basicStateNoti)
short speed_ground(){
return 0;
}
/*
byte48
uint8
位置启动、电机状态
bit0水平位置控制
bit1高度位置控制
bit2~3电机状态
0停转
1怠速
2运行
3测试
zxtested
*/
typedef struct {
unsigned short hControl : 1;/* bit: 0*/
unsigned short vControl : 1;/* bit: 1*/
unsigned short moter_state : 2;/* bit: 2~3 */
unsigned short : 4;
}MOTER_STATE_t;
MOTER_STATE_t p_moter_state_t = {0,0,0};
Q_PROPERTY(bool hControl READ hControl NOTIFY basicStateNoti)
bool hControl(){
memcpy(&p_moter_state_t,&(state2->moterStatus),1);
return p_moter_state_t.hControl;
}
Q_PROPERTY(bool vControl READ vControl NOTIFY basicStateNoti)
bool vControl(){
memcpy(&p_moter_state_t,&(state2->moterStatus),1);
return p_moter_state_t.vControl;
}
Q_PROPERTY(uchar alternator_state READ alternator_state NOTIFY basicStateNoti)
uchar alternator_state(){
memcpy(&p_moter_state_t,&(state2->moterStatus),1);
return p_moter_state_t.moter_state;
}
/*
byte49-byte50
int16
IMU温度
deg
*/
Q_PROPERTY(short imu_temperature READ imu_temperature NOTIFY basicStateNoti)
short imu_temperature(){
return (state2->IMU_temp);
}
/*
byte51-byte52
uint16
平均转速
*/
Q_PROPERTY(short speed READ speed NOTIFY basicStateNoti)
short speed(){
return (state2->avgNum);
}
//飞控上报数据1
glink_m_aircraft_fc_basic_state_1_t *state1 = glink_m_aircraft_fc_basic_state_1_createEmptyInfo();
//QVariantMap infoMap1;
glink_m_aircraft_fc_basic_state_2_t *state2 = glink_m_aircraft_fc_basic_state_2_createEmptyInfo();
//QVariantMap infoMap2;
Q_PROPERTY(QPointF droneCoordinate READ droneCoordinate NOTIFY droneCoordinateNoti)
QPointF droneCoordinate(){
return QPointF(current_longitude(),current_latitude());
}
void updataBaseState(){
emit basicStateNoti();
emit droneCoordinateNoti(droneCoordinate());
}
signals:
void basicStateNoti();
void droneCoordinateNoti(QPointF point);
public slots:
private:
};
#endif // FLYCONTROLINFO_H