aboutsummaryrefslogtreecommitdiff
path: root/src/platforms/px4_subscriber.h
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-11-28 08:58:44 +0100
committerThomas Gubler <thomasgubler@gmail.com>2014-11-28 08:58:44 +0100
commit36bf0c04c8cb052c67e613eb051b0deb650eb216 (patch)
treec9a498d808dbc973b3ad2a2611703fa463c27c8f /src/platforms/px4_subscriber.h
parent486d81cb95bb7dc912ee0a7636b0a6aeb87009d9 (diff)
downloadpx4-firmware-36bf0c04c8cb052c67e613eb051b0deb650eb216.tar.gz
px4-firmware-36bf0c04c8cb052c67e613eb051b0deb650eb216.tar.bz2
px4-firmware-36bf0c04c8cb052c67e613eb051b0deb650eb216.zip
WIP, c++11 style callbacks for px4
Diffstat (limited to 'src/platforms/px4_subscriber.h')
-rw-r--r--src/platforms/px4_subscriber.h42
1 files changed, 33 insertions, 9 deletions
diff --git a/src/platforms/px4_subscriber.h b/src/platforms/px4_subscriber.h
index 12d422bb3..71c3a766d 100644
--- a/src/platforms/px4_subscriber.h
+++ b/src/platforms/px4_subscriber.h
@@ -44,6 +44,7 @@
/* includes when building for NuttX */
#include <uORB/Subscription.hpp>
#include <containers/List.hpp>
+#include <functional>
#endif
namespace px4
@@ -61,23 +62,46 @@ private:
ros::Subscriber _ros_sub;
};
#else
-class Subscriber :
- public uORB::SubscriptionNode
+// typedef std::function<void(int)> CallbackFunction;
+class Subscriber
+{
+public:
+ Subscriber() {};
+ ~Subscriber() {};
+private:
+};
+
+template<typename M>
+class SubscriberPX4 :
+ public Subscriber,
+ public uORB::Subscription<M>
{
public:
- template<typename M>
- Subscriber(const struct orb_metadata *meta,
+ SubscriberPX4(const struct orb_metadata *meta,
unsigned interval,
- void(*fp)(M),
+ std::function<void(const M&)> callback,
+ // std::function<void(int i)> callback,
+ // CallbackFunction callback,
List<uORB::SubscriptionNode *> * list) :
- uORB::SubscriptionNode(meta, interval, list)
+ Subscriber(),
+ uORB::Subscription<M>(meta, interval, list)
//XXX store callback
{}
- ~Subscriber() {};
+ ~SubscriberPX4() {};
void update() {
- //XXX list traversal callback, needed?
- } ;
+ /* get latest data */
+ uORB::Subscription<M>::update();
+
+ /* Call callback which performs actions based on this data */
+ // _callback();
+
+ };
+private:
+ // std::function<void(int i)> _callback;
+ // CallbackFunction _callback;
+ std::function<void(const M&)> _callback;
+
};
#endif