Added from_parameter

This commit is contained in:
Esteve Fernandez 2015-05-05 17:34:12 -07:00 committed by Esteve Fernandez
parent 346f17aff0
commit 9a499cf726
2 changed files with 21 additions and 2 deletions

View file

@ -24,6 +24,7 @@
#include <rclcpp/client.hpp>
#include <rclcpp/context.hpp>
#include <rclcpp/macros.hpp>
#include <rclcpp/parameter.hpp>
#include <rclcpp/publisher.hpp>
#include <rclcpp/service.hpp>
#include <rclcpp/subscription.hpp>
@ -154,7 +155,7 @@ public:
{
std::vector<rcl_interfaces::SetParametersResult> results;
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;
result.successful = true;
// TODO: handle parameter constraints
@ -185,7 +186,7 @@ private:
std::mutex mutex_;
// std::map<std::string, ParameterVariant> parameters_;
std::map<std::string, rclcpp::parameter::ParameterVariant> parameters_;
template<
typename ServiceT,

View file

@ -170,6 +170,24 @@ public:
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:
std::string name_;
rcl_interfaces::ParameterValue value_;