add support for block ack in MacLowTransmissionParameters
authorMirko Banchi <mk.banchi@gmail.com>
Wed, 03 Feb 2010 20:34:50 +0100
changeset 5954 2b9e06875b69
parent 5953 9e400f6b8a2c
child 5955 10fbe045901e
add support for block ack in MacLowTransmissionParameters
src/devices/wifi/mac-low.cc
src/devices/wifi/mac-low.h
--- 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;