control how a packet is transmitted. More...
#include <mac-low.h>
Public Member Functions | |
MacLowTransmissionParameters () | |
void | DisableAck (void) |
Do not wait for Ack after data transmission. More... | |
void | DisableNextData (void) |
Do not attempt to send data burst after current transmission. More... | |
void | DisableOverrideDurationId (void) |
Do not force the duration/id field of the packet: its value is automatically calculated by the MacLow before calling WifiPhy::Send. More... | |
void | DisableRts (void) |
Do not send rts and wait for cts before sending data. More... | |
void | EnableAck (void) |
Wait ACKTimeout for an ACK. More... | |
void | EnableBasicBlockAck (void) |
Wait BASICBLOCKACKTimeout for a Basic Block Ack Response frame. More... | |
void | EnableCompressedBlockAck (void) |
Wait COMPRESSEDBLOCKACKTimeout for a Compressed Block Ack Response frame. More... | |
void | EnableFastAck (void) |
void | EnableMultiTidBlockAck (void) |
NOT IMPLEMENTED FOR NOW. More... | |
void | EnableNextData (uint32_t size) |
void | EnableOverrideDurationId (Time durationId) |
void | EnableRts (void) |
Send a RTS, and wait CTSTimeout for a CTS. More... | |
void | EnableSuperFastAck (void) |
Time | GetDurationId (void) const |
uint32_t | GetNextPacketSize (void) const |
bool | HasDurationId (void) const |
bool | HasNextPacket (void) const |
bool | MustSendRts (void) const |
bool | MustWaitAck (void) const |
bool | MustWaitBasicBlockAck (void) const |
bool | MustWaitCompressedBlockAck (void) const |
bool | MustWaitFastAck (void) const |
bool | MustWaitMultiTidBlockAck (void) const |
bool | MustWaitNormalAck (void) const |
bool | MustWaitSuperFastAck (void) const |
Private Types | |
enum | { ACK_NONE, ACK_NORMAL, ACK_FAST, ACK_SUPER_FAST, BLOCK_ACK_BASIC, BLOCK_ACK_COMPRESSED, BLOCK_ACK_MULTI_TID } |
Private Attributes | |
uint32_t | m_nextSize |
Time | m_overrideDurationId |
bool | m_sendRts |
enum ns3::MacLowTransmissionParameters:: { ... } | m_waitAck |
Friends | |
std::ostream & | operator<< (std::ostream &os, const MacLowTransmissionParameters ¶ms) |
Serialize MacLowTransmissionParameters to ostream in a human-readable form. More... | |
control how a packet is transmitted.
The ns3::MacLow::StartTransmission method expects an instance of this class to describe how the packet should be transmitted.
|
private |
ns3::MacLowTransmissionParameters::MacLowTransmissionParameters | ( | ) |
Definition at line 75 of file mac-low.cc.
void ns3::MacLowTransmissionParameters::DisableAck | ( | void | ) |
Do not wait for Ack after data transmission.
Typically used for Broadcast and multicast frames.
Definition at line 133 of file mac-low.cc.
References ACK_NONE, and m_waitAck.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), and ns3::MacLow::SendBlockAckResponse().
void ns3::MacLowTransmissionParameters::DisableNextData | ( | void | ) |
Do not attempt to send data burst after current transmission.
Definition at line 88 of file mac-low.cc.
References m_nextSize.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::EdcaTxopN::SendAddBaRequest(), ns3::EdcaTxopN::SendBlockAckRequest(), ns3::MacLow::SendBlockAckResponse(), ns3::DcaTxop::StartNext(), and ns3::EdcaTxopN::StartNext().
void ns3::MacLowTransmissionParameters::DisableOverrideDurationId | ( | void | ) |
Do not force the duration/id field of the packet: its value is automatically calculated by the MacLow before calling WifiPhy::Send.
Definition at line 98 of file mac-low.cc.
References m_overrideDurationId.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::EdcaTxopN::SendAddBaRequest(), ns3::EdcaTxopN::SendBlockAckRequest(), ns3::DcaTxop::StartNext(), and ns3::EdcaTxopN::StartNext().
void ns3::MacLowTransmissionParameters::DisableRts | ( | void | ) |
Do not send rts and wait for cts before sending data.
Definition at line 143 of file mac-low.cc.
References m_sendRts.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::EdcaTxopN::SendAddBaRequest(), ns3::EdcaTxopN::SendBlockAckRequest(), ns3::DcaTxop::StartNext(), and ns3::EdcaTxopN::StartNext().
void ns3::MacLowTransmissionParameters::EnableAck | ( | void | ) |
Wait ACKTimeout for an ACK.
If we get an ACK on time, call MacLowTransmissionListener::GotAck. Call MacLowTransmissionListener::MissedAck otherwise.
Definition at line 128 of file mac-low.cc.
References ACK_NORMAL, and m_waitAck.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::EdcaTxopN::SendAddBaRequest(), ns3::EdcaTxopN::SendBlockAckRequest(), ns3::MacLow::SendBlockAckResponse(), ns3::DcaTxop::StartNext(), and ns3::EdcaTxopN::StartNext().
void ns3::MacLowTransmissionParameters::EnableBasicBlockAck | ( | void | ) |
Wait BASICBLOCKACKTimeout for a Basic Block Ack Response frame.
Definition at line 108 of file mac-low.cc.
References BLOCK_ACK_BASIC, and m_waitAck.
Referenced by ns3::EdcaTxopN::SendBlockAckRequest().
void ns3::MacLowTransmissionParameters::EnableCompressedBlockAck | ( | void | ) |
Wait COMPRESSEDBLOCKACKTimeout for a Compressed Block Ack Response frame.
Definition at line 113 of file mac-low.cc.
References BLOCK_ACK_COMPRESSED, and m_waitAck.
Referenced by ns3::EdcaTxopN::SendBlockAckRequest().
void ns3::MacLowTransmissionParameters::EnableFastAck | ( | void | ) |
This is really complicated but it is needed for proper HCCA support.
Definition at line 123 of file mac-low.cc.
void ns3::MacLowTransmissionParameters::EnableMultiTidBlockAck | ( | void | ) |
NOT IMPLEMENTED FOR NOW.
Definition at line 118 of file mac-low.cc.
References BLOCK_ACK_MULTI_TID, and m_waitAck.
void ns3::MacLowTransmissionParameters::EnableNextData | ( | uint32_t | size | ) |
size | size of next data to send after current packet is sent. |
Add the transmission duration of the next data to the durationId of the outgoing packet and call MacLowTransmissionListener::StartNext at the end of the current transmission + SIFS.
Definition at line 83 of file mac-low.cc.
References m_nextSize.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::DcaTxop::StartNext(), and ns3::EdcaTxopN::StartNext().
void ns3::MacLowTransmissionParameters::EnableOverrideDurationId | ( | Time | durationId | ) |
durationId | the value to set in the duration/Id field of the outgoing packet. |
Ignore all other durationId calculation and simply force the packet's durationId field to this value.
Definition at line 93 of file mac-low.cc.
References m_overrideDurationId.
void ns3::MacLowTransmissionParameters::EnableRts | ( | void | ) |
Send a RTS, and wait CTSTimeout for a CTS.
If we get a CTS on time, call MacLowTransmissionListener::GotCts and send data. Otherwise, call MacLowTransmissionListener::MissedCts and do not send data.
Definition at line 138 of file mac-low.cc.
References m_sendRts.
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), and ns3::DcaTxop::NotifyAccessGranted().
void ns3::MacLowTransmissionParameters::EnableSuperFastAck | ( | void | ) |
Definition at line 103 of file mac-low.cc.
References ACK_SUPER_FAST, and m_waitAck.
Time ns3::MacLowTransmissionParameters::GetDurationId | ( | void | ) | const |
Definition at line 193 of file mac-low.cc.
References m_overrideDurationId, and NS_ASSERT.
Referenced by ns3::MacLow::SendCtsToSelf(), ns3::MacLow::SendDataPacket(), and ns3::MacLow::SendRtsForPacket().
uint32_t ns3::MacLowTransmissionParameters::GetNextPacketSize | ( | void | ) | const |
Definition at line 204 of file mac-low.cc.
References HasNextPacket(), m_nextSize, and NS_ASSERT.
Referenced by ns3::MacLow::CalculateTransmissionTime(), ns3::MacLow::SendCtsToSelf(), and ns3::MacLow::SendDataPacket().
bool ns3::MacLowTransmissionParameters::HasDurationId | ( | void | ) | const |
Definition at line 188 of file mac-low.cc.
References m_overrideDurationId.
Referenced by ns3::MacLow::SendCtsToSelf(), ns3::MacLow::SendDataPacket(), and ns3::MacLow::SendRtsForPacket().
bool ns3::MacLowTransmissionParameters::HasNextPacket | ( | void | ) | const |
Definition at line 199 of file mac-low.cc.
References m_nextSize.
Referenced by ns3::MacLow::CalculateTransmissionTime(), GetNextPacketSize(), ns3::MacLow::ReceiveOk(), ns3::MacLow::SendCtsToSelf(), ns3::MacLow::SendDataPacket(), and ns3::MacLow::StartDataTxTimers().
bool ns3::MacLowTransmissionParameters::MustSendRts | ( | void | ) | const |
Definition at line 183 of file mac-low.cc.
References m_sendRts.
Referenced by ns3::MacLow::CalculateOverallTxTime(), and ns3::MacLow::StartTransmission().
bool ns3::MacLowTransmissionParameters::MustWaitAck | ( | void | ) | const |
This methods returns true when any of MustWaitNormalAck, MustWaitFastAck, or MustWaitSuperFastAck return true.
Definition at line 148 of file mac-low.cc.
References ACK_NONE, and m_waitAck.
Referenced by ns3::MacLow::CalculateOverallTxTime(), ns3::MacLow::ReceiveOk(), ns3::MacLow::SendCtsToSelf(), and ns3::MacLow::SendDataPacket().
bool ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck | ( | void | ) | const |
Definition at line 168 of file mac-low.cc.
References BLOCK_ACK_BASIC, and m_waitAck.
Referenced by ns3::MacLow::ReceiveOk(), ns3::MacLow::SendCtsToSelf(), ns3::MacLow::SendDataPacket(), and ns3::MacLow::StartDataTxTimers().
bool ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck | ( | void | ) | const |
Definition at line 173 of file mac-low.cc.
References BLOCK_ACK_COMPRESSED, and m_waitAck.
Referenced by ns3::MacLow::ReceiveOk(), ns3::MacLow::SendCtsToSelf(), ns3::MacLow::SendDataPacket(), and ns3::MacLow::StartDataTxTimers().
bool ns3::MacLowTransmissionParameters::MustWaitFastAck | ( | void | ) | const |
Definition at line 158 of file mac-low.cc.
References ACK_FAST, and m_waitAck.
Referenced by ns3::MacLow::ReceiveError(), ns3::MacLow::ReceiveOk(), and ns3::MacLow::StartDataTxTimers().
bool ns3::MacLowTransmissionParameters::MustWaitMultiTidBlockAck | ( | void | ) | const |
Definition at line 178 of file mac-low.cc.
References BLOCK_ACK_MULTI_TID, and m_waitAck.
bool ns3::MacLowTransmissionParameters::MustWaitNormalAck | ( | void | ) | const |
Definition at line 153 of file mac-low.cc.
References ACK_NORMAL, and m_waitAck.
Referenced by ns3::MacLow::ReceiveOk(), and ns3::MacLow::StartDataTxTimers().
bool ns3::MacLowTransmissionParameters::MustWaitSuperFastAck | ( | void | ) | const |
Definition at line 163 of file mac-low.cc.
References ACK_SUPER_FAST, and m_waitAck.
Referenced by ns3::MacLow::StartDataTxTimers().
|
friend |
Serialize MacLowTransmissionParameters to ostream in a human-readable form.
os | std::ostream |
params | MacLowTransmissionParameters |
Definition at line 210 of file mac-low.cc.
|
private |
Definition at line 382 of file mac-low.h.
Referenced by DisableNextData(), EnableNextData(), GetNextPacketSize(), HasNextPacket(), and ns3::operator<<().
|
private |
Definition at line 394 of file mac-low.h.
Referenced by DisableOverrideDurationId(), EnableOverrideDurationId(), GetDurationId(), HasDurationId(), and ns3::operator<<().
|
private |
Definition at line 393 of file mac-low.h.
Referenced by DisableRts(), EnableRts(), MustSendRts(), and ns3::operator<<().
enum { ... } ns3::MacLowTransmissionParameters::m_waitAck |
Referenced by DisableAck(), EnableAck(), EnableBasicBlockAck(), EnableCompressedBlockAck(), EnableFastAck(), EnableMultiTidBlockAck(), EnableSuperFastAck(), MustWaitAck(), MustWaitBasicBlockAck(), MustWaitCompressedBlockAck(), MustWaitFastAck(), MustWaitMultiTidBlockAck(), MustWaitNormalAck(), MustWaitSuperFastAck(), and ns3::operator<<().