FluxioControlNode.cpp
Go to the documentation of this file.
1 #include "FluxioControlNode.h"
2 
3 #include <optional>
4 #include <vector>
5 
7 
12 #include <RobotAPI/interface/skills/SkillManagerInterface.h>
13 #include <RobotAPI/libraries/skills/core/aron/FluxioParameter.aron.generated.h>
14 
15 #include "FluxioParameter.h"
16 
17 namespace armarx
18 {
19  namespace skills
20  {
22  FluxioControlNodeTypeFromString(const std::string& type)
23  {
24  if (type == "SPLITTER")
25  {
27  }
28  else if (type == "AND_MERGER")
29  {
31  }
32  else
33  {
34  ARMARX_WARNING << "Unknown control node type: " << type;
36  }
37  }
38 
39  std::optional<std::string>
41  {
42  switch (type)
43  {
45  return "SPLITTER";
47  return "AND_MERGER";
49  default:
50  ARMARX_WARNING << "Unknown control node type: " << static_cast<int>(type);
51  return std::nullopt;
52  }
53  }
54 
55  std::optional<manager::dto::FluxioNode>
57  {
58  const auto& nt = FluxioNodeTypeToString(nodeType);
59  if (!nt.has_value())
60  {
61  return std::nullopt;
62  }
64  if (!nt.has_value())
65  {
66  return std::nullopt;
67  }
68 
69  manager::dto::FluxioNode ret;
70  ret.nodeId = nodeId;
71  ret.nodeType = nt.value();
72  ret.name = name;
73  ret.xPos = xPos;
74  ret.yPos = yPos;
75  ret.controlType = ct.value();
76 
77 
78  manager::dto::FluxioParameterList params;
79  for (const auto& [id, parameter] : parametersMap)
80  {
81  params.push_back(parameter.toManagerIce());
82  }
83  ret.parameters = params;
84 
85  manager::dto::FluxioIdentificator emptyId;
86  emptyId.id = "";
87  emptyId.hint = "";
88 
89  ret.parameterId = emptyId;
90  ret.skillId = emptyId;
91 
92  return ret;
93  }
94 
95  std::optional<manager::arondto::FluxioNode>
97  {
98  const auto& nt = FluxioNodeTypeToString(nodeType);
99  if (!nt.has_value())
100  {
101  return std::nullopt;
102  }
104  if (!nt.has_value())
105  {
106  return std::nullopt;
107  }
108 
109  manager::arondto::FluxioNode ret;
110  ret.nodeId = nodeId;
111  ret.nodeType = nt.value();
112  ret.name = name;
113  ret.xPos = xPos;
114  ret.yPos = yPos;
115  ret.controlType = ct.value();
116 
117 
118  std::vector<manager::arondto::FluxioParameter> params;
119  for (const auto& [id, parameter] : parametersMap)
120  {
121  params.push_back(parameter.toAron());
122  }
123  ret.parameters = params;
124 
125  manager::arondto::FluxioIdentificator emptyId;
126  emptyId.id = "";
127  emptyId.hint = "";
128 
129  ret.parameterId = emptyId;
130  ret.skillId = emptyId;
131 
132  return ret;
133  }
134 
135  std::optional<FluxioControlNode>
136  FluxioControlNode::FromIce(const manager::dto::FluxioNode& i,
137  std::map<std::string, FluxioProfile>& profilesMap,
138  std::map<std::string, aron::type::ObjectPtr>& typesMap)
139  {
141 
142  ret.nodeId = i.nodeId;
143  ret.nodeType = FluxioNodeTypeFromString(i.nodeType);
144  ret.name = i.name;
145  ret.xPos = i.xPos;
146  ret.yPos = i.yPos;
147  ret.controlType = skills::FluxioControlNodeTypeFromString(i.controlType);
148 
149  std::map<std::string, FluxioParameter> paramsMap;
150  for (const auto& parameter : i.parameters)
151  {
152  const auto& param = FluxioParameter::FromIce(parameter, profilesMap, typesMap);
153  paramsMap.insert({parameter.id, param});
154  }
155 
156  ret.parametersMap = paramsMap;
157 
158  return ret;
159  }
160 
161  std::optional<FluxioControlNode>
162  FluxioControlNode::FromAron(const manager::arondto::FluxioNode& i,
163  std::map<std::string, FluxioProfile>& profilesMap,
164  std::map<std::string, aron::type::ObjectPtr>& typesMap)
165  {
167 
168  ret.nodeId = i.nodeId;
169  ret.nodeType = FluxioNodeTypeFromString(i.nodeType);
170  ret.name = i.name;
171  ret.xPos = i.xPos;
172  ret.yPos = i.yPos;
173  ret.controlType = skills::FluxioControlNodeTypeFromString(i.controlType);
174 
175  std::map<std::string, FluxioParameter> paramsMap;
176  for (const auto& parameter : i.parameters)
177  {
178  const auto& param = FluxioParameter::FromAron(parameter, profilesMap, typesMap);
179  paramsMap.insert({parameter.id, param});
180  }
181 
182  ret.parametersMap = paramsMap;
183 
184  return ret;
185  }
186  } // namespace skills
187 } // namespace armarx
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:13
skills
This file is part of ArmarX.
armarx::skills::FluxioControlNode::parametersMap
std::map< std::string, FluxioParameter > parametersMap
Definition: FluxioControlNode.h:24
armarx::skills::FluxioParameter::FromIce
static FluxioParameter FromIce(const manager::dto::FluxioParameter &i, std::map< std::string, FluxioProfile > &profilesMap, std::map< std::string, aron::type::ObjectPtr > &typesMap)
Definition: FluxioParameter.cpp:161
armarx::skills::FluxioControlNode::toManagerIce
std::optional< manager::dto::FluxioNode > toManagerIce() const override
Definition: FluxioControlNode.cpp:56
List.h
FluxioControlNode.h
armarx::skills::FluxioControlNodeType
FluxioControlNodeType
Definition: FluxioControlNode.h:14
armarx::skills::FluxioNode::xPos
float xPos
Definition: FluxioNode.h:29
armarx::skills::FluxioParameter::FromAron
static FluxioParameter FromAron(const manager::arondto::FluxioParameter &i, std::map< std::string, FluxioProfile > &profilesMap, std::map< std::string, aron::type::ObjectPtr > &typesMap)
Definition: FluxioParameter.cpp:193
armarx::skills::FluxioNode::yPos
float yPos
Definition: FluxioNode.h:30
armarx::skills::FluxioControlNode::FromAron
static std::optional< FluxioControlNode > FromAron(const manager::arondto::FluxioNode &i, std::map< std::string, FluxioProfile > &profilesMap, std::map< std::string, aron::type::ObjectPtr > &typesMap)
Definition: FluxioControlNode.cpp:162
FluxioParameter.h
armarx::skills::FluxioNodeTypeToString
std::optional< std::string > FluxioNodeTypeToString(const FluxioNodeType &type)
Definition: FluxioNode.cpp:41
armarx::skills::FluxioControlNode::toAron
std::optional< manager::arondto::FluxioNode > toAron() const override
Definition: FluxioControlNode.cpp:96
armarx::skills::FluxioControlNodeType::AND_MERGER
@ AND_MERGER
armarx::skills::FluxioControlNode
Definition: FluxioControlNode.h:21
Float.h
armarx::skills::FluxioControlNode::FromIce
static std::optional< FluxioControlNode > FromIce(const manager::dto::FluxioNode &i, std::map< std::string, FluxioProfile > &profilesMap, std::map< std::string, aron::type::ObjectPtr > &typesMap)
Definition: FluxioControlNode.cpp:136
armarx::skills::FluxioNodeTypeFromString
FluxioNodeType FluxioNodeTypeFromString(const std::string &type)
Definition: FluxioNode.cpp:19
armarx::skills::FluxioNode::nodeId
std::string nodeId
Definition: FluxioNode.h:27
armarx::skills::FluxioControlNodeTypeToString
std::optional< std::string > FluxioControlNodeTypeToString(const FluxioControlNodeType &type)
Definition: FluxioControlNode.cpp:40
armarx::skills::FluxioControlNodeTypeFromString
FluxioControlNodeType FluxioControlNodeTypeFromString(const std::string &type)
Definition: FluxioControlNode.cpp:22
armarx::skills::FluxioControlNode::controlType
FluxioControlNodeType controlType
Definition: FluxioControlNode.h:23
Logging.h
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
String.h
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
FluxioNode.h
armarx::skills::FluxioNode::name
std::string name
Definition: FluxioNode.h:28
armarx::skills::FluxioNode::nodeType
FluxioNodeType nodeType
Definition: FluxioNode.h:26
armarx::skills::FluxioControlNodeType::SPLITTER
@ SPLITTER
armarx::skills::FluxioControlNodeType::UNKNOWN
@ UNKNOWN