00001 00027 #ifndef _DIAGNOSTIC_PARSER_HPP_ 00028 #define _DIAGNOSTIC_PARSER_HPP_ 00029 00030 #include <diagnostic_updater/DiagnosticStatusWrapper.h> 00031 #include <diagnostic_msgs/DiagnosticArray.h> 00032 #include <diagnostic_msgs/DiagnosticStatus.h> 00033 #include <boost/ptr_container/ptr_vector.hpp> 00034 #include <boost/ptr_container/ptr_map.hpp> 00035 #include <boost/variant.hpp> 00036 #include <sstream> 00037 #include <ros/ros.h> 00038 #include <self_test/self_test.h> 00039 00040 #include "sr_self_test/diagnostics_parser/diagnostics_specific.hpp" 00041 00042 namespace shadow_robot 00043 { 00044 class DiagnosticParser 00045 { 00046 public: 00047 DiagnosticParser(self_test::TestRunner* test_runner); 00048 ~DiagnosticParser() 00049 {}; 00050 00051 private: 00052 ros::NodeHandle nh_; 00053 00055 self_test::TestRunner* test_runner_; 00056 00058 ros::Subscriber diag_sub_; 00059 00061 void run_tests_(); 00062 00067 void diagnostics_agg_cb_(const diagnostic_msgs::DiagnosticArray::ConstPtr& msg); 00068 00069 boost::ptr_vector<BaseDiagnostics> diagnostics_; 00070 00071 typedef boost::ptr_map<std::string, BaseDiagnostics> DiagnosticsMap; 00072 DiagnosticsMap all_diagnostics_; 00073 }; 00074 } 00075 00076 /* For the emacs weenies in the crowd. 00077 Local Variables: 00078 c-basic-offset: 2 00079 End: 00080 */ 00081 00082 #endif /* _DIAGNOSTIC_PARSER_HPP_ */