diff --git a/boards/bitcraze/crazyflie/syslink/syslink_main.h b/boards/bitcraze/crazyflie/syslink/syslink_main.h index e6e7f14079..5e5952dd06 100644 --- a/boards/bitcraze/crazyflie/syslink/syslink_main.h +++ b/boards/bitcraze/crazyflie/syslink/syslink_main.h @@ -137,7 +137,7 @@ private: uORB::PublicationMulti _rc_pub{ORB_ID(input_rc)}; - Battery _battery; + Battery _battery{1, nullptr}; int32_t _rssi; battery_state _bstate; diff --git a/src/drivers/driver_framework_wrapper/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp b/src/drivers/driver_framework_wrapper/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp index 39f0a60ed1..76874246f3 100644 --- a/src/drivers/driver_framework_wrapper/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp +++ b/src/drivers/driver_framework_wrapper/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp @@ -101,7 +101,7 @@ private: orb_advert_t _battery_topic; orb_advert_t _esc_topic; - Battery _battery; + Battery _battery{1, nullptr}; bool _armed; float _last_throttle; @@ -114,7 +114,7 @@ private: }; DfBebopBusWrapper::DfBebopBusWrapper() : - BebopBus(BEBOP_BUS_DEVICE_PATH), _battery_topic(nullptr), _esc_topic(nullptr), _battery(), _armed(false), + BebopBus(BEBOP_BUS_DEVICE_PATH), _battery_topic(nullptr), _esc_topic(nullptr), _battery(1, nullptr), _armed(false), _last_throttle(0.0f), _battery_orb_class_instance(-1) {} diff --git a/src/drivers/driver_framework_wrapper/df_ltc2946_wrapper/df_ltc2946_wrapper.cpp b/src/drivers/driver_framework_wrapper/df_ltc2946_wrapper/df_ltc2946_wrapper.cpp index 47ac036064..a2bf9a7725 100644 --- a/src/drivers/driver_framework_wrapper/df_ltc2946_wrapper/df_ltc2946_wrapper.cpp +++ b/src/drivers/driver_framework_wrapper/df_ltc2946_wrapper/df_ltc2946_wrapper.cpp @@ -69,7 +69,7 @@ public: private: int _publish(const struct ltc2946_sensor_data &data); - Battery _battery{}; + Battery _battery{1, nullptr}; int _actuator_ctrl_0_sub{-1}; int _vcontrol_mode_sub{-1}; diff --git a/src/drivers/power_monitor/voxlpm/voxlpm.cpp b/src/drivers/power_monitor/voxlpm/voxlpm.cpp index f47b790faa..3ca22de7fe 100644 --- a/src/drivers/power_monitor/voxlpm/voxlpm.cpp +++ b/src/drivers/power_monitor/voxlpm/voxlpm.cpp @@ -46,7 +46,9 @@ VOXLPM::VOXLPM(const char *path, int bus, int address, VOXLPM_CH_TYPE ch_type) : I2C("voxlpm", path, bus, address, 400000), ScheduledWorkItem(MODULE_NAME, px4::device_bus_to_wq(I2C::get_device_id())), - _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": sample")) + ModuleParams(nullptr), + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": sample")), + _battery(1, this) { _ch_type = ch_type; @@ -129,6 +131,13 @@ VOXLPM::Run() int VOXLPM::measure() { + parameter_update_s update; + + if (_parameter_sub.update(&update)) { + updateParams(); + } + + _voltage = 0.0f; _amperage = 0.0f; diff --git a/src/drivers/power_monitor/voxlpm/voxlpm.hpp b/src/drivers/power_monitor/voxlpm/voxlpm.hpp index 90c1cbdf4c..ce6539f8a2 100644 --- a/src/drivers/power_monitor/voxlpm/voxlpm.hpp +++ b/src/drivers/power_monitor/voxlpm/voxlpm.hpp @@ -68,8 +68,10 @@ #include #include +#include #include #include +#include /* * Note that these are unshifted addresses. @@ -142,7 +144,7 @@ enum VOXLPM_CH_TYPE { VOXLPM_CH_TYPE_P5VDC }; -class VOXLPM : public device::I2C, public px4::ScheduledWorkItem +class VOXLPM : public device::I2C, public px4::ScheduledWorkItem, public ModuleParams { public: VOXLPM(const char *path, int bus, int address, VOXLPM_CH_TYPE ch_type); @@ -161,6 +163,7 @@ private: perf_counter_t _sample_perf; uORB::PublicationMulti _pm_pub_topic{ORB_ID(power_monitor)}; + uORB::Subscription _parameter_sub{ORB_ID(parameter_update)}; power_monitor_s _pm_status{}; diff --git a/src/lib/battery/battery.h b/src/lib/battery/battery.h index e61aaef5f0..32fb820f7e 100644 --- a/src/lib/battery/battery.h +++ b/src/lib/battery/battery.h @@ -63,7 +63,7 @@ class Battery : public ModuleParams { public: - Battery(int index = 1, ModuleParams *parent = nullptr); + Battery(int index, ModuleParams *parent); /** * Reset all battery stats and report invalid/nothing. @@ -200,19 +200,12 @@ protected: if (!firstcall) { if ((float) fabs((float) *old_val - (float) previous_old_val) > FLT_EPSILON && (float) fabs((float) *old_val - (float) *new_val) > FLT_EPSILON) { - // TODO fix this error message. I was getting hardfaults while using this message, but they stopped - // after removing this message. I was unable to determine why I was getting them. - PX4_WARN("Detected change of deprecated parameter %s. Please use the new parameter %s instead. " - "The new value of the deprecated parameter will be copied to the new parameter.", - param_name(old_param), param_name(new_param)); param_set_no_notification(new_param, old_val); param_get(new_param, new_val); return true; } else if ((float) fabs((float) *new_val - (float) previous_new_val) > FLT_EPSILON && (float) fabs((float) *old_val - (float) *new_val) > FLT_EPSILON) { - PX4_INFO("Copying new value for %s to deprecated parameter %s.", - param_name(new_param), param_name(old_param)); param_set_no_notification(old_param, new_val); param_get(old_param, old_val); return true; @@ -220,9 +213,6 @@ protected: } else { if ((float) fabs((float) *old_val - (float) *new_val) > FLT_EPSILON) { - PX4_WARN("At boot, deprecated parameter %s is different from its replacement %s." - " The new value will be overwritten by the old one. This should happen only once.", - param_name(old_param), param_name(new_param)); param_set_no_notification(new_param, old_val); param_get(new_param, new_val); return true; diff --git a/src/modules/battery_status/analog_battery.cpp b/src/modules/battery_status/analog_battery.cpp index 84cd018e53..d9b5d20955 100644 --- a/src/modules/battery_status/analog_battery.cpp +++ b/src/modules/battery_status/analog_battery.cpp @@ -58,10 +58,6 @@ AnalogBattery::updateBatteryStatusRawADC(hrt_abstime timestamp, int32_t voltage_ selected_source, priority, throttle_normalized, armed, _params.source == 0); } -/** - * Whether the ADC channel for the voltage of this battery is valid. - * Corresponds to BOARD_BRICK_VALID_LIST - */ bool AnalogBattery::is_valid() { #ifdef BOARD_BRICK_VALID_LIST diff --git a/src/modules/battery_status/analog_battery.h b/src/modules/battery_status/analog_battery.h index 72e89825b3..62c41575ba 100644 --- a/src/modules/battery_status/analog_battery.h +++ b/src/modules/battery_status/analog_battery.h @@ -39,7 +39,7 @@ class AnalogBattery : public Battery { public: - AnalogBattery(int index = 1, ModuleParams *parent = nullptr); + AnalogBattery(int index, ModuleParams *parent); /** * Update current battery status message. diff --git a/src/modules/simulator/simulator.h b/src/modules/simulator/simulator.h index a492fde0fa..2f73ecb92e 100644 --- a/src/modules/simulator/simulator.h +++ b/src/modules/simulator/simulator.h @@ -238,10 +238,14 @@ private: hrt_abstime _last_sitl_timestamp{0}; hrt_abstime _last_battery_timestamp{0}; - class : public Battery + class SimulatorBattery : public Battery { + public: + SimulatorBattery() : Battery(1, nullptr) {} + virtual void updateParams() override { + Battery::updateParams(); _params.v_empty = 3.5f; _params.v_charged = 4.05f; _params.n_cells = 4;