Program Listing for File serial_query.h

Return to documentation for file (/tmp/ws/src/libcreate/include/create/serial_query.h)

// Based on example from:
//   https://github.com/labust/labust-ros-pkg/wiki/Create-a-Serial-Port-application

#ifndef CREATE_SERIAL_QUERY_H
#define CREATE_SERIAL_QUERY_H

#include <memory>

#include <boost/asio.hpp>

#include "create/data.h"
#include "create/types.h"
#include "create/util.h"
#include "create/serial.h"

namespace create {
  class SerialQuery : public Serial {

    private:
      boost::asio::deadline_timer streamRecoveryTimer;
      uint8_t packetID;
      int8_t packetByte;
      uint16_t packetData;
      const uint8_t maxPacketID;

      bool started;

      void requestSensorData();
      void restartSensorStream(const boost::system::error_code& err);

      void flushInput();

    protected:
      bool startSensorStream();
      void processByte(uint8_t byteRead);

    public:
      SerialQuery(std::shared_ptr<Data> data, bool install_signal_handler = true);
      virtual ~SerialQuery() = default;
  };
}  // namespace create

#endif // CREATE_SERIAL_H