diff --git a/src/drivers/power_monitor/voxlpm/CMakeLists.txt b/src/drivers/power_monitor/voxlpm/CMakeLists.txt index 4f320da767..c1043a7d7d 100644 --- a/src/drivers/power_monitor/voxlpm/CMakeLists.txt +++ b/src/drivers/power_monitor/voxlpm/CMakeLists.txt @@ -33,8 +33,6 @@ px4_add_module( MODULE drivers__voxlpm MAIN voxlpm - COMPILE_FLAGS - -Wno-cast-align # TODO: fix and enable SRCS voxlpm.cpp voxlpm_main.cpp diff --git a/src/drivers/power_monitor/voxlpm/voxlpm.cpp b/src/drivers/power_monitor/voxlpm/voxlpm.cpp index 6cb7b063bf..3c34164164 100644 --- a/src/drivers/power_monitor/voxlpm/voxlpm.cpp +++ b/src/drivers/power_monitor/voxlpm/voxlpm.cpp @@ -46,11 +46,7 @@ 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, "voxlpm: sample")), - _bat_pub_topic(nullptr), - _pm_pub_topic(nullptr), - _voltage(0.0f), - _amperage(0.0f) + _sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": sample")) { _ch_type = ch_type; @@ -159,12 +155,7 @@ VOXLPM::measure() case VOXLPM_CH_TYPE_VBATT: { _battery.updateBatteryStatus(tnow, _voltage, _amperage, true, true, 0, 0, false, &_bat_status); - if (_bat_pub_topic != nullptr) { - orb_publish(ORB_ID(battery_status), _bat_pub_topic, &_bat_status); - - } else { - _bat_pub_topic = orb_advertise(ORB_ID(battery_status), &_bat_status); - } + _bat_pub_topic.publish(_bat_status); } // fallthrough @@ -176,13 +167,7 @@ VOXLPM::measure() _pm_status.current_a = (float) _amperage; //_pm_pub_topic.power_w = (float) _power * _power_lsb; - - if (_pm_pub_topic != nullptr) { - orb_publish(ORB_ID(power_monitor), _pm_pub_topic, &_pm_status); - - } else { - _pm_pub_topic = orb_advertise(ORB_ID(power_monitor), &_pm_status); - } + _pm_pub_topic.publish(_pm_status); } break; @@ -193,12 +178,7 @@ VOXLPM::measure() case VOXLPM_CH_TYPE_VBATT: { _battery.updateBatteryStatus(tnow, 0.0, 0.0, true, true, 0, 0, false, &_bat_status); - if (_bat_pub_topic != nullptr) { - orb_publish(ORB_ID(battery_status), _bat_pub_topic, &_bat_status); - - } else { - _bat_pub_topic = orb_advertise(ORB_ID(battery_status), &_bat_status); - } + _bat_pub_topic.publish(_bat_status); } break; diff --git a/src/drivers/power_monitor/voxlpm/voxlpm.hpp b/src/drivers/power_monitor/voxlpm/voxlpm.hpp index 5d068efa4b..91dc6ffa80 100644 --- a/src/drivers/power_monitor/voxlpm/voxlpm.hpp +++ b/src/drivers/power_monitor/voxlpm/voxlpm.hpp @@ -67,7 +67,7 @@ #include -#include +#include #include #include @@ -160,16 +160,16 @@ private: perf_counter_t _sample_perf; - orb_advert_t _bat_pub_topic; - orb_advert_t _pm_pub_topic; + uORB::PublicationMulti _bat_pub_topic{ORB_ID(battery_status)}; + uORB::PublicationMulti _pm_pub_topic{ORB_ID(power_monitor)}; - struct battery_status_s _bat_status; - struct power_monitor_s _pm_status; + battery_status_s _bat_status{}; + power_monitor_s _pm_status{}; VOXLPM_CH_TYPE _ch_type; - float _voltage; - float _amperage; - float _rsense; + float _voltage{0.0f}; + float _amperage{0.0f}; + float _rsense{0.0f}; Battery _battery;