Deserializes a chunk from a stream by reading the bytes at the current position of the stream.
The current stream position is updated according to the length of the returned chunk.
89 auto header = makeShared<EthernetFragmentPhyHeader>();
90 bool preambleReadSuccessfully = stream.readByteRepeatedly(0x55,
B(
PREAMBLE_BYTES).get() - 1);
91 if (!preambleReadSuccessfully)
92 header->markIncorrect();
93 uint8_t value = stream.readByte();
95 uint8_t value = stream.readByte();
97 header->setPreambleType(
SFD);
99 header->setPreambleType(
SMD_Sx);
100 int smdSxValues[] = { 0xE6, 0x4C, 0x7F, 0xB3 };
101 int smdNumber = std::distance(smdSxValues,
std::find(smdSxValues, smdSxValues + 4, value));
102 header->setSmdNumber(smdNumber);
103 header->setFragmentNumber(0);
107 header->setPreambleType(
SMD_Cx);
108 uint8_t value = stream.readByte();
109 int smdCxValues[] = { 0x61, 0x52, 0x9E, 0x2A };
110 int smdNumber = std::distance(smdCxValues,
std::find(smdCxValues, smdCxValues + 4, value));
111 header->setSmdNumber(smdNumber);
112 int fragmentNumberValues[] = { 0xE6, 0x4C, 0x7F, 0xB3 };
113 int fragmentNumber = std::distance(fragmentNumberValues,
std::find(fragmentNumberValues, fragmentNumberValues + 4, value));
114 header->setFragmentNumber(fragmentNumber);