This class is the subclass of MacLow to provide support for MAC extension (1) allows higher layer control data rate and tx power level. More...
#include "wave-mac-low.h"
Public Member Functions | |
WaveMacLow () | |
virtual | ~WaveMacLow () |
void | SetWaveNetDevice (Ptr< WaveNetDevice > device) |
virtual void | StartTransmission (Ptr< const Packet > packet, const WifiMacHeader *hdr, MacLowTransmissionParameters parameters, Ptr< DcaTxop > dca) |
![]() | |
MacLow () | |
virtual | ~MacLow () |
Ptr< Packet > | AggregateToAmpdu (Ptr< const Packet > packet, const WifiMacHeader hdr) |
Time | CalculateOverallTxTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶ms, uint32_t fragmentSize=0) const |
Time | CalculateTransmissionTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶meters) const |
void | CreateBlockAckAgreement (const MgtAddBaResponseHeader *respHdr, Mac48Address originator, uint16_t startingSeq) |
void | DeaggregateAmpduAndReceive (Ptr< Packet > aggregatedPacket, double rxSnr, WifiTxVector txVector) |
void | DestroyBlockAckAgreement (Mac48Address originator, uint8_t tid) |
void | FlushAggregateQueue (uint8_t tid) |
This function is called to flush the aggregate queue, which is used for A-MPDU. More... | |
Time | GetAckTimeout (void) const |
Return ACK timeout of this MacLow. More... | |
Mac48Address | GetAddress (void) const |
Return the MAC address of this MacLow. More... | |
Time | GetBasicBlockAckTimeout () const |
Return Basic Block ACK timeout of this MacLow. More... | |
Mac48Address | GetBssid (void) const |
Return the Basic Service Set Identification. More... | |
Time | GetCompressedBlockAckTimeout () const |
Return Compressed Block ACK timeout of this MacLow. More... | |
Time | GetCtsTimeout (void) const |
Return CTS timeout of this MacLow. More... | |
bool | GetCtsToSelfSupported () const |
Return whether CTS-to-self capability is supported. More... | |
Ptr< WifiPhy > | GetPhy (void) const |
Time | GetPifs (void) const |
Return PCF Interframe Space (PIFS) of this MacLow. More... | |
Time | GetRifs (void) const |
Return Reduced Interframe Space (RIFS) of this MacLow. More... | |
Time | GetSifs (void) const |
Return Short Interframe Space (SIFS) of this MacLow. More... | |
Time | GetSlotTime (void) const |
Return slot duration of this MacLow. More... | |
bool | IsPromisc (void) const |
Check if MacLow is operating in promiscuous mode. More... | |
void | NotifyOffNow (void) |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has been put into off mode. More... | |
void | NotifySleepNow (void) |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has been put into sleep mode. More... | |
void | NotifySwitchingStartNow (Time duration) |
void | ReceiveError (Ptr< Packet > packet, double rxSnr) |
void | ReceiveOk (Ptr< Packet > packet, double rxSnr, WifiTxVector txVector, bool ampduSubframe) |
void | RegisterDcf (Ptr< DcfManager > dcf) |
void | RegisterEdcaForAc (AcIndex ac, Ptr< EdcaTxopN > edca) |
void | ResetPhy (void) |
Remove WifiPhy associated with this MacLow. More... | |
void | SetAckTimeout (Time ackTimeout) |
Set ACK timeout of this MacLow. More... | |
void | SetAddress (Mac48Address ad) |
Set MAC address of this MacLow. More... | |
void | SetBasicBlockAckTimeout (Time blockAckTimeout) |
Set Basic Block ACK timeout of this MacLow. More... | |
void | SetBssid (Mac48Address ad) |
Set the Basic Service Set Identification. More... | |
void | SetCompressedBlockAckTimeout (Time blockAckTimeout) |
Set Compressed Block ACK timeout of this MacLow. More... | |
void | SetCtsTimeout (Time ctsTimeout) |
Set CTS timeout of this MacLow. More... | |
void | SetCtsToSelfSupported (bool enable) |
Enable or disable CTS-to-self capability. More... | |
void | SetPhy (const Ptr< WifiPhy > phy) |
Set up WifiPhy associated with this MacLow. More... | |
void | SetPifs (Time pifs) |
Set PCF Interframe Space (PIFS) of this MacLow. More... | |
void | SetPromisc (void) |
Enable promiscuous mode. More... | |
void | SetRifs (Time rifs) |
Set Reduced Interframe Space (RIFS) of this MacLow. More... | |
void | SetRxCallback (Callback< void, Ptr< Packet >, const WifiMacHeader * > callback) |
void | SetSifs (Time sifs) |
Set Short Interframe Space (SIFS) of this MacLow. More... | |
void | SetSlotTime (Time slotTime) |
Set slot duration of this MacLow. More... | |
void | SetWifiRemoteStationManager (const Ptr< WifiRemoteStationManager > manager) |
Set up WifiRemoteStationManager associated with this MacLow. More... | |
bool | StopMpduAggregation (Ptr< const Packet > peekedPacket, WifiMacHeader peekedHdr, Ptr< Packet > aggregatedPacket, uint16_t size) const |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized (void) const |
Check if the object has been initialized. More... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Member Functions | |
virtual WifiTxVector | GetDataTxVector (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return a TXVECTOR for the DATA frame given the destination. More... | |
Private Attributes | |
Ptr< ChannelCoordinator > | m_coordinator |
the channel coordinator More... | |
Ptr< ChannelScheduler > | m_scheduler |
the channel scheduler More... | |
Additional Inherited Members | |
![]() | |
typedef Callback< void, Ptr< Packet >, const WifiMacHeader * > | MacLowRxCallback |
typedef for a callback for MacLowRx More... | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize (void) |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
This class is the subclass of MacLow to provide support for MAC extension (1) allows higher layer control data rate and tx power level.
Introspection did not find any typical Config paths.
If higher layer does not set, they will be determined by WifiRemoteStationManager of MAC layer; If higher layer sets tx parameters in non-adaptable mode, the data rate and tx power level will be used for transmission;. If higher layer sets tx parameters in adaptable mode, the data rate will be lower bound for the actual data rate, and the power level will be upper bound for the actual transmit power. (2) implements the feature described in Annex C : avoid transmission at scheduled guard intervals However, the feature is extended further here that the required transmit time is determined by MAC layer itself rather than PHY layer, which contains RTS/CTS, DATA and ACK time.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 1064 bytes (on a 64-bit architecture).
Definition at line 45 of file wave-mac-low.h.
ns3::WaveMacLow::WaveMacLow | ( | ) |
Definition at line 42 of file wave-mac-low.cc.
References NS_LOG_FUNCTION.
|
virtual |
Definition at line 46 of file wave-mac-low.cc.
References NS_LOG_FUNCTION.
|
privatevirtual |
Return a TXVECTOR for the DATA frame given the destination.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
packet | the packet being asked for TXVECTOR |
hdr | the WifiMacHeader |
Reimplemented from ns3::MacLow.
Definition at line 60 of file wave-mac-low.cc.
References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiMode::GetDataRate(), ns3::MacLow::GetDataTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiTxVector::GetTxPowerLevel(), ns3::HigherLayerTxVectorTag::GetTxVector(), ns3::HigherLayerTxVectorTag::IsAdaptable(), min, NS_LOG_FUNCTION, ns3::WifiTxVector::SetChannelWidth(), ns3::WifiTxVector::SetMode(), ns3::WifiTxVector::SetPreambleType(), and ns3::WifiTxVector::SetTxPowerLevel().
|
static |
Get the type ID.
Definition at line 33 of file wave-mac-low.cc.
References ns3::TypeId::SetParent().
void ns3::WaveMacLow::SetWaveNetDevice | ( | Ptr< WaveNetDevice > | device | ) |
device | WaveNetDevice associated with WaveMacLow |
Definition at line 52 of file wave-mac-low.cc.
References ns3::WaveNetDevice::GetChannelCoordinator(), ns3::WaveNetDevice::GetChannelScheduler(), m_coordinator, m_scheduler, and NS_ASSERT.
|
virtual |
packet | packet to send |
hdr | 802.11 header for packet to send |
parameters | the transmission parameters to use for this packet. |
dca | pointer to the calling DcaTxop. |
Start the transmission of the input packet and notify the listener of transmission events.
Reimplemented from ns3::MacLow.
Definition at line 106 of file wave-mac-low.cc.
References ns3::MacLow::CalculateTransmissionTime(), ns3::WifiPhy::GetChannelNumber(), ns3::Time::GetMilliSeconds(), ns3::MacLow::GetPhy(), m_coordinator, m_scheduler, ns3::ChannelCoordinator::NeedTimeToGuardInterval(), NS_LOG_DEBUG, NS_LOG_FUNCTION, third::phy, and ns3::MacLow::StartTransmission().
|
private |
the channel coordinator
Definition at line 87 of file wave-mac-low.h.
Referenced by SetWaveNetDevice(), and StartTransmission().
|
private |
the channel scheduler
Definition at line 86 of file wave-mac-low.h.
Referenced by SetWaveNetDevice(), and StartTransmission().