AP_BattMonitor: Fix battery monitor Floating Point Exception in SITL

Adds a sanity check to avoid division by zero when BATT_CAPACITY is set to 0.
This commit is contained in:
Przemek Lekston 2015-06-29 01:13:40 +02:00 committed by Andrew Tridgell
parent 2291a8994e
commit 90378b21da
1 changed files with 6 additions and 1 deletions

View File

@ -33,7 +33,12 @@ AP_BattMonitor_Backend::AP_BattMonitor_Backend(AP_BattMonitor &mon, uint8_t inst
/// capacity_remaining_pct - returns the % battery capacity remaining (0 ~ 100)
uint8_t AP_BattMonitor_Backend::capacity_remaining_pct() const
{
return (100.0f * (_mon._pack_capacity[_state.instance] - _state.current_total_mah) / _mon._pack_capacity[_state.instance]);
float mah_remaining = _mon._pack_capacity[_state.instance] - _state.current_total_mah;
if ( _mon._pack_capacity[_state.instance] > 10 ) { // a very very small battery
return (100 * (mah_remaining) / _mon._pack_capacity[_state.instance]);
} else {
return 0;
}
}
/// set capacity for this instance