3 #include <diagnostic_msgs/msg/diagnostic_array.hpp> 4 #include <boost/spirit/include/qi.hpp> 6 #include "fmt/format.h" 18 virtual void parseMessageImpl(
const diagnostic_msgs::msg::DiagnosticArray& msg,
double& timestamp)
override 24 for (
const auto& status : msg.status)
26 for (
const auto& kv : status.values)
28 const char* start_ptr = kv.value.data();
31 if (status.hardware_id.empty())
40 bool parsed = boost::spirit::qi::parse(start_ptr, start_ptr + kv.value.size(),
41 boost::spirit::qi::double_, val);
45 series.pushBack({ timestamp, val });
49 series.pushBack( { timestamp, kv.value} );
DiagnosticMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
PJ::StringSeries & getStringSeries(const std::string &key)
PJ::PlotData & getSeries(const std::string &key)
HeaderMsgParser _header_parser
FMT_INLINE std::basic_string< Char > format(const S &format_str, Args &&... args)
virtual void parseMessageImpl(const diagnostic_msgs::msg::DiagnosticArray &msg, double ×tamp) override