From d01806a0c6b93819828aebd8a519b8e9e4d43343 Mon Sep 17 00:00:00 2001 From: Alex Mikhalev Date: Fri, 26 Feb 2021 23:47:00 -0700 Subject: [PATCH] lib/battery: Fix cell voltages with >10S Signed-off-by: Alex Mikhalev --- src/lib/battery/battery.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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; } }