aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-11-24 15:58:06 +0100
committerThomas Gubler <thomasgubler@gmail.com>2014-11-24 15:58:06 +0100
commit3f36d30a3413cd70096e953a2c9ea0ded65bf24e (patch)
tree4a1569cecb1cfe0507fed5334523ea3d57cf396a
parent1e36de61579dd35fe46a069520b7c8970c3cb7cd (diff)
downloadpx4-firmware-3f36d30a3413cd70096e953a2c9ea0ded65bf24e.tar.gz
px4-firmware-3f36d30a3413cd70096e953a2c9ea0ded65bf24e.tar.bz2
px4-firmware-3f36d30a3413cd70096e953a2c9ea0ded65bf24e.zip
wrapped subscriber
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/examples/subscriber/subscriber.cpp4
-rw-r--r--src/include/px4.h2
-rw-r--r--src/platforms/nuttx/px4_nodehandle.cpp39
-rw-r--r--src/platforms/px4_nodehandle.h18
-rw-r--r--src/platforms/px4_publisher.h1
-rw-r--r--src/platforms/px4_subscriber.h16
-rw-r--r--src/platforms/ros/px4_nodehandle.cpp44
-rw-r--r--src/platforms/ros/px4_publisher.cpp1
-rw-r--r--src/platforms/ros/px4_subscriber.cpp1
10 files changed, 123 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 36c2ffeff..8eb81c92c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,6 +104,7 @@ add_library(px4
src/platforms/ros/px4_ros_impl.cpp
src/platforms/ros/px4_publisher.cpp
src/platforms/ros/px4_subscriber.cpp
+ src/platforms/ros/px4_nodehandle.cpp
)
target_link_libraries(px4
diff --git a/src/examples/subscriber/subscriber.cpp b/src/examples/subscriber/subscriber.cpp
index bf16bf84e..39059daa3 100644
--- a/src/examples/subscriber/subscriber.cpp
+++ b/src/examples/subscriber/subscriber.cpp
@@ -57,7 +57,7 @@ int main(int argc, char **argv)
* The first NodeHandle constructed will fully initialize this node, and the last
* NodeHandle destructed will close down the node.
*/
- ros::NodeHandle n;
+ px4::NodeHandle n;
/**
* The subscribe() call is how you tell ROS that you want to receive messages
@@ -74,7 +74,7 @@ int main(int argc, char **argv)
* is the number of messages that will be buffered up before beginning to throw
* away the oldest ones.
*/
- ros::Subscriber sub = n.subscribe("rc_channels", 1000, rc_channels_callback);
+ px4::Subscriber* sub = n.subscribe("rc_channels", rc_channels_callback);
/**
* px4::spin() will enter a loop, pumping callbacks. With this version, all
diff --git a/src/include/px4.h b/src/include/px4.h
index 0aba2ee77..bb97f2a8a 100644
--- a/src/include/px4.h
+++ b/src/include/px4.h
@@ -58,3 +58,5 @@
#include "../platforms/px4_defines.h"
#include "../platforms/px4_middleware.h"
+#include "../platforms/px4_nodehandle.h"
+#include "../platforms/px4_subscriber.h"
diff --git a/src/platforms/nuttx/px4_nodehandle.cpp b/src/platforms/nuttx/px4_nodehandle.cpp
new file mode 100644
index 000000000..9d43daa49
--- /dev/null
+++ b/src/platforms/nuttx/px4_nodehandle.cpp
@@ -0,0 +1,39 @@
+/****************************************************************************
+ *
+ * Copyright (c) 2014 PX4 Development Team. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name PX4 nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/**
+ * @file px4_nodehandle.cpp
+ *
+ * PX4 Middleware Wrapper Nodehandle
+ */
+#include <px4_nodehandle.h>
diff --git a/src/platforms/px4_nodehandle.h b/src/platforms/px4_nodehandle.h
index d278828b7..df198615c 100644
--- a/src/platforms/px4_nodehandle.h
+++ b/src/platforms/px4_nodehandle.h
@@ -36,11 +36,27 @@
*
* PX4 Middleware Wrapper Node Handle
*/
+#pragma once
+#include <px4_subscriber.h>
+#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
+#include "ros/ros.h"
+#endif
namespace px4
{
+#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
+class NodeHandle : private ros::NodeHandle
+{
+public:
+ template<class M>
+ Subscriber* subscribe(const char *topic, void(*fp)(M)) {
+ ros::NodeHandle::subscribe("rc_channels", 1000, fp);
+ return new Subscriber();
+ }
+};
+#else
class NodeHandle
{
-
};
+#endif
}
diff --git a/src/platforms/px4_publisher.h b/src/platforms/px4_publisher.h
index 1b0952155..78d2a744b 100644
--- a/src/platforms/px4_publisher.h
+++ b/src/platforms/px4_publisher.h
@@ -36,6 +36,7 @@
*
* PX4 Middleware Wrapper Node Handle
*/
+#pragma once
namespace px4
{
diff --git a/src/platforms/px4_subscriber.h b/src/platforms/px4_subscriber.h
index 8759f8b05..8f883154e 100644
--- a/src/platforms/px4_subscriber.h
+++ b/src/platforms/px4_subscriber.h
@@ -36,11 +36,25 @@
*
* PX4 Middleware Wrapper Subscriber
*/
+#pragma once
+#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
+#include "ros/ros.h"
+#endif
namespace px4
{
+
+#if defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
+class Subscriber
+{
+public:
+ Subscriber() {};
+ ~Subscriber() {};
+};
+#else
class Subscriber
{
-
};
+#endif
+
}
diff --git a/src/platforms/ros/px4_nodehandle.cpp b/src/platforms/ros/px4_nodehandle.cpp
new file mode 100644
index 000000000..6ac3c76d3
--- /dev/null
+++ b/src/platforms/ros/px4_nodehandle.cpp
@@ -0,0 +1,44 @@
+/****************************************************************************
+ *
+ * Copyright (c) 2014 PX4 Development Team. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name PX4 nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/**
+ * @file px4_nodehandle.cpp
+ *
+ * PX4 Middleware Wrapper Nodehandle
+ */
+#include <px4_nodehandle.h>
+
+namespace px4
+{
+}
+
diff --git a/src/platforms/ros/px4_publisher.cpp b/src/platforms/ros/px4_publisher.cpp
index ab6035b22..f02dbe4c9 100644
--- a/src/platforms/ros/px4_publisher.cpp
+++ b/src/platforms/ros/px4_publisher.cpp
@@ -36,5 +36,6 @@
*
* PX4 Middleware Wrapper for Publisher
*/
+#include <px4_publisher.h>
diff --git a/src/platforms/ros/px4_subscriber.cpp b/src/platforms/ros/px4_subscriber.cpp
index 088c08fdb..d040b860d 100644
--- a/src/platforms/ros/px4_subscriber.cpp
+++ b/src/platforms/ros/px4_subscriber.cpp
@@ -37,4 +37,5 @@
* PX4 Middleware Wrapper Subscriber
*/
+#include <px4_subscriber.h>