A Discrete-Event Network Simulator
API
block-ack-agreement.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 MIRKO BANCHI
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mirko Banchi <mk.banchi@gmail.com>
19  */
20 
21 #ifndef BLOCK_ACK_AGREEMENT_H
22 #define BLOCK_ACK_AGREEMENT_H
23 
24 #include "ns3/mac48-address.h"
25 #include "ns3/event-id.h"
26 #include "block-ack-type.h"
27 
28 namespace ns3 {
34 {
35  friend class HtFrameExchangeManager;
36 
37 public:
44  BlockAckAgreement (Mac48Address peer, uint8_t tid);
45  virtual ~BlockAckAgreement ();
51  void SetBufferSize (uint16_t bufferSize);
57  void SetTimeout (uint16_t timeout);
63  void SetStartingSequence (uint16_t seq);
69  void SetStartingSequenceControl (uint16_t seq);
73  void SetImmediateBlockAck (void);
77  void SetDelayedBlockAck (void);
83  void SetAmsduSupport (bool supported);
89  uint8_t GetTid (void) const;
95  Mac48Address GetPeer (void) const;
101  uint16_t GetBufferSize (void) const;
107  uint16_t GetTimeout (void) const;
113  virtual uint16_t GetStartingSequence (void) const;
119  uint16_t GetStartingSequenceControl (void) const;
125  uint16_t GetWinEnd (void) const;
132  bool IsImmediateBlockAck (void) const;
139  bool IsAmsduSupported (void) const;
145  void SetHtSupported (bool htSupported);
152  bool IsHtSupported (void) const;
158  BlockAckType GetBlockAckType (void) const;
164  BlockAckReqType GetBlockAckReqType (void) const;
173  static std::size_t GetDistance (uint16_t seqNumber, uint16_t startingSeqNumber);
174 
175 
176 protected:
180  uint8_t m_tid;
181  uint16_t m_bufferSize;
182  uint16_t m_timeout;
183  uint16_t m_startingSeq;
184  uint16_t m_winEnd;
185  uint8_t m_htSupported;
187 };
188 
189 } //namespace ns3
190 
191 #endif /* BLOCK_ACK_AGREEMENT_H */
Maintains information for a block ack agreement.
bool IsImmediateBlockAck(void) const
Check whether the current ack policy is immediate BlockAck.
uint16_t GetWinEnd(void) const
Return the last sequence number covered by the ack window.
BlockAckAgreement(Mac48Address peer, uint8_t tid)
Constructor for BlockAckAgreement with given peer and TID.
void SetImmediateBlockAck(void)
Set block ack policy to immediate Ack.
Mac48Address m_peer
Peer address.
bool IsAmsduSupported(void) const
Check whether A-MSDU is supported.
uint16_t m_winEnd
Ending sequence number.
void SetStartingSequence(uint16_t seq)
Set starting sequence number.
Mac48Address GetPeer(void) const
Return the peer address.
void SetDelayedBlockAck(void)
Set block ack policy to delayed Ack.
uint8_t m_htSupported
Flag whether HT is supported.
uint16_t GetTimeout(void) const
Return the timeout.
bool IsHtSupported(void) const
Check whether HT is supported.
uint16_t GetStartingSequenceControl(void) const
Return the starting sequence control.
void SetStartingSequenceControl(uint16_t seq)
Set starting sequence control.
EventId m_inactivityEvent
inactivity event
void SetBufferSize(uint16_t bufferSize)
Set buffer size.
uint16_t GetBufferSize(void) const
Return the buffer size.
uint8_t m_blockAckPolicy
Type of block ack: immediate or delayed.
void SetAmsduSupport(bool supported)
Enable or disable A-MSDU support.
uint8_t m_tid
Traffic ID.
uint16_t m_startingSeq
Starting sequence control.
virtual uint16_t GetStartingSequence(void) const
Return the starting sequence number.
uint8_t GetTid(void) const
Return the Traffic ID (TID).
uint16_t m_bufferSize
Buffer size.
void SetTimeout(uint16_t timeout)
Set timeout.
BlockAckType GetBlockAckType(void) const
Get the type of the Block Acks sent by the recipient of this agreement.
BlockAckReqType GetBlockAckReqType(void) const
Get the type of the Block Ack Requests sent by the originator of this agreement.
uint8_t m_amsduSupported
Flag whether MSDU aggregation is supported.
static std::size_t GetDistance(uint16_t seqNumber, uint16_t startingSeqNumber)
Get the distance between the given starting sequence number and the given sequence number.
void SetHtSupported(bool htSupported)
Enable or disable HT support.
An identifier for simulation events.
Definition: event-id.h:54
HtFrameExchangeManager handles the frame exchange sequences for HT stations.
an EUI-48 address
Definition: mac48-address.h:44
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::Time timeout
The different BlockAckRequest variants.
The different BlockAck variants.