From 88a4f64f845f161247c2776e17daa4a1393cff0f Mon Sep 17 00:00:00 2001 From: Kenta Kato Date: Fri, 14 Jun 2024 00:06:04 +0900 Subject: [PATCH 1/3] add try_get_params --- .../jinja_templates/cpp/parameter_library_header | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header b/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header index f5851e4..63c2f3c 100644 --- a/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header +++ b/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header @@ -123,6 +123,17 @@ struct StackParams { return params_; } + bool try_get_params(Params & params_in) const{ + if (mutex_.try_lock()) { + if (const bool is_old = params_in.__stamp != params_.__stamp; is_old) { + params_in = params_; + } + mutex_.unlock(); + return true; + } + return false; + } + bool is_old(Params const& other) const { std::lock_guard lock(mutex_); return params_.__stamp != other.__stamp; From d0d52f7382f5eefa3da83044c21f0ffc8afd57fa Mon Sep 17 00:00:00 2001 From: KentaKato Date: Tue, 18 Jun 2024 10:22:00 +0900 Subject: [PATCH 2/3] Update parameter_library_header --- .../jinja_templates/cpp/parameter_library_header | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header b/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header index 63c2f3c..aa315e0 100644 --- a/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header +++ b/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header @@ -123,7 +123,7 @@ struct StackParams { return params_; } - bool try_get_params(Params & params_in) const{ + bool try_get_params(Params & params_in) const { if (mutex_.try_lock()) { if (const bool is_old = params_in.__stamp != params_.__stamp; is_old) { params_in = params_; From 28bbb4b87e4454e9c2abc32a56eca95912ad2c9f Mon Sep 17 00:00:00 2001 From: Kenta Kato Date: Mon, 24 Jun 2024 10:51:33 +0900 Subject: [PATCH 3/3] add test for `try_get_params` in example_test_gtest.cpp --- example/test/example_test_gtest.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/example/test/example_test_gtest.cpp b/example/test/example_test_gtest.cpp index 322beec..b7593ba 100644 --- a/example/test/example_test_gtest.cpp +++ b/example/test/example_test_gtest.cpp @@ -40,10 +40,9 @@ class ExampleTest : public ::testing::Test { void SetUp() { example_test_node_ = std::make_shared("example_test_node"); - std::shared_ptr param_listener = - std::make_shared( - example_test_node_->get_node_parameters_interface()); - params_ = param_listener->get_params(); + param_listener_ = std::make_shared( + example_test_node_->get_node_parameters_interface()); + params_ = param_listener_->get_params(); } void TearDown() { example_test_node_.reset(); } @@ -51,6 +50,7 @@ class ExampleTest : public ::testing::Test { protected: std::shared_ptr example_test_node_; admittance_controller::Params params_; + std::shared_ptr param_listener_; }; TEST_F(ExampleTest, check_parameters) { @@ -64,6 +64,15 @@ TEST_F(ExampleTest, check_parameters) { ASSERT_EQ(params_.ft_sensor.filter_coefficient, 0.1); } +TEST_F(ExampleTest, try_get_params) { + ASSERT_TRUE(param_listener_->try_get_params(params_)); + + const rclcpp ::Parameter new_param("interpolation_mode", "linear"); + example_test_node_->set_parameter(new_param); + ASSERT_TRUE(param_listener_->try_get_params(params_)); + ASSERT_EQ(params_.interpolation_mode, "linear"); +} + int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); rclcpp::init(argc, argv);