Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- std::vector<std::uint8_t> HDLC::ExtractSingleFrameBytes(DataStructures::TSDeque<std::uint8_t>& buffer)
- {
- std::vector<std::uint8_t> frame;
- std::uint8_t frameBeginning = buffer.pop_front();
- while (frameBeginning != START_FLAG)
- {
- frameBeginning = buffer.pop_front();
- }
- frame.push_back(frameBeginning);
- std::uint8_t byte = buffer.pop_front();
- while (byte != END_FLAG)
- {
- frame.push_back(byte);
- byte = buffer.pop_front();
- }
- // Add last frame byte. Byte should be equal HDLC::END_FLAG.
- frame.push_back(byte);
- // TODO: Validate HDLC Wrapper
- return frame;
- }
- void Serial::Read()
- {
- asio::async_read(m_SerialPort, asio::buffer(m_BytesChunk.data(), m_BytesChunk.size()),
- [this](asio::error_code errorCode, std::size_t)
- {
- if(errorCode)
- {
- // TODO: Report and throw error.
- printf("Error code: %d\n", errorCode);
- }
- else
- {
- m_ReadBuffer.insert(m_BytesChunk.begin(), m_BytesChunk.end());
- Read();
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement