From a0757ed0b4e1846a0f8f1f11f2138670e95cdfd3 Mon Sep 17 00:00:00 2001 From: Dirk Thomas Date: Thu, 7 Aug 2014 14:38:38 -0700 Subject: [PATCH] hide static typesupport headers --- ros_dds_connext_dynamic/CMakeLists.txt | 14 ++++++++++++-- ros_dds_connext_dynamic/src/functions.cpp | 17 ++++++++++++----- ros_dds_connext_static/CMakeLists.txt | 14 ++++++++++++-- .../ros_dds_connext_static/MessageTypeSupport.h | 9 +++++++-- .../resource/msg_TypeSupport.h.template | 2 +- userland/CMakeLists.txt | 2 +- userland/src/main.cpp | 2 +- 7 files changed, 46 insertions(+), 14 deletions(-) diff --git a/ros_dds_connext_dynamic/CMakeLists.txt b/ros_dds_connext_dynamic/CMakeLists.txt index c82d968..d6cf66d 100644 --- a/ros_dds_connext_dynamic/CMakeLists.txt +++ b/ros_dds_connext_dynamic/CMakeLists.txt @@ -7,8 +7,17 @@ find_package(ros_middleware_interface REQUIRED) find_package(rosidl_generator_cpp REQUIRED) find_package(ndds_cpp REQUIRED) -set(CONNEXT_INCLUDE_DIRS ${ndds_cpp_INCLUDE_DIRS}) -set(CONNEXT_LIBRARIES ${ndds_cpp_LIBRARIES}) +#set(CONNEXT_INCLUDE_DIRS ${ndds_cpp_INCLUDE_DIRS}) +set(CONNEXT_INCLUDE_DIRS + "/home/dthomas/RTI/ndds.5.1.0/include/ndds" + "/home/dthomas/RTI/ndds.5.1.0/include" +) +#set(CONNEXT_LIBRARIES ${ndds_cpp_LIBRARIES}) +set(CONNEXT_LIBRARIES + "/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5/libnddscppz.a" + "/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5/libnddscz.a" + "/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5/libnddscorez.a" +) set(CONNEXT_DEFINITIONS ${ndds_cpp_DEFINITIONS}) @@ -24,6 +33,7 @@ ament_export_libraries(ros_dds_connext_dynamic dl pthread) ament_package() include_directories(${ros_middleware_interface_INCLUDE_DIRS} ${rosidl_generator_cpp_INCLUDE_DIRS} ${CONNEXT_INCLUDE_DIRS}) +link_directories("/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5") add_definitions(${CONNEXT_DEFINITIONS}) add_library(ros_dds_connext_dynamic SHARED src/functions.cpp) target_link_libraries(ros_dds_connext_dynamic ${std_msgs_LIBRARIES} ${CONNEXT_LIBRARIES}) diff --git a/ros_dds_connext_dynamic/src/functions.cpp b/ros_dds_connext_dynamic/src/functions.cpp index 61d4617..4e93b67 100644 --- a/ros_dds_connext_dynamic/src/functions.cpp +++ b/ros_dds_connext_dynamic/src/functions.cpp @@ -10,7 +10,7 @@ namespace ros_middleware_interface { -const char * _rti_connext_identifier = "connext_dynamic"; +const char * _rti_connext_dynamic_identifier = "connext_dynamic"; ros_middleware_interface::NodeHandle create_node() { @@ -37,7 +37,7 @@ ros_middleware_interface::NodeHandle create_node() std::cout << " create_node() pass opaque node handle" << std::endl; ros_middleware_interface::NodeHandle node_handle = { - _rti_connext_identifier, + _rti_connext_dynamic_identifier, participant }; return node_handle; @@ -55,7 +55,7 @@ ros_middleware_interface::PublisherHandle create_publisher(const ros_middleware_ { std::cout << "create_publisher()" << std::endl; - if (node_handle._implementation_identifier != _rti_connext_identifier) + if (node_handle._implementation_identifier != _rti_connext_dynamic_identifier) { printf("node handle not from this implementation\n"); printf("but from: %s\n", node_handle._implementation_identifier); @@ -67,6 +67,13 @@ ros_middleware_interface::PublisherHandle create_publisher(const ros_middleware_ std::cout << " create_publisher() extract participant from opaque node handle" << std::endl; DDSDomainParticipant* participant = (DDSDomainParticipant*)node_handle._data; + if (type_support_handle._implementation_identifier != ros_dds_cpp_dynamic_typesupport::_dynamic_identifier) + { + printf("type support not from this implementation\n"); + printf("but from: %s\n", type_support_handle._implementation_identifier); + throw std::runtime_error("type support not from this implementation"); + } + ros_dds_cpp_dynamic_typesupport::MessageTypeSupportMembers * members = (ros_dds_cpp_dynamic_typesupport::MessageTypeSupportMembers*)type_support_handle._data; std::string type_name = std::string(members->_package_name) + "/" + members->_message_name; @@ -177,7 +184,7 @@ ros_middleware_interface::PublisherHandle create_publisher(const ros_middleware_ custom_publisher_info->dynamic_data = dynamic_data; ros_middleware_interface::PublisherHandle publisher_handle = { - _rti_connext_identifier, + _rti_connext_dynamic_identifier, custom_publisher_info }; return publisher_handle; @@ -188,7 +195,7 @@ void publish(const ros_middleware_interface::PublisherHandle& publisher_handle, //std::cout << "publish()" << std::endl; - if (publisher_handle._implementation_identifier != _rti_connext_identifier) + if (publisher_handle._implementation_identifier != _rti_connext_dynamic_identifier) { printf("publisher handle not from this implementation\n"); printf("but from: %s\n", publisher_handle._implementation_identifier); diff --git a/ros_dds_connext_static/CMakeLists.txt b/ros_dds_connext_static/CMakeLists.txt index 66defd0..fc1c4b6 100644 --- a/ros_dds_connext_static/CMakeLists.txt +++ b/ros_dds_connext_static/CMakeLists.txt @@ -8,8 +8,17 @@ find_package(rosidl_generator_cpp REQUIRED) find_package(rosidl_generator_dds_connext_cpp REQUIRED) find_package(ndds_cpp REQUIRED) -set(CONNEXT_INCLUDE_DIRS ${ndds_cpp_INCLUDE_DIRS}) -set(CONNEXT_LIBRARIES ${ndds_cpp_LIBRARIES}) +#set(CONNEXT_INCLUDE_DIRS ${ndds_cpp_INCLUDE_DIRS}) +set(CONNEXT_INCLUDE_DIRS + "/home/dthomas/RTI/ndds.5.1.0/include/ndds" + "/home/dthomas/RTI/ndds.5.1.0/include" +) +#set(CONNEXT_LIBRARIES ${ndds_cpp_LIBRARIES}) +set(CONNEXT_LIBRARIES + "/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5/libnddscppz.a" + "/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5/libnddscz.a" + "/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5/libnddscorez.a" +) set(CONNEXT_DEFINITIONS ${ndds_cpp_DEFINITIONS}) ament_export_definitions(${CONNEXT_DEFINITIONS}) @@ -24,6 +33,7 @@ ament_package( ) include_directories(include ${ros_middleware_interface_INCLUDE_DIRS} ${rosidl_generator_cpp_INCLUDE_DIRS} ${rosidl_generator_dds_connext_cpp_INCLUDE_DIRS} ${CONNEXT_INCLUDE_DIRS}) +link_directories("/home/dthomas/RTI/ndds.5.1.0/lib/x64Linux2.6gcc4.4.5") add_definitions(${CONNEXT_DEFINITIONS}) add_library(ros_dds_connext_static SHARED src/functions.cpp) target_link_libraries(ros_dds_connext_static ${std_msgs_LIBRARIES} ${rosidl_generator_dds_connext_cpp_LIBRARIES} ${CONNEXT_LIBRARIES}) diff --git a/ros_dds_connext_static/include/ros_dds_connext_static/MessageTypeSupport.h b/ros_dds_connext_static/include/ros_dds_connext_static/MessageTypeSupport.h index 37b5d38..81d2df2 100644 --- a/ros_dds_connext_static/include/ros_dds_connext_static/MessageTypeSupport.h +++ b/ros_dds_connext_static/include/ros_dds_connext_static/MessageTypeSupport.h @@ -5,10 +5,15 @@ class DDSDomainParticipant; class DDSDataWriter; -namespace ros_dds_connext_static +namespace ros_middleware_interface { -const char * _connext_static_identifier = "connext_static"; +extern const char * _rti_connext_identifier; + +} + +namespace ros_dds_connext_static +{ typedef struct MessageTypeSupportCallbacks { const char * _package_name; diff --git a/ros_dds_connext_static/resource/msg_TypeSupport.h.template b/ros_dds_connext_static/resource/msg_TypeSupport.h.template index fe623f7..9d57d3d 100644 --- a/ros_dds_connext_static/resource/msg_TypeSupport.h.template +++ b/ros_dds_connext_static/resource/msg_TypeSupport.h.template @@ -100,7 +100,7 @@ static ros_dds_connext_static::MessageTypeSupportCallbacks callbacks = { }; static rosidl_generator_cpp::MessageTypeSupportHandle handle = { - ros_dds_connext_static::_connext_static_identifier, + ros_middleware_interface::_rti_connext_identifier, &callbacks }; diff --git a/userland/CMakeLists.txt b/userland/CMakeLists.txt index d92c0e1..49932f0 100644 --- a/userland/CMakeLists.txt +++ b/userland/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3) project(userland) -set(CMAKE_CXX_FLAGS "-std=c++0x") +set(CMAKE_CXX_FLAGS "-std=c++0x -Wall") find_package(ros_middleware_interface REQUIRED) find_package(ros_dds_connext_dynamic REQUIRED) diff --git a/userland/src/main.cpp b/userland/src/main.cpp index 3b4ef6f..d57800f 100644 --- a/userland/src/main.cpp +++ b/userland/src/main.cpp @@ -6,7 +6,7 @@ #include "std_msgs/Int32.h" -main(int argc, char** argv) +int main(int argc, char** argv) { rclcpp::Node* n = create_node(); rclcpp::Publisher* p = n->create_publisher("topic_name");