24 #ifndef GATEWAY_FRAME_DATA_H 25 #define GATEWAY_FRAME_DATA_H 34 l_GatewayFrameData.m_SerialPortNbr = a_SerialPortNbr;
35 l_GatewayFrameData.
m_Buffer = std::move(a_Payload);
36 return l_GatewayFrameData;
40 auto l_GatewayFrameData(std::shared_ptr<GatewayFrameData>(
new GatewayFrameData));
41 l_GatewayFrameData->m_eDeserialize = DESERIALIZE_HEADER;
42 l_GatewayFrameData->m_BytesRemaining = 4;
43 return l_GatewayFrameData;
48 assert(m_eDeserialize == DESERIALIZE_FULL);
49 return m_SerialPortNbr;
53 assert(m_eDeserialize == DESERIALIZE_FULL);
66 const std::vector<unsigned char> Serialize()
const {
67 assert(m_eDeserialize == DESERIALIZE_FULL);
68 std::vector<unsigned char> l_Buffer;
71 uint16_t l_NbrOfBytes = (2 +
m_Buffer.size());
72 l_Buffer.emplace_back((l_NbrOfBytes >> 8) & 0xFF);
73 l_Buffer.emplace_back((l_NbrOfBytes >> 0) & 0xFF);
74 l_Buffer.emplace_back((m_SerialPortNbr >> 8) & 0xFF);
75 l_Buffer.emplace_back((m_SerialPortNbr >> 0) & 0xFF);
83 switch (m_eDeserialize) {
84 case DESERIALIZE_HEADER: {
88 m_SerialPortNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[2])));
92 if (m_BytesRemaining < 2) {
94 m_eDeserialize = DESERIALIZE_ERROR;
97 m_eDeserialize = DESERIALIZE_DATA;
98 m_BytesRemaining -= 2;
99 if (m_BytesRemaining == 0) {
101 m_eDeserialize = DESERIALIZE_FULL;
107 case DESERIALIZE_DATA: {
109 m_eDeserialize = DESERIALIZE_FULL;
112 case DESERIALIZE_ERROR:
113 case DESERIALIZE_FULL:
123 uint16_t m_SerialPortNbr;
125 DESERIALIZE_ERROR = 0,
126 DESERIALIZE_HEADER = 1,
127 DESERIALIZE_DATA = 2,
130 E_DESERIALIZE m_eDeserialize;
133 #endif // GATEWAY_FRAME_DATA_H static GatewayFrameData Create(uint16_t a_SerialPortNbr, const std::vector< unsigned char > &a_Payload)
uint16_t GetSerialPortNbr() const
static std::shared_ptr< GatewayFrameData > CreateDeserializedFrame()
const std::vector< unsigned char > & GetPayload() const
std::vector< unsigned char > m_Buffer
The buffer containing partly received frames or higher-layer payload.
size_t m_BytesRemaining
The amount of bytes required to finalize frame assembly during reception.