Advertisement
Guest User

Untitled

a guest
Apr 21st, 2021
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. std::vector<std::uint8_t> HDLC::ExtractSingleFrameBytes(DataStructures::TSDeque<std::uint8_t>& buffer)
  2. {
  3.     std::vector<std::uint8_t> frame;
  4.  
  5.     std::uint8_t frameBeginning = buffer.pop_front();
  6.     while (frameBeginning != START_FLAG)
  7.     {
  8.         frameBeginning = buffer.pop_front();
  9.     }
  10.     frame.push_back(frameBeginning);
  11.  
  12.     std::uint8_t byte = buffer.pop_front();
  13.     while (byte != END_FLAG)
  14.     {
  15.         frame.push_back(byte);
  16.         byte = buffer.pop_front();
  17.     }
  18.  
  19.     // Add last frame byte. Byte should be equal HDLC::END_FLAG.
  20.     frame.push_back(byte);
  21.  
  22.     // TODO: Validate HDLC Wrapper
  23.     return frame;
  24. }
  25.  
  26. void Serial::Read()
  27. {
  28.     asio::async_read(m_SerialPort, asio::buffer(m_BytesChunk.data(), m_BytesChunk.size()),
  29.     [this](asio::error_code errorCode, std::size_t)
  30.     {
  31.         if(errorCode)
  32.         {
  33.             // TODO: Report and throw error.
  34.             printf("Error code: %d\n", errorCode);
  35.         }
  36.         else
  37.         {
  38.             m_ReadBuffer.insert(m_BytesChunk.begin(), m_BytesChunk.end());
  39.  
  40.             Read();
  41.         }
  42.     });
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement