diff --git a/src/lib/battery/battery.cpp b/src/lib/battery/battery.cpp index 0c95896299..68c4d6935b 100644 --- a/src/lib/battery/battery.cpp +++ b/src/lib/battery/battery.cpp @@ -158,9 +158,11 @@ void Battery::updateBatteryStatus(const hrt_abstime ×tamp, float voltage_v, static constexpr int uorb_max_cells = sizeof(_battery_status.voltage_cell_v) / sizeof( _battery_status.voltage_cell_v[0]); + int max_cells = math::min(_battery_status.cell_count, uorb_max_cells); + // Fill cell voltages with average values to work around MAVLink BATTERY_STATUS not allowing to report just total voltage - for (int i = 0; (i < _battery_status.cell_count) && (i < uorb_max_cells); i++) { - _battery_status.voltage_cell_v[i] = _battery_status.voltage_filtered_v / _battery_status.cell_count; + for (int i = 0; i < max_cells; i++) { + _battery_status.voltage_cell_v[i] = _battery_status.voltage_filtered_v / max_cells; } }