From 4b0f1a6fb1e5baf01205106e6954dab99e2cbe86 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 23 Apr 2016 14:25:21 +0200 Subject: [PATCH] Battery lib: Fix interfaces and params --- src/modules/systemlib/battery.cpp | 20 ++++++++------------ src/modules/systemlib/battery.h | 17 ++++++++++++++++- src/modules/systemlib/battery_params.c | 2 -- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/modules/systemlib/battery.cpp b/src/modules/systemlib/battery.cpp index 11a47f3728..0237dee700 100644 --- a/src/modules/systemlib/battery.cpp +++ b/src/modules/systemlib/battery.cpp @@ -42,12 +42,12 @@ #include "battery.h" Battery::Battery() : - SuperBlock(NULL, ""), - _param_v_empty(this, "BAT_V_EMPTY", false), - _param_v_full(this, "BAT_V_CHARGED", false), - _param_n_cells(this, "BAT_N_CELLS", false), - _param_capacity(this, "BAT_CAPACITY", false), - _param_v_load_drop(this, "BAT_V_LOAD_DROP", false), + SuperBlock(NULL, "BAT"), + _param_v_empty(this, "V_EMPTY"), + _param_v_full(this, "V_CHARGED"), + _param_n_cells(this, "N_CELLS"), + _param_capacity(this, "CAPACITY"), + _param_v_load_drop(this, "V_LOAD_DROP"), _voltage_filtered_v(0.0f), _throttle_filtered(0.0f), _discharged_mah(0.0f), @@ -66,10 +66,8 @@ Battery::~Battery() void Battery::reset(battery_status_s *battery_status) { - battery_status->voltage_v = 0.0f; - battery_status->voltage_filtered_v = 0.0f; + memset(battery_status, 0, sizeof(*battery_status)); battery_status->current_a = -1.0f; - battery_status->discharged_mah = -1.0f; battery_status->remaining = 0.0f; battery_status->cell_count = _param_n_cells.get(); // TODO: check if it is sane to reset warning to NONE @@ -80,6 +78,7 @@ void Battery::updateBatteryStatus(hrt_abstime timestamp, float voltage_v, float current_a, float throttle_normalized, battery_status_s *battery_status) { + reset(battery_status); battery_status->timestamp = timestamp; filterVoltage(voltage_v); sumDischarged(timestamp, current_a); @@ -91,12 +90,9 @@ Battery::updateBatteryStatus(hrt_abstime timestamp, float voltage_v, float curre battery_status->voltage_filtered_v = _voltage_filtered_v; battery_status->current_a = current_a; battery_status->discharged_mah = _discharged_mah; - battery_status->cell_count = _param_n_cells.get(); battery_status->warning = _warning; battery_status->remaining = _remaining; - } else { - reset(battery_status); } } diff --git a/src/modules/systemlib/battery.h b/src/modules/systemlib/battery.h index e85c19b775..6b909a275f 100644 --- a/src/modules/systemlib/battery.h +++ b/src/modules/systemlib/battery.h @@ -65,6 +65,21 @@ public: */ void reset(battery_status_s *battery_status); + /** + * Get the battery cell count + */ + int cell_count() { return _param_n_cells.get(); } + + /** + * Get the empty voltage per cell + */ + float empty_cell_voltage() { return _param_v_empty.get(); } + + /** + * Get the full voltage per cell + */ + float full_cell_voltage() { return _param_v_full.get(); } + /** * Update current battery status message. * @@ -83,7 +98,7 @@ private: control::BlockParamFloat _param_v_empty; control::BlockParamFloat _param_v_full; - control::BlockParamFloat _param_n_cells; + control::BlockParamInt _param_n_cells; control::BlockParamFloat _param_capacity; control::BlockParamFloat _param_v_load_drop; diff --git a/src/modules/systemlib/battery_params.c b/src/modules/systemlib/battery_params.c index bc7bb77347..72d71c53b3 100644 --- a/src/modules/systemlib/battery_params.c +++ b/src/modules/systemlib/battery_params.c @@ -88,8 +88,6 @@ PARAM_DEFINE_FLOAT(BAT_V_LOAD_DROP, 0.07f); * * @group Battery Calibration * @unit S - * @min 2 - * @max 10 * @value 2 2S Battery * @value 3 3S Battery * @value 4 4S Battery