Browse Source

AP_Periph: check compass and baro health before using

c415-sdk
Andrew Tridgell 4 years ago
parent
commit
39c21e662d
  1. 3
      Tools/AP_Periph/can.cpp
  2. 7
      Tools/AP_Periph/msp.cpp

3
Tools/AP_Periph/can.cpp

@ -1231,6 +1231,9 @@ void AP_Periph_FW::can_mag_update(void)
if (last_mag_update_ms == compass.last_update_ms()) { if (last_mag_update_ms == compass.last_update_ms()) {
return; return;
} }
if (!compass.healthy()) {
return;
}
last_mag_update_ms = compass.last_update_ms(); last_mag_update_ms = compass.last_update_ms();
const Vector3f &field = compass.get_field(); const Vector3f &field = compass.get_field();

7
Tools/AP_Periph/msp.cpp

@ -129,6 +129,10 @@ void AP_Periph_FW::send_msp_baro(void)
return; return;
} }
msp.last_baro_ms = baro.get_last_update(0); msp.last_baro_ms = baro.get_last_update(0);
if (!baro.healthy()) {
// don't send any data
return;
}
p.instance = 0; p.instance = 0;
p.time_ms = msp.last_baro_ms; p.time_ms = msp.last_baro_ms;
@ -150,6 +154,9 @@ void AP_Periph_FW::send_msp_compass(void)
if (msp.last_mag_ms == compass.last_update_ms(0)) { if (msp.last_mag_ms == compass.last_update_ms(0)) {
return; return;
} }
if (!compass.healthy()) {
return;
}
msp.last_mag_ms = compass.last_update_ms(0); msp.last_mag_ms = compass.last_update_ms(0);
const Vector3f &field = compass.get_field(0); const Vector3f &field = compass.get_field(0);

Loading…
Cancel
Save