Browse Source

Battery lib: Fix interfaces and params

sbg
Lorenz Meier 9 years ago
parent
commit
4b0f1a6fb1
  1. 20
      src/modules/systemlib/battery.cpp
  2. 17
      src/modules/systemlib/battery.h
  3. 2
      src/modules/systemlib/battery_params.c

20
src/modules/systemlib/battery.cpp

@ -42,12 +42,12 @@ @@ -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() @@ -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 @@ -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 @@ -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);
}
}

17
src/modules/systemlib/battery.h

@ -65,6 +65,21 @@ public: @@ -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: @@ -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;

2
src/modules/systemlib/battery_params.c

@ -88,8 +88,6 @@ PARAM_DEFINE_FLOAT(BAT_V_LOAD_DROP, 0.07f); @@ -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

Loading…
Cancel
Save