battery: pass priority in by setter

This commit is contained in:
Matthias Grob
2021-12-01 16:51:45 +01:00
parent f9fc9a9af6
commit 38d23f5345
12 changed files with 32 additions and 47 deletions
@@ -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
}
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,
(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()
+3 -3
View File
@@ -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:
* @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.
@@ -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()
_analogBatteries[b]->updateBatteryStatusADC(
hrt_absolute_time(),
bat_voltage_adc_readings[b],
bat_current_adc_readings[b],
b
bat_current_adc_readings[b]
);
}
}
+1 -3
View File
@@ -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);
}
}
@@ -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);
}