diff --git a/built_packages b/built_packages index d21ad7d57..9615965e3 100755 --- a/built_packages +++ b/built_packages @@ -13,7 +13,7 @@ https://github.com/micro-ROS/rosidl_typesupport.git 0e03d18809cb08215877ff856a91 https://github.com/micro-ROS/rcutils 500ee3fcb16bf6260453c75b50c3d7785d724443 https://github.com/micro-ROS/micro_ros_utilities c829971bd33ac1f14a94aa722476110b4b59eaf9 https://gitlab.com/micro-ROS/ros_tracing/ros2_tracing.git/ 07ae5aa5c456f887f2aa82896e207a3209309a50 -https://github.com/ros2/rclc 88cd65c27f6e45ea53c653231f59882bd0995bed +https://github.com/ros2/rclc 2668550d040fe70906a37232c2a5f689970c2d8d https://github.com/micro-ROS/micro_ros_msgs.git c8af6d4f246d1b324e6578ec967c8ddc1f4093d5 https://github.com/ros-controls/control_msgs 11fdcdf76434d8ca9047787d17add4e18f56e9d6 https://github.com/ros2/rcl_interfaces.git c5d0a20150533a6cb93d5dcbd6e27cea9300aa6e diff --git a/src/cortex-m0plus/libmicroros.a b/src/cortex-m0plus/libmicroros.a index 249cf7cc9..d37730f54 100755 Binary files a/src/cortex-m0plus/libmicroros.a and b/src/cortex-m0plus/libmicroros.a differ diff --git a/src/cortex-m3/libmicroros.a b/src/cortex-m3/libmicroros.a index 31a9a8017..189b65e18 100755 Binary files a/src/cortex-m3/libmicroros.a and b/src/cortex-m3/libmicroros.a differ diff --git a/src/cortex-m7/fpv5-d16-softfp/libmicroros.a b/src/cortex-m7/fpv5-d16-softfp/libmicroros.a index 8797b4e1c..b38e1bde5 100755 Binary files a/src/cortex-m7/fpv5-d16-softfp/libmicroros.a and b/src/cortex-m7/fpv5-d16-softfp/libmicroros.a differ diff --git a/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a b/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a index fc76b35e6..4b85d4da7 100755 Binary files a/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a and b/src/cortex-m7/fpv5-sp-d16-softfp/libmicroros.a differ diff --git a/src/imxrt1062/fpv5-d16-hard/libmicroros.a b/src/imxrt1062/fpv5-d16-hard/libmicroros.a index 5213756a6..d9b9af9bf 100755 Binary files a/src/imxrt1062/fpv5-d16-hard/libmicroros.a and b/src/imxrt1062/fpv5-d16-hard/libmicroros.a differ diff --git a/src/mk20dx256/libmicroros.a b/src/mk20dx256/libmicroros.a index 258e9b5c1..64a128f16 100755 Binary files a/src/mk20dx256/libmicroros.a and b/src/mk20dx256/libmicroros.a differ diff --git a/src/mk64fx512/fpv4-sp-d16-hard/libmicroros.a b/src/mk64fx512/fpv4-sp-d16-hard/libmicroros.a index 3beda25c4..6b819813d 100755 Binary files a/src/mk64fx512/fpv4-sp-d16-hard/libmicroros.a and b/src/mk64fx512/fpv4-sp-d16-hard/libmicroros.a differ diff --git a/src/rclc/client.h b/src/rclc/client.h index a6393a9c6..c33b0d9b3 100755 --- a/src/rclc/client.h +++ b/src/rclc/client.h @@ -78,6 +78,34 @@ rclc_client_init_best_effort( const rosidl_service_type_support_t * type_support, const char * service_name); +/** + * Creates an rcl client with defined QoS + * + * *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes (in RCL) + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Yes + * + * \param[inout] client pointer to zero_initialized rcl_client_t + * \param[in] node pointer to an initialized rcl node + * \param[in] type_support the message data type + * \param[in] service_name the name of service topic + * \param[in] qos_profile the qos of the topic + * \return `RCL_RET_OK` if successful + * \return `RCL_ERROR` (or other error code) if an error has occurred + */ +RCLC_PUBLIC +rcl_ret_t +rclc_client_init( + rcl_client_t * client, + const rcl_node_t * node, + const rosidl_service_type_support_t * type_support, + const char * service_name, + const rmw_qos_profile_t * qos_profile); + #if __cplusplus } #endif diff --git a/src/rclc/executor.h b/src/rclc/executor.h index 473d22284..033e1801a 100755 --- a/src/rclc/executor.h +++ b/src/rclc/executor.h @@ -568,6 +568,30 @@ rclc_executor_remove_guard_condition( rclc_executor_t * executor, const rcl_guard_condition_t * guard_condition); +/** + * The executor prepare function prepare the waitset of the executor if + * it is invalid. Does nothing if a valid waitset is already prepared. + * + * Memory is dynamically allocated within rcl-layer, when DDS queue is accessed with rcl_wait_set_init() + * + *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Yes + * + * + * \param [inout] executor pointer to initialized executor + * \return `RCL_RET_OK` if executor prepare operation was successful + * \return `RCL_RET_INVALID_ARGUMENT` if any parameter is a null pointer + * \return `RCL_RET_ERROR` if any other error occured + */ +RCLC_PUBLIC +rcl_ret_t +rclc_executor_prepare( + rclc_executor_t * executor); /** * The spin-some function checks one-time for new data from the DDS-queue. diff --git a/src/rclc/publisher.h b/src/rclc/publisher.h index 99617dbf3..35815a21c 100755 --- a/src/rclc/publisher.h +++ b/src/rclc/publisher.h @@ -80,6 +80,34 @@ rclc_publisher_init_best_effort( const rosidl_message_type_support_t * type_support, const char * topic_name); +/** + * Creates an rcl publisher with defined QoS + * + * *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes (in RCL) + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Yes + * + * \param[inout] publisher a zero_initialized rcl_publisher_t + * \param[in] node the rcl node + * \param[in] type_support the message data type + * \param[in] topic_name the name of published topic + * \param[in] qos_profile the qos of the topic + * \return `RCL_RET_OK` if successful + * \return `RCL_ERROR` (or other error code) if an error has occurred + */ +RCLC_PUBLIC +rcl_ret_t +rclc_publisher_init( + rcl_publisher_t * publisher, + const rcl_node_t * node, + const rosidl_message_type_support_t * type_support, + const char * topic_name, + const rmw_qos_profile_t * qos_profile); + #if __cplusplus } #endif diff --git a/src/rclc/service.h b/src/rclc/service.h index d75fb5b00..c8376244c 100755 --- a/src/rclc/service.h +++ b/src/rclc/service.h @@ -78,6 +78,34 @@ rclc_service_init_best_effort( const rosidl_service_type_support_t * type_support, const char * service_name); +/** + * Creates an rcl service with defined QoS + * + * *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes (in RCL) + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Yes + * + * \param[inout] service a zero_initialized rcl_service_t + * \param[in] node pointer to an initialized rcl node + * \param[in] type_support type of the request message + * \param[in] service_name the name of service topic + * \param[in] qos_profile the qos of the topic + * \return `RCL_RET_OK` if successful + * \return `RCL_ERROR` (or other error code) if an error has occurred + */ +RCLC_PUBLIC +rcl_ret_t +rclc_service_init( + rcl_service_t * service, + const rcl_node_t * node, + const rosidl_service_type_support_t * type_support, + const char * service_name, + const rmw_qos_profile_t * qos_profile); + #if __cplusplus } #endif diff --git a/src/rclc/subscription.h b/src/rclc/subscription.h index 79c2fde56..cfa5ab485 100755 --- a/src/rclc/subscription.h +++ b/src/rclc/subscription.h @@ -78,6 +78,35 @@ rclc_subscription_init_best_effort( const rosidl_message_type_support_t * type_support, const char * topic_name); + +/** + * Creates an rcl subscription with defined QoS + * + * *
+ * Attribute | Adherence + * ------------------ | ------------- + * Allocates Memory | Yes (in RCL) + * Thread-Safe | No + * Uses Atomics | No + * Lock-Free | Yes + * + * \param[inout] subscription - a zero-initialized rcl_subscription_t + * \param[in] node the rcl node + * \param[in] type_support the message data type + * \param[in] topic_name the name of subscribed topic + * \param[in] qos_profile the qos of the topic + * \return `RCL_RET_OK` if successful + * \return `RCL_ERROR` (or other error code) if an error occurred + */ +RCLC_PUBLIC +rcl_ret_t +rclc_subscription_init( + rcl_subscription_t * subscription, + rcl_node_t * node, + const rosidl_message_type_support_t * type_support, + const char * topic_name, + const rmw_qos_profile_t * qos_profile); + #if __cplusplus } #endif