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)