25 #ifndef SPINNAKER_CAMERA_DRIVER_SET_PROPERTY_H 26 #define SPINNAKER_CAMERA_DRIVER_SET_PROPERTY_H 29 #include "Spinnaker.h" 30 #include "SpinGenApi/SpinnakerGenApi.h" 36 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map,
const std::string& property_name,
37 const std::string& entry_name)
49 Spinnaker::GenApi::CEnumerationPtr enumerationPtr = node_map->GetNode(property_name.c_str());
51 if (!Spinnaker::GenApi::IsImplemented(enumerationPtr))
54 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
55 <<
") Enumeration name " << property_name <<
" not " 60 if (Spinnaker::GenApi::IsAvailable(enumerationPtr))
62 if (Spinnaker::GenApi::IsWritable(enumerationPtr))
64 Spinnaker::GenApi::CEnumEntryPtr enumEmtryPtr = enumerationPtr->GetEntryByName(entry_name.c_str());
66 if (Spinnaker::GenApi::IsAvailable(enumEmtryPtr))
68 if (Spinnaker::GenApi::IsReadable(enumEmtryPtr))
70 enumerationPtr->SetIntValue(enumEmtryPtr->GetValue());
73 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
74 <<
") " << property_name <<
" set to " << enumerationPtr->GetCurrentEntry()->GetSymbolic()
82 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
83 <<
") Entry name " << entry_name <<
" not writable.");
89 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
90 <<
") Entry name " << entry_name <<
" not available.");
93 Spinnaker::GenApi::NodeList_t entries;
94 enumerationPtr->GetEntries(entries);
95 for (
auto& entry : entries)
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() <<
")");
107 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
108 <<
") Enumeration " << property_name <<
" not writable.");
114 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
115 <<
") Enumeration " << property_name <<
" not available.");
120 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map,
const std::string& property_name,
const float& value)
122 Spinnaker::GenApi::CFloatPtr floatPtr = node_map->GetNode(property_name.c_str());
124 if (!Spinnaker::GenApi::IsImplemented(floatPtr))
127 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
128 <<
") Feature name " << property_name <<
" not implemented.");
131 if (Spinnaker::GenApi::IsAvailable(floatPtr))
133 if (Spinnaker::GenApi::IsWritable(floatPtr))
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);
142 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue() <<
") " 143 << property_name <<
" set to " << floatPtr->GetValue() <<
".");
149 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
150 <<
") Feature " << property_name <<
" not writable.");
156 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
157 <<
") Feature " << property_name <<
" not available.");
162 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map,
const std::string& property_name,
const bool& value)
164 Spinnaker::GenApi::CBooleanPtr boolPtr = node_map->GetNode(property_name.c_str());
165 if (!Spinnaker::GenApi::IsImplemented(boolPtr))
168 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
169 <<
") Feature name " << property_name <<
" not implemented.");
172 if (Spinnaker::GenApi::IsAvailable(boolPtr))
174 if (Spinnaker::GenApi::IsWritable(boolPtr))
176 boolPtr->SetValue(value);
178 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue() <<
") " 179 << property_name <<
" set to " << boolPtr->GetValue() <<
".");
185 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
186 <<
") Feature " << property_name <<
" not writable.");
192 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
193 <<
") Feature " << property_name <<
" not available.");
198 inline bool setProperty(Spinnaker::GenApi::INodeMap* node_map,
const std::string& property_name,
const int& value)
200 Spinnaker::GenApi::CIntegerPtr intPtr = node_map->GetNode(property_name.c_str());
201 if (!Spinnaker::GenApi::IsImplemented(intPtr))
204 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
205 <<
") Feature name " << property_name <<
" not implemented.");
208 if (Spinnaker::GenApi::IsAvailable(intPtr))
210 if (Spinnaker::GenApi::IsWritable(intPtr))
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);
219 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue() <<
") " 220 << property_name <<
" set to " << intPtr->GetValue() <<
".");
226 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
227 <<
") Feature " << property_name <<
" not writable.");
233 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
234 <<
") Feature " << property_name <<
" not available.");
239 inline bool setMaxInt(Spinnaker::GenApi::INodeMap* node_map,
const std::string& property_name)
241 Spinnaker::GenApi::CIntegerPtr intPtr = node_map->GetNode(property_name.c_str());
243 if (Spinnaker::GenApi::IsAvailable(intPtr))
245 if (Spinnaker::GenApi::IsWritable(intPtr))
247 intPtr->SetValue(intPtr->GetMax());
249 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue() <<
") " 250 << property_name <<
" set to " << intPtr->GetValue() <<
".");
256 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
257 <<
") Feature " << property_name <<
" not writable.");
263 << static_cast<Spinnaker::GenApi::CStringPtr>(node_map->GetNode(
"DeviceID"))->GetValue()
264 <<
") Feature " << property_name <<
" not available.");
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)
#define ROS_WARN_STREAM(args)
#define ROS_INFO_STREAM(args)
bool setMaxInt(Spinnaker::GenApi::INodeMap *node_map, const std::string &property_name)
#define ROS_ERROR_STREAM(args)