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
+2 -7
View File
@@ -105,11 +105,6 @@ Battery::Battery(int index, ModuleParams *parent, const int sample_interval_us)
updateParams(); updateParams();
} }
Battery::~Battery()
{
orb_unadvertise(_battery_status_pub);
}
void void
Battery::reset() Battery::reset()
{ {
@@ -179,6 +174,7 @@ Battery::updateBatteryStatus(hrt_abstime timestamp, float voltage_v, float curre
const bool should_publish = (source == _params.source); const bool should_publish = (source == _params.source);
if (should_publish) { if (should_publish) {
_battery_status_pub.publish(_battery_status);
publish(); publish();
} }
} }
@@ -186,8 +182,7 @@ Battery::updateBatteryStatus(hrt_abstime timestamp, float voltage_v, float curre
void void
Battery::publish() Battery::publish()
{ {
int dummy; // We're not interested in the instance ID we get _battery_status_pub.publish(_battery_status);
orb_publish_auto(ORB_ID(battery_status), &_battery_status_pub, &_battery_status, &dummy, ORB_PRIO_DEFAULT);
} }
void void
+4 -4
View File
@@ -43,6 +43,7 @@
#pragma once #pragma once
#include <uORB/uORB.h> #include <uORB/uORB.h>
#include <uORB/PublicationMulti.hpp>
#include <uORB/topics/battery_status.h> #include <uORB/topics/battery_status.h>
#include <drivers/drv_hrt.h> #include <drivers/drv_hrt.h>
#include <px4_platform_common/module_params.h> #include <px4_platform_common/module_params.h>
@@ -63,8 +64,7 @@ class Battery : public ModuleParams
{ {
public: public:
Battery(int index, ModuleParams *parent, const int sample_interval_us); Battery(int index, ModuleParams *parent, const int sample_interval_us);
~Battery() = default;
~Battery();
/** /**
* Reset all battery stats and report invalid/nothing. * Reset all battery stats and report invalid/nothing.
@@ -200,6 +200,8 @@ private:
void determineWarning(bool connected); void determineWarning(bool connected);
void computeScale(); void computeScale();
uORB::PublicationMulti<battery_status_s> _battery_status_pub{ORB_ID(battery_status)};
bool _battery_initialized = false; bool _battery_initialized = false;
AlphaFilter<float> _voltage_filter_v; AlphaFilter<float> _voltage_filter_v;
AlphaFilter<float> _current_filter_a; AlphaFilter<float> _current_filter_a;
@@ -211,6 +213,4 @@ private:
float _scale = 1.f; float _scale = 1.f;
uint8_t _warning; uint8_t _warning;
hrt_abstime _last_timestamp; hrt_abstime _last_timestamp;
orb_advert_t _battery_status_pub{nullptr};
}; };