mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-17 20:53:35 +08:00
WIP, towards more px4 compatibility, first macros
This commit is contained in:
@@ -49,21 +49,26 @@
|
||||
#include <inttypes.h>
|
||||
#else
|
||||
/* includes when building for NuttX */
|
||||
|
||||
#include <containers/List.hpp>
|
||||
#endif
|
||||
|
||||
namespace px4
|
||||
{
|
||||
#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
|
||||
class NodeHandle : private ros::NodeHandle
|
||||
class NodeHandle :
|
||||
private ros::NodeHandle
|
||||
{
|
||||
public:
|
||||
NodeHandle () :
|
||||
NodeHandle() :
|
||||
ros::NodeHandle(),
|
||||
_subs(),
|
||||
_pubs()
|
||||
{}
|
||||
|
||||
~NodeHandle() {
|
||||
//XXX empty lists
|
||||
};
|
||||
|
||||
template<typename M>
|
||||
Subscriber subscribe(const char *topic, void(*fp)(M)) {
|
||||
ros::Subscriber ros_sub = ros::NodeHandle::subscribe(topic, kQueueSizeDefault, fp);
|
||||
@@ -87,6 +92,30 @@ private:
|
||||
#else
|
||||
class NodeHandle
|
||||
{
|
||||
public:
|
||||
NodeHandle() :
|
||||
_subs(),
|
||||
_pubs()
|
||||
{}
|
||||
|
||||
~NodeHandle() {};
|
||||
|
||||
template<typename M>
|
||||
Subscriber subscribe(const char *topic, void(*fp)(M)) {
|
||||
Subscriber sub(&_subs, , interval);
|
||||
return sub;
|
||||
}
|
||||
|
||||
template<typename M>
|
||||
Publisher advertise(const char *topic) {
|
||||
Publisher pub(ros_pub);
|
||||
_pubs.push_back(pub);
|
||||
return pub;
|
||||
}
|
||||
private:
|
||||
List<Subscriber> _subs;
|
||||
List<Publisher> _pubs;
|
||||
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -38,7 +38,11 @@
|
||||
*/
|
||||
#pragma once
|
||||
#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
|
||||
/* includes when building for ros */
|
||||
#include "ros/ros.h"
|
||||
#else
|
||||
/* includes when building for NuttX */
|
||||
#include <uORB/Publication.hpp>
|
||||
#endif
|
||||
|
||||
namespace px4
|
||||
@@ -56,7 +60,15 @@ private:
|
||||
ros::Publisher _ros_pub;
|
||||
};
|
||||
#else
|
||||
class Publisher
|
||||
template<typename M>
|
||||
class Publisher :
|
||||
public uORB::Publication<M>
|
||||
public:
|
||||
Publisher(List<SubscriptionBase *> * list,
|
||||
const struct orb_metadata *meta, unsigned interval) :
|
||||
uORB::Publication(list, meta)
|
||||
{}
|
||||
~Publisher() {};
|
||||
{
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -38,7 +38,11 @@
|
||||
*/
|
||||
#pragma once
|
||||
#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
|
||||
/* includes when building for ros */
|
||||
#include "ros/ros.h"
|
||||
#else
|
||||
/* includes when building for NuttX */
|
||||
#include <uORB/Subscription.hpp>
|
||||
#endif
|
||||
|
||||
namespace px4
|
||||
@@ -48,14 +52,23 @@ namespace px4
|
||||
class Subscriber
|
||||
{
|
||||
public:
|
||||
Subscriber(ros::Subscriber ros_sub) : _ros_sub(ros_sub)
|
||||
Subscriber(ros::Subscriber ros_sub) :
|
||||
_ros_sub(ros_sub)
|
||||
{}
|
||||
~Subscriber() {};
|
||||
private:
|
||||
ros::Subscriber _ros_sub;
|
||||
};
|
||||
#else
|
||||
class Subscriber
|
||||
template<typename M>
|
||||
class Subscriber :
|
||||
public uORB::Subscription<M>
|
||||
public:
|
||||
Subscriber(List<SubscriptionBase *> * list,
|
||||
const struct orb_metadata *meta, unsigned interval) :
|
||||
uORB::Subsciption(list, meta, interval)
|
||||
{}
|
||||
~Subscriber() {};
|
||||
{
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user