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_