set_property.h
Go to the documentation of this file.
1 
25 #ifndef SPINNAKER_CAMERA_DRIVER_SET_PROPERTY_H
26 #define SPINNAKER_CAMERA_DRIVER_SET_PROPERTY_H
27 
28 // Spinnaker SDK
29 #include "Spinnaker.h"
30 #include "SpinGenApi/SpinnakerGenApi.h"
31 
32 #include <string>
33 
35 {
36 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map, const std::string& property_name,
37  const std::string& entry_name)
38 {
39  // *** NOTES ***
40  // Enumeration nodes are slightly more complicated to set than other
41  // nodes. This is because setting an enumeration node requires working
42  // with two nodes instead of the usual one.
43  //
44  // As such, there are a number of steps to setting an enumeration node:
45  // retrieve the enumeration node from the nodemap, retrieve the desired
46  // entry node from the enumeration node, retrieve the integer value from
47  // the entry node, and set the new value of the enumeration node with
48  // the integer value from the entry node.
49  Spinnaker::GenApi::CEnumerationPtr enumerationPtr = node_map->GetNode(property_name.c_str());
50 
51  if (!Spinnaker::GenApi::IsImplemented(enumerationPtr))
52  {
53  ROS_ERROR_STREAM("[SpinnakerCamera]: ("
54  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
55  << ") Enumeration name " << property_name << " not "
56  "implemented.");
57  return false;
58  }
59 
60  if (Spinnaker::GenApi::IsAvailable(enumerationPtr))
61  {
62  if (Spinnaker::GenApi::IsWritable(enumerationPtr))
63  {
64  Spinnaker::GenApi::CEnumEntryPtr enumEmtryPtr = enumerationPtr->GetEntryByName(entry_name.c_str());
65 
66  if (Spinnaker::GenApi::IsAvailable(enumEmtryPtr))
67  {
68  if (Spinnaker::GenApi::IsReadable(enumEmtryPtr))
69  {
70  enumerationPtr->SetIntValue(enumEmtryPtr->GetValue());
71 
72  ROS_INFO_STREAM("[SpinnakerCamera]: ("
73  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
74  << ") " << property_name << " set to " << enumerationPtr->GetCurrentEntry()->GetSymbolic()
75  << ".");
76 
77  return true;
78  }
79  else
80  {
81  ROS_WARN_STREAM("[SpinnakerCamera]: ("
82  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
83  << ") Entry name " << entry_name << " not writable.");
84  }
85  }
86  else
87  {
88  ROS_WARN_STREAM("[SpinnakerCamera]: ("
89  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
90  << ") Entry name " << entry_name << " not available.");
91 
92  ROS_WARN("Available:");
93  Spinnaker::GenApi::NodeList_t entries;
94  enumerationPtr->GetEntries(entries);
95  for (auto& entry : entries)
96  {
97  auto enumEntry = dynamic_cast<Spinnaker::GenApi::IEnumEntry*>(entry);
98  if (enumEntry && Spinnaker::GenApi::IsAvailable(entry))
99  ROS_WARN_STREAM(" - " << entry->GetName() << " (display " << entry->GetDisplayName() << ", symbolic "
100  << enumEntry->GetSymbolic() << ")");
101  }
102  }
103  }
104  else
105  {
106  ROS_WARN_STREAM("[SpinnakerCamera]: ("
107  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
108  << ") Enumeration " << property_name << " not writable.");
109  }
110  }
111  else
112  {
113  ROS_WARN_STREAM("[SpinnakerCamera]: ("
114  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
115  << ") Enumeration " << property_name << " not available.");
116  }
117  return false;
118 }
119 
120 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map, const std::string& property_name, const float& value)
121 {
122  Spinnaker::GenApi::CFloatPtr floatPtr = node_map->GetNode(property_name.c_str());
123 
124  if (!Spinnaker::GenApi::IsImplemented(floatPtr))
125  {
126  ROS_ERROR_STREAM("[SpinnakerCamera]: ("
127  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
128  << ") Feature name " << property_name << " not implemented.");
129  return false;
130  }
131  if (Spinnaker::GenApi::IsAvailable(floatPtr))
132  {
133  if (Spinnaker::GenApi::IsWritable(floatPtr))
134  {
135  float temp_value = value;
136  if (temp_value > floatPtr->GetMax())
137  temp_value = floatPtr->GetMax();
138  else if (temp_value < floatPtr->GetMin())
139  temp_value = floatPtr->GetMin();
140  floatPtr->SetValue(temp_value);
141  ROS_INFO_STREAM("[SpinnakerCamera]: ("
142  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue() << ") "
143  << property_name << " set to " << floatPtr->GetValue() << ".");
144  return true;
145  }
146  else
147  {
148  ROS_WARN_STREAM("[SpinnakerCamera]: ("
149  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
150  << ") Feature " << property_name << " not writable.");
151  }
152  }
153  else
154  {
155  ROS_WARN_STREAM("[SpinnakerCamera]: ("
156  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
157  << ") Feature " << property_name << " not available.");
158  }
159  return false;
160 }
161 
162 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map, const std::string& property_name, const bool& value)
163 {
164  Spinnaker::GenApi::CBooleanPtr boolPtr = node_map->GetNode(property_name.c_str());
165  if (!Spinnaker::GenApi::IsImplemented(boolPtr))
166  {
167  ROS_ERROR_STREAM("[SpinnakerCamera]: ("
168  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
169  << ") Feature name " << property_name << " not implemented.");
170  return false;
171  }
172  if (Spinnaker::GenApi::IsAvailable(boolPtr))
173  {
174  if (Spinnaker::GenApi::IsWritable(boolPtr))
175  {
176  boolPtr->SetValue(value);
177  ROS_INFO_STREAM("[SpinnakerCamera]: ("
178  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue() << ") "
179  << property_name << " set to " << boolPtr->GetValue() << ".");
180  return true;
181  }
182  else
183  {
184  ROS_WARN_STREAM("[SpinnakerCamera]: ("
185  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
186  << ") Feature " << property_name << " not writable.");
187  }
188  }
189  else
190  {
191  ROS_WARN_STREAM("[SpinnakerCamera]: ("
192  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
193  << ") Feature " << property_name << " not available.");
194  }
195  return false;
196 }
197 
198 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map, const std::string& property_name, const int& value)
199 {
200  Spinnaker::GenApi::CIntegerPtr intPtr = node_map->GetNode(property_name.c_str());
201  if (!Spinnaker::GenApi::IsImplemented(intPtr))
202  {
203  ROS_ERROR_STREAM("[SpinnakerCamera]: ("
204  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
205  << ") Feature name " << property_name << " not implemented.");
206  return false;
207  }
208  if (Spinnaker::GenApi::IsAvailable(intPtr))
209  {
210  if (Spinnaker::GenApi::IsWritable(intPtr))
211  {
212  int temp_value = value;
213  if (temp_value > intPtr->GetMax())
214  temp_value = intPtr->GetMax();
215  else if (temp_value < intPtr->GetMin())
216  temp_value = intPtr->GetMin();
217  intPtr->SetValue(temp_value);
218  ROS_INFO_STREAM("[SpinnakerCamera]: ("
219  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue() << ") "
220  << property_name << " set to " << intPtr->GetValue() << ".");
221  return true;
222  }
223  else
224  {
225  ROS_WARN_STREAM("[SpinnakerCamera]: ("
226  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
227  << ") Feature " << property_name << " not writable.");
228  }
229  }
230  else
231  {
232  ROS_WARN_STREAM("[SpinnakerCamera]: ("
233  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
234  << ") Feature " << property_name << " not available.");
235  }
236  return false;
237 }
238 
239 inline bool setMaxInt(Spinnaker::GenApi::INodeMap* node_map, const std::string& property_name)
240 {
241  Spinnaker::GenApi::CIntegerPtr intPtr = node_map->GetNode(property_name.c_str());
242 
243  if (Spinnaker::GenApi::IsAvailable(intPtr))
244  {
245  if (Spinnaker::GenApi::IsWritable(intPtr))
246  {
247  intPtr->SetValue(intPtr->GetMax());
248  ROS_INFO_STREAM("[SpinnakerCamera]: ("
249  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue() << ") "
250  << property_name << " set to " << intPtr->GetValue() << ".");
251  return true;
252  }
253  else
254  {
255  ROS_WARN_STREAM("[SpinnakerCamera]: ("
256  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
257  << ") Feature " << property_name << " not writable.");
258  }
259  }
260  else
261  {
262  ROS_WARN_STREAM("[SpinnakerCamera]: ("
263  << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode("DeviceID"))->GetValue()
264  << ") Feature " << property_name << " not available.");
265  }
266  return false;
267 }
268 } // namespace spinnaker_camera_driver
269 #endif // SPINNAKER_CAMERA_DRIVER_SET_PROPERTY_H
bool setProperty(Spinnaker::GenApi::INodeMap *node_map, const std::string &property_name, const std::string &entry_name)
Definition: set_property.h:36
#define ROS_WARN(...)
#define ROS_WARN_STREAM(args)
#define ROS_INFO_STREAM(args)
bool setMaxInt(Spinnaker::GenApi::INodeMap *node_map, const std::string &property_name)
Definition: set_property.h:239
#define ROS_ERROR_STREAM(args)


spinnaker_camera_driver
Author(s): Chad Rockey
autogenerated on Sun Feb 14 2021 03:47:26