#ifndef _LOGSTRUCTURE_H #define _LOGSTRUCTURE_H /* unfortunately these need to be macros because of a limitation of named member structure initialisation in g++ */ #define LOG_PACKET_HEADER uint8_t head1, head2, msgid; #define LOG_PACKET_HEADER_INIT(id) head1 : HEAD_BYTE1, head2 : HEAD_BYTE2, msgid : id // once the logging code is all converted we will remove these from // this header #define HEAD_BYTE1 0xA3 // Decimal 163 #define HEAD_BYTE2 0x95 // Decimal 149 // structure used to define logging format struct LogStructure { uint8_t msg_type; uint8_t msg_len; const char name[5]; const char format[16]; const char labels[64]; }; /* log structures common to all vehicle types */ struct PACKED log_Format { LOG_PACKET_HEADER; uint8_t type; uint8_t length; char name[4]; char format[16]; char labels[64]; }; struct PACKED log_Parameter { LOG_PACKET_HEADER; uint64_t time_us; char name[16]; float value; }; struct PACKED log_GPS { LOG_PACKET_HEADER; uint64_t time_us; uint8_t status; uint32_t gps_week_ms; uint16_t gps_week; uint8_t num_sats; uint16_t hdop; int32_t latitude; int32_t longitude; int32_t rel_altitude; int32_t altitude; uint32_t ground_speed; int32_t ground_course; float vel_z; uint8_t used; }; struct PACKED log_GPA { LOG_PACKET_HEADER; uint64_t time_us; uint16_t vdop; uint16_t hacc; uint16_t vacc; uint16_t sacc; }; struct PACKED log_Message { LOG_PACKET_HEADER; uint64_t time_us; char msg[64]; }; struct PACKED log_IMU { LOG_PACKET_HEADER; uint64_t time_us; float gyro_x, gyro_y, gyro_z; float accel_x, accel_y, accel_z; uint32_t gyro_error, accel_error; float temperature; uint8_t gyro_health, accel_health; }; struct PACKED log_IMUDT { LOG_PACKET_HEADER; uint64_t time_us; float delta_time, delta_vel_dt; float delta_ang_x, delta_ang_y, delta_ang_z; float delta_vel_x, delta_vel_y, delta_vel_z; }; struct PACKED log_Vibe { LOG_PACKET_HEADER; uint64_t time_us; float vibe_x, vibe_y, vibe_z; uint32_t clipping_0, clipping_1, clipping_2; }; struct PACKED log_RCIN { LOG_PACKET_HEADER; uint64_t time_us; uint16_t chan1; uint16_t chan2; uint16_t chan3; uint16_t chan4; uint16_t chan5; uint16_t chan6; uint16_t chan7; uint16_t chan8; uint16_t chan9; uint16_t chan10; uint16_t chan11; uint16_t chan12; uint16_t chan13; uint16_t chan14; }; struct PACKED log_RCOUT { LOG_PACKET_HEADER; uint64_t time_us; uint16_t chan1; uint16_t chan2; uint16_t chan3; uint16_t chan4; uint16_t chan5; uint16_t chan6; uint16_t chan7; uint16_t chan8; uint16_t chan9; uint16_t chan10; uint16_t chan11; uint16_t chan12; }; struct PACKED log_RSSI { LOG_PACKET_HEADER; uint64_t time_us; float RXRSSI; }; struct PACKED log_BARO { LOG_PACKET_HEADER; uint64_t time_us; float altitude; float pressure; int16_t temperature; float climbrate; }; struct PACKED log_AHRS { LOG_PACKET_HEADER; uint64_t time_us; int16_t roll; int16_t pitch; uint16_t yaw; float alt; int32_t lat; int32_t lng; }; struct PACKED log_POS { LOG_PACKET_HEADER; uint64_t time_us; int32_t lat; int32_t lng; float alt; float rel_alt; }; struct PACKED log_POWR { LOG_PACKET_HEADER; uint64_t time_us; uint16_t Vcc; uint16_t Vservo; uint16_t flags; }; struct PACKED log_EKF1 { LOG_PACKET_HEADER; uint64_t time_us; int16_t roll; int16_t pitch; uint16_t yaw; float velN; float velE; float velD; float posD_dot; float posN; float posE; float posD; int16_t gyrX; int16_t gyrY; int16_t gyrZ; }; struct PACKED log_EKF2 { LOG_PACKET_HEADER; uint64_t time_us; int8_t Ratio; int8_t AZ1bias; int8_t AZ2bias; int16_t windN; int16_t windE; int16_t magN; int16_t magE; int16_t magD; int16_t magX; int16_t magY; int16_t magZ; }; struct PACKED log_NKF2 { LOG_PACKET_HEADER; uint64_t time_us; int8_t AZbias; int16_t scaleX; int16_t scaleY; int16_t scaleZ; int16_t windN; int16_t windE; int16_t magN; int16_t magE; int16_t magD; int16_t magX; int16_t magY; int16_t magZ; uint8_t index; }; struct PACKED log_EKF3 { LOG_PACKET_HEADER; uint64_t time_us; int16_t innovVN; int16_t innovVE; int16_t innovVD; int16_t innovPN; int16_t innovPE; int16_t innovPD; int16_t innovMX; int16_t innovMY; int16_t innovMZ; int16_t innovVT; }; struct PACKED log_NKF3 { LOG_PACKET_HEADER; uint64_t time_us; int16_t innovVN; int16_t innovVE; int16_t innovVD; int16_t innovPN; int16_t innovPE; int16_t innovPD; int16_t innovMX; int16_t innovMY; int16_t innovMZ; int16_t innovYaw; int16_t innovVT; }; struct PACKED log_EKF4 { LOG_PACKET_HEADER; uint64_t time_us; int16_t sqrtvarV; int16_t sqrtvarP; int16_t sqrtvarH; int16_t sqrtvarMX; int16_t sqrtvarMY; int16_t sqrtvarMZ; int16_t sqrtvarVT; int8_t offsetNorth; int8_t offsetEast; uint8_t faults; uint8_t timeouts; uint16_t solution; uint16_t gps; }; struct PACKED log_NKF4 { LOG_PACKET_HEADER; uint64_t time_us; int16_t sqrtvarV; int16_t sqrtvarP; int16_t sqrtvarH; int16_t sqrtvarM; int16_t sqrtvarVT; float tiltErr; int8_t offsetNorth; int8_t offsetEast; uint8_t faults; uint8_t timeouts; uint16_t solution; uint16_t gps; int8_t primary; }; struct PACKED log_EKF5 { LOG_PACKET_HEADER; uint64_t time_us; uint8_t normInnov; int16_t FIX; int16_t FIY; int16_t AFI; int16_t HAGL; int16_t offset; int16_t RI; uint16_t meaRng; uint16_t errHAGL; }; struct PACKED log_Cmd { LOG_PACKET_HEADER; uint64_t time_us; uint16_t command_total; uint16_t sequence; uint16_t command; float param1; float param2; float param3; float param4; float latitude; float longitude; float altitude; }; struct PACKED log_Radio { LOG_PACKET_HEADER; uint64_t time_us; uint8_t rssi; uint8_t remrssi; uint8_t txbuf; uint8_t noise; uint8_t remnoise; uint16_t rxerrors; uint16_t fixed; }; struct PACKED log_Camera { LOG_PACKET_HEADER; uint64_t time_us; uint32_t gps_time; uint16_t gps_week; int32_t latitude; int32_t longitude; int32_t altitude; int32_t altitude_rel; int16_t roll; int16_t pitch; uint16_t yaw; }; struct PACKED log_Attitude { LOG_PACKET_HEADER; uint64_t time_us; int16_t control_roll; int16_t roll; int16_t control_pitch; int16_t pitch; uint16_t control_yaw; uint16_t yaw; uint16_t error_rp; uint16_t error_yaw; }; struct PACKED log_PID { LOG_PACKET_HEADER; uint64_t time_us; float desired; float P; float I; float D; float FF; float AFF; }; struct PACKED log_Current { LOG_PACKET_HEADER; uint64_t time_us; int16_t throttle; int16_t battery_voltage; int16_t current_amps; uint16_t board_voltage; float current_total; int16_t battery2_voltage; }; struct PACKED log_Compass { LOG_PACKET_HEADER; uint64_t time_us; int16_t mag_x; int16_t mag_y; int16_t mag_z; int16_t offset_x; int16_t offset_y; int16_t offset_z; int16_t motor_offset_x; int16_t motor_offset_y; int16_t motor_offset_z; uint8_t health; }; struct PACKED log_Mode { LOG_PACKET_HEADER; uint64_t time_us; uint8_t mode; uint8_t mode_num; }; /* rangefinder - support for 4 sensors */ struct PACKED log_RFND { LOG_PACKET_HEADER; uint64_t time_us; uint16_t dist1; uint16_t dist2; }; /* terrain log structure */ struct PACKED log_TERRAIN { LOG_PACKET_HEADER; uint64_t time_us; uint8_t status; int32_t lat; int32_t lng; uint16_t spacing; float terrain_height; float current_height; uint16_t pending; uint16_t loaded; }; /* UBlox logging */ struct PACKED log_Ubx1 { LOG_PACKET_HEADER; uint64_t time_us; uint8_t instance; uint16_t noisePerMS; uint8_t jamInd; uint8_t aPower; uint16_t agcCnt; }; struct PACKED log_Ubx2 { LOG_PACKET_HEADER; uint64_t time_us; uint8_t instance; int8_t ofsI; uint8_t magI; int8_t ofsQ; uint8_t magQ; }; struct PACKED log_GPS_RAW { LOG_PACKET_HEADER; uint64_t time_us; int32_t iTOW; int16_t week; uint8_t numSV; uint8_t sv; double cpMes; double prMes; float doMes; int8_t mesQI; int8_t cno; uint8_t lli; }; struct PACKED log_GPS_RAWH { LOG_PACKET_HEADER; uint64_t time_us; double rcvTow; uint16_t week; int8_t leapS; uint8_t numMeas; uint8_t recStat; }; struct PACKED log_GPS_RAWS { LOG_PACKET_HEADER; uint64_t time_us; double prMes; double cpMes; float doMes; uint8_t gnssId; uint8_t svId; uint8_t freqId; uint16_t locktime; uint8_t cno; uint8_t prStdev; uint8_t cpStdev; uint8_t doStdev; uint8_t trkStat; }; struct PACKED log_GPS_SBF_EVENT { LOG_PACKET_HEADER; uint64_t time_us; uint32_t TOW; uint16_t WNc; uint8_t Mode; uint8_t Error; double Latitude; double Longitude; double Height; float Undulation; float Vn; float Ve; float Vu; float COG; }; struct PACKED log_Esc { LOG_PACKET_HEADER; uint64_t time_us; int16_t rpm; int16_t voltage; int16_t current; int16_t temperature; }; struct PACKED log_AIRSPEED { LOG_PACKET_HEADER; uint64_t time_us; float airspeed; float diffpressure; int16_t temperature; float rawpressure; float offset; }; struct PACKED log_ACCEL { LOG_PACKET_HEADER; uint64_t time_us; uint64_t sample_us; float AccX, AccY, AccZ; }; struct PACKED log_GYRO { LOG_PACKET_HEADER; uint64_t time_us; uint64_t sample_us; float GyrX, GyrY, GyrZ; }; struct PACKED log_DF_MAV_Stats { LOG_PACKET_HEADER; uint32_t timestamp; uint32_t seqno; uint32_t dropped; uint32_t retries; uint32_t resends; uint8_t internal_errors; // uint8_t - wishful thinking? uint8_t state_free_avg; uint8_t state_free_min; uint8_t state_free_max; uint8_t state_pending_avg; uint8_t state_pending_min; uint8_t state_pending_max; uint8_t state_sent_avg; uint8_t state_sent_min; uint8_t state_sent_max; // uint8_t state_retry_avg; // uint8_t state_retry_min; // uint8_t state_retry_max; }; struct PACKED log_ORGN { LOG_PACKET_HEADER; uint64_t time_us; uint8_t origin_type; int32_t latitude; int32_t longitude; int32_t altitude; }; struct PACKED log_RPM { LOG_PACKET_HEADER; uint64_t time_us; float rpm1; float rpm2; }; // #if SBP_HW_LOGGING struct PACKED log_SbpLLH { LOG_PACKET_HEADER; uint64_t time_us; uint32_t tow; int32_t lat; int32_t lon; int32_t alt; uint8_t n_sats; uint8_t flags; }; struct PACKED log_SbpHealth { LOG_PACKET_HEADER; uint64_t time_us; uint32_t crc_error_counter; uint32_t last_injected_data_ms; uint32_t last_iar_num_hypotheses; }; struct PACKED log_SbpRAW1 { LOG_PACKET_HEADER; uint64_t time_us; uint16_t msg_type; uint16_t sender_id; uint8_t msg_len; uint8_t data1[64]; }; struct PACKED log_SbpRAW2 { LOG_PACKET_HEADER; uint64_t time_us; uint16_t msg_type; uint8_t data2[192]; }; // #endif // SBP_HW_LOGGING /* Format characters in the format string for binary log messages b : int8_t B : uint8_t h : int16_t H : uint16_t i : int32_t I : uint32_t f : float d : double n : char[4] N : char[16] Z : char[64] c : int16_t * 100 C : uint16_t * 100 e : int32_t * 100 E : uint32_t * 100 L : int32_t latitude/longitude M : uint8_t flight mode q : int64_t Q : uint64_t */ // messages for all boards #define LOG_BASE_STRUCTURES \ { LOG_FORMAT_MSG, sizeof(log_Format), \ "FMT", "BBnNZ", "Type,Length,Name,Format,Columns" }, \ { LOG_PARAMETER_MSG, sizeof(log_Parameter), \ "PARM", "QNf", "TimeUS,Name,Value" }, \ { LOG_GPS_MSG, sizeof(log_GPS), \ "GPS", "QBIHBcLLeeEefB", "TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U" }, \ { LOG_GPS2_MSG, sizeof(log_GPS), \ "GPS2", "QBIHBcLLeeEefB", "TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,RAlt,Alt,Spd,GCrs,VZ,U" }, \ { LOG_GPA_MSG, sizeof(log_GPA), \ "GPA", "QCCCC", "TimeUS,VDop,HAcc,VAcc,SAcc" }, \ { LOG_GPA2_MSG, sizeof(log_GPA), \ "GPA2", "QCCCC", "TimeUS,VDop,HAcc,VAcc,SAcc" }, \ { LOG_IMU_MSG, sizeof(log_IMU), \ "IMU", "QffffffIIfBB", "TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt" }, \ { LOG_MESSAGE_MSG, sizeof(log_Message), \ "MSG", "QZ", "TimeUS,Message"}, \ { LOG_RCIN_MSG, sizeof(log_RCIN), \ "RCIN", "Qhhhhhhhhhhhhhh", "TimeUS,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14" }, \ { LOG_RCOUT_MSG, sizeof(log_RCOUT), \ "RCOU", "Qhhhhhhhhhhhh", "TimeUS,Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8,Ch9,Ch10,Ch11,Ch12" }, \ { LOG_RSSI_MSG, sizeof(log_RSSI), \ "RSSI", "Qf", "TimeUS,RXRSSI" }, \ { LOG_BARO_MSG, sizeof(log_BARO), \ "BARO", "Qffcf", "TimeUS,Alt,Press,Temp,CRt" }, \ { LOG_POWR_MSG, sizeof(log_POWR), \ "POWR","QCCH","TimeUS,Vcc,VServo,Flags" }, \ { LOG_CMD_MSG, sizeof(log_Cmd), \ "CMD", "QHHHfffffff","TimeUS,CTot,CNum,CId,Prm1,Prm2,Prm3,Prm4,Lat,Lng,Alt" }, \ { LOG_RADIO_MSG, sizeof(log_Radio), \ "RAD", "QBBBBBHH", "TimeUS,RSSI,RemRSSI,TxBuf,Noise,RemNoise,RxErrors,Fixed" }, \ { LOG_CAMERA_MSG, sizeof(log_Camera), \ "CAM", "QIHLLeeccC","TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,Roll,Pitch,Yaw" }, \ { LOG_ARSP_MSG, sizeof(log_AIRSPEED), \ "ARSP", "Qffcff", "TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset" }, \ { LOG_CURRENT_MSG, sizeof(log_Current), \ "CURR", "QhhhHfh","TimeUS,Throttle,Volt,Curr,Vcc,CurrTot,Volt2" },\ { LOG_ATTITUDE_MSG, sizeof(log_Attitude),\ "ATT", "QccccCCCC", "TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw" }, \ { LOG_COMPASS_MSG, sizeof(log_Compass), \ "MAG", "QhhhhhhhhhB", "TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health" }, \ { LOG_MODE_MSG, sizeof(log_Mode), \ "MODE", "QMB", "TimeUS,Mode,ModeNum" }, \ { LOG_RFND_MSG, sizeof(log_RFND), \ "RFND", "QCC", "TimeUS,Dist1,Dist2" }, \ { LOG_DF_MAV_STATS, sizeof(log_DF_MAV_Stats), \ "DMS", "IIIIIBBBBBBBBBB", "TimeMS,N,Dp,RT,RS,Er,Fa,Fmn,Fmx,Pa,Pmn,Pmx,Sa,Smn,Smx" } // messages for more advanced boards #define LOG_EXTRA_STRUCTURES \ { LOG_IMU2_MSG, sizeof(log_IMU), \ "IMU2", "QffffffIIfBB", "TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt" }, \ { LOG_IMU3_MSG, sizeof(log_IMU), \ "IMU3", "QffffffIIfBB", "TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,ErrG,ErrA,Temp,GyHlt,AcHlt" }, \ { LOG_AHR2_MSG, sizeof(log_AHRS), \ "AHR2","QccCfLL","TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng" }, \ { LOG_POS_MSG, sizeof(log_POS), \ "POS","QLLff","TimeUS,Lat,Lng,Alt,RelAlt" }, \ { LOG_SIMSTATE_MSG, sizeof(log_AHRS), \ "SIM","QccCfLL","TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng" }, \ { LOG_EKF1_MSG, sizeof(log_EKF1), \ "EKF1","QccCfffffffccc","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ" }, \ { LOG_EKF2_MSG, sizeof(log_EKF2), \ "EKF2","Qbbbcchhhhhh","TimeUS,Ratio,AZ1bias,AZ2bias,VWN,VWE,MN,ME,MD,MX,MY,MZ" }, \ { LOG_EKF3_MSG, sizeof(log_EKF3), \ "EKF3","Qcccccchhhc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IVT" }, \ { LOG_EKF4_MSG, sizeof(log_EKF4), \ "EKF4","QcccccccbbBBHH","TimeUS,SV,SP,SH,SMX,SMY,SMZ,SVT,OFN,OFE,FS,TS,SS,GPS" }, \ { LOG_EKF5_MSG, sizeof(log_EKF5), \ "EKF5","QBhhhcccCC","TimeUS,normInnov,FIX,FIY,AFI,HAGL,offset,RI,meaRng,errHAGL" }, \ { LOG_NKF1_MSG, sizeof(log_EKF1), \ "NKF1","QccCfffffffccc","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ" }, \ { LOG_NKF2_MSG, sizeof(log_NKF2), \ "NKF2","QbccccchhhhhhB","TimeUS,AZbias,GSX,GSY,GSZ,VWN,VWE,MN,ME,MD,MX,MY,MZ,MI" }, \ { LOG_NKF3_MSG, sizeof(log_NKF3), \ "NKF3","Qcccccchhhcc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IYAW,IVT" }, \ { LOG_NKF4_MSG, sizeof(log_NKF4), \ "NKF4","QcccccfbbBBHHb","TimeUS,SV,SP,SH,SM,SVT,errRP,OFN,OFE,FS,TS,SS,GPS,PI" }, \ { LOG_NKF5_MSG, sizeof(log_EKF5), \ "NKF5","QBhhhcccCC","TimeUS,normInnov,FIX,FIY,AFI,HAGL,offset,RI,meaRng,errHAGL" }, \ { LOG_NKF6_MSG, sizeof(log_EKF1), \ "NKF6","QccCfffffffccc","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ" }, \ { LOG_NKF7_MSG, sizeof(log_NKF2), \ "NKF7","QbccccchhhhhhB","TimeUS,AZbias,GSX,GSY,GSZ,VWN,VWE,MN,ME,MD,MX,MY,MZ,MI" }, \ { LOG_NKF8_MSG, sizeof(log_NKF3), \ "NKF8","Qcccccchhhcc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IYAW,IVT" }, \ { LOG_NKF9_MSG, sizeof(log_NKF4), \ "NKF9","QcccccfbbBBHHb","TimeUS,SV,SP,SH,SM,SVT,errRP,OFN,OFE,FS,TS,SS,GPS,PI" }, \ { LOG_TERRAIN_MSG, sizeof(log_TERRAIN), \ "TERR","QBLLHffHH","TimeUS,Status,Lat,Lng,Spacing,TerrH,CHeight,Pending,Loaded" }, \ { LOG_GPS_UBX1_MSG, sizeof(log_Ubx1), \ "UBX1", "QBHBBH", "TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt" }, \ { LOG_GPS_UBX2_MSG, sizeof(log_Ubx2), \ "UBX2", "QBbBbB", "TimeUS,Instance,ofsI,magI,ofsQ,magQ" }, \ { LOG_GPS2_UBX1_MSG, sizeof(log_Ubx1), \ "UBY1", "QBHBBH", "TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt" }, \ { LOG_GPS2_UBX2_MSG, sizeof(log_Ubx2), \ "UBY2", "QBbBbB", "TimeUS,Instance,ofsI,magI,ofsQ,magQ" }, \ { LOG_GPS_RAW_MSG, sizeof(log_GPS_RAW), \ "GRAW", "QIHBBddfBbB", "TimeUS,WkMS,Week,numSV,sv,cpMes,prMes,doMes,mesQI,cno,lli" }, \ { LOG_GPS_RAWH_MSG, sizeof(log_GPS_RAWH), \ "GRXH", "QdHbBB", "TimeUS,rcvTime,week,leapS,numMeas,recStat" }, \ { LOG_GPS_RAWS_MSG, sizeof(log_GPS_RAWS), \ "GRXS", "QddfBBBHBBBBB", "TimeUS,prMes,cpMes,doMes,gnss,sv,freq,lock,cno,prD,cpD,doD,trk" }, \ { LOG_GPS_SBF_EVENT_MSG, sizeof(log_GPS_SBF_EVENT), \ "SBFE", "QIHBBdddfffff", "TimeUS,TOW,WN,Mode,Err,Lat,Long,Height,Undul,Vn,Ve,Vu,COG" }, \ { LOG_ESC1_MSG, sizeof(log_Esc), \ "ESC1", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC2_MSG, sizeof(log_Esc), \ "ESC2", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC3_MSG, sizeof(log_Esc), \ "ESC3", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC4_MSG, sizeof(log_Esc), \ "ESC4", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC5_MSG, sizeof(log_Esc), \ "ESC5", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC6_MSG, sizeof(log_Esc), \ "ESC6", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC7_MSG, sizeof(log_Esc), \ "ESC7", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_ESC8_MSG, sizeof(log_Esc), \ "ESC8", "Qcccc", "TimeUS,RPM,Volt,Curr,Temp" }, \ { LOG_COMPASS2_MSG, sizeof(log_Compass), \ "MAG2","QhhhhhhhhhB", "TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health" }, \ { LOG_COMPASS3_MSG, sizeof(log_Compass), \ "MAG3","QhhhhhhhhhB", "TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health" }, \ { LOG_ACC1_MSG, sizeof(log_ACCEL), \ "ACC1", "QQfff", "TimeUS,SampleUS,AccX,AccY,AccZ" }, \ { LOG_ACC2_MSG, sizeof(log_ACCEL), \ "ACC2", "QQfff", "TimeUS,SampleUS,AccX,AccY,AccZ" }, \ { LOG_ACC3_MSG, sizeof(log_ACCEL), \ "ACC3", "QQfff", "TimeUS,SampleUS,AccX,AccY,AccZ" }, \ { LOG_GYR1_MSG, sizeof(log_GYRO), \ "GYR1", "QQfff", "TimeUS,SampleUS,GyrX,GyrY,GyrZ" }, \ { LOG_GYR2_MSG, sizeof(log_GYRO), \ "GYR2", "QQfff", "TimeUS,SampleUS,GyrX,GyrY,GyrZ" }, \ { LOG_GYR3_MSG, sizeof(log_GYRO), \ "GYR3", "QQfff", "TimeUS,SampleUS,GyrX,GyrY,GyrZ" }, \ { LOG_PIDR_MSG, sizeof(log_PID), \ "PIDR", "Qffffff", "TimeUS,Des,P,I,D,FF,AFF" }, \ { LOG_PIDP_MSG, sizeof(log_PID), \ "PIDP", "Qffffff", "TimeUS,Des,P,I,D,FF,AFF" }, \ { LOG_PIDY_MSG, sizeof(log_PID), \ "PIDY", "Qffffff", "TimeUS,Des,P,I,D,FF,AFF" }, \ { LOG_PIDA_MSG, sizeof(log_PID), \ "PIDA", "Qffffff", "TimeUS,Des,P,I,D,FF,AFF" }, \ { LOG_PIDS_MSG, sizeof(log_PID), \ "PIDS", "Qffffff", "TimeUS,Des,P,I,D,FF,AFF" }, \ { LOG_BAR2_MSG, sizeof(log_BARO), \ "BAR2", "Qffcf", "TimeUS,Alt,Press,Temp,CRt" }, \ { LOG_BAR3_MSG, sizeof(log_BARO), \ "BAR3", "Qffcf", "TimeUS,Alt,Press,Temp,CRt" }, \ { LOG_VIBE_MSG, sizeof(log_Vibe), \ "VIBE", "QfffIII", "TimeUS,VibeX,VibeY,VibeZ,Clip0,Clip1,Clip2" }, \ { LOG_IMUDT_MSG, sizeof(log_IMUDT), \ "IMT","Qffffffff","TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ" }, \ { LOG_IMUDT2_MSG, sizeof(log_IMUDT), \ "IMT2","Qffffffff","TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ" }, \ { LOG_IMUDT3_MSG, sizeof(log_IMUDT), \ "IMT3","Qffffffff","TimeUS,DelT,DelvT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ" }, \ { LOG_ORGN_MSG, sizeof(log_ORGN), \ "ORGN","QBLLe","TimeUS,Type,Lat,Lng,Alt" }, \ { LOG_RPM_MSG, sizeof(log_RPM), \ "RPM", "Qff", "TimeUS,rpm1,rpm2" } // #if SBP_HW_LOGGING #define LOG_SBP_STRUCTURES \ { LOG_MSG_SBPHEALTH, sizeof(log_SbpHealth), \ "SBPH", "QIII", "TimeUS,CrcError,LastInject,IARhyp" }, \ { LOG_MSG_SBPRAW1, sizeof(log_SbpRAW1), \ "SBR1", "QHHBZ", "TimeUS,msg_type,sender_id,msg_len,d1" }, \ { LOG_MSG_SBPRAW2, sizeof(log_SbpRAW2), \ "SBR2", "QHZZZ", "TimeUS,msg_type,d2,d3,d4" } // #endif #define LOG_COMMON_STRUCTURES LOG_BASE_STRUCTURES, LOG_EXTRA_STRUCTURES, LOG_SBP_STRUCTURES // message types 0 to 128 reversed for vehicle specific use // message types for common messages enum LogMessages { LOG_FORMAT_MSG = 128, LOG_PARAMETER_MSG, LOG_GPS_MSG, LOG_GPS2_MSG, LOG_IMU_MSG, LOG_MESSAGE_MSG, LOG_RCIN_MSG, LOG_RCOUT_MSG, LOG_RSSI_MSG, LOG_IMU2_MSG, LOG_BARO_MSG, LOG_POWR_MSG, LOG_AHR2_MSG, LOG_SIMSTATE_MSG, LOG_EKF1_MSG, LOG_EKF2_MSG, LOG_EKF3_MSG, LOG_EKF4_MSG, LOG_CMD_MSG, LOG_RADIO_MSG, LOG_ATRP_MSG, LOG_CAMERA_MSG, LOG_IMU3_MSG, LOG_TERRAIN_MSG, LOG_GPS_UBX1_MSG, LOG_GPS_UBX2_MSG, LOG_GPS2_UBX1_MSG, LOG_GPS2_UBX2_MSG, LOG_ESC1_MSG, LOG_ESC2_MSG, LOG_ESC3_MSG, LOG_ESC4_MSG, LOG_ESC5_MSG, LOG_ESC6_MSG, LOG_ESC7_MSG, LOG_ESC8_MSG, LOG_EKF5_MSG, LOG_BAR2_MSG, LOG_ARSP_MSG, LOG_ATTITUDE_MSG, LOG_CURRENT_MSG, LOG_COMPASS_MSG, LOG_COMPASS2_MSG, LOG_COMPASS3_MSG, LOG_MODE_MSG, LOG_GPS_RAW_MSG, LOG_GPS_RAWH_MSG, LOG_GPS_RAWS_MSG, LOG_GPS_SBF_EVENT_MSG, LOG_ACC1_MSG, LOG_ACC2_MSG, LOG_ACC3_MSG, LOG_GYR1_MSG, LOG_GYR2_MSG, LOG_GYR3_MSG, LOG_POS_MSG, LOG_PIDR_MSG, LOG_PIDP_MSG, LOG_PIDY_MSG, LOG_PIDA_MSG, LOG_PIDS_MSG, LOG_VIBE_MSG, LOG_IMUDT_MSG, LOG_IMUDT2_MSG, LOG_IMUDT3_MSG, LOG_ORGN_MSG, LOG_RPM_MSG, LOG_GPA_MSG, LOG_GPA2_MSG, LOG_RFND_MSG, LOG_BAR3_MSG, LOG_NKF1_MSG, LOG_NKF2_MSG, LOG_NKF3_MSG, LOG_NKF4_MSG, LOG_NKF5_MSG, LOG_NKF6_MSG, LOG_NKF7_MSG, LOG_NKF8_MSG, LOG_NKF9_MSG, LOG_DF_MAV_STATS, LOG_MSG_SBPHEALTH, LOG_MSG_SBPLLH, LOG_MSG_SBPBASELINE, LOG_MSG_SBPTRACKING1, LOG_MSG_SBPTRACKING2, LOG_MSG_SBPRAW1, LOG_MSG_SBPRAW2, LOG_MSG_SBPRAWx, // message types 211 to 220 reversed for autotune use }; enum LogOriginType { ekf_origin = 0, ahrs_home = 1 }; #endif