battery: switch to PublicationMulti for battery_status

This commit is contained in:
Matthias Grob 2020-08-26 11:39:54 +02:00 committed by Daniel Agar
parent 7da7ebad3d
commit 4cd7d44b4a
2 changed files with 6 additions and 11 deletions

View File

@ -105,11 +105,6 @@ Battery::Battery(int index, ModuleParams *parent, const int sample_interval_us)
updateParams();
}
Battery::~Battery()
{
orb_unadvertise(_battery_status_pub);
}
void
Battery::reset()
{
@ -179,6 +174,7 @@ Battery::updateBatteryStatus(hrt_abstime timestamp, float voltage_v, float curre
const bool should_publish = (source == _params.source);
if (should_publish) {
_battery_status_pub.publish(_battery_status);
publish();
}
}
@ -186,8 +182,7 @@ Battery::updateBatteryStatus(hrt_abstime timestamp, float voltage_v, float curre
void
Battery::publish()
{
int dummy; // We're not interested in the instance ID we get
orb_publish_auto(ORB_ID(battery_status), &_battery_status_pub, &_battery_status, &dummy, ORB_PRIO_DEFAULT);
_battery_status_pub.publish(_battery_status);
}
void

View File

@ -43,6 +43,7 @@
#pragma once
#include <uORB/uORB.h>
#include <uORB/PublicationMulti.hpp>
#include <uORB/topics/battery_status.h>
#include <drivers/drv_hrt.h>
#include <px4_platform_common/module_params.h>
@ -63,8 +64,7 @@ class Battery : public ModuleParams
{
public:
Battery(int index, ModuleParams *parent, const int sample_interval_us);
~Battery();
~Battery() = default;
/**
* Reset all battery stats and report invalid/nothing.
@ -200,6 +200,8 @@ private:
void determineWarning(bool connected);
void computeScale();
uORB::PublicationMulti<battery_status_s> _battery_status_pub{ORB_ID(battery_status)};
bool _battery_initialized = false;
AlphaFilter<float> _voltage_filter_v;
AlphaFilter<float> _current_filter_a;
@ -211,6 +213,4 @@ private:
float _scale = 1.f;
uint8_t _warning;
hrt_abstime _last_timestamp;
orb_advert_t _battery_status_pub{nullptr};
};