Skip to content

Commit cab74d8

Browse files
committed
Use declare parameter or get
Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
1 parent 77fa3fd commit cab74d8

2 files changed

Lines changed: 21 additions & 4 deletions

File tree

rclcpp/include/rclcpp/detail/qos_parameters.hpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,22 @@ void
8888
apply_qos_override(
8989
rclcpp::QosPolicyKind policy, rclcpp::ParameterValue value, rclcpp::QoS & qos);
9090

91+
inline
92+
rclcpp::ParameterValue
93+
declare_parameter_or_get(
94+
rclcpp::node_interfaces::NodeParametersInterface & parameters_interface,
95+
const std::string & param_name,
96+
rclcpp::ParameterValue param_value,
97+
rcl_interfaces::msg::ParameterDescriptor descriptor)
98+
{
99+
try {
100+
return parameters_interface.declare_parameter(
101+
param_name, param_value, descriptor);
102+
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
103+
return parameters_interface.get_parameter(param_name).get_parameter_value();
104+
}
105+
}
106+
91107
/// \internal Declare QoS parameters for the given entity.
92108
/**
93109
* \tparam NodeT Node pointer or reference type.
@@ -146,8 +162,9 @@ declare_qos_parameters(
146162
rcl_interfaces::msg::ParameterDescriptor descriptor{};
147163
descriptor.description = param_desciption.str();
148164
descriptor.read_only = true;
149-
auto value = parameters_interface.declare_parameter(
150-
param_name.str(), get_default_qos_param_value(policy, qos), descriptor);
165+
auto value = declare_parameter_or_get(
166+
parameters_interface, param_name.str(),
167+
get_default_qos_param_value(policy, qos), descriptor);
151168
::rclcpp::detail::apply_qos_override(policy, value, qos);
152169
}
153170
}

rclcpp/include/rclcpp/qos_overriding_options.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ class QosParameters;
6565
* - An optional callback, that will be called to validate the final qos profile.
6666
* - An optional id. In the case that different qos are desired for two publishers/subscriptions in
6767
* the same topic, this id will allow disambiguating them.
68-
*
68+
*
6969
* Example parameter file:
70-
*
70+
*
7171
* ```yaml
7272
* my_node_name:
7373
* ros__parameters:

0 commit comments

Comments
 (0)