Files

1252 lines
31 KiB
C
Raw Normal View History

#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~56
212021
bit6~94
bit10~145
bit15~195
bit20~256
bit26~316
0x7DF7BDFF2063715153131
*/
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~66
210301202131
7~93
000~999
101
01
210301001 1202131
*/
Q_PROPERTY(uint fc_Version READ fc_Version NOTIFY basicStateNoti)
uint fc_Version(){
return state1->fcVersion;
}
/*
byte19-byte22
uint32
线
bit0~4线
bit5~9线
bit10~141线
bit30~31线1
bit15~191线
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天线定位差分状态
9bit30~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~20
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
EEPROMGPS模块异常状态
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