39                                        std::shared_ptr<ros::Publisher> 
const& pub)
    40   : camera_name_(name), serial_number_(serial), diagnostics_pub_(pub)
    57 template void DiagnosticsManager::addDiagnostic<int>(
const Spinnaker::GenICam::gcstring name);
    59 template void DiagnosticsManager::addDiagnostic<float>(
const Spinnaker::GenICam::gcstring name);
    62                                        std::pair<int, int> operational, 
int lower_bound, 
int upper_bound)
    69                                        std::pair<float, float> operational, 
float lower_bound, 
float upper_bound)
    78   diagnostic_msgs::KeyValue kv;
    80   kv.value = std::to_string(value);
    82   diagnostic_msgs::DiagnosticStatus diag_status;
    83   diag_status.values.push_back(kv);
    90     diag_status.level = 0;
    91     diag_status.message = 
"OK";
    95     diag_status.level = 1;
    96     diag_status.message = 
"WARNING";
   100     diag_status.level = 2;
   101     diag_status.message = 
"ERROR";
   109   diagnostic_msgs::DiagnosticArray diag_array;
   112   diagnostic_msgs::DiagnosticStatus diag_manufacture_info;
   113   diag_manufacture_info.name = 
"Spinnaker " + 
camera_name_ + 
" Manufacture Info";
   118     Spinnaker::GenApi::CStringPtr string_ptr = 
static_cast<Spinnaker::GenApi::CStringPtr
>(
   121     diagnostic_msgs::KeyValue kv;
   123     kv.value = string_ptr->GetValue(
true);
   124     diag_manufacture_info.values.push_back(kv);
   127   diag_array.status.push_back(diag_manufacture_info);
   132     Spinnaker::GenApi::CFloatPtr float_ptr =
   133         static_cast<Spinnaker::GenApi::CFloatPtr
>(spinnaker->
readProperty(
param.parameter_name));
   135     float float_value = float_ptr->GetValue(
true);
   138     diag_array.status.push_back(diag_status);
   144     Spinnaker::GenApi::CIntegerPtr integer_ptr =
   145         static_cast<Spinnaker::GenApi::CIntegerPtr
>(spinnaker->
readProperty(
param.parameter_name));
   147     int int_value = integer_ptr->GetValue(
true);
   149     diag_array.status.push_back(diag_status);
 
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val)
Spinnaker::GenICam::gcstring parameter_name
diagnostic_msgs::DiagnosticStatus getDiagStatus(const diagnostic_params< T > ¶m, const T value)
Function to push the diagnostic to the publisher. 
std::vector< diagnostic_params< int > > integer_params_
void addDiagnostic(const Spinnaker::GenICam::gcstring name)
Add a diagnostic with name only (no warning checks) 
std::shared_ptr< ros::Publisher > diagnostics_pub_
DiagnosticsManager(const std::string name, const std::string serial, std::shared_ptr< ros::Publisher > const &pub)
Class to support ROS Diagnostics Aggregator for Spinnaker Camera. 
std::vector< diagnostic_params< float > > float_params_
void processDiagnostics(SpinnakerCamera *spinnaker)
Read the property of given parameters and push to aggregator. 
Spinnaker::GenApi::CNodePtr readProperty(const Spinnaker::GenICam::gcstring property_name)
std::string serial_number_
std::pair< T, T > operational_range
const std::vector< std::string > manufacturer_params_