SubscriptionMultiArray: use Subscription instead of SubscriptionInterval

Saves ~3KB RAM on fmu-v5.
This commit is contained in:
Beat Küng
2022-08-06 19:51:15 +02:00
committed by Daniel Agar
parent 9b0b0d1168
commit 04f7df3848
4 changed files with 12 additions and 10 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ public:
* @param meta The uORB metadata (usually from the ORB_ID() macro) for the topic. * @param meta The uORB metadata (usually from the ORB_ID() macro) for the topic.
* @param instance The instance for multi sub. * @param instance The instance for multi sub.
*/ */
Subscription(const orb_metadata *meta, uint8_t instance = 0) : Subscription(const orb_metadata *meta = nullptr, uint8_t instance = 0) :
_orb_id((meta == nullptr) ? ORB_ID::INVALID : static_cast<ORB_ID>(meta->o_id)), _orb_id((meta == nullptr) ? ORB_ID::INVALID : static_cast<ORB_ID>(meta->o_id)),
_instance(instance) _instance(instance)
{ {
@@ -43,7 +43,7 @@
#include <px4_platform_common/defines.h> #include <px4_platform_common/defines.h>
#include <lib/mathlib/mathlib.h> #include <lib/mathlib/mathlib.h>
#include "SubscriptionInterval.hpp" #include "Subscription.hpp"
namespace uORB namespace uORB
{ {
@@ -67,21 +67,21 @@ public:
explicit SubscriptionMultiArray(ORB_ID id) explicit SubscriptionMultiArray(ORB_ID id)
{ {
for (uint8_t i = 0; i < SIZE; i++) { for (uint8_t i = 0; i < SIZE; i++) {
_subscriptions[i] = SubscriptionInterval{id, 0, i}; _subscriptions[i] = Subscription{id, i};
_subscriptions[i].subscribe(); _subscriptions[i].subscribe();
} }
} }
~SubscriptionMultiArray() = default; ~SubscriptionMultiArray() = default;
SubscriptionInterval &operator [](int i) { return _subscriptions[i]; } Subscription &operator [](int i) { return _subscriptions[i]; }
const SubscriptionInterval &operator [](int i) const { return _subscriptions[i]; } const Subscription &operator [](int i) const { return _subscriptions[i]; }
SubscriptionInterval *begin() { return _subscriptions; } Subscription *begin() { return _subscriptions; }
SubscriptionInterval *end() { return _subscriptions + SIZE; } Subscription *end() { return _subscriptions + SIZE; }
const SubscriptionInterval *begin() const { return _subscriptions; } const Subscription *begin() const { return _subscriptions; }
const SubscriptionInterval *end() const { return _subscriptions + SIZE; } const Subscription *end() const { return _subscriptions + SIZE; }
// true if any instance is advertised // true if any instance is advertised
bool advertised() bool advertised()
@@ -122,7 +122,7 @@ public:
} }
private: private:
SubscriptionInterval _subscriptions[SIZE]; Subscription _subscriptions[SIZE];
}; };
} // namespace uORB } // namespace uORB
@@ -46,6 +46,7 @@
#include <lib/systemlib/mavlink_log.h> #include <lib/systemlib/mavlink_log.h>
#include <uORB/Subscription.hpp> #include <uORB/Subscription.hpp>
#include <uORB/SubscriptionInterval.hpp>
#include <uORB/SubscriptionMultiArray.hpp> #include <uORB/SubscriptionMultiArray.hpp>
#include <uORB/topics/airspeed.h> #include <uORB/topics/airspeed.h>
#include <uORB/topics/airspeed_validated.h> #include <uORB/topics/airspeed_validated.h>
+1
View File
@@ -63,6 +63,7 @@
// subscriptions // subscriptions
#include <uORB/Subscription.hpp> #include <uORB/Subscription.hpp>
#include <uORB/SubscriptionInterval.hpp>
#include <uORB/SubscriptionMultiArray.hpp> #include <uORB/SubscriptionMultiArray.hpp>
#include <uORB/topics/action_request.h> #include <uORB/topics/action_request.h>
#include <uORB/topics/airspeed.h> #include <uORB/topics/airspeed.h>