From 04f7df38481f0ded75aa8d35564b9d5fb5e090eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Sat, 6 Aug 2022 19:51:15 +0200 Subject: [PATCH] SubscriptionMultiArray: use Subscription instead of SubscriptionInterval Saves ~3KB RAM on fmu-v5. --- platforms/common/uORB/Subscription.hpp | 2 +- .../common/uORB/SubscriptionMultiArray.hpp | 18 +++++++++--------- .../airspeed_selector_main.cpp | 1 + src/modules/commander/Commander.hpp | 1 + 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/platforms/common/uORB/Subscription.hpp b/platforms/common/uORB/Subscription.hpp index 496b8cf261..3b56d65e6d 100644 --- a/platforms/common/uORB/Subscription.hpp +++ b/platforms/common/uORB/Subscription.hpp @@ -76,7 +76,7 @@ public: * @param meta The uORB metadata (usually from the ORB_ID() macro) for the topic. * @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(meta->o_id)), _instance(instance) { diff --git a/platforms/common/uORB/SubscriptionMultiArray.hpp b/platforms/common/uORB/SubscriptionMultiArray.hpp index d99038a4ff..28a7fff95e 100644 --- a/platforms/common/uORB/SubscriptionMultiArray.hpp +++ b/platforms/common/uORB/SubscriptionMultiArray.hpp @@ -43,7 +43,7 @@ #include #include -#include "SubscriptionInterval.hpp" +#include "Subscription.hpp" namespace uORB { @@ -67,21 +67,21 @@ public: explicit SubscriptionMultiArray(ORB_ID id) { for (uint8_t i = 0; i < SIZE; i++) { - _subscriptions[i] = SubscriptionInterval{id, 0, i}; + _subscriptions[i] = Subscription{id, i}; _subscriptions[i].subscribe(); } } ~SubscriptionMultiArray() = default; - SubscriptionInterval &operator [](int i) { return _subscriptions[i]; } - const SubscriptionInterval &operator [](int i) const { return _subscriptions[i]; } + Subscription &operator [](int i) { return _subscriptions[i]; } + const Subscription &operator [](int i) const { return _subscriptions[i]; } - SubscriptionInterval *begin() { return _subscriptions; } - SubscriptionInterval *end() { return _subscriptions + SIZE; } + Subscription *begin() { return _subscriptions; } + Subscription *end() { return _subscriptions + SIZE; } - const SubscriptionInterval *begin() const { return _subscriptions; } - const SubscriptionInterval *end() const { return _subscriptions + SIZE; } + const Subscription *begin() const { return _subscriptions; } + const Subscription *end() const { return _subscriptions + SIZE; } // true if any instance is advertised bool advertised() @@ -122,7 +122,7 @@ public: } private: - SubscriptionInterval _subscriptions[SIZE]; + Subscription _subscriptions[SIZE]; }; } // namespace uORB diff --git a/src/modules/airspeed_selector/airspeed_selector_main.cpp b/src/modules/airspeed_selector/airspeed_selector_main.cpp index 60d587c0a6..e2c2e1f6b6 100644 --- a/src/modules/airspeed_selector/airspeed_selector_main.cpp +++ b/src/modules/airspeed_selector/airspeed_selector_main.cpp @@ -46,6 +46,7 @@ #include #include +#include #include #include #include diff --git a/src/modules/commander/Commander.hpp b/src/modules/commander/Commander.hpp index efbb767f70..f9d04bf693 100644 --- a/src/modules/commander/Commander.hpp +++ b/src/modules/commander/Commander.hpp @@ -63,6 +63,7 @@ // subscriptions #include +#include #include #include #include