22 #include "mgt-headers.h"
23 #include "ns3/simulator.h"
24 #include "ns3/assert.h"
32 NS_OBJECT_ENSURE_REGISTERED (MgtProbeRequestHeader);
34 MgtProbeRequestHeader::~MgtProbeRequestHeader ()
39 MgtProbeRequestHeader::SetSsid (Ssid ssid)
44 MgtProbeRequestHeader::GetSsid (
void)
const
49 MgtProbeRequestHeader::SetSupportedRates (SupportedRates rates)
55 MgtProbeRequestHeader::GetSupportedRates (
void)
const
65 size += m_rates.extended.GetSerializedSize ();
69 MgtProbeRequestHeader::GetTypeId (
void)
71 static TypeId tid =
TypeId (
"ns3::MgtProbeRequestHeader")
73 .AddConstructor<MgtProbeRequestHeader> ()
85 os <<
"ssid=" << m_ssid <<
", "
86 <<
"rates=" << m_rates;
94 i = m_rates.extended.Serialize (i);
113 MgtProbeResponseHeader::MgtProbeResponseHeader ()
116 MgtProbeResponseHeader::~MgtProbeResponseHeader ()
120 MgtProbeResponseHeader::GetTimestamp ()
125 MgtProbeResponseHeader::GetSsid (
void)
const
130 MgtProbeResponseHeader::GetBeaconIntervalUs (
void)
const
132 return m_beaconInterval;
135 MgtProbeResponseHeader::GetSupportedRates (
void)
const
141 MgtProbeResponseHeader::SetSsid (Ssid ssid)
146 MgtProbeResponseHeader::SetBeaconIntervalUs (uint64_t us)
148 m_beaconInterval = us;
151 MgtProbeResponseHeader::SetSupportedRates (SupportedRates rates)
156 MgtProbeResponseHeader::GetTypeId (
void)
158 static TypeId tid = TypeId (
"ns3::MgtProbeResponseHeader")
159 .SetParent<Header> ()
160 .AddConstructor<MgtProbeResponseHeader> ()
175 size += m_capability.GetSerializedSize ();
179 size += m_rates.extended.GetSerializedSize ();
186 os <<
"ssid=" << m_ssid <<
", "
187 <<
"rates=" << m_rates;
205 i = m_capability.Serialize (i);
209 i = m_rates.extended.Serialize (i);
217 m_beaconInterval *= 1024;
218 i = m_capability.Deserialize (i);
232 MgtAssocRequestHeader::MgtAssocRequestHeader ()
233 : m_listenInterval (0)
236 MgtAssocRequestHeader::~MgtAssocRequestHeader ()
241 MgtAssocRequestHeader::SetSsid (Ssid ssid)
246 MgtAssocRequestHeader::SetSupportedRates (SupportedRates rates)
251 MgtAssocRequestHeader::SetListenInterval (uint16_t interval)
253 m_listenInterval = interval;
256 MgtAssocRequestHeader::GetSsid (
void)
const
261 MgtAssocRequestHeader::GetSupportedRates (
void)
const
266 MgtAssocRequestHeader::GetListenInterval (
void)
const
268 return m_listenInterval;
272 MgtAssocRequestHeader::GetTypeId (
void)
274 static TypeId tid = TypeId (
"ns3::MgtAssocRequestHeader")
275 .SetParent<Header> ()
276 .AddConstructor<MgtAssocRequestHeader> ()
289 size += m_capability.GetSerializedSize ();
293 size += m_rates.extended.GetSerializedSize ();
299 os <<
"ssid=" << m_ssid <<
", "
300 <<
"rates=" << m_rates;
306 i = m_capability.Serialize (i);
310 i = m_rates.extended.Serialize (i);
316 i = m_capability.Deserialize (i);
330 MgtAssocResponseHeader::MgtAssocResponseHeader ()
334 MgtAssocResponseHeader::~MgtAssocResponseHeader ()
339 MgtAssocResponseHeader::GetStatusCode (
void)
344 MgtAssocResponseHeader::GetSupportedRates (
void)
349 MgtAssocResponseHeader::SetStatusCode (StatusCode code)
354 MgtAssocResponseHeader::SetSupportedRates (SupportedRates rates)
360 MgtAssocResponseHeader::GetTypeId (
void)
362 static TypeId tid = TypeId (
"ns3::MgtAssocResponseHeader")
363 .SetParent<Header> ()
364 .AddConstructor<MgtAssocResponseHeader> ()
377 size += m_capability.GetSerializedSize ();
378 size += m_code.GetSerializedSize ();
381 size += m_rates.extended.GetSerializedSize ();
388 os <<
"status code=" << m_code <<
", "
389 <<
"rates=" << m_rates;
395 i = m_capability.Serialize (i);
396 i = m_code.Serialize (i);
399 i = m_rates.extended.Serialize (i);
405 i = m_capability.Deserialize (i);
406 i = m_code.Deserialize (i);
415 WifiActionHeader::WifiActionHeader ()
418 WifiActionHeader::~WifiActionHeader ()
422 WifiActionHeader::SetAction (WifiActionHeader::CategoryValue type,
423 WifiActionHeader::ActionValue action)
431 m_actionValue = action.blockAck;
434 case MESH_PEERING_MGT:
436 m_actionValue = action.peerLink;
439 case MESH_PATH_SELECTION:
441 m_actionValue = action.pathSelection;
444 case MESH_LINK_METRIC:
445 case MESH_INTERWORKING:
446 case MESH_RESOURCE_COORDINATION:
447 case MESH_PROXY_FORWARDING:
451 WifiActionHeader::CategoryValue
452 WifiActionHeader::GetCategory ()
458 case MESH_PEERING_MGT:
459 return MESH_PEERING_MGT;
460 case MESH_LINK_METRIC:
461 return MESH_LINK_METRIC;
462 case MESH_PATH_SELECTION:
463 return MESH_PATH_SELECTION;
464 case MESH_INTERWORKING:
465 return MESH_INTERWORKING;
466 case MESH_RESOURCE_COORDINATION:
467 return MESH_RESOURCE_COORDINATION;
468 case MESH_PROXY_FORWARDING:
469 return MESH_PROXY_FORWARDING;
472 return MESH_PEERING_MGT;
475 WifiActionHeader::ActionValue
476 WifiActionHeader::GetAction ()
479 retval.peerLink = PEER_LINK_OPEN;
483 switch (m_actionValue)
485 case BLOCK_ACK_ADDBA_REQUEST:
486 retval.blockAck = BLOCK_ACK_ADDBA_REQUEST;
488 case BLOCK_ACK_ADDBA_RESPONSE:
489 retval.blockAck = BLOCK_ACK_ADDBA_RESPONSE;
491 case BLOCK_ACK_DELBA:
492 retval.blockAck = BLOCK_ACK_DELBA;
495 case MESH_PEERING_MGT:
496 switch (m_actionValue)
499 retval.peerLink = PEER_LINK_OPEN;
501 case PEER_LINK_CONFIRM:
502 retval.peerLink = PEER_LINK_CONFIRM;
504 case PEER_LINK_CLOSE:
505 retval.peerLink = PEER_LINK_CLOSE;
509 retval.peerLink = PEER_LINK_OPEN;
512 case MESH_PATH_SELECTION:
513 switch (m_actionValue)
516 retval.pathSelection = PATH_SELECTION;
520 retval.peerLink = PEER_LINK_OPEN;
523 case MESH_LINK_METRIC:
525 case MESH_INTERWORKING:
527 case MESH_RESOURCE_COORDINATION:
531 retval.peerLink = PEER_LINK_OPEN;
536 WifiActionHeader::GetTypeId ()
538 static TypeId tid = TypeId (
"ns3::WifiActionHeader")
539 .SetParent<Header> ()
540 .AddConstructor<WifiActionHeader> ();
568 m_actionValue = i.
ReadU8 ();
578 MgtAddBaRequestHeader::MgtAddBaRequestHeader ()
586 MgtAddBaRequestHeader::GetTypeId (
void)
588 static TypeId tid = TypeId (
"ns3::MgtAddBaRequestHeader")
589 .SetParent<Header> ()
590 .AddConstructor<MgtAddBaRequestHeader> ();
630 m_dialogToken = i.
ReadU8 ();
638 MgtAddBaRequestHeader::SetDelayedBlockAck ()
644 MgtAddBaRequestHeader::SetImmediateBlockAck ()
650 MgtAddBaRequestHeader::SetTid (uint8_t tid)
657 MgtAddBaRequestHeader::SetTimeout (uint16_t timeout)
659 m_timeoutValue = timeout;
663 MgtAddBaRequestHeader::SetBufferSize (uint16_t size)
669 MgtAddBaRequestHeader::SetStartingSequence (uint16_t seq)
675 MgtAddBaRequestHeader::SetAmsduSupport (
bool supported)
677 m_amsduSupport = supported;
681 MgtAddBaRequestHeader::GetTid (
void)
const
687 MgtAddBaRequestHeader::IsImmediateBlockAck (
void)
const
689 return (m_policy == 1) ?
true :
false;
693 MgtAddBaRequestHeader::GetTimeout (
void)
const
695 return m_timeoutValue;
699 MgtAddBaRequestHeader::GetBufferSize (
void)
const
705 MgtAddBaRequestHeader::IsAmsduSupported (
void)
const
707 return (m_amsduSupport == 1) ?
true :
false;
711 MgtAddBaRequestHeader::GetStartingSequence (
void)
const
713 return m_startingSeq;
717 MgtAddBaRequestHeader::GetStartingSequenceControl (
void)
const
719 return (m_startingSeq << 4) & 0xfff0;
723 MgtAddBaRequestHeader::SetStartingSequenceControl (uint16_t seqControl)
725 m_startingSeq = (seqControl >> 4) & 0x0fff;
729 MgtAddBaRequestHeader::GetParameterSet (
void)
const
732 res |= m_amsduSupport;
733 res |= m_policy << 1;
735 res |= m_bufferSize << 6;
740 MgtAddBaRequestHeader::SetParameterSet (uint16_t params)
742 m_amsduSupport = (params) & 0x01;
743 m_policy = (params >> 1) & 0x01;
744 m_tid = (params >> 2) & 0x0f;
745 m_bufferSize = (params >> 6) & 0x03ff;
752 NS_OBJECT_ENSURE_REGISTERED (MgtAddBaResponseHeader);
754 MgtAddBaResponseHeader::MgtAddBaResponseHeader ()
762 MgtAddBaResponseHeader::GetTypeId ()
764 static TypeId tid = TypeId (
"ns3::MgtAddBaResponseHeader")
765 .SetParent<Header> ()
766 .AddConstructor<MgtAddBaResponseHeader> ()
780 os <<
"status code=" << m_code;
788 size += m_code.GetSerializedSize ();
799 i = m_code.Serialize (i);
808 m_dialogToken = i.
ReadU8 ();
809 i = m_code.Deserialize (i);
816 MgtAddBaResponseHeader::SetDelayedBlockAck ()
822 MgtAddBaResponseHeader::SetImmediateBlockAck ()
828 MgtAddBaResponseHeader::SetTid (uint8_t tid)
835 MgtAddBaResponseHeader::SetTimeout (uint16_t timeout)
837 m_timeoutValue = timeout;
841 MgtAddBaResponseHeader::SetBufferSize (uint16_t size)
847 MgtAddBaResponseHeader::SetStatusCode (StatusCode code)
853 MgtAddBaResponseHeader::SetAmsduSupport (
bool supported)
855 m_amsduSupport = supported;
859 MgtAddBaResponseHeader::GetStatusCode (
void)
const
865 MgtAddBaResponseHeader::GetTid (
void)
const
871 MgtAddBaResponseHeader::IsImmediateBlockAck (
void)
const
873 return (m_policy == 1) ?
true :
false;
877 MgtAddBaResponseHeader::GetTimeout (
void)
const
879 return m_timeoutValue;
883 MgtAddBaResponseHeader::GetBufferSize (
void)
const
889 MgtAddBaResponseHeader::IsAmsduSupported (
void)
const
891 return (m_amsduSupport == 1) ?
true :
false;
895 MgtAddBaResponseHeader::GetParameterSet (
void)
const
898 res |= m_amsduSupport;
899 res |= m_policy << 1;
901 res |= m_bufferSize << 6;
906 MgtAddBaResponseHeader::SetParameterSet (uint16_t params)
908 m_amsduSupport = (params) & 0x01;
909 m_policy = (params >> 1) & 0x01;
910 m_tid = (params >> 2) & 0x0f;
911 m_bufferSize = (params >> 6) & 0x03ff;
918 NS_OBJECT_ENSURE_REGISTERED (MgtDelBaHeader);
920 MgtDelBaHeader::MgtDelBaHeader ()
926 MgtDelBaHeader::GetTypeId (
void)
928 static TypeId tid = TypeId (
"ns3::MgtDelBaHeader")
929 .SetParent<Header> ()
930 .AddConstructor<MgtDelBaHeader> ()
973 MgtDelBaHeader::IsByOriginator (
void)
const
975 return (m_initiator == 1) ?
true :
false;
979 MgtDelBaHeader::GetTid (
void)
const
982 uint8_t tid =
static_cast<uint8_t
> (m_tid);
987 MgtDelBaHeader::SetByOriginator (
void)
993 MgtDelBaHeader::SetByRecipient (
void)
999 MgtDelBaHeader::SetTid (uint8_t tid)
1002 m_tid =
static_cast<uint16_t
> (tid);
1006 MgtDelBaHeader::GetParameterSet (
void)
const
1009 res |= m_initiator << 11;
1015 MgtDelBaHeader::SetParameterSet (uint16_t params)
1017 m_initiator = (params >> 11) & 0x01;
1018 m_tid = (params >> 12) & 0x0f;
#define NS_ASSERT(condition)
uint32_t GetDistanceFrom(Iterator const &o) const
#define NS_FATAL_ERROR(msg)
fatal error handling
iterator in a Buffer instance
void WriteHtolsbU16(uint16_t data)
void WriteU8(uint8_t data)
void WriteHtolsbU64(uint64_t data)
uint16_t ReadLsbtohU16(void)
uint64_t ReadLsbtohU64(void)
a unique identifier for an interface.
TypeId SetParent(TypeId tid)