Program Listing for File dataload_ros.h

Return to documentation for file (src/DataLoadROS/dataload_ros.h)

#ifndef DATALOAD_ROS_H
#define DATALOAD_ROS_H

#include <QObject>
#include <QtPlugin>

#include <ros/ros.h>
#include <rosbag/bag.h>

#include <PlotJuggler/dataloader_base.h>
#include "dialog_select_ros_topics.h"
#include "ros_parsers/ros1_parser.h"
#include "parser_configuration.h"

class DataLoadROS : public PJ::DataLoader
{
  Q_OBJECT
  Q_PLUGIN_METADATA(IID "facontidavide.PlotJuggler3.ROSDataLoader")
  Q_INTERFACES(PJ::DataLoader)

public:
  DataLoadROS();

  virtual ~DataLoadROS() override;

  virtual const std::vector<const char*>& compatibleFileExtensions() const override;

  virtual bool readDataFromFile(PJ::FileLoadInfo* fileload_info,
                                PJ::PlotDataMapRef& destination) override;

  virtual const char* name() const override
  {
    return "DataLoad ROS bags";
  }

  virtual bool xmlSaveState(QDomDocument& doc, QDomElement& parent_element) const override;

  virtual bool xmlLoadState(const QDomElement& parent_element) override;

protected:

  std::shared_ptr<rosbag::Bag> _bag;

private:
  std::vector<const char*> _extensions;

  PJ::RosParserConfig _config;

  std::vector<std::pair<QString, QString>> getAllTopics(const rosbag::Bag* bag, PJ::CompositeParser &parser);

  PJ::PlotDataMapRef* _plot_map = nullptr;
};

#endif  // DATALOAD_CSV_H