Skip to content

Commit 24e570b

Browse files
committed
enable parameter update recursively only when QoS override parameters.
Signed-off-by: Tomoya Fujita <[email protected]>
1 parent 892cae9 commit 24e570b

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

rclcpp/include/rclcpp/detail/qos_parameters.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ declare_parameter_or_get(
9797
rcl_interfaces::msg::ParameterDescriptor descriptor)
9898
{
9999
try {
100+
// enable parameter modification just once to make it possible
101+
// to declare QoS override parameters.
102+
parameters_interface.enable_parameter_modification();
100103
return parameters_interface.declare_parameter(
101104
param_name, param_value, descriptor);
102105
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {

rclcpp/include/rclcpp/node_interfaces/node_parameters.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,10 @@ class NodeParameters : public NodeParametersInterface
214214
const std::map<std::string, rclcpp::ParameterValue> &
215215
get_parameter_overrides() const override;
216216

217+
RCLCPP_PUBLIC
218+
void
219+
enable_parameter_modification() override;
220+
217221
using PreSetCallbacksHandleContainer = std::list<PreSetParametersCallbackHandle::WeakPtr>;
218222
using OnSetCallbacksHandleContainer = std::list<OnSetParametersCallbackHandle::WeakPtr>;
219223
using PostSetCallbacksHandleContainer = std::list<PostSetParametersCallbackHandle::WeakPtr>;

rclcpp/include/rclcpp/node_interfaces/node_parameters_interface.hpp

+6
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,12 @@ class NodeParametersInterface
270270
virtual
271271
const std::map<std::string, rclcpp::ParameterValue> &
272272
get_parameter_overrides() const = 0;
273+
274+
/// Enable parameter modification recursively just once.
275+
RCLCPP_PUBLIC
276+
virtual
277+
void
278+
enable_parameter_modification() = 0;
273279
};
274280

275281
} // namespace node_interfaces

rclcpp/src/rclcpp/node_interfaces/node_parameters.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -1191,3 +1191,9 @@ NodeParameters::get_parameter_overrides() const
11911191
{
11921192
return parameter_overrides_;
11931193
}
1194+
1195+
void
1196+
NodeParameters::enable_parameter_modification()
1197+
{
1198+
parameter_modification_enabled_ = true;
1199+
}

0 commit comments

Comments
 (0)