--- a/src/devices/wifi/mac-low.cc Wed Feb 03 20:34:50 2010 +0100
+++ b/src/devices/wifi/mac-low.cc Wed Feb 03 20:34:50 2010 +0100
@@ -146,6 +146,21 @@
{
m_waitAck = ACK_SUPER_FAST;
}
+void
+MacLowTransmissionParameters::EnableBasicBlockAck (void)
+{
+ m_waitAck = BLOCK_ACK_BASIC;
+}
+void
+MacLowTransmissionParameters::EnableCompressedBlockAck (void)
+{
+ m_waitAck = BLOCK_ACK_COMPRESSED;
+}
+void
+MacLowTransmissionParameters::EnableMultiTidBlockAck (void)
+{
+ m_waitAck = BLOCK_ACK_MULTI_TID;
+}
void
MacLowTransmissionParameters::EnableFastAck (void)
{
@@ -191,6 +206,21 @@
{
return (m_waitAck == ACK_SUPER_FAST);
}
+bool
+MacLowTransmissionParameters::MustWaitBasicBlockAck (void) const
+{
+ return (m_waitAck == BLOCK_ACK_BASIC)?true:false;
+}
+bool
+MacLowTransmissionParameters::MustWaitCompressedBlockAck (void) const
+{
+ return (m_waitAck == BLOCK_ACK_COMPRESSED)?true:false;
+}
+bool
+MacLowTransmissionParameters::MustWaitMultiTidBlockAck (void) const
+{
+ return (m_waitAck == BLOCK_ACK_MULTI_TID)?true:false;
+}
bool
MacLowTransmissionParameters::MustSendRts (void) const
{
@@ -239,6 +269,15 @@
case MacLowTransmissionParameters::ACK_SUPER_FAST:
os << "super-fast";
break;
+ case MacLowTransmissionParameters::BLOCK_ACK_BASIC:
+ os << "basic-block-ack";
+ break;
+ case MacLowTransmissionParameters::BLOCK_ACK_COMPRESSED:
+ os << "compressed-block-ack";
+ break;
+ case MacLowTransmissionParameters::BLOCK_ACK_MULTI_TID:
+ os << "multi-tid-block-ack";
+ break;
}
os << "]";
return os;
--- a/src/devices/wifi/mac-low.h Wed Feb 03 20:34:50 2010 +0100
+++ b/src/devices/wifi/mac-low.h Wed Feb 03 20:34:50 2010 +0100
@@ -157,6 +157,18 @@
*/
void EnableSuperFastAck (void);
/**
+ * Wait BASICBLOCKACKTimeout for a Basic Block Ack Response frame.
+ */
+ void EnableBasicBlockAck (void);
+ /**
+ * Wait COMPRESSEDBLOCKACKTimeout for a Compressed Block Ack Response frame.
+ */
+ void EnableCompressedBlockAck (void);
+ /**
+ * NOT IMPLEMENTED FOR NOW
+ */
+ void EnableMultiTidBlockAck (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
@@ -233,6 +245,24 @@
*/
bool MustWaitSuperFastAck (void) const;
/**
+ * \returns true if block ack mechanism is used, false otherwise.
+ *
+ * \sa EnableBlockAck
+ */
+ bool MustWaitBasicBlockAck (void) const;
+ /**
+ * \returns true if compressed block ack mechanism is used, false otherwise.
+ *
+ * \sa EnableCompressedBlockAck
+ */
+ bool MustWaitCompressedBlockAck (void) const;
+ /**
+ * \returns true if multi-tid block ack mechanism is used, false otherwise.
+ *
+ * \sa EnableMultiTidBlockAck
+ */
+ bool MustWaitMultiTidBlockAck (void) const;
+ /**
* \returns true if RTS should be sent and CTS waited for before
* sending data, false otherwise.
*/
@@ -262,7 +292,10 @@
ACK_NONE,
ACK_NORMAL,
ACK_FAST,
- ACK_SUPER_FAST
+ ACK_SUPER_FAST,
+ BLOCK_ACK_BASIC,
+ BLOCK_ACK_COMPRESSED,
+ BLOCK_ACK_MULTI_TID
} m_waitAck;
bool m_sendRts;
Time m_overrideDurationId;