diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp index ad07ecb4b2..334e2565d5 100644 --- a/src/modules/sensors/sensors.cpp +++ b/src/modules/sensors/sensors.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include #include @@ -129,7 +130,7 @@ using namespace sensors; */ extern "C" __EXPORT int sensors_main(int argc, char *argv[]); -class Sensors : public ModuleBase +class Sensors : public ModuleBase, public ModuleParams { public: Sensors(bool hil_enabled); @@ -229,6 +230,7 @@ private: }; Sensors::Sensors(bool hil_enabled) : + ModuleParams(nullptr), _hil_enabled(hil_enabled), _loop_perf(perf_alloc(PC_ELAPSED, "sensors")), _rc_update(_parameters), @@ -238,6 +240,10 @@ Sensors::Sensors(bool hil_enabled) : _airspeed_validator.set_timeout(300000); _airspeed_validator.set_equal_value_threshold(100); + + for (int b = 0; b < BOARD_NUMBER_BRICKS; b++) { + _battery[b].setParent(this); + } } int @@ -396,6 +402,7 @@ Sensors::parameter_update_poll(bool forced) orb_copy(ORB_ID(parameter_update), _params_sub, &update); parameters_update(); + updateParams(); /* update airspeed scale */ int fd = px4_open(AIRSPEED0_DEVICE_PATH, 0); @@ -413,10 +420,6 @@ Sensors::parameter_update_poll(bool forced) px4_close(fd); } - - for (int b = 0; b < BOARD_NUMBER_BRICKS; b++) { - _battery[b].updateParams(); - } } } diff --git a/src/modules/systemlib/battery.cpp b/src/modules/systemlib/battery.cpp index 94f2798ce8..188fd7163a 100644 --- a/src/modules/systemlib/battery.cpp +++ b/src/modules/systemlib/battery.cpp @@ -43,25 +43,12 @@ #include Battery::Battery() : - SuperBlock(nullptr, "BAT"), - _v_empty(this, "V_EMPTY"), - _v_charged(this, "V_CHARGED"), - _n_cells(this, "N_CELLS"), - _capacity(this, "CAPACITY"), - _v_load_drop(this, "V_LOAD_DROP"), - _r_internal(this, "R_INTERNAL"), - _low_thr(this, "LOW_THR"), - _crit_thr(this, "CRIT_THR"), - _emergency_thr(this, "EMERGEN_THR"), + ModuleParams(nullptr), _warning(battery_status_s::BATTERY_WARNING_NONE), _last_timestamp(0) { } -Battery::~Battery() -{ -} - void Battery::reset(battery_status_s *battery_status) { diff --git a/src/modules/systemlib/battery.h b/src/modules/systemlib/battery.h index bb0a754e97..fa9a4b1e5e 100644 --- a/src/modules/systemlib/battery.h +++ b/src/modules/systemlib/battery.h @@ -41,25 +41,16 @@ #pragma once -#include -#include #include #include +#include -class Battery : public control::SuperBlock +class Battery : public ModuleParams { public: - /** - * Constructor - */ Battery(); - /** - * Destructor - */ - ~Battery(); - /** * Reset all battery stats and report invalid/nothing. */ @@ -103,15 +94,17 @@ private: void determineWarning(bool connected); void computeScale(); - control::BlockParamFloat _v_empty; - control::BlockParamFloat _v_charged; - control::BlockParamInt _n_cells; - control::BlockParamFloat _capacity; - control::BlockParamFloat _v_load_drop; - control::BlockParamFloat _r_internal; - control::BlockParamFloat _low_thr; - control::BlockParamFloat _crit_thr; - control::BlockParamFloat _emergency_thr; + DEFINE_PARAMETERS( + (ParamFloat) _v_empty, + (ParamFloat) _v_charged, + (ParamInt) _n_cells, + (ParamFloat) _capacity, + (ParamFloat) _v_load_drop, + (ParamFloat) _r_internal, + (ParamFloat) _low_thr, + (ParamFloat) _crit_thr, + (ParamFloat) _emergency_thr + ) bool _battery_initialized = false; float _voltage_filtered_v = -1.f;