24 #ifndef HDLCD_CLIENT_CREATE_H 25 #define HDLCD_CLIENT_CREATE_H 35 l_HdlcdClientCreate.m_RemoteAddress = a_RemoteAddress;
36 l_HdlcdClientCreate.m_TcpPortNbr = a_TcpPortNbr;
37 l_HdlcdClientCreate.m_SerialPortNbr = a_SerialPortNbr;
38 return l_HdlcdClientCreate;
42 auto l_HdlcdClientCreate(std::shared_ptr<HdlcdClientCreate>(
new HdlcdClientCreate));
43 l_HdlcdClientCreate->m_eDeserialize = DESERIALIZE_HEADER;
44 l_HdlcdClientCreate->m_BytesRemaining = 6;
45 return l_HdlcdClientCreate;
50 assert(m_eDeserialize == DESERIALIZE_FULL);
51 return m_RemoteAddress;
55 assert(m_eDeserialize == DESERIALIZE_FULL);
60 assert(m_eDeserialize == DESERIALIZE_FULL);
61 return m_SerialPortNbr;
66 HdlcdClientCreate(): m_TcpPortNbr(0), m_SerialPortNbr(0), m_eDeserialize(DESERIALIZE_FULL) {
73 const std::vector<unsigned char> Serialize()
const {
74 assert(m_eDeserialize == DESERIALIZE_FULL);
75 std::vector<unsigned char> l_Buffer;
77 l_Buffer.emplace_back((m_SerialPortNbr >> 8) & 0xFF);
78 l_Buffer.emplace_back((m_SerialPortNbr >> 0) & 0xFF);
79 l_Buffer.emplace_back((m_TcpPortNbr >> 8) & 0xFF);
80 l_Buffer.emplace_back((m_TcpPortNbr >> 0) & 0xFF);
81 l_Buffer.emplace_back((m_RemoteAddress.size()) & 0xFF);
82 l_Buffer.insert(l_Buffer.end(), m_RemoteAddress.data(), (m_RemoteAddress.data() + m_RemoteAddress.size()));
89 switch (m_eDeserialize) {
90 case DESERIALIZE_HEADER: {
94 m_SerialPortNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[1])));
95 m_TcpPortNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&
m_Buffer[3])));
99 m_eDeserialize = DESERIALIZE_BODY;
101 m_eDeserialize = DESERIALIZE_FULL;
106 case DESERIALIZE_BODY: {
108 m_eDeserialize = DESERIALIZE_FULL;
111 case DESERIALIZE_ERROR:
112 case DESERIALIZE_FULL:
122 std::string m_RemoteAddress;
123 uint16_t m_TcpPortNbr;
124 uint16_t m_SerialPortNbr;
126 DESERIALIZE_ERROR = 0,
127 DESERIALIZE_HEADER = 1,
128 DESERIALIZE_BODY = 2,
131 E_DESERIALIZE m_eDeserialize;
134 #endif // HDLCD_CLIENT_CREATE_H uint16_t GetTcpPortNbr() const
const std::string & GetRemoteAddress() const
std::vector< unsigned char > m_Buffer
The buffer containing partly received frames or higher-layer payload.
static std::shared_ptr< HdlcdClientCreate > CreateDeserializedFrame()
static HdlcdClientCreate Create(const std::string &a_RemoteAddress, uint16_t a_TcpPortNbr, uint16_t a_SerialPortNbr)
size_t m_BytesRemaining
The amount of bytes required to finalize frame assembly during reception.
uint16_t GetSerialPortNbr() const