.. _program_listing_file_include_create_serial_stream.h: Program Listing for File serial_stream.h ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/create/serial_stream.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // 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 #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, const uint8_t& header = create::util::STREAM_HEADER, bool install_signal_handler = true); virtual ~SerialStream() = default; }; } // namespace create #endif // CREATE_SERIAL_H