Browse Source

battery: pass priority in by setter

master
Matthias Grob 3 years ago
parent
commit
38d23f5345
  1. 2
      boards/bitcraze/crazyflie/syslink/syslink_main.cpp
  2. 9
      src/drivers/power_monitor/ina226/ina226.cpp
  3. 9
      src/drivers/power_monitor/ina228/ina228.cpp
  4. 9
      src/drivers/power_monitor/ina238/ina238.cpp
  5. 9
      src/drivers/power_monitor/voxlpm/voxlpm.cpp
  6. 5
      src/lib/battery/battery.cpp
  7. 7
      src/lib/battery/battery.h
  8. 10
      src/modules/battery_status/analog_battery.cpp
  9. 6
      src/modules/battery_status/analog_battery.h
  10. 7
      src/modules/battery_status/battery_status.cpp
  11. 4
      src/modules/esc_battery/EscBattery.cpp
  12. 2
      src/modules/simulator/battery_simulator/BatterySimulator.cpp

2
boards/bitcraze/crazyflie/syslink/syslink_main.cpp

@ -404,7 +404,7 @@ Syslink::handle_message(syslink_message_t *msg) @@ -404,7 +404,7 @@ Syslink::handle_message(syslink_message_t *msg)
memcpy(&vbat, &msg->data[1], sizeof(float));
//memcpy(&iset, &msg->data[5], sizeof(float));
_battery.updateBatteryStatus(t, vbat, -1, true, 0);
_battery.updateBatteryStatus(t, vbat, -1, true);
// Update battery charge state
if (charging) {

9
src/drivers/power_monitor/ina226/ina226.cpp

@ -87,8 +87,7 @@ INA226::INA226(const I2CSPIDriverConfig &config, int battery_index) : @@ -87,8 +87,7 @@ INA226::INA226(const I2CSPIDriverConfig &config, int battery_index) :
hrt_absolute_time(),
0.0,
0.0,
false,
0
false
);
}
@ -233,8 +232,7 @@ INA226::collect() @@ -233,8 +232,7 @@ INA226::collect()
hrt_absolute_time(),
(float) _bus_voltage * INA226_VSCALE,
(float) _current * _current_lsb,
success,
0
success
);
perf_end(_sample_perf);
@ -302,8 +300,7 @@ INA226::RunImpl() @@ -302,8 +300,7 @@ INA226::RunImpl()
hrt_absolute_time(),
0.0f,
0.0f,
false,
0
false
);
if (init() != PX4_OK) {

9
src/drivers/power_monitor/ina228/ina228.cpp

@ -89,8 +89,7 @@ INA228::INA228(const I2CSPIDriverConfig &config, int battery_index) : @@ -89,8 +89,7 @@ INA228::INA228(const I2CSPIDriverConfig &config, int battery_index) :
hrt_absolute_time(),
0.0,
0.0,
false,
0
false
);
}
@ -314,8 +313,7 @@ INA228::collect() @@ -314,8 +313,7 @@ INA228::collect()
hrt_absolute_time(),
(float) _bus_voltage * INA228_VSCALE,
(float) _current * _current_lsb,
success,
0
success
);
perf_end(_sample_perf);
@ -383,8 +381,7 @@ INA228::RunImpl() @@ -383,8 +381,7 @@ INA228::RunImpl()
hrt_absolute_time(),
0.0f,
0.0f,
false,
0
false
);
if (init() != PX4_OK) {

9
src/drivers/power_monitor/ina238/ina238.cpp

@ -72,8 +72,7 @@ INA238::INA238(const I2CSPIDriverConfig &config, int battery_index) : @@ -72,8 +72,7 @@ INA238::INA238(const I2CSPIDriverConfig &config, int battery_index) :
hrt_absolute_time(),
0.0,
0.0,
false,
0
false
);
}
@ -201,8 +200,7 @@ int INA238::collect() @@ -201,8 +200,7 @@ int INA238::collect()
hrt_absolute_time(),
(float) bus_voltage * INA238_VSCALE,
(float) current * _current_lsb,
success,
0
success
);
perf_end(_sample_perf);
@ -261,8 +259,7 @@ void INA238::RunImpl() @@ -261,8 +259,7 @@ void INA238::RunImpl()
hrt_absolute_time(),
0.0f,
0.0f,
false,
0
false
);
if (init() != PX4_OK) {

9
src/drivers/power_monitor/voxlpm/voxlpm.cpp

@ -75,8 +75,7 @@ VOXLPM::init() @@ -75,8 +75,7 @@ VOXLPM::init()
hrt_absolute_time(),
0.0,
0.0,
false,
0
false
);
}
@ -347,8 +346,7 @@ VOXLPM::measure() @@ -347,8 +346,7 @@ VOXLPM::measure()
_battery.updateBatteryStatus(tnow,
_voltage,
_amperage,
true,
0);
true);
}
// fallthrough
@ -374,8 +372,7 @@ VOXLPM::measure() @@ -374,8 +372,7 @@ VOXLPM::measure()
_battery.updateBatteryStatus(tnow,
0.0,
0.0,
true,
0);
true);
}
break;

