24 #ifndef HDLCD_CLIENT_DEVICE_ERROR_H 25 #define HDLCD_CLIENT_DEVICE_ERROR_H 34 l_HdlcdClientError.m_SerialPortNbr = a_SerialPortNbr;
35 l_HdlcdClientError.m_ErrorCode = a_ErrorCode;
36 return l_HdlcdClientError;
40 auto l_HdlcdClientError(std::shared_ptr<HdlcdClientError>(
new HdlcdClientError));
41 l_HdlcdClientError->m_eDeserialize = DESERIALIZE_BODY;
42 l_HdlcdClientError->m_BytesRemaining = 5;
43 return l_HdlcdClientError;
48 assert(m_eDeserialize == DESERIALIZE_FULL);
49 return m_SerialPortNbr;
53 assert(m_eDeserialize == DESERIALIZE_FULL);
59 HdlcdClientError(): m_SerialPortNbr(0), m_ErrorCode(0), 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;
70 l_Buffer.emplace_back((m_SerialPortNbr >> 8) & 0xFF);
71 l_Buffer.emplace_back((m_SerialPortNbr >> 0) & 0xFF);
72 l_Buffer.emplace_back((m_ErrorCode >> 8) & 0xFF);
73 l_Buffer.emplace_back((m_ErrorCode >> 0) & 0xFF);
80 switch (m_eDeserialize) {
81 case DESERIALIZE_BODY: {
85 m_SerialPortNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[1])));
86 m_ErrorCode = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[3])));
87 m_eDeserialize = DESERIALIZE_FULL;
90 case DESERIALIZE_ERROR:
91 case DESERIALIZE_FULL:
101 uint16_t m_SerialPortNbr;
102 uint16_t m_ErrorCode;
104 DESERIALIZE_ERROR = 0,
105 DESERIALIZE_BODY = 1,
108 E_DESERIALIZE m_eDeserialize;
111 #endif // HDLCD_CLIENT_DEVICE_ERROR_H
uint16_t GetErrorCode() const
std::vector< unsigned char > m_Buffer
The buffer containing partly received frames or higher-layer payload.
static std::shared_ptr< HdlcdClientError > CreateDeserializedFrame()
static HdlcdClientError Create(uint16_t a_SerialPortNbr, uint16_t a_ErrorCode)
uint16_t GetSerialPortNbr() const