YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
FrameTransformSetMultiplexer.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
7
9#include <yarp/os/LogStream.h>
10
11using namespace yarp::sig;
12using namespace yarp::dev;
13using namespace yarp::os;
14
15YARP_LOG_COMPONENT(FRAMETRANSFORMSETMULTIPLEXER, "yarp.devices.FrameTransformSetMultiplexer")
16
17
18
20{
22 yCError(FRAMETRANSFORMSETMULTIPLEXER,"Error! YARP Network is not initialized");
23 return false;
24 }
25 return true;
26}
27
28
29
31{
32 m_iFrameTransformStorageSetList.clear();
33 return true;
34}
35
36
38{
40 detachAll();
41 return true;
42}
43
44
46{
47 for (int i = 0; i < devices2attach.size(); i++)
48 {
50 if (polyDriverLocal->isValid())
51 {
54
55 //all attached devices must have iFrameTransformStorageSet interface while
56 //only FrameTransformStorage have iFrameTransformStorageUtils
58 {
59 m_iFrameTransformStorageSetList.push_back(iFrameTransformStorageSet);
60 }
61 else
62 {
63 yCError(FRAMETRANSFORMSETMULTIPLEXER) << "failed to attach all the devices";
64 return false;
65 }
66
67 //attempt to iFrameTransformStorageUtils
69 m_iFrameTransformStorageUtilsList.push_back(iFrameTransformStorageUtils);
70 }
71 else
72 {
73 yCError(FRAMETRANSFORMSETMULTIPLEXER) << "polydriver not valid";
74 return false;
75 }
76 }
77 return true;
78}
79
80
81yarp::dev::ReturnValue FrameTransformSetMultiplexer::setTransforms(const std::vector<yarp::math::FrameTransform>& transforms)
82{
83 for (size_t i = 0; i < m_iFrameTransformStorageSetList.size(); i++)
84 {
85 if (m_iFrameTransformStorageSetList[i] != nullptr) {
86 m_iFrameTransformStorageSetList[i]->setTransforms(transforms);
87 }
88 else
89 {
90 yCError(FRAMETRANSFORMSETMULTIPLEXER) << "pointer to interface IFrameTransformStorageSet not valid";
91 return ReturnValue::return_code::return_value_error_method_failed;
92 }
93 }
94 return ReturnValue_ok;
95}
96
97
99{
100 for (size_t i = 0; i < m_iFrameTransformStorageSetList.size(); i++)
101 {
102 if (m_iFrameTransformStorageSetList[i] != nullptr) {
103 m_iFrameTransformStorageSetList[i]->setTransform(transform);
104 }
105 else
106 {
107 yCError(FRAMETRANSFORMSETMULTIPLEXER) << "pointer to interface IFrameTransformStorageSet not valid";
108 return ReturnValue::return_code::return_value_error_method_failed;
109 }
110 }
111 return ReturnValue_ok;
112}
113
115{
116 //stopThreads();
117
118 bool frame_deleted = true;
119
120 for (size_t i = 0; i < m_iFrameTransformStorageSetList.size(); i++)
121 {
122 if (m_iFrameTransformStorageSetList[i] != nullptr)
123 {
124 frame_deleted &= m_iFrameTransformStorageSetList[i]->deleteTransform(t1,t2);
125 }
126 else
127 {
128 yCError(FRAMETRANSFORMSETMULTIPLEXER) << "pointer to interface IFrameTransformStorageSet not valid";
129 return ReturnValue::return_code::return_value_error_method_failed;
130 }
131 }
132
133 //startThreads();
134
135 if (frame_deleted) { return ReturnValue_ok; }
136
137 return ReturnValue::return_code::return_value_error_method_failed;
138}
139
141{
142 //stopThreads();
143
144 for (size_t i = 0; i < m_iFrameTransformStorageSetList.size(); i++)
145 {
146 if (m_iFrameTransformStorageSetList[i] != nullptr) {
147 m_iFrameTransformStorageSetList[i]->clearAll();
148 }
149 else
150 {
151 yCError(FRAMETRANSFORMSETMULTIPLEXER) << "pointer to interface IFrameTransformStorageSet not valid";
152 return ReturnValue::return_code::return_value_error_method_failed;
153 }
154 }
155
156 //startThreads();
157
158 return ReturnValue_ok;
159}
160
162{
163 for (size_t i = 0; i < m_iFrameTransformStorageSetList.size(); i++)
164 {
165 if (m_iFrameTransformStorageUtilsList[i] != nullptr) {
166 m_iFrameTransformStorageUtilsList[i]->stopStorageThread();
167 }
168 }
169}
170
172{
173 for (size_t i = 0; i < m_iFrameTransformStorageSetList.size(); i++)
174 {
175 if (m_iFrameTransformStorageUtilsList[i] != nullptr) {
176 m_iFrameTransformStorageUtilsList[i]->startStorageThread();
177 }
178 }
179}
const yarp::os::LogComponent & FRAMETRANSFORMSETMULTIPLEXER()
#define ReturnValue_ok
Definition ReturnValue.h:77
A multiplexer which forwards the input of one IFrameTransformStorageSet interfaces to many.
bool close() override
Close the DeviceDriver.
bool detachAll() override
Detach the object (you must have first called attach).
yarp::dev::ReturnValue deleteTransform(std::string t1, std::string t2) override
Delete a single transform in the storage.
yarp::dev::ReturnValue setTransforms(const std::vector< yarp::math::FrameTransform > &transforms) override
Save some frame transforms in a storage.
yarp::dev::ReturnValue clearAll() override
Delete all transforms in a storage.
bool attachAll(const yarp::dev::PolyDriverList &devices2attach) override
Attach to a list of objects.
yarp::dev::ReturnValue setTransform(const yarp::math::FrameTransform &transform) override
Save a frame transform in a storage.
A container for a device driver.
Definition PolyDriver.h:23
A mini-server for performing network communication in the background.
static bool checkNetwork()
Check if the YARP Network is up and running.
Definition Network.cpp:1370
A base class for nested structures that can be searched.
Definition Searchable.h:31
#define yCError(component,...)
#define yCTrace(component,...)
#define YARP_LOG_COMPONENT(name,...)
For streams capable of holding different kinds of content, check what they actually have.
An interface to the operating system, including Port based communication.
The main, catch-all namespace for YARP.
Definition dirs.h:16