Added from_parameter
This commit is contained in:
parent
346f17aff0
commit
9a499cf726
2 changed files with 21 additions and 2 deletions
|
@ -24,6 +24,7 @@
|
||||||
#include <rclcpp/client.hpp>
|
#include <rclcpp/client.hpp>
|
||||||
#include <rclcpp/context.hpp>
|
#include <rclcpp/context.hpp>
|
||||||
#include <rclcpp/macros.hpp>
|
#include <rclcpp/macros.hpp>
|
||||||
|
#include <rclcpp/parameter.hpp>
|
||||||
#include <rclcpp/publisher.hpp>
|
#include <rclcpp/publisher.hpp>
|
||||||
#include <rclcpp/service.hpp>
|
#include <rclcpp/service.hpp>
|
||||||
#include <rclcpp/subscription.hpp>
|
#include <rclcpp/subscription.hpp>
|
||||||
|
@ -154,7 +155,7 @@ public:
|
||||||
{
|
{
|
||||||
std::vector<rcl_interfaces::SetParametersResult> results;
|
std::vector<rcl_interfaces::SetParametersResult> results;
|
||||||
for (auto p : parameters) {
|
for (auto p : parameters) {
|
||||||
// parameters_[p.name] = ParameterVariant::from_parameter_value(p.value);
|
parameters_[p.name] = rclcpp::parameter::ParameterVariant::from_parameter(p);
|
||||||
rcl_interfaces::SetParametersResult result;
|
rcl_interfaces::SetParametersResult result;
|
||||||
result.successful = true;
|
result.successful = true;
|
||||||
// TODO: handle parameter constraints
|
// TODO: handle parameter constraints
|
||||||
|
@ -185,7 +186,7 @@ private:
|
||||||
|
|
||||||
std::mutex mutex_;
|
std::mutex mutex_;
|
||||||
|
|
||||||
// std::map<std::string, ParameterVariant> parameters_;
|
std::map<std::string, rclcpp::parameter::ParameterVariant> parameters_;
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename ServiceT,
|
typename ServiceT,
|
||||||
|
|
|
@ -170,6 +170,24 @@ public:
|
||||||
return get_value<ParameterType::PARAMETER_BYTES>();
|
return get_value<ParameterType::PARAMETER_BYTES>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ParameterVariant from_parameter(const rcl_interfaces::Parameter & parameter) {
|
||||||
|
switch(parameter.value.parameter_type) {
|
||||||
|
case PARAMETER_BOOL:
|
||||||
|
return ParameterVariant(parameter.name, parameter.value.bool_value);
|
||||||
|
case PARAMETER_INTEGER:
|
||||||
|
return ParameterVariant(parameter.name, parameter.value.integer_value);
|
||||||
|
case PARAMETER_DOUBLE:
|
||||||
|
return ParameterVariant(parameter.name, parameter.value.double_value);
|
||||||
|
case PARAMETER_STRING:
|
||||||
|
return ParameterVariant(parameter.name, parameter.value.string_value);
|
||||||
|
case PARAMETER_BYTES:
|
||||||
|
return ParameterVariant(parameter.name, parameter.value.bytes_value);
|
||||||
|
case PARAMETER_NOT_SET:
|
||||||
|
default:
|
||||||
|
// TODO: use custom exception
|
||||||
|
throw std::runtime_error("Invalid type from ParameterValue");
|
||||||
|
}
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
std::string name_;
|
std::string name_;
|
||||||
rcl_interfaces::ParameterValue value_;
|
rcl_interfaces::ParameterValue value_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue