22 #include "ns3/uinteger.h"
23 #include "ns3/trace-source-accessor.h"
33 return Seconds (1000.0 / 300000000.0);
39 return MicroSeconds (9);
45 return MicroSeconds (16);
51 return MicroSeconds (2);
62 return MicroSeconds (44);
82 return MicroSeconds (250);
89 return MicroSeconds (76);
98 return blockAckTimeout;
107 return blockAckTimeout;
120 return MicroSeconds (0);
133 return MicroSeconds (0);
141 .AddAttribute (
"CtsTimeout",
"When this timeout expires, the RTS/CTS handshake has failed.",
146 .AddAttribute (
"AckTimeout",
"When this timeout expires, the DATA/ACK handshake has failed.",
151 .AddAttribute (
"BasicBlockAckTimeout",
"When this timeout expires, the BASIC_BLOCK_ACK_REQ/BASIC_BLOCK_ACK handshake has failed.",
156 .AddAttribute (
"CompressedBlockAckTimeout",
"When this timeout expires, the COMPRESSED_BLOCK_ACK_REQ/COMPRESSED_BLOCK_ACK handshake has failed.",
161 .AddAttribute (
"Sifs",
"The value of the SIFS constant.",
166 .AddAttribute (
"EifsNoDifs",
"The value of EIFS-DIFS",
171 .AddAttribute (
"Slot",
"The duration of a Slot.",
176 .AddAttribute (
"Pifs",
"The value of the PIFS constant.",
181 .AddAttribute (
"Rifs",
"The value of the RIFS constant.",
187 .AddAttribute (
"MaxPropagationDelay",
"The maximum propagation delay. Unused for now.",
191 .AddAttribute (
"Ssid",
"The ssid we want to belong to.",
196 .AddTraceSource (
"MacTx",
197 "A packet has been received from higher layers and is being processed in preparation for "
198 "queueing for transmission.",
200 .AddTraceSource (
"MacTxDrop",
201 "A packet has been dropped in the MAC layer before being queued for transmission.",
203 .AddTraceSource (
"MacPromiscRx",
204 "A packet has been received by this device, has been passed up from the physical layer "
205 "and is being forwarded up the local protocol stack. This is a promiscuous trace,",
207 .AddTraceSource (
"MacRx",
208 "A packet has been received by this device, has been passed up from the physical layer "
209 "and is being forwarded up the local protocol stack. This is a non-promiscuous trace,",
211 .AddTraceSource (
"MacRxDrop",
212 "A packet has been dropped in the MAC layer after it has been passed up from the physical "
217 .AddTraceSource (
"Sniffer",
218 "Trace source simulating a non-promiscuous packet sniffer attached to the device",
315 SetPifs (MicroSeconds (16 + 9));
326 SetPifs (MicroSeconds (10 + 20));
338 SetPifs (MicroSeconds (10 + 20));
349 SetPifs (MicroSeconds (32 + 13));
360 SetPifs (MicroSeconds (64 + 21));
389 dcf->SetMinCw ((cwmin + 1) / 4 - 1);
390 dcf->SetMaxCw ((cwmin + 1) / 2 - 1);
394 dcf->SetMinCw ((cwmin + 1) / 2 - 1);
395 dcf->SetMaxCw (cwmin);
399 dcf->SetMinCw (cwmin);
400 dcf->SetMaxCw (cwmax);
404 dcf->SetMinCw (cwmin);
405 dcf->SetMaxCw (cwmax);
409 dcf->SetMinCw (cwmin);
410 dcf->SetMaxCw (cwmax);
virtual void FinishConfigureStandard(enum WifiPhyStandard standard)=0
virtual Time GetPifs(void) const =0
virtual void SetBasicBlockAckTimeout(Time blockAckTimeout)
keep track of time values and allow control of global simulation resolution
virtual Time GetRifs(void) const =0
void Configure80211b(void)
virtual void SetPifs(Time pifs)=0
virtual void SetCompressedBlockAckTimeout(Time blockAckTimeout)
virtual void SetAckTimeout(Time ackTimeout)=0
virtual Time GetCompressedBlockAckTimeout(void) const
static Time GetDefaultMaxPropagationDelay(void)
#define NS_ASSERT(condition)
void ConfigureStandard(enum WifiPhyStandard standard)
TracedCallback< Ptr< const Packet > > m_macRxDropTrace
virtual Time GetAckTimeout(void) const =0
static Time GetDefaultCtsAckDelay(void)
TracedCallback< Ptr< const Packet > > m_macTxDropTrace
void NotifyRxDrop(Ptr< const Packet > packet)
TracedCallback< Ptr< const Packet > > m_macPromiscRxTrace
static Time GetDefaultSifs(void)
virtual void SetSsid(Ssid ssid)=0
#define NS_FATAL_ERROR(msg)
fatal error handling
virtual Ssid GetSsid(void) const =0
hold objects of type ns3::Time
TracedCallback< Ptr< const Packet > > m_macTxTrace
void NotifyTxDrop(Ptr< const Packet > packet)
void ConfigureDcf(Ptr< Dcf > dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac)
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
virtual Time GetSlot(void) const =0
void NotifyPromiscRx(Ptr< const Packet > packet)
void Configure80211n_5Ghz(void)
void Configure80211_10Mhz(void)
void NotifyTx(Ptr< const Packet > packet)
virtual void SetRifs(Time rifs)=0
void Configure80211n_2_4Ghz(void)
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
static Time GetDefaultSlot(void)
virtual void SetEifsNoDifs(Time eifsNoDifs)=0
void Configure80211g(void)
virtual void SetCtsTimeout(Time ctsTimeout)=0
Time GetMaxPropagationDelay(void) const
void NotifyRx(Ptr< const Packet > packet)
static Time GetDefaultBasicBlockAckDelay(void)
static Time GetDefaultCompressedBlockAckDelay(void)
TracedCallback< Ptr< const Packet > > m_macRxTrace
void SetMaxPropagationDelay(Time delay)
void Configure80211a(void)
void Configure80211_5Mhz()
virtual void SetSifs(Time sifs)=0
hold objects of type ns3::Ssid
virtual Time GetSifs(void) const =0
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range. Both limits are inclusive.
static Time GetDefaultCompressedBlockAckTimeout(void)
static Time GetDefaultCtsAckTimeout(void)
Time m_maxPropagationDelay
a base class which provides memory management and object aggregation
static Time GetDefaultEifsNoDifs(void)
static Time GetDefaultRifs(void)
static Time GetDefaultBasicBlockAckTimeout(void)
Time GetMsduLifetime(void) const
virtual Time GetCtsTimeout(void) const =0
a unique identifier for an interface.
static TypeId GetTypeId(void)
TypeId SetParent(TypeId tid)
virtual Time GetBasicBlockAckTimeout(void) const
virtual Time GetEifsNoDifs(void) const =0
virtual void SetSlot(Time slotTime)=0