From 2c84d4c84d8bf4b9d5430d541c978bf4124d56fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Oct 2023 10:21:17 +0200 Subject: [PATCH] micro-ROS rolling Library auto-update 05-10-2023 06:14 (#991) Co-authored-by: pablogs9 --- built_packages | 14 ++--- libmicroros/include/rcl/graph.h | 92 ++++++++++++++++++++++++++++++++ libmicroros/libmicroros.a | Bin 13722394 -> 13723068 bytes 3 files changed, 99 insertions(+), 7 deletions(-) diff --git a/built_packages b/built_packages index 45b19291..fc29fae0 100755 --- a/built_packages +++ b/built_packages @@ -1,7 +1,7 @@ https://github.com/ament/ament_cmake.git c5eb2cdc08cf318ad5e8fb14611106cea7ec4c1f https://github.com/ament/ament_index.git 076cef041834ae7a8c515ffb86f97b51e3aaff61 -https://github.com/ament/ament_lint.git 25e61b41f1117279ab7da1afc6e37962cc01385d +https://github.com/ament/ament_lint.git 7445e4e4d6818a2e4d4302748037f731195d6aad https://github.com/ament/ament_package.git 4e575b1b08659249ceb0a838b9a251f8b1477b04 https://github.com/ament/googletest.git ad343ef3c63b949cef97b0294d5ff352c499881b https://github.com/ament/uncrustify_vendor.git 37d7088131449989663c4258ff8b88b886fb83d8 @@ -9,8 +9,8 @@ https://github.com/eProsima/Micro-CDR.git ed4fd513a24a53b93d548d342cb7aa0a18716f https://github.com/eProsima/Micro-XRCE-DDS-Client.git b8dbfaa775d0d842edfa9a0eb2ebc8ebdb1a0c14 https://github.com/micro-ROS/micro_ros_msgs.git 02dd8456ede8ae75ba4c706231e1ff9e55758221 https://github.com/micro-ROS/micro_ros_utilities 4757528454cb0386ec0a18fcbd7ce3627fcca60d -https://github.com/micro-ROS/rcl 3789f958315c286f4fdec180e8dfb01a76043117 -https://github.com/micro-ROS/rcutils ce0e472072e48d689a1561a571778c630e7f6163 +https://github.com/micro-ROS/rcl ec1e32101f295d0fc73a05acaecb584321a34715 +https://github.com/micro-ROS/rcutils 6d5476a89727fab17a9b94ba77264a6251024a25 https://github.com/micro-ROS/rmw-microxrcedds.git 6833232797d1034860125e949f34067a850eeb43 https://github.com/micro-ROS/rosidl_typesupport.git 9e3abf7effcbee61fe9b57712220e22e093b22b5 https://github.com/micro-ROS/rosidl_typesupport_microxrcedds.git 3d4589be60981c24aef5f8926d40125a80878961 @@ -19,15 +19,15 @@ https://github.com/ros2/ament_cmake_ros.git 15f835d0e31354c4ac958a32b5f1caa42465 https://github.com/ros2/common_interfaces.git 366eea24ffce6c87f8860cbcd27f4863f46ad822 https://github.com/ros2/example_interfaces.git 4d7d086e4791e1839fecb9c50a1291d4056b916f https://github.com/ros2/libyaml_vendor.git 4dbe69b952379b39062b9c98898cf1a1cdee9a56 -https://github.com/ros2/rcl.git 9a05fa65926673b2986175ff055215861e29bf5b -https://github.com/ros2/rcl_interfaces.git 7f4d0d6b0509452b0d76af6122cdf5251919ecc9 +https://github.com/ros2/rcl.git 8f7f4f0804a34ee9d9ecd2d7e75a57ce2b7ced5d +https://github.com/ros2/rcl_interfaces.git fbd32f8b8ef90fb9cefdc90d8d2f5b992fd843bb https://github.com/ros2/rcl_logging.git 014239dd80ab3de2a847af80f23d24da6438ecb7 https://github.com/ros2/rclc 169b246f738a1b5604423f6187d27dc770781871 https://github.com/ros2/rcpputils.git 9115db1b094418910900859448b237eb0ac713b0 https://github.com/ros2/rmw.git 83445be486deae8c78d275e092eafb4bf380bd49 -https://github.com/ros2/rmw_implementation.git 4638f388ff89d47b9bb9d052b4b58849627c0ef8 +https://github.com/ros2/rmw_implementation.git 03cd08a826da474aeb490e116e1c6bba90756b40 https://github.com/ros2/ros2_tracing.git 0041e07e034538f7fa99cdcbe7c2d2c83dc1d272 -https://github.com/ros2/rosidl.git 3491f4fbda1f9c0184b0de5f5e5029f27bf74f23 +https://github.com/ros2/rosidl.git f9b25a9199a95d70874bd183a4a4f35a0fb10294 https://github.com/ros2/rosidl_core.git 84fa73d3974fe31fbe397e41e4449a31c2fb6ce4 https://github.com/ros2/rosidl_dds.git 16a3503d7694917f0c968e3918351e8d2f7fdb38 https://github.com/ros2/rosidl_defaults.git 65d0e79a6f477e22b7213590bc8d2465e16cedbf diff --git a/libmicroros/include/rcl/graph.h b/libmicroros/include/rcl/graph.h index 13133b6b..2049359c 100755 --- a/libmicroros/include/rcl/graph.h +++ b/libmicroros/include/rcl/graph.h @@ -584,6 +584,98 @@ rcl_count_subscribers( const char * topic_name, size_t * count); +/// Return the number of clients on a given service. +/** + * The `node` parameter must point to a valid node. + * + * The `service_name` parameter must not be `NULL`, and must not be an empty string. + * It should also follow the service name rules. + * + * See: https://design.ros2.org/articles/topic_and_service_names.html + * + * The `count` parameter must point to a valid size_t. + * The `count` parameter is the output for this function and will be set. + * + * In the event that error handling needs to allocate memory, this function + * will try to use the node's allocator. + * + * The service name is not automatically remapped by this function. + * If there is a client created with service name `foo` and remap rule `foo:=bar` then calling + * this with `service_name` set to `bar` will return a count of 1, and with `service_name` set to `foo` + * will return a count of 0. + * /sa rcl_remap_service_name() + * + *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Maybe [1] + * [1] implementation may need to protect the data structure with a lock + * + * \param[in] node the handle to the node being used to query the ROS graph + * \param[in] service_name the name of the service in question + * \param[out] count number of clients on the given service + * \return #RCL_RET_OK if the query was successful, or + * \return #RCL_RET_NODE_INVALID if the node is invalid, or + * \return #RCL_RET_INVALID_ARGUMENT if any arguments are invalid, or + * \return #RCL_RET_ERROR if an unspecified error occurs. + */ +RCL_PUBLIC +RCL_WARN_UNUSED +rcl_ret_t +rcl_count_clients( + const rcl_node_t * node, + const char * service_name, + size_t * count); + +/// Return the number of servers on a given service. +/** + * The `node` parameter must point to a valid node. + * + * The `service_name` parameter must not be `NULL`, and must not be an empty string. + * It should also follow the service name rules. + * + * See: https://design.ros2.org/articles/topic_and_service_names.html + * + * The `count` parameter must point to a valid size_t. + * The `count` parameter is the output for this function and will be set. + * + * In the event that error handling needs to allocate memory, this function + * will try to use the node's allocator. + * + * The service name is not automatically remapped by this function. + * If there is a server created with service name `foo` and remap rule `foo:=bar` then calling + * this with `service_name` set to `bar` will return a count of 1, and with `service_name` set to `foo` + * will return a count of 0. + * /sa rcl_remap_service_name() + * + *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Maybe [1] + * [1] implementation may need to protect the data structure with a lock + * + * \param[in] node the handle to the node being used to query the ROS graph + * \param[in] service_name the name of the service in question + * \param[out] count number of services on the given service + * \return #RCL_RET_OK if the query was successful, or + * \return #RCL_RET_NODE_INVALID if the node is invalid, or + * \return #RCL_RET_INVALID_ARGUMENT if any arguments are invalid, or + * \return #RCL_RET_ERROR if an unspecified error occurs. + */ +RCL_PUBLIC +RCL_WARN_UNUSED +rcl_ret_t +rcl_count_services( + const rcl_node_t * node, + const char * service_name, + size_t * count); + /// Wait for there to be a specified number of publishers on a given topic. /** * The `node` parameter must point to a valid node. diff --git a/libmicroros/libmicroros.a b/libmicroros/libmicroros.a index c7c1c9da77c5c2c270d4ad83040f8d7d2c7d7a4e..5c8cc6d6d6780fe54868c9e6f5d680c285760f33 100755 GIT binary patch delta 61396 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 Gum1y