battery: move MAVLink specific handling out of battery class

This commit is contained in:
Matthias Grob
2021-12-07 21:06:51 +01:00
parent da2fdf923e
commit ddc6b6bc9c
3 changed files with 30 additions and 30 deletions
+1 -12
View File
@@ -134,8 +134,7 @@ void Battery::updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v,
battery_status.scale = _scale;
battery_status.time_remaining_s = computeRemainingTime(current_a);
battery_status.temperature = NAN;
// Publish at least one cell such that the total voltage gets into MAVLink BATTERY_STATUS
battery_status.cell_count = math::max(_params.n_cells, static_cast<int32_t>(1));
battery_status.cell_count = _params.n_cells;
battery_status.connected = connected;
battery_status.source = source;
battery_status.priority = priority;
@@ -143,16 +142,6 @@ void Battery::updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v,
battery_status.id = static_cast<uint8_t>(_index);
battery_status.warning = _warning;
static constexpr int32_t 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 < max_cells; i++) {
battery_status.voltage_cell_v[i] = battery_status.voltage_filtered_v / max_cells;
}
if (source == _params.source) {
battery_status.timestamp = hrt_absolute_time();
_battery_status_pub.publish(battery_status);