Skip to content

Commit

Permalink
Serialization Refactor (#30)
Browse files Browse the repository at this point in the history
* make c++ ts work up to arrays

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* c++ sequences & wstring

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* test pass

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* cleanup code

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* rename variables

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* cleanup c typesupport

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* remove superfluous test code

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* message fixtures for typesupport c

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* remove superfluous code

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* all tests pass

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>

* adapt ros2_bridge to new serialization api

Signed-off-by: Knese Karsten <karsten.knese@us.bosch.com>
  • Loading branch information
Karsten1987 authored Jun 1, 2020
1 parent 26a82d8 commit c5ef31a
Show file tree
Hide file tree
Showing 19 changed files with 2,630 additions and 952 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.swp
32 changes: 8 additions & 24 deletions iceoryx_ros2_bridge/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,38 +27,22 @@ find_package(rosidl_generator_cpp REQUIRED)
find_package(rosidl_typesupport_cpp REQUIRED)
find_package(rosidl_typesupport_introspection_cpp REQUIRED)

add_library(iceoryx_typesupport_helpers
src/typesupport_helpers.cpp
)
ament_target_dependencies(iceoryx_typesupport_helpers
ament_index_cpp
rclcpp
rcpputils
rosidl_generator_cpp
rosidl_typesupport_introspection_cpp
rosidl_typesupport_cpp
)

add_library(iceoryx_generic_transport
src/generic_publisher.cpp
src/generic_subscription.cpp
)
target_link_libraries(iceoryx_generic_transport
iceoryx_typesupport_helpers
)
ament_target_dependencies(iceoryx_generic_transport
rclcpp
)

add_executable(iceoryx_ros2_bridge
src/iceoryx_ros2_bridge.cpp
src/generic_publisher.cpp
src/generic_subscription.cpp
src/typesupport_helpers.cpp
)
target_link_libraries(iceoryx_ros2_bridge
iceoryx_generic_transport
iceoryx_posh::iceoryx_posh
)
ament_target_dependencies(iceoryx_ros2_bridge
ament_index_cpp
rclcpp
rcpputils
rosidl_generator_cpp
rosidl_typesupport_introspection_cpp
rosidl_typesupport_cpp
rmw_iceoryx_cpp
)
install(
Expand Down
4 changes: 2 additions & 2 deletions iceoryx_ros2_bridge/src/iceoryx_ros2_bridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void publish_to_iceoryx(
std::vector<char> payload_vector{};
rmw_iceoryx_cpp::serialize(
ros_msg,
introspection_ts,
ts,
payload_vector);
free(ros_msg);

Expand Down Expand Up @@ -140,7 +140,7 @@ void publish_to_ros2(
introspection_ts->init_function(ros_msg, rosidl_runtime_cpp::MessageInitialization::ALL);
rmw_iceoryx_cpp::deserialize(
static_cast<const char *>(chunk),
introspection_ts,
ts,
ros_msg);

if (false == serialize_into(ros_msg, ts, &serialized_msg)) {
Expand Down
10 changes: 8 additions & 2 deletions rmw_iceoryx_cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,15 @@ if(BUILD_TESTING)
ament_lint_auto_find_test_dependencies()

find_package(ament_cmake_gtest REQUIRED)
ament_add_gtest(${PROJECT_NAME}_tests test/iceoryx_name_conversion_test.cpp)
find_package(test_msgs REQUIRED)
ament_add_gtest(test_name_conversion test/iceoryx_name_conversion_test.cpp)
target_link_libraries(test_name_conversion ${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME}_tests ${PROJECT_NAME})
ament_add_gtest(test_message_serialization test/iceoryx_serialization_test.cpp)
target_link_libraries(test_message_serialization ${PROJECT_NAME})
ament_target_dependencies(test_message_serialization
test_msgs
)
endif()

ament_export_include_directories(include)
Expand Down
16 changes: 3 additions & 13 deletions rmw_iceoryx_cpp/include/rmw_iceoryx_cpp/iceoryx_deserialize.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,15 @@
#ifndef RMW_ICEORYX_CPP__ICEORYX_DESERIALIZE_HPP_
#define RMW_ICEORYX_CPP__ICEORYX_DESERIALIZE_HPP_

struct rosidl_typesupport_introspection_c__MessageMembers;

namespace rosidl_typesupport_introspection_cpp
{
struct MessageMembers;
}
struct rosidl_message_type_support_t;

namespace rmw_iceoryx_cpp
{

// TODO(karsten1987): This should be `uint8`, really
const char * deserialize(
const char * serialized_msg,
const rosidl_typesupport_introspection_c__MessageMembers * members,
void * ros_message);

const char * deserialize(
void deserialize(
const char * serialized_msg,
const rosidl_typesupport_introspection_cpp::MessageMembers * members,
const rosidl_message_type_support_t * type_supports,
void * ros_message);

} // namespace rmw_iceoryx_cpp
Expand Down
16 changes: 3 additions & 13 deletions rmw_iceoryx_cpp/include/rmw_iceoryx_cpp/iceoryx_serialize.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,15 @@

#include <vector>

struct rosidl_typesupport_introspection_c__MessageMembers;

namespace rosidl_typesupport_introspection_cpp
{
struct MessageMembers;
}
struct rosidl_message_type_support_t;

namespace rmw_iceoryx_cpp
{

void serialize(
const void * ros_message,
const rosidl_typesupport_introspection_c__MessageMembers * members,
std::vector<char> & payloadVector);

void serialize(
const void * ros_message,
const rosidl_typesupport_introspection_cpp::MessageMembers * members,
std::vector<char> & payloadVector);
const rosidl_message_type_support_t * type_supports,
std::vector<char> & payload_vector);

} // namespace rmw_iceoryx_cpp
#endif // RMW_ICEORYX_CPP__ICEORYX_SERIALIZE_HPP_
1 change: 1 addition & 0 deletions rmw_iceoryx_cpp/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<test_depend>ament_cmake_gtest</test_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<test_depend>test_msgs</test_depend>

<export>
<build_type>ament_cmake</build_type>
Expand Down
Loading

0 comments on commit c5ef31a

Please sign in to comment.