#include namespace MSP { // src/main/msp/msp_protocol_v2_sensor_msg.h typedef struct PACKED { uint8_t quality; // [0;255] int32_t distance_mm; // Negative value for out of range } msp_rangefinder_data_message_t; typedef struct PACKED { uint8_t quality; // [0;255] int32_t motion_x; int32_t motion_y; } msp_opflow_data_message_t; typedef struct PACKED { uint8_t instance; // sensor instance number to support multi-sensor setups uint16_t gps_week; // GPS week, 0xFFFF if not available uint32_t ms_tow; uint8_t fix_type; uint8_t satellites_in_view; uint16_t horizontal_pos_accuracy; // [cm] uint16_t vertical_pos_accuracy; // [cm] uint16_t horizontal_vel_accuracy; // [cm/s] uint16_t hdop; int32_t longitude; int32_t latitude; int32_t msl_altitude; // cm int32_t ned_vel_north; // cm/s int32_t ned_vel_east; int32_t ned_vel_down; uint16_t ground_course; // deg * 100, 0..36000 uint16_t true_yaw; // deg * 100, values of 0..36000 are valid. 65535 = no data available uint16_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t min; uint8_t sec; } msp_gps_data_message_t; typedef struct PACKED { uint8_t instance; uint32_t time_ms; float pressure_pa; int16_t temp; // centi-degrees C } msp_baro_data_message_t; typedef struct PACKED { uint8_t instance; uint32_t time_ms; int16_t magX; // mGauss, front int16_t magY; // mGauss, right int16_t magZ; // mGauss, down } msp_compass_data_message_t; }