Skip to content

Commit f9bd579

Browse files
committed
Handling the parameter_descriptor correctly
Signed-off-by: CursedRock17 <[email protected]>
1 parent c703c9e commit f9bd579

File tree

2 files changed

+18
-26
lines changed

2 files changed

+18
-26
lines changed

rclcpp/include/rclcpp/parameter_descriptor_wrapper.hpp

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
#include <memory>
88

99
// Additional ROS libraries needed
10-
#include "node.hpp"
11-
#include "rcl_interfaces/msg/describe_parameters.hpp"
10+
#include "rcl_interfaces/msg/list_parameters_result.hpp"
11+
#include "rcl_interfaces/msg/parameter_descriptor.hpp"
12+
#include "rcl_interfaces/msg/set_parameters_result.hpp"
13+
1214
#include "rclcpp/callback_group.hpp"
1315
#include "rclcpp/context.hpp"
1416
#include "macros.hpp"
@@ -25,12 +27,11 @@ namespace rclcpp
2527
class ParameterDescription
2628
{
2729
public:
28-
ParameterDescription(const std::string& name, std::uint8_t type, std::string description, std::string additional_constraints, bool read_only. bool dynamic_typing) : m_name{name}, parameter_descriptor.type{type}, m_description{description}, m_additional_constraints{additional_constraints}, read_only{read_only}, dyanmic_typing{m_dyanmic_typing}{};
2930
// List of classes the builder manages
3031
ParameterDescription();
3132

3233
// Our Main build methods which will construct the base class
33-
ParameterDescription build() const;
34+
rcl_interfaces::msg::ParameterDescriptor build() const;
3435

3536
//Builder Methods - Describes the instances in a parameter_descriptionobject
3637
ParameterDescription& SetName(const std::string& name);
@@ -121,17 +122,6 @@ class ParameterDescription
121122
private:
122123
// The main descriptor object we're meant to initialize and adjust
123124
rcl_interfaces::msg::ParameterDescriptor parameter_descriptor = {};
124-
125-
// Copies all the information in ParameterDescriptor.msg - https://github.com/ros2/rcl_interfaces/blob/rolling/rcl_interfaces/msg/ParameterDescriptor.msg
126-
std::string m_name;
127-
std::string m_description;
128-
parameter_descriptor.type{rcl_interfaces::msg::ParameterType::PARAMETER_NOT_SET};
129-
130-
// Parameter Constraints
131-
std::string m_additional_constraints;
132-
bool m_read_only;
133-
bool m_dynamic_typing;
134-
135125
};
136126

137127
} // namespace rclcpp

rclcpp/src/rclcpp/parameter_descriptor_wrapper.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,27 @@
33
#include "../../include/rclcpp/parameter_descriptor_wrapper.hpp"
44

55
namespace rclcpp {
6-
// We use initializer lists in order to promote safety in uninitialzied state
7-
ParameterDescription::ParameterDescription(std::string name, std::uint8 type, std::string description, std::string additional_constraints, bool read_only. bool dynamic_typing) : m_name{name}, parameter_descriptor.type{type}, m_description{description}, m_additional_constraints{additional_constraints}, read_only{read_only}, dyanmic_typing{m_dyanmic_typing}
8-
{}
96

10-
ParameterDescription::ParameterDescription(){}
7+
ParameterDescription::ParameterDescription()
8+
{
9+
// Copies all the information in ParameterDescriptor.msg - https://github.com/ros2/rcl_interfaces/blob/rolling/rcl_interfaces/msg/ParameterDescriptor.msg
10+
// Need to set this in the constructor, but it doesn't necessarily need to be used
11+
parameter_descriptor.type{rcl_interfaces::msg::ParameterType::PARAMETER_NOT_SET};
12+
}
1113

1214
// ParameterDescription - ParameterDescription
1315
// First the build methods to connect to the base class in the builder
14-
ParameterDescription ParameterDescription::build() const
16+
rcl_interfaces::msg::ParameterDescriptor ParameterDescription::build() const
1517
{
1618
// Return some some sort message
17-
return ParameterDescription(m_name, parameter_descriptor.type, m_description, m_additional_constraints, m_read_only, m_dynamic_typing)
19+
return parameter_descriptor;
1820
}
1921

2022
// Builder methods which set up the original class
2123
// They all follow the same format of initing the value given within the base class, then returning this current class
2224
ParameterDescription& ParameterDescription::SetName(const std::string& name)
2325
{
24-
m_name = name;
26+
parameter_descriptor.name = name;
2527
return *this;
2628
}
2729

@@ -33,25 +35,25 @@ ParameterDescription& ParameterDescription::SetType(std::uint8_t type)
3335

3436
ParameterDescription& ParameterDescription::SetDescriptionText(const std::string& description)
3537
{
36-
m_description = description;
38+
parameter_descriptor.description = description;
3739
return *this;
3840
}
3941

4042
ParameterDescription& ParameterDescription::SetAdditionalConstraints(const std::string& constraints)
4143
{
42-
m_additional_constraints = constraints;
44+
parameter_descriptor.constraints = constraints;
4345
return *this;
4446
}
4547

4648
ParameterDescription& ParameterDescription::SetReadOnly(bool read_only)
4749
{
48-
m_read_only = read_only;
50+
parameter_descriptor.read_only = read_only;
4951
return *this;
5052
}
5153

5254
ParameterDescription& ParameterDescription::SetDynamicTyping(bool dynamic_typing)
5355
{
54-
m_dynamic_typing = dynamic_typing;
56+
parameter_descriptor.dynamic_typing = dynamic_typing;
5557
return *this;
5658
}
5759

0 commit comments

Comments
 (0)