Browse Source

voxlpm update orb usage

sbg
Daniel Agar 5 years ago
parent
commit
7759a5dc82
  1. 2
      src/drivers/power_monitor/voxlpm/CMakeLists.txt
  2. 28
      src/drivers/power_monitor/voxlpm/voxlpm.cpp
  3. 16
      src/drivers/power_monitor/voxlpm/voxlpm.hpp

2
src/drivers/power_monitor/voxlpm/CMakeLists.txt

@ -33,8 +33,6 @@ @@ -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

28
src/drivers/power_monitor/voxlpm/voxlpm.cpp

@ -46,11 +46,7 @@ @@ -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() @@ -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() @@ -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() @@ -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;

16
src/drivers/power_monitor/voxlpm/voxlpm.hpp

@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
#include <battery/battery.h>
#include <uORB/uORB.h>
#include <uORB/PublicationMulti.hpp>
#include <uORB/topics/battery_status.h>
#include <uORB/topics/power_monitor.h>
@ -160,16 +160,16 @@ private: @@ -160,16 +160,16 @@ private:
perf_counter_t _sample_perf;
orb_advert_t _bat_pub_topic;
orb_advert_t _pm_pub_topic;
uORB::PublicationMulti<battery_status_s> _bat_pub_topic{ORB_ID(battery_status)};
uORB::PublicationMulti<power_monitor_s> _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;

Loading…
Cancel
Save