From a5e3cd664b2c1db34705f061706bc7e5282e5617 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 18 Apr 2019 14:24:01 +1000 Subject: [PATCH] AP_InertialSensor: added RC switch for killing IMUs --- .../AP_InertialSensor/AP_InertialSensor.cpp | 23 +++++++++++++++++++ .../AP_InertialSensor/AP_InertialSensor.h | 5 ++++ .../AP_InertialSensor_Backend.cpp | 23 +++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/libraries/AP_InertialSensor/AP_InertialSensor.cpp b/libraries/AP_InertialSensor/AP_InertialSensor.cpp index eb2b2d232f..cb04d35d7c 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor.cpp @@ -2043,6 +2043,29 @@ AP_InertialSensor::Gyro_Calibration_Timing AP_InertialSensor::gyro_calibration_t return (Gyro_Calibration_Timing)_gyro_cal_timing.get(); } +/* + update IMU kill mask, used for testing IMU failover + */ +void AP_InertialSensor::kill_imu(uint8_t imu_idx, bool kill_it) +{ + if (kill_it) { + uint8_t new_kill_mask = imu_kill_mask | (1U<give(); + return; + } if (_imu._new_gyro_data[instance]) { _publish_gyro(instance, _imu._gyro_filtered[instance]); _imu._new_gyro_data[instance] = false; @@ -453,6 +472,10 @@ void AP_InertialSensor_Backend::update_accel(uint8_t instance) return; } + if ((1U<give(); + return; + } if (_imu._new_accel_data[instance]) { _publish_accel(instance, _imu._accel_filtered[instance]); _imu._new_accel_data[instance] = false;