5
src/lib/battery/battery.cpp

@ -97,8 +97,7 @@ Battery::Battery(int index, ModuleParams *parent, const int sample_interval_us, @@ -97,8 +97,7 @@ Battery::Battery(int index, ModuleParams *parent, const int sample_interval_us,
updateParams();
}
void Battery::updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v, float current_a, bool connected,
int priority)
void Battery::updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v, float current_a, bool connected)
{
if (!_battery_initialized) {
_voltage_filter_v.reset(voltage_v);
@ -136,7 +135,7 @@ void Battery::updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v, @@ -136,7 +135,7 @@ void Battery::updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v,
battery_status.cell_count = _params.n_cells;
battery_status.connected = connected;
battery_status.source = _source;
battery_status.priority = priority;
battery_status.priority = _priority;
battery_status.capacity = _params.capacity > 0.f ? static_cast<uint16_t>(_params.capacity) : 0;
battery_status.id = static_cast<uint8_t>(_index);
battery_status.warning = _warning;

7
src/lib/battery/battery.h

@ -85,16 +85,16 @@ public: @@ -85,16 +85,16 @@ public:
*/
float full_cell_voltage() { return _params.v_charged; }
void setPriority(const uint8_t priority) { _priority = priority; }
/**
* Update current battery status message.
*
* @param voltage_raw: Battery voltage, in Volts
* @param current_raw: Battery current, in Amps
* @param timestamp: Time at which the ADC was read (use hrt_absolute_time())
* @param priority: The brick number -1. The term priority refers to the Vn connection on the LTC4417
*/
void updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v, float current_a, bool connected,
int priority);
void updateBatteryStatus(const hrt_abstime &timestamp, float voltage_v, float current_a, bool connected);
protected:
struct {
@ -139,6 +139,7 @@ private: @@ -139,6 +139,7 @@ private:
uORB::PublicationMulti<battery_status_s> _battery_status_pub{ORB_ID(battery_status)};
const uint8_t _source{};
uint8_t _priority{0};
bool _battery_initialized{false};
AlphaFilter<float> _voltage_filter_v;
AlphaFilter<float> _current_filter_a;

10
src/modules/battery_status/analog_battery.cpp

@ -49,9 +49,11 @@ static constexpr int DEFAULT_V_CHANNEL[1] = {0}; @@ -49,9 +49,11 @@ static constexpr int DEFAULT_V_CHANNEL[1] = {0};
static constexpr int DEFAULT_I_CHANNEL[1] = {0};
#endif
AnalogBattery::AnalogBattery(int index, ModuleParams *parent, const int sample_interval_us, const uint8_t source) :
AnalogBattery::AnalogBattery(int index, ModuleParams *parent, const int sample_interval_us, const uint8_t source,
const uint8_t priority) :
Battery(index, parent, sample_interval_us, source)
{
Battery::setPriority(priority);
char param_name[17];
_analog_param_handles.v_offs_cur = param_find("BAT_V_OFFS_CURR");
@ -70,8 +72,7 @@ AnalogBattery::AnalogBattery(int index, ModuleParams *parent, const int sample_i @@ -70,8 +72,7 @@ AnalogBattery::AnalogBattery(int index, ModuleParams *parent, const int sample_i
}
void
AnalogBattery::updateBatteryStatusADC(hrt_abstime timestamp, float voltage_raw, float current_raw,
int priority)
AnalogBattery::updateBatteryStatusADC(hrt_abstime timestamp, float voltage_raw, float current_raw)
{
float voltage_v = voltage_raw * _analog_params.v_div;
float current_a = (current_raw - _analog_params.v_offs_cur) * _analog_params.a_per_v;
@ -80,8 +81,7 @@ AnalogBattery::updateBatteryStatusADC(hrt_abstime timestamp, float voltage_raw, @@ -80,8 +81,7 @@ AnalogBattery::updateBatteryStatusADC(hrt_abstime timestamp, float voltage_raw,
(BOARD_ADC_OPEN_CIRCUIT_V <= BOARD_VALID_UV || is_valid());
Battery::updateBatteryStatus(timestamp, voltage_v, current_a, connected,
priority);
Battery::updateBatteryStatus(timestamp, voltage_v, current_a, connected);
}
bool AnalogBattery::is_valid()

6
src/modules/battery_status/analog_battery.h

@ -39,7 +39,8 @@ @@ -39,7 +39,8 @@
class AnalogBattery : public Battery
{
public:
AnalogBattery(int index, ModuleParams *parent, const int sample_interval_us, const uint8_t source);
AnalogBattery(int index, ModuleParams *parent, const int sample_interval_us, const uint8_t source,
const uint8_t priority);
/**
* Update current battery status message.
@ -50,8 +51,7 @@ public: @@ -50,8 +51,7 @@ public:
* @param source The source as defined by param BAT%d_SOURCE
* @param priority: The brick number -1. The term priority refers to the Vn connection on the LTC4417
*/
void updateBatteryStatusADC(hrt_abstime timestamp, float voltage_raw, float current_raw,
int priority);
void updateBatteryStatusADC(hrt_abstime timestamp, float voltage_raw, float current_raw);
/**
* Whether the ADC channel for the voltage of this battery is valid.

7
src/modules/battery_status/battery_status.cpp

@ -137,9 +137,9 @@ private: @@ -137,9 +137,9 @@ private:
BatteryStatus::BatteryStatus() :
ModuleParams(nullptr),
ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::hp_default),
_battery1(1, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_POWER_MODULE),
_battery1(1, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_POWER_MODULE, 0),
#if BOARD_NUMBER_BRICKS > 1
_battery2(2, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_POWER_MODULE),
_battery2(2, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_POWER_MODULE, 1),
#endif
_loop_perf(perf_alloc(PC_ELAPSED, MODULE_NAME))
{
@ -221,8 +221,7 @@ BatteryStatus::adc_poll() @@ -221,8 +221,7 @@ BatteryStatus::adc_poll()
_analogBatteries[b]->updateBatteryStatusADC(
hrt_absolute_time(),
bat_voltage_adc_readings[b],
bat_current_adc_readings[b],
b
bat_current_adc_readings[b]
);
}
}

4
src/modules/esc_battery/EscBattery.cpp

@ -100,14 +100,12 @@ EscBattery::Run() @@ -100,14 +100,12 @@ EscBattery::Run()
average_voltage_v /= esc_status.esc_count;
const bool connected = true;
const int priority = 0;
_battery.updateBatteryStatus(
esc_status.timestamp,
average_voltage_v,
total_current_a,
connected,
priority);
connected);
}
}

2
src/modules/simulator/battery_simulator/BatterySimulator.cpp

@ -99,7 +99,7 @@ void BatterySimulator::Run() @@ -99,7 +99,7 @@ void BatterySimulator::Run()
float vbatt = math::gradual(_battery_percentage, 0.f, 1.f, _battery.empty_cell_voltage(), _battery.full_cell_voltage());
vbatt *= _battery.cell_count();
_battery.updateBatteryStatus(now_us, vbatt, ibatt, true, 0);
_battery.updateBatteryStatus(now_us, vbatt, ibatt, true);
perf_end(_loop_perf);
}

Loading…
Cancel
Save