mirror of https://github.com/ArduPilot/ardupilot
AP_Periph: support output of MSP airspeed sensor
This commit is contained in:
parent
19f3fda31b
commit
75333dcd2f
|
@ -78,6 +78,7 @@ public:
|
|||
uint32_t last_gps_ms;
|
||||
uint32_t last_baro_ms;
|
||||
uint32_t last_mag_ms;
|
||||
uint32_t last_airspeed_ms;
|
||||
} msp;
|
||||
void msp_init(AP_HAL::UARTDriver *_uart);
|
||||
void msp_sensor_update(void);
|
||||
|
@ -85,6 +86,7 @@ public:
|
|||
void send_msp_GPS(void);
|
||||
void send_msp_compass(void);
|
||||
void send_msp_baro(void);
|
||||
void send_msp_airspeed(void);
|
||||
#endif
|
||||
|
||||
#ifdef HAL_PERIPH_ENABLE_ADSB
|
||||
|
|
|
@ -48,6 +48,9 @@ void AP_Periph_FW::msp_sensor_update(void)
|
|||
#ifdef HAL_PERIPH_ENABLE_MAG
|
||||
send_msp_compass();
|
||||
#endif
|
||||
#ifdef HAL_PERIPH_ENABLE_AIRSPEED
|
||||
send_msp_airspeed();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -160,4 +163,33 @@ void AP_Periph_FW::send_msp_compass(void)
|
|||
}
|
||||
#endif // HAL_PERIPH_ENABLE_MAG
|
||||
|
||||
#ifdef HAL_PERIPH_ENABLE_AIRSPEED
|
||||
/*
|
||||
send MSP airspeed packet
|
||||
*/
|
||||
void AP_Periph_FW::send_msp_airspeed(void)
|
||||
{
|
||||
MSP::msp_airspeed_data_message_t p;
|
||||
|
||||
const uint32_t last_update_ms = airspeed.last_update_ms();
|
||||
if (msp.last_airspeed_ms == last_update_ms) {
|
||||
return;
|
||||
}
|
||||
msp.last_airspeed_ms = last_update_ms;
|
||||
|
||||
p.instance = 0;
|
||||
p.time_ms = msp.last_airspeed_ms;
|
||||
p.pressure = airspeed.get_corrected_pressure();
|
||||
float temp;
|
||||
if (!airspeed.get_temperature(temp)) {
|
||||
p.temp = INT16_MIN; //invalid temperature
|
||||
} else {
|
||||
p.temp = temp * 100;
|
||||
}
|
||||
|
||||
send_msp_packet(MSP2_SENSOR_AIRSPEED, &p, sizeof(p));
|
||||
}
|
||||
#endif // HAL_PERIPH_ENABLE_AIRSPEED
|
||||
|
||||
|
||||
#endif // HAL_PERIPH_ENABLE_MSP
|
||||
|
|
|
@ -349,3 +349,4 @@
|
|||
#define MSP2_SENSOR_GPS 0x1F03
|
||||
#define MSP2_SENSOR_COMPASS 0x1F04
|
||||
#define MSP2_SENSOR_BAROMETER 0x1F05
|
||||
#define MSP2_SENSOR_AIRSPEED 0x1F06
|
||||
|
|
|
@ -54,4 +54,11 @@ typedef struct PACKED {
|
|||
int16_t magY; // mGauss, right
|
||||
int16_t magZ; // mGauss, down
|
||||
} msp_compass_data_message_t;
|
||||
|
||||
typedef struct PACKED {
|
||||
uint8_t instance;
|
||||
uint32_t time_ms;
|
||||
float pressure;
|
||||
int16_t temp; // centi-degrees C
|
||||
} msp_airspeed_data_message_t;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue