ros wrapper port callback to methods and subscriber without callback

This commit is contained in:
Thomas Gubler
2015-01-22 16:47:28 +01:00
parent 8c4fce3654
commit 49d41773fc
4 changed files with 34 additions and 34 deletions
+11 -9
View File
@@ -64,10 +64,11 @@ SubscriberExample::SubscriberExample() :
/* Function */ /* Function */
_n.subscribe<px4_rc_channels>(rc_channels_callback_function); //ROS version _n.subscribe<px4_rc_channels>(rc_channels_callback_function); //ROS version
// [> Class Method <] /* No callback */
// PX4_SUBSCRIBE(_n, rc_channels, SubscriberExample::rc_channels_callback, this, 1000); _sub_rc_chan = _n.subscribe<px4_rc_channels>();
// [> No callback <]
// _sub_rc_chan = PX4_SUBSCRIBE(_n, rc_channels, 500); /* Class Method */
_n.subscribe<px4_rc_channels>(&SubscriberExample::rc_channels_callback, this);
PX4_INFO("subscribed"); PX4_INFO("subscribed");
} }
@@ -76,8 +77,9 @@ SubscriberExample::SubscriberExample() :
* This tutorial demonstrates simple receipt of messages over the PX4 middleware system. * This tutorial demonstrates simple receipt of messages over the PX4 middleware system.
* Also the current value of the _sub_rc_chan subscription is printed * Also the current value of the _sub_rc_chan subscription is printed
*/ */
// void SubscriberExample::rc_channels_callback(const PX4_TOPIC_T(rc_channels) &msg) { void SubscriberExample::rc_channels_callback(const px4_rc_channels &msg) {
// PX4_INFO("Subscriber callback: [%llu], value of _sub_rc_chan: [%llu]", PX4_INFO("Callback (method): [%llu]",
// msg.timestamp_last_valid, msg.data().timestamp_last_valid);
// _sub_rc_chan->get().data().timestamp_last_valid); PX4_INFO("Callback (method): value of _sub_rc_chan: [%llu]",
// } _sub_rc_chan->get().data().timestamp_last_valid);
}
+1 -1
View File
@@ -58,7 +58,7 @@ protected:
float _test_float; float _test_float;
px4::Subscriber<px4_rc_channels> * _sub_rc_chan; px4::Subscriber<px4_rc_channels> * _sub_rc_chan;
// void rc_channels_callback(const PX4_TOPIC_T(rc_channels) &msg); void rc_channels_callback(const px4_rc_channels &msg);
}; };
+21 -22
View File
@@ -91,34 +91,33 @@ public:
/** /**
* Subscribe with callback to class method * Subscribe with callback to class method
* @param topic Name of the topic
* @param fb Callback, executed on receiving a new message * @param fb Callback, executed on receiving a new message
* @param obj pointer class instance
*/ */
// template<typename M, typename T> template<typename T, typename C>
// Subscriber<M> *subscribe(const char *topic, void(T::*fp)(const M &), T *obj) Subscriber<T> *subscribe(void(C::*fp)(const T &), C *obj)
// { {
// SubscriberBase *sub = new SubscriberROS<M>(std::bind(fp, obj, std::placeholders::_1)); SubscriberBase *sub = new SubscriberROS<T>(std::bind(fp, obj, std::placeholders::_1));
// ros::Subscriber ros_sub = ros::NodeHandle::subscribe(topic, kQueueSizeDefault, &SubscriberROS<M>::callback, ros::Subscriber ros_sub = ros::NodeHandle::subscribe(T::handle(), kQueueSizeDefault,
// (SubscriberROS<M> *)sub); &SubscriberROS<T>::callback, (SubscriberROS<T> *)sub);
// ((SubscriberROS<M> *)sub)->set_ros_sub(ros_sub); ((SubscriberROS<T> *)sub)->set_ros_sub(ros_sub);
// _subs.push_back(sub); _subs.push_back(sub);
// return (Subscriber<M> *)sub; return (Subscriber<T> *)sub;
// } }
/** /**
* Subscribe with no callback, just the latest value is stored on updates * Subscribe with no callback, just the latest value is stored on updates
* @param topic Name of the topic
*/ */
// template<typename M> template<typename T>
// Subscriber<M> *subscribe(const char *topic) Subscriber<T> *subscribe()
// { {
// SubscriberBase *sub = new SubscriberROS<M>(); SubscriberBase *sub = new SubscriberROS<T>();
// ros::Subscriber ros_sub = ros::NodeHandle::subscribe(topic, kQueueSizeDefault, &SubscriberROS<M>::callback, ros::Subscriber ros_sub = ros::NodeHandle::subscribe(T::handle(), kQueueSizeDefault,
// (SubscriberROS<M> *)sub); &SubscriberROS<T>::callback, (SubscriberROS<T> *)sub);
// ((SubscriberROS<M> *)sub)->set_ros_sub(ros_sub); ((SubscriberROS<T> *)sub)->set_ros_sub(ros_sub);
// _subs.push_back(sub); _subs.push_back(sub);
// return (Subscriber<M> *)sub; return (Subscriber<T> *)sub;
// } }
/** /**
* Advertise topic * Advertise topic
+1 -2
View File
@@ -130,11 +130,10 @@ protected:
void callback(const typename std::remove_reference<decltype(((T*)nullptr)->data())>::type &msg) void callback(const typename std::remove_reference<decltype(((T*)nullptr)->data())>::type &msg)
{ {
/* Store data */ /* Store data */
this->_msg_current = (T)msg; this->_msg_current.data() = msg;
/* Call callback */ /* Call callback */
if (_cbf != NULL) { if (_cbf != NULL) {
// _cbf(_msg_current);
_cbf(this->get()); _cbf(this->get());
} }