From 073feb69171b024f37d8fb719650157daadb3ce4 Mon Sep 17 00:00:00 2001 From: Henry Moore Date: Wed, 4 Sep 2024 22:18:38 +0000 Subject: [PATCH 1/5] change to get building with latest rclcpp --- fuse_core/include/fuse_core/callback_wrapper.hpp | 6 +++--- fuse_core/src/callback_wrapper.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/fuse_core/include/fuse_core/callback_wrapper.hpp b/fuse_core/include/fuse_core/callback_wrapper.hpp index 06fbd1209..1a3c127aa 100644 --- a/fuse_core/include/fuse_core/callback_wrapper.hpp +++ b/fuse_core/include/fuse_core/callback_wrapper.hpp @@ -166,7 +166,7 @@ class CallbackAdapter : public rclcpp::Waitable /** * @brief tell the CallbackGroup that this waitable is ready to execute anything */ - bool is_ready(rcl_wait_set_t * wait_set) override; + bool is_ready(rcl_wait_set_t const& wait_set) override; /** @@ -175,11 +175,11 @@ class CallbackAdapter : public rclcpp::Waitable waitable_ptr = std::make_shared(); node->get_node_waitables_interface()->add_waitable(waitable_ptr, (rclcpp::CallbackGroup::SharedPtr) nullptr); */ - void add_to_wait_set(rcl_wait_set_t * wait_set) override; + void add_to_wait_set(rcl_wait_set_t & wait_set) override; std::shared_ptr take_data() override; - void execute(std::shared_ptr & data) override; + void execute(std::shared_ptr const& data) override; void addCallback(const std::shared_ptr & callback); diff --git a/fuse_core/src/callback_wrapper.cpp b/fuse_core/src/callback_wrapper.cpp index f8a157c9d..c86a15de3 100644 --- a/fuse_core/src/callback_wrapper.cpp +++ b/fuse_core/src/callback_wrapper.cpp @@ -59,7 +59,7 @@ size_t CallbackAdapter::get_number_of_ready_guard_conditions() {return 1;} /** * @brief tell the CallbackGroup that this waitable is ready to execute anything */ -bool CallbackAdapter::is_ready(rcl_wait_set_t * wait_set) +bool CallbackAdapter::is_ready(rcl_wait_set_t const& wait_set) { (void) wait_set; return !callback_queue_.empty(); @@ -71,9 +71,9 @@ bool CallbackAdapter::is_ready(rcl_wait_set_t * wait_set) waitable_ptr = std::make_shared(); node->get_node_waitables_interface()->add_waitable(waitable_ptr, (rclcpp::CallbackGroup::SharedPtr) nullptr); */ -void CallbackAdapter::add_to_wait_set(rcl_wait_set_t * wait_set) +void CallbackAdapter::add_to_wait_set(rcl_wait_set_t & wait_set) { - if (RCL_RET_OK != rcl_wait_set_add_guard_condition(wait_set, &gc_, NULL)) { + if (RCL_RET_OK != rcl_wait_set_add_guard_condition(&wait_set, &gc_, NULL)) { RCLCPP_WARN(rclcpp::get_logger("fuse"), "Could not add callback waitable to wait set."); } } @@ -107,7 +107,7 @@ std::shared_ptr CallbackAdapter::take_data() * @brief hook that allows the rclcpp::waitables interface to run the next callback * */ -void CallbackAdapter::execute(std::shared_ptr & data) +void CallbackAdapter::execute(std::shared_ptr const& data) { if (!data) { throw std::runtime_error("'data' is empty"); From 94d2f1537074900ff0a4bcede77d4bfa6e55d8f7 Mon Sep 17 00:00:00 2001 From: Henry Moore Date: Fri, 6 Sep 2024 20:15:47 -0600 Subject: [PATCH 2/5] uncrustify fixes --- fuse_core/include/fuse_core/callback_wrapper.hpp | 4 ++-- fuse_core/src/callback_wrapper.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fuse_core/include/fuse_core/callback_wrapper.hpp b/fuse_core/include/fuse_core/callback_wrapper.hpp index 1a3c127aa..0d6532823 100644 --- a/fuse_core/include/fuse_core/callback_wrapper.hpp +++ b/fuse_core/include/fuse_core/callback_wrapper.hpp @@ -166,7 +166,7 @@ class CallbackAdapter : public rclcpp::Waitable /** * @brief tell the CallbackGroup that this waitable is ready to execute anything */ - bool is_ready(rcl_wait_set_t const& wait_set) override; + bool is_ready(rcl_wait_set_t const & wait_set) override; /** @@ -179,7 +179,7 @@ class CallbackAdapter : public rclcpp::Waitable std::shared_ptr take_data() override; - void execute(std::shared_ptr const& data) override; + void execute(std::shared_ptr const & data) override; void addCallback(const std::shared_ptr & callback); diff --git a/fuse_core/src/callback_wrapper.cpp b/fuse_core/src/callback_wrapper.cpp index c86a15de3..454cf6302 100644 --- a/fuse_core/src/callback_wrapper.cpp +++ b/fuse_core/src/callback_wrapper.cpp @@ -59,7 +59,7 @@ size_t CallbackAdapter::get_number_of_ready_guard_conditions() {return 1;} /** * @brief tell the CallbackGroup that this waitable is ready to execute anything */ -bool CallbackAdapter::is_ready(rcl_wait_set_t const& wait_set) +bool CallbackAdapter::is_ready(rcl_wait_set_t const & wait_set) { (void) wait_set; return !callback_queue_.empty(); @@ -107,7 +107,7 @@ std::shared_ptr CallbackAdapter::take_data() * @brief hook that allows the rclcpp::waitables interface to run the next callback * */ -void CallbackAdapter::execute(std::shared_ptr const& data) +void CallbackAdapter::execute(std::shared_ptr const & data) { if (!data) { throw std::runtime_error("'data' is empty"); From 0ad7731f01f5a2359d3dc7b10976d4392b0890f0 Mon Sep 17 00:00:00 2001 From: Henry Moore Date: Thu, 12 Sep 2024 23:21:44 +0000 Subject: [PATCH 3/5] try disabling -Wstringop-overread --- fuse_constraints/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fuse_constraints/CMakeLists.txt b/fuse_constraints/CMakeLists.txt index 8640fe075..ffe83d4e7 100644 --- a/fuse_constraints/CMakeLists.txt +++ b/fuse_constraints/CMakeLists.txt @@ -66,7 +66,7 @@ include(suitesparse-extras.cmake) # 850 | typename plain_matrix_type::type tmp(src); # | ^~~ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0) - add_compile_options(-Wall -Werror -Wno-array-bounds) + add_compile_options(-Wall -Werror -Wno-array-bounds -Wno-stringop-overread) else() add_compile_options(-Wall -Werror) endif() From 555e09cbbc0f4561a8d2706c50dd37b44be39cea Mon Sep 17 00:00:00 2001 From: Henry Moore Date: Mon, 16 Sep 2024 21:15:27 +0000 Subject: [PATCH 4/5] remove stringop-overread warning disable (fixed in #381) --- fuse_constraints/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fuse_constraints/CMakeLists.txt b/fuse_constraints/CMakeLists.txt index ffe83d4e7..8640fe075 100644 --- a/fuse_constraints/CMakeLists.txt +++ b/fuse_constraints/CMakeLists.txt @@ -66,7 +66,7 @@ include(suitesparse-extras.cmake) # 850 | typename plain_matrix_type::type tmp(src); # | ^~~ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0) - add_compile_options(-Wall -Werror -Wno-array-bounds -Wno-stringop-overread) + add_compile_options(-Wall -Werror -Wno-array-bounds) else() add_compile_options(-Wall -Werror) endif() From 2dcbfac502f112c85ff5259b30f189301a0e66d7 Mon Sep 17 00:00:00 2001 From: Henry Moore Date: Mon, 16 Sep 2024 22:11:30 +0000 Subject: [PATCH 5/5] implement pure virtual waitable functions as in https://github.com/ros2/system_tests/pull/548 --- fuse_core/include/fuse_core/callback_wrapper.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fuse_core/include/fuse_core/callback_wrapper.hpp b/fuse_core/include/fuse_core/callback_wrapper.hpp index 0d6532823..59aa6076e 100644 --- a/fuse_core/include/fuse_core/callback_wrapper.hpp +++ b/fuse_core/include/fuse_core/callback_wrapper.hpp @@ -187,6 +187,12 @@ class CallbackAdapter : public rclcpp::Waitable void removeAllCallbacks(); + void set_on_ready_callback(std::function) override {} + void clear_on_ready_callback() override {} + std::shared_ptr take_data_by_entity_id(size_t) override { + return nullptr; + } + private: rcl_guard_condition_t gc_; //!< guard condition to drive the waitable