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:
parent
2291a8994e
commit
90378b21da
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user