aboutsummaryrefslogtreecommitdiff
path: root/src/modules/uORB/Subscription.cpp
diff options
context:
space:
mode:
authorJames Goppert <james.goppert@gmail.com>2014-03-16 17:01:03 -0400
committerJames Goppert <james.goppert@gmail.com>2014-03-20 12:12:42 -0400
commitafb2c37bfc20150718114c4ef56e40a7c4d4722f (patch)
tree593fdec377ee6f0a6364a2a62783e868e59ba821 /src/modules/uORB/Subscription.cpp
parentda9dab27998fa9e8b7a66d53a00aa3cae93573ec (diff)
downloadpx4-firmware-afb2c37bfc20150718114c4ef56e40a7c4d4722f.tar.gz
px4-firmware-afb2c37bfc20150718114c4ef56e40a7c4d4722f.tar.bz2
px4-firmware-afb2c37bfc20150718114c4ef56e40a7c4d4722f.zip
Fixed uORB Pub/Sub templates for GCC 4.7
Diffstat (limited to 'src/modules/uORB/Subscription.cpp')
-rw-r--r--src/modules/uORB/Subscription.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/modules/uORB/Subscription.cpp b/src/modules/uORB/Subscription.cpp
index 6e8830708..16da3b66f 100644
--- a/src/modules/uORB/Subscription.cpp
+++ b/src/modules/uORB/Subscription.cpp
@@ -37,6 +37,10 @@
*/
#include "Subscription.hpp"
+#include "topics/parameter_update.h"
+#include "topics/actuator_controls.h"
+#include "topics/vehicle_gps_position.h"
+#include "topics/sensor_combined.h"
namespace uORB
{
@@ -48,4 +52,32 @@ bool __EXPORT SubscriptionBase::updated()
return isUpdated;
}
+template<class T>
+Subscription<T>::Subscription(
+ List<SubscriptionBase *> * list,
+ const struct orb_metadata *meta, unsigned interval) :
+ T(), // initialize data structure to zero
+ SubscriptionBase(list, meta) {
+ setHandle(orb_subscribe(getMeta()));
+ orb_set_interval(getHandle(), interval);
+}
+
+template<class T>
+Subscription<T>::~Subscription() {}
+
+template<class T>
+void * Subscription<T>::getDataVoidPtr() {
+ return (void *)(T *)(this);
+}
+
+template<class T>
+T Subscription<T>::getData() {
+ return T(*this);
+}
+
+template class __EXPORT Subscription<parameter_update_s>;
+template class __EXPORT Subscription<actuator_controls_s>;
+template class __EXPORT Subscription<vehicle_gps_position_s>;
+template class __EXPORT Subscription<sensor_combined_s>;
+
} // namespace uORB