From 22de6a507d9d32af7ae85cdd1a84599a3c5301d4 Mon Sep 17 00:00:00 2001 From: Ethan Gao <16472154+gaoethan@users.noreply.github.com> Date: Sat, 18 Nov 2017 03:48:50 +0800 Subject: [PATCH 1/9] optimize not to access uninitialized scalar variable (#128) * optimize not to access uninitialized scalar variable Signed-off-by: Ethan Gao * use the result of t_validation_result instead Signed-off-by: Ethan Gao --- rmw/src/validate_namespace.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rmw/src/validate_namespace.c b/rmw/src/validate_namespace.c index 3531a6ca..c708cb05 100644 --- a/rmw/src/validate_namespace.c +++ b/rmw/src/validate_namespace.c @@ -80,8 +80,7 @@ rmw_validate_namespace( rcutils_snprintf( default_err_msg, sizeof(default_err_msg), "rmw_validate_namespace(): unknown rmw_validate_full_topic_name() result '%d'", - *validation_result - ); + t_validation_result); RMW_SET_ERROR_MSG(default_err_msg); } return RMW_RET_ERROR; From 5ac047a1082c94f26772eaae95abf7dbbb7831f7 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 21 Nov 2017 19:04:34 -0800 Subject: [PATCH 2/9] update service type support header name (#129) --- rmw/include/rmw/rmw.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h index 248350cf..2b8b5a9d 100644 --- a/rmw/include/rmw/rmw.h +++ b/rmw/include/rmw/rmw.h @@ -88,7 +88,7 @@ extern "C" #include "rcutils/types.h" #include "rosidl_generator_c/message_type_support_struct.h" -#include "rosidl_generator_c/service_type_support.h" +#include "rosidl_generator_c/service_type_support_struct.h" #include "rmw/macros.h" #include "rmw/qos_profiles.h" From 2e67c4a1045e16439bfd2987b934877b65a188e7 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Mon, 27 Nov 2017 13:29:25 -0800 Subject: [PATCH 3/9] waitset -> wait_set (#131) * waitset -> wait_set * use wait set in docblocks --- rmw/include/rmw/allocators.h | 6 +++--- rmw/include/rmw/rmw.h | 24 ++++++++++++------------ rmw/include/rmw/types.h | 4 ++-- rmw/src/allocators.c | 12 ++++++------ 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/rmw/include/rmw/allocators.h b/rmw/include/rmw/allocators.h index f0020188..a8690711 100644 --- a/rmw/include/rmw/allocators.h +++ b/rmw/include/rmw/allocators.h @@ -80,12 +80,12 @@ void rmw_service_free(rmw_service_t * service); RMW_PUBLIC -rmw_waitset_t * -rmw_waitset_allocate(void); +rmw_wait_set_t * +rmw_wait_set_allocate(void); RMW_PUBLIC void -rmw_waitset_free(rmw_waitset_t * waitset); +rmw_wait_set_free(rmw_wait_set_t * wait_set); #if __cplusplus } diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h index 2b8b5a9d..72abcbe9 100644 --- a/rmw/include/rmw/rmw.h +++ b/rmw/include/rmw/rmw.h @@ -277,25 +277,25 @@ RMW_WARN_UNUSED rmw_ret_t rmw_trigger_guard_condition(const rmw_guard_condition_t * guard_condition); -/// Create a waitset to store conditions that the middleware will block on. +/// Create a wait set to store conditions that the middleware will block on. /** - * If `max_conditions` is `0`, the waitset can store an unbounded number of + * If `max_conditions` is `0`, the wait set can store an unbounded number of * conditions to wait on. * If `max_conditions` is greater than `0`, the number of conditions that can - * be attached to the waitset is bounded at `max_conditions`. + * be attached to the wait set is bounded at `max_conditions`. * \param[in] max_conditions - * The maximum number of conditions that can be attached to the waitset. - * \return A pointer to the created waitset, `NULL` if an error occurred. + * The maximum number of conditions that can be attached to the wait set. + * \return A pointer to the created wait set, `NULL` if an error occurred. */ RMW_PUBLIC RMW_WARN_UNUSED -rmw_waitset_t * -rmw_create_waitset(size_t max_conditions); +rmw_wait_set_t * +rmw_create_wait_set(size_t max_conditions); RMW_PUBLIC RMW_WARN_UNUSED rmw_ret_t -rmw_destroy_waitset(rmw_waitset_t * waitset); +rmw_destroy_wait_set(rmw_wait_set_t * wait_set); /// Waits on sets of different waitable entities and returns when one is ready. /** @@ -303,7 +303,7 @@ rmw_destroy_waitset(rmw_waitset_t * waitset); * the timeout is reached. * The arrays contain type-erased representations of waitable entities. * This function casts the pointers to middleware-specific conditions and adds - * them to the waitset. + * them to the wait set. * * The count variables in the arrays represents the number of valid pointers * in the array. @@ -321,12 +321,12 @@ rmw_destroy_waitset(rmw_waitset_t * waitset); * \param guard_conditions Array of guard conditions to wait on * \param services Array of services to wait on * \param clients Array of clients to wait on - * \param waitset Storage for the waitset + * \param wait_set Storage for the wait set * \param wait_timeout * If negative, block indefinitely or until a condition is ready. * If zero, check only for immediately available conditions and don't block. * Else, this represents the maximum time to wait for a response from the - * waitset. + * wait set. * \return `RMW_RET_OK` if success, or * \return `RMW_RET_ERROR` if error, or * \return `RMW_RET_TIMEOUT` if wait timed out. @@ -339,7 +339,7 @@ rmw_wait( rmw_guard_conditions_t * guard_conditions, rmw_services_t * services, rmw_clients_t * clients, - rmw_waitset_t * waitset, + rmw_wait_set_t * wait_set, const rmw_time_t * wait_timeout); RMW_PUBLIC diff --git a/rmw/include/rmw/types.h b/rmw/include/rmw/types.h index faa9063b..930f0746 100644 --- a/rmw/include/rmw/types.h +++ b/rmw/include/rmw/types.h @@ -142,12 +142,12 @@ typedef struct RMW_PUBLIC_TYPE rmw_guard_conditions_t void ** guard_conditions; } rmw_guard_conditions_t; -typedef struct RMW_PUBLIC_TYPE rmw_waitset_t +typedef struct RMW_PUBLIC_TYPE rmw_wait_set_t { const char * implementation_identifier; rmw_guard_conditions_t * guard_conditions; void * data; -} rmw_waitset_t; +} rmw_wait_set_t; typedef struct RMW_PUBLIC_TYPE rmw_request_id_t { diff --git a/rmw/src/allocators.c b/rmw/src/allocators.c index 0798fd2d..5a832773 100644 --- a/rmw/src/allocators.c +++ b/rmw/src/allocators.c @@ -122,16 +122,16 @@ rmw_service_free(rmw_service_t * service) rmw_free(service); } -rmw_waitset_t * -rmw_waitset_allocate() +rmw_wait_set_t * +rmw_wait_set_allocate() { // Could be overridden with custom (maybe static) client struct allocator - return (rmw_waitset_t *)rmw_allocate(sizeof(rmw_waitset_t)); + return (rmw_wait_set_t *)rmw_allocate(sizeof(rmw_wait_set_t)); } void -rmw_waitset_free(rmw_waitset_t * waitset) +rmw_wait_set_free(rmw_wait_set_t * wait_set) { - // Should have matching overide with rmw_waitset_allocate - rmw_free(waitset); + // Should have matching overide with rmw_wait_set_allocate + rmw_free(wait_set); } From 4c39335411910f1e8d6cb49352b44fef6052455d Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Fri, 8 Dec 2017 17:24:54 -0800 Subject: [PATCH 4/9] 0.4.0 --- rmw/package.xml | 2 +- rmw_implementation_cmake/package.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rmw/package.xml b/rmw/package.xml index 3876b113..6ffe3908 100644 --- a/rmw/package.xml +++ b/rmw/package.xml @@ -2,7 +2,7 @@ rmw - 0.0.3 + 0.4.0 Contains the ROS middleware API. Dirk Thomas William Woodall diff --git a/rmw_implementation_cmake/package.xml b/rmw_implementation_cmake/package.xml index 084fae73..22ff2e2a 100644 --- a/rmw_implementation_cmake/package.xml +++ b/rmw_implementation_cmake/package.xml @@ -2,7 +2,7 @@ rmw_implementation_cmake - 0.0.3 + 0.4.0 CMake functions which can discover and enumerate available implementations. From 589c69efc50ccf9fb6e7b7b0be08f41d0d5ec6bc Mon Sep 17 00:00:00 2001 From: Ethan Gao <16472154+gaoethan@users.noreply.github.com> Date: Mon, 8 Jan 2018 23:31:29 +0800 Subject: [PATCH 5/9] Optimize namespace node and topic validation (#130) * Optimize namespace node and topic validation make the valid result more accurate, which should be different from the default NULL use rmw_namespace_validation_result_string instead for namespace validation Signed-off-by: Ethan Gao * no NULL returned from validation string and twaek the tests accordingly Signed-off-by: Ethan Gao * keep NULL for the valid case and adapt tests Signed-off-by: Ethan Gao * tweak the default error string returned Signed-off-by: Ethan Gao --- rmw/src/validate_full_topic_name.c | 2 +- rmw/src/validate_namespace.c | 2 +- rmw/src/validate_node_name.c | 2 +- rmw/test/test_validate_full_topic_name.cpp | 16 ++++++++-------- rmw/test/test_validate_namespace.cpp | 16 ++++++++-------- rmw/test/test_validate_node_name.cpp | 10 +++++----- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/rmw/src/validate_full_topic_name.c b/rmw/src/validate_full_topic_name.c index 9a24a236..8b59825d 100644 --- a/rmw/src/validate_full_topic_name.c +++ b/rmw/src/validate_full_topic_name.c @@ -134,6 +134,6 @@ rmw_full_topic_name_validation_result_string(int validation_result) case RMW_TOPIC_INVALID_TOO_LONG: return "topic length should not exceed '" RMW_STRINGIFY(RMW_TOPIC_MAX_NAME_LENGTH) "'"; default: - return NULL; + return "unknown result code for rwm topic name validation"; } } diff --git a/rmw/src/validate_namespace.c b/rmw/src/validate_namespace.c index c708cb05..3a7a23f7 100644 --- a/rmw/src/validate_namespace.c +++ b/rmw/src/validate_namespace.c @@ -126,6 +126,6 @@ rmw_namespace_validation_result_string(int validation_result) case RMW_NAMESPACE_INVALID_TOO_LONG: return "namespace should not exceed '" RMW_STRINGIFY(RMW_NAMESPACE_MAX_NAME_LENGTH) "'"; default: - return NULL; + return "unknown result code for rmw namespace validation"; } } diff --git a/rmw/src/validate_node_name.c b/rmw/src/validate_node_name.c index df223fc7..f86335c2 100644 --- a/rmw/src/validate_node_name.c +++ b/rmw/src/validate_node_name.c @@ -93,6 +93,6 @@ rmw_node_name_validation_result_string(int validation_result) return "node name length should not exceed '" RMW_STRINGIFY(RMW_NODE_NAME_MAX_NAME_LENGTH) "'"; default: - return NULL; + return "unknown result code for rmw node name validation"; } } diff --git a/rmw/test/test_validate_full_topic_name.cpp b/rmw/test/test_validate_full_topic_name.cpp index c3def82d..dfb1f77f 100644 --- a/rmw/test/test_validate_full_topic_name.cpp +++ b/rmw/test/test_validate_full_topic_name.cpp @@ -47,7 +47,7 @@ TEST(test_validate_topic_name, valid_topic) { ASSERT_EQ(RMW_RET_OK, ret); ASSERT_EQ(RMW_TOPIC_VALID, validation_result); - ASSERT_EQ((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_EQ((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, empty_topic_name) { @@ -66,7 +66,7 @@ TEST(test_validate_topic_name, empty_topic_name) { ASSERT_EQ(RMW_TOPIC_INVALID_IS_EMPTY_STRING, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, not_absolute) { @@ -90,7 +90,7 @@ TEST(test_validate_topic_name, not_absolute) { ASSERT_EQ(RMW_TOPIC_INVALID_NOT_ABSOLUTE, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, ends_with_forward_slash) { @@ -114,7 +114,7 @@ TEST(test_validate_topic_name, ends_with_forward_slash) { ASSERT_EQ(RMW_TOPIC_INVALID_ENDS_WITH_FORWARD_SLASH, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, unallowed_characters) { @@ -148,7 +148,7 @@ TEST(test_validate_topic_name, unallowed_characters) { ASSERT_EQ(RMW_TOPIC_INVALID_CONTAINS_UNALLOWED_CHARACTERS, validation_result); ASSERT_EQ(5ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, repeated_forward_slashes) { @@ -167,7 +167,7 @@ TEST(test_validate_topic_name, repeated_forward_slashes) { ASSERT_EQ(RMW_TOPIC_INVALID_CONTAINS_REPEATED_FORWARD_SLASH, validation_result); ASSERT_EQ(10ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, starts_with_number) { @@ -191,7 +191,7 @@ TEST(test_validate_topic_name, starts_with_number) { ASSERT_EQ(RMW_TOPIC_INVALID_NAME_TOKEN_STARTS_WITH_NUMBER, validation_result); ASSERT_EQ(8ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } TEST(test_validate_topic_name, topic_too_long) { @@ -228,5 +228,5 @@ TEST(test_validate_topic_name, topic_too_long) { EXPECT_EQ(RMW_TOPIC_INVALID_TOO_LONG, validation_result); EXPECT_EQ(RMW_TOPIC_MAX_NAME_LENGTH - 1, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_full_topic_name_validation_result_string(validation_result)); } diff --git a/rmw/test/test_validate_namespace.cpp b/rmw/test/test_validate_namespace.cpp index d17300fe..13c32a4a 100644 --- a/rmw/test/test_validate_namespace.cpp +++ b/rmw/test/test_validate_namespace.cpp @@ -52,7 +52,7 @@ TEST(test_validate_namespace, valid_namespace) { ASSERT_EQ(RMW_RET_OK, ret); ASSERT_EQ(RMW_NAMESPACE_VALID, validation_result); - ASSERT_EQ((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_EQ((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, empty_namespace) { @@ -71,7 +71,7 @@ TEST(test_validate_namespace, empty_namespace) { ASSERT_EQ(RMW_NAMESPACE_INVALID_IS_EMPTY_STRING, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, not_absolute) { @@ -95,7 +95,7 @@ TEST(test_validate_namespace, not_absolute) { ASSERT_EQ(RMW_NAMESPACE_INVALID_NOT_ABSOLUTE, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, ends_with_forward_slash) { @@ -114,7 +114,7 @@ TEST(test_validate_namespace, ends_with_forward_slash) { ASSERT_EQ(RMW_NAMESPACE_INVALID_ENDS_WITH_FORWARD_SLASH, validation_result); ASSERT_EQ(10ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, unallowed_characters) { @@ -148,7 +148,7 @@ TEST(test_validate_namespace, unallowed_characters) { ASSERT_EQ(RMW_NAMESPACE_INVALID_CONTAINS_UNALLOWED_CHARACTERS, validation_result); ASSERT_EQ(5ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, repeated_forward_slashes) { @@ -167,7 +167,7 @@ TEST(test_validate_namespace, repeated_forward_slashes) { ASSERT_EQ(RMW_NAMESPACE_INVALID_CONTAINS_REPEATED_FORWARD_SLASH, validation_result); ASSERT_EQ(10ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, starts_with_number) { @@ -191,7 +191,7 @@ TEST(test_validate_namespace, starts_with_number) { ASSERT_EQ(RMW_NAMESPACE_INVALID_NAME_TOKEN_STARTS_WITH_NUMBER, validation_result); ASSERT_EQ(8ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } TEST(test_validate_namespace, topic_too_long) { @@ -228,5 +228,5 @@ TEST(test_validate_namespace, topic_too_long) { EXPECT_EQ(RMW_NAMESPACE_INVALID_TOO_LONG, validation_result); EXPECT_EQ(RMW_NAMESPACE_MAX_LENGTH - 1, invalid_index); - ASSERT_NE((char *)NULL, rmw_full_topic_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_namespace_validation_result_string(validation_result)); } diff --git a/rmw/test/test_validate_node_name.cpp b/rmw/test/test_validate_node_name.cpp index 2d6f5837..da56fdbe 100644 --- a/rmw/test/test_validate_node_name.cpp +++ b/rmw/test/test_validate_node_name.cpp @@ -47,7 +47,7 @@ TEST(test_validate_node_name, valid_node_name) { ASSERT_EQ(RMW_RET_OK, ret); ASSERT_EQ(RMW_NODE_NAME_VALID, validation_result); - ASSERT_EQ((char *)NULL, rmw_node_name_validation_result_string(validation_result)); + ASSERT_EQ((char *)nullptr, rmw_node_name_validation_result_string(validation_result)); } TEST(test_validate_node_name, empty_node_name) { @@ -66,7 +66,7 @@ TEST(test_validate_node_name, empty_node_name) { ASSERT_EQ(RMW_NODE_NAME_INVALID_IS_EMPTY_STRING, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_node_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_node_name_validation_result_string(validation_result)); } TEST(test_validate_node_name, unallowed_characters) { @@ -105,7 +105,7 @@ TEST(test_validate_node_name, unallowed_characters) { ASSERT_EQ(RMW_NODE_NAME_INVALID_CONTAINS_UNALLOWED_CHARACTERS, validation_result); ASSERT_EQ(4ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_node_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_node_name_validation_result_string(validation_result)); } TEST(test_validate_node_name, starts_with_number) { @@ -124,7 +124,7 @@ TEST(test_validate_node_name, starts_with_number) { ASSERT_EQ(RMW_NODE_NAME_INVALID_STARTS_WITH_NUMBER, validation_result); ASSERT_EQ(0ul, invalid_index); - ASSERT_NE((char *)NULL, rmw_node_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_node_name_validation_result_string(validation_result)); } TEST(test_validate_node_name, node_name_too_long) { @@ -162,5 +162,5 @@ TEST(test_validate_node_name, node_name_too_long) { EXPECT_EQ(RMW_NODE_NAME_INVALID_TOO_LONG, validation_result); EXPECT_EQ(RMW_NODE_NAME_MAX_NAME_LENGTH - 1U, invalid_index); - ASSERT_NE((char *)NULL, rmw_node_name_validation_result_string(validation_result)); + ASSERT_NE((char *)nullptr, rmw_node_name_validation_result_string(validation_result)); } From d75889e06350beb541c5e6ca97747d6f268f60de Mon Sep 17 00:00:00 2001 From: Sriram Raghunathan Date: Thu, 18 Jan 2018 23:40:21 +0530 Subject: [PATCH 6/9] Enable setting log levels in DDS implementation (#124) * Add rmw_log_level_t enum to enable setting log levels for the lowlevel DDS api's * This patch enables support for three basic log levels * There needs an API inside the DDS specific rmw implementation i.e rmw_fastrtps/rmw_opensplice etc to convert the enum to DDS specific variable Signed-off-by: Sriram Raghunathan * Update changes based on github discussion based on https://github.com/ros2/rmw/pull/124#issuecomment-336526120 Using rcutils based log level, mapping them onto rmw specific ones. Signed-off-by: Sriram Raghunathan * Minor changes to existing code. Fix comment consistency and spacing consistency. Signed-off-by: Sriram Raghunathan * Change variable name for consistency Signed-off-by: Sriram Raghunathan * Add, rmw_log_set_severity API to rmw.h. This follows the set of patches across ros2 sources for setting log levels inside DDS implementation Signed-off-by: Sriram Raghunathan * Remove pointer to variable severity, from the github discussions it was'nt needed Signed-off-by: Sriram Raghunathan * Fix enum declaration errors Signed-off-by: Sriram Raghunathan * Fix code styling issues --- rmw/include/rmw/rmw.h | 5 +++++ rmw/include/rmw/types.h | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h index 72abcbe9..3186ccc8 100644 --- a/rmw/include/rmw/rmw.h +++ b/rmw/include/rmw/rmw.h @@ -410,6 +410,11 @@ rmw_service_server_is_available( const rmw_client_t * client, bool * is_available); +RMW_PUBLIC +RMW_WARN_UNUSED +rmw_ret_t +rmw_set_log_severity(rmw_log_severity_t severity); + #if __cplusplus } #endif diff --git a/rmw/include/rmw/types.h b/rmw/include/rmw/types.h index 930f0746..06463871 100644 --- a/rmw/include/rmw/types.h +++ b/rmw/include/rmw/types.h @@ -24,6 +24,8 @@ extern "C" #include #include +// map rcutils specific log levels to rmw speicfic type +#include #include "rmw/visibility_control.h" typedef int rmw_ret_t; @@ -228,6 +230,17 @@ typedef struct RMW_PUBLIC_TYPE rmw_message_info_t enum {RMW_QOS_POLICY_DEPTH_SYSTEM_DEFAULT = 0}; +// Type mapping of rcutil log severity types to +// rmw specific types. +typedef enum RWM_PUBLIC_TYPE +{ + RMW_LOG_SEVERITY_DEBUG = RCUTILS_LOG_SEVERITY_DEBUG, + RMW_LOG_SEVERITY_INFO = RCUTILS_LOG_SEVERITY_INFO, + RMW_LOG_SEVERITY_WARN = RCUTILS_LOG_SEVERITY_WARN, + RMW_LOG_SEVERITY_ERROR = RCUTILS_LOG_SEVERITY_ERROR, + RMW_LOG_SEVERITY_FATAL = RCUTILS_LOG_SEVERITY_FATAL +} rmw_log_severity_t; + #if __cplusplus } #endif From e8799d79e0bc1648cf58be5b9edf2b523be51585 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Wed, 24 Jan 2018 10:58:01 -0800 Subject: [PATCH 7/9] Clarify that NULL blocks forever in rmw_wait (#134) * Clarify that NULL blocks forever --- rmw/include/rmw/rmw.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h index 3186ccc8..6a9631fd 100644 --- a/rmw/include/rmw/rmw.h +++ b/rmw/include/rmw/rmw.h @@ -323,7 +323,7 @@ rmw_destroy_wait_set(rmw_wait_set_t * wait_set); * \param clients Array of clients to wait on * \param wait_set Storage for the wait set * \param wait_timeout - * If negative, block indefinitely or until a condition is ready. + * If NULL, block until a condition is ready. * If zero, check only for immediately available conditions and don't block. * Else, this represents the maximum time to wait for a response from the * wait set. From de5d31e65cf6dd703e452d8ece2999a8f8ed5eb8 Mon Sep 17 00:00:00 2001 From: Karsten Knese Date: Mon, 23 Oct 2017 11:07:45 -0700 Subject: [PATCH 8/9] publish_raw function --- rmw/include/rmw/rmw.h | 5 +++++ rmw/include/rmw/types.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h index 6a9631fd..2ff25456 100644 --- a/rmw/include/rmw/rmw.h +++ b/rmw/include/rmw/rmw.h @@ -171,6 +171,11 @@ RMW_WARN_UNUSED rmw_ret_t rmw_publish(const rmw_publisher_t * publisher, const void * ros_message); +RMW_PUBLIC +RMW_WARN_UNUSED +rmw_ret_t +rmw_publish_raw(const rmw_publisher_t * publisher, const rmw_message_raw_t * raw_message); + RMW_PUBLIC RMW_WARN_UNUSED rmw_subscription_t * diff --git a/rmw/include/rmw/types.h b/rmw/include/rmw/types.h index 06463871..689f0e53 100644 --- a/rmw/include/rmw/types.h +++ b/rmw/include/rmw/types.h @@ -228,6 +228,13 @@ typedef struct RMW_PUBLIC_TYPE rmw_message_info_t bool from_intra_process; } rmw_message_info_t; +typedef struct RMW_PUBLIC_TYPE rmw_message_raw_t +{ + // already serialized message data + char * buffer; + size_t buffer_length; +} rmw_message_raw_t; + enum {RMW_QOS_POLICY_DEPTH_SYSTEM_DEFAULT = 0}; // Type mapping of rcutil log severity types to From 5550e6077e4a04c13d21ba6ea01bb72dd70aaebd Mon Sep 17 00:00:00 2001 From: Karsten Knese Date: Tue, 14 Nov 2017 15:30:25 -0800 Subject: [PATCH 9/9] add rmw_take_raw --- rmw/include/rmw/rmw.h | 17 +++++++++++++++++ rmw/include/rmw/types.h | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h index 2ff25456..4b6385ed 100644 --- a/rmw/include/rmw/rmw.h +++ b/rmw/include/rmw/rmw.h @@ -205,6 +205,23 @@ rmw_take_with_info( bool * taken, rmw_message_info_t * message_info); +RMW_PUBLIC +RMW_WARN_UNUSED +rmw_ret_t +rmw_take_raw( + const rmw_subscription_t * subscription, + rmw_message_raw_t * raw_message, + bool * taken); + +RMW_PUBLIC +RMW_WARN_UNUSED +rmw_ret_t +rmw_take_raw_with_info( + const rmw_subscription_t * subscription, + rmw_message_raw_t * raw_message, + bool * taken, + rmw_message_info_t * message_info); + RMW_PUBLIC RMW_WARN_UNUSED rmw_client_t * diff --git a/rmw/include/rmw/types.h b/rmw/include/rmw/types.h index 689f0e53..2782c5cf 100644 --- a/rmw/include/rmw/types.h +++ b/rmw/include/rmw/types.h @@ -232,7 +232,7 @@ typedef struct RMW_PUBLIC_TYPE rmw_message_raw_t { // already serialized message data char * buffer; - size_t buffer_length; + unsigned int buffer_length; } rmw_message_raw_t; enum {RMW_QOS_POLICY_DEPTH_SYSTEM_DEFAULT = 0};