RobotsIO
Loading...
Searching...
No Matches
ParametersYarpPort.cpp
1/*
2 * Copyright (C) 2019 Istituto Italiano di Tecnologia (IIT)
3 *
4 * This software may be modified and distributed under the terms of the
5 * BSD 3-Clause license. See the accompanying LICENSE file for details.
6 */
7
8#include <RobotsIO/Utils/ParametersYarpPort.h>
9
10#include <yarp/os/Value.h>
11
12using namespace RobotsIO::Utils;
13using namespace yarp::os;
14
15
16ParametersYarpPort::ParametersYarpPort(const std::string& port_name) :
17 YarpBufferedPort<Bottle>(port_name)
18{}
19
20
21ParametersYarpPort::~ParametersYarpPort()
22{}
23
24
25bool ParametersYarpPort::receive_parameters()
26{
27 Bottle* bottle = receive_data(false);
28
29 if (bottle == nullptr)
30 return false;
31 else
32 {
33 last_parameters_ = *bottle;
34
35 data_available_ = true;
36
37 return true;
38 }
39}
40
41
42const std::pair<bool, std::string> ParametersYarpPort::fill_string(const std::string& key) const
43{
44 if (!data_available_)
45 return std::make_pair(false, std::string());
46
47 Value value = last_parameters_.find(key);
48 if (value.isNull())
49 return std::make_pair(false, std::string());
50
51 return std::make_pair(true, value.asString());
52}
53
54
55const std::pair<bool, std::size_t> ParametersYarpPort::fill_size_t(const std::string& key) const
56{
57 if (!data_available_)
58 return std::make_pair(false, std::size_t());
59
60 Value value = last_parameters_.find(key);
61 if (value.isNull())
62 return std::make_pair(false, std::size_t());
63
64 return std::make_pair(true, value.asInt32());
65}
66
67
68const std::pair<bool, int> ParametersYarpPort::fill_int(const std::string& key) const
69{
70 if (!data_available_)
71 return std::make_pair(false, int());
72
73 Value value = last_parameters_.find(key);
74 if (value.isNull())
75 return std::make_pair(false, int());
76
77 return std::make_pair(true, value.asInt32());
78}
79
80
81const std::pair<bool, double> ParametersYarpPort::fill_double(const std::string& key) const
82{
83 if (!data_available_)
84 return std::make_pair(false, double());
85
86 Value value = last_parameters_.find(key);
87 if (value.isNull())
88 return std::make_pair(false, double());
89
90 return std::make_pair(true, value.asFloat64());
91}
92
93
94const std::pair<bool, bool> ParametersYarpPort::fill_bool(const std::string& key) const
95{
96 if (!data_available_)
97 return std::make_pair(false, bool());
98
99 Value value = last_parameters_.find(key);
100 if (value.isNull())
101 return std::make_pair(false, bool());
102
103 return std::make_pair(true, value.asBool());
104}