48 SnetPacket(uint16_t a_SrcSSA = 0xFFFE, uint16_t a_DstSSA = 0xFFFE,
bool a_OnAirARQ =
true): m_SrcSSA(a_SrcSSA), m_DstSSA(a_DstSSA), m_OnAirARQ(a_OnAirARQ) {}
52 void SetSrcSSA(uint16_t a_SrcSSA = 0xFFFE) { m_SrcSSA = a_SrcSSA; }
54 void SetDstSSA(uint16_t a_DstSSA = 0xFFFE) { m_DstSSA = a_DstSSA; }
56 void SetOnAirARQ(
bool a_OnAirARQ =
true) { m_OnAirARQ = a_OnAirARQ; }
60 virtual std::vector<unsigned char>
Serialize()
const {
61 std::vector<unsigned char> l_Buffer;
62 l_Buffer.emplace_back(0x00);
64 l_Buffer.emplace_back(0x10);
66 l_Buffer.emplace_back(0x00);
69 l_Buffer.emplace_back((m_SrcSSA >> 8) & 0xFF);
70 l_Buffer.emplace_back((m_SrcSSA >> 0) & 0xFF);
71 l_Buffer.emplace_back((m_DstSSA >> 8) & 0xFF);
72 l_Buffer.emplace_back((m_DstSSA >> 0) & 0xFF);
74 l_Buffer.emplace_back(0x80);
81 virtual size_t Deserialize(
const std::vector<unsigned char>& a_Buffer) {
82 if (a_Buffer.size() < 6) {
return 0; }
83 if (a_Buffer[0] != 0x00) {
return 0; }
84 m_OnAirARQ = (a_Buffer[1] & 0x10);
85 m_SrcSSA = ((a_Buffer[2] << 8) + a_Buffer[3]);
86 m_DstSSA = ((a_Buffer[4] << 8) + a_Buffer[5]);
88 if (a_Buffer.size() >= 7) {
89 if (a_Buffer[6] == 0x80) {
105 std::stringstream l_Output;
106 l_Output <<
"SrcSSA=0x" << std::hex << std::setw(4) << std::setfill(
'0') << m_SrcSSA
107 <<
", DstSSA=0x" << std::hex << std::setw(4) << std::setfill(
'0') << m_DstSSA
108 <<
", ARQ=" << std::dec << (int)m_OnAirARQ;
109 return l_Output.str();
114 virtual size_t GetSize()
const {
if (m_OnAirARQ) {
return 7; }
else {
return 6; } }
123 #endif // SNET_PACKET_H virtual std::vector< unsigned char > Serialize() const
virtual std::string Dissect() const
void SetDstSSA(uint16_t a_DstSSA=0xFFFE)
uint16_t GetSrcSSA() const
virtual size_t GetSize() const
void SetOnAirARQ(bool a_OnAirARQ=true)
virtual size_t Deserialize(const std::vector< unsigned char > &a_Buffer)
void SetSrcSSA(uint16_t a_SrcSSA=0xFFFE)
SnetPacket(uint16_t a_SrcSSA=0xFFFE, uint16_t a_DstSSA=0xFFFE, bool a_OnAirARQ=true)
uint16_t GetDstSSA() const