File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed
generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -64,6 +64,15 @@ TEST_F(ExampleTest, check_parameters) {
64
64
ASSERT_EQ (params_.ft_sensor .filter_coefficient , 0.1 );
65
65
}
66
66
67
+ TEST_F (ExampleTest, try_update_params) {
68
+ ASSERT_FALSE (param_listener_->try_update_params (params_));
69
+
70
+ const rclcpp ::Parameter new_param (" interpolation_mode" , " linear" );
71
+ example_test_node_->set_parameter (new_param);
72
+ ASSERT_TRUE (param_listener_->try_update_params (params_));
73
+ ASSERT_EQ (params_.interpolation_mode , " linear" );
74
+ }
75
+
67
76
TEST_F (ExampleTest, try_get_params) {
68
77
ASSERT_TRUE (param_listener_->try_get_params (params_));
69
78
Original file line number Diff line number Diff line change @@ -124,6 +124,30 @@ struct StackParams {
124
124
return params_;
125
125
}
126
126
127
+ /**
128
+ * @brief Tries to update the parsed Params object
129
+ * @param params_in The Params object to update
130
+ * @return true if the Params object was updated, false if it was already up to date or the mutex could not be locked
131
+ * @note This function tries to lock the mutex without blocking, so it can be used in a RT loop
132
+ */
133
+ bool try_update_params(Params & params_in) const {
134
+ std::unique_lock<std::mutex> lock(mutex_, std::try_to_lock);
135
+ if (lock.owns_lock()) {
136
+ if (const bool is_old = params_in.__stamp != params_.__stamp; is_old) {
137
+ params_in = params_;
138
+ return true;
139
+ }
140
+ }
141
+ return false;
142
+ }
143
+
144
+ /**
145
+ * @brief Tries to get the current Params object
146
+ * @param params_in The Params object to fill with the current parameters
147
+ * @return true if mutex can be locked, false if mutex could not be locked
148
+ * @note The parameters are only filled, when the mutex can be locked and the params timestamp is different
149
+ * @note This function tries to lock the mutex without blocking, so it can be used in a RT loop
150
+ */
127
151
bool try_get_params(Params & params_in) const {
128
152
if (mutex_.try_lock()) {
129
153
if (const bool is_old = params_in.__stamp != params_.__stamp; is_old) {
You can’t perform that action at this time.
0 commit comments