Browse Source

AP_AirSpeed: move sending of airspeed_autocal into AP_AirSpeed

mission-4.1.18
Peter Barker 6 years ago committed by Peter Barker
parent
commit
c25ce2cee8
  1. 5
      libraries/AP_Airspeed/AP_Airspeed.h
  2. 42
      libraries/AP_Airspeed/Airspeed_Calibration.cpp

5
libraries/AP_Airspeed/AP_Airspeed.h

@ -134,9 +134,6 @@ public:
// update airspeed ratio calibration // update airspeed ratio calibration
void update_calibration(const Vector3f &vground, int16_t max_airspeed_allowed_during_cal); void update_calibration(const Vector3f &vground, int16_t max_airspeed_allowed_during_cal);
// log data to MAVLink
void log_mavlink_send(mavlink_channel_t chan, const Vector3f &vground);
// return health status of sensor // return health status of sensor
bool healthy(uint8_t i) const { bool healthy(uint8_t i) const {
return state[i].healthy && (fabsf(param[i].offset) > 0 || state[i].use_zero_offset) && enabled(i); return state[i].healthy && (fabsf(param[i].offset) > 0 || state[i].use_zero_offset) && enabled(i);
@ -243,9 +240,11 @@ private:
float get_pressure(uint8_t i); float get_pressure(uint8_t i);
void update_calibration(uint8_t i, float raw_pressure); void update_calibration(uint8_t i, float raw_pressure);
void update_calibration(uint8_t i, const Vector3f &vground, int16_t max_airspeed_allowed_during_cal); void update_calibration(uint8_t i, const Vector3f &vground, int16_t max_airspeed_allowed_during_cal);
void send_airspeed_calibration(const Vector3f &vg);
void check_sensor_failures(); void check_sensor_failures();
void check_sensor_ahrs_wind_max_failures(uint8_t i); void check_sensor_ahrs_wind_max_failures(uint8_t i);
AP_Airspeed_Backend *sensor[AIRSPEED_MAX_SENSORS]; AP_Airspeed_Backend *sensor[AIRSPEED_MAX_SENSORS];
}; };

42
libraries/AP_Airspeed/Airspeed_Calibration.cpp

@ -8,6 +8,7 @@
#include <AP_Common/AP_Common.h> #include <AP_Common/AP_Common.h>
#include <AP_HAL/AP_HAL.h> #include <AP_HAL/AP_HAL.h>
#include <AP_Math/AP_Math.h> #include <AP_Math/AP_Math.h>
#include <GCS_MAVLink/GCS.h>
#include "AP_Airspeed.h" #include "AP_Airspeed.h"
@ -157,22 +158,33 @@ void AP_Airspeed::update_calibration(const Vector3f &vground, int16_t max_airspe
for (uint8_t i=0; i<AIRSPEED_MAX_SENSORS; i++) { for (uint8_t i=0; i<AIRSPEED_MAX_SENSORS; i++) {
update_calibration(i, vground, max_airspeed_allowed_during_cal); update_calibration(i, vground, max_airspeed_allowed_during_cal);
} }
send_airspeed_calibration(vground);
} }
// log airspeed calibration data to MAVLink
void AP_Airspeed::log_mavlink_send(mavlink_channel_t chan, const Vector3f &vground) void AP_Airspeed::send_airspeed_calibration(const Vector3f &vground)
{ {
mavlink_msg_airspeed_autocal_send(chan, for (uint8_t i=0; i<gcs().num_gcs(); i++) {
vground.x, if (!gcs().chan(i).initialised) {
vground.y, continue;
vground.z, }
get_differential_pressure(primary), const mavlink_channel_t chan = (mavlink_channel_t)i;
state[primary].EAS2TAS, if (!HAVE_PAYLOAD_SPACE(chan, AIRSPEED_AUTOCAL)) {
param[primary].ratio.get(), continue;
state[primary].calibration.state.x, }
state[primary].calibration.state.y, mavlink_msg_airspeed_autocal_send(
state[primary].calibration.state.z, chan,
state[primary].calibration.P.a.x, vground.x,
state[primary].calibration.P.b.y, vground.y,
state[primary].calibration.P.c.z); vground.z,
get_differential_pressure(primary),
state[primary].EAS2TAS,
param[primary].ratio.get(),
state[primary].calibration.state.x,
state[primary].calibration.state.y,
state[primary].calibration.state.z,
state[primary].calibration.P.a.x,
state[primary].calibration.P.b.y,
state[primary].calibration.P.c.z);
}
} }

Loading…
Cancel
Save