Program Listing for File serial_stream.h
↰ Return to documentation for file (include/create/serial_stream.h
)
// Based on example from:
// https://github.com/labust/labust-ros-pkg/wiki/Create-a-Serial-Port-application
#ifndef CREATE_SERIAL_STREAM_H
#define CREATE_SERIAL_STREAM_H
#include <memory>
#include "create/data.h"
#include "create/types.h"
#include "create/util.h"
#include "create/serial.h"
namespace create {
class SerialStream : public Serial {
private:
enum ReadState {
READ_HEADER,
READ_NBYTES,
READ_PACKET_ID,
READ_PACKET_BYTES,
READ_CHECKSUM
};
// State machine variables
ReadState readState;
uint8_t headerByte;
uint8_t packetID;
uint8_t expectedNumBytes;
uint16_t packetBytes;
uint8_t numBytesRead;
uint32_t byteSum;
uint8_t numDataBytesRead;
uint8_t expectedNumDataBytes;
protected:
bool startSensorStream();
void processByte(uint8_t byteRead);
public:
SerialStream(
std::shared_ptr<Data> data,
const uint8_t& header = create::util::STREAM_HEADER,
bool install_signal_handler = true);
virtual ~SerialStream() = default;
};
} // namespace create
#endif // CREATE_SERIAL_H