A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
src
wifi
model
originator-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, 2010 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
* Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
20
*/
21
#ifndef ORIGINATOR_BLOCK_ACK_AGREEMENT_H
22
#define ORIGINATOR_BLOCK_ACK_AGREEMENT_H
23
24
#include "
block-ack-agreement.h
"
25
26
namespace
ns3
{
27
33
class
OriginatorBlockAckAgreement
:
public
BlockAckAgreement
34
{
36
friend
class
BlockAckManager
;
37
38
39
public
:
46
OriginatorBlockAckAgreement
(
Mac48Address
recipient, uint8_t tid);
47
~OriginatorBlockAckAgreement
();
48
/* receive ADDBAResponse
49
* send ADDBARequest --------------- status code = success ---------------
50
* ----------------->| PENDING |------------------------>| ESTABLISHED |-----
51
* --------------- --------------- |
52
* | / ^ ^ |
53
* receive ADDBAResponse | receive BlockAck / | | | receive BlockAck
54
* status code = failure | retryPkts + queuePkts / | | | retryPkts + queuePkts
55
* v < / | | | >=
56
* --------------- blockAckThreshold / | | | blockAckThreshold
57
* | UNSUCCESSFUL | / | | |
58
* --------------- v | ----------|
59
* -------------- |
60
* | INACTIVE | |
61
* -------------- |
62
* send a MPDU (Normal Ack) | |
63
* retryPkts + queuePkts | |
64
* >= | |
65
* blockAckThreshold |----------------
66
*/
97
enum
State
99
{
100
PENDING
,
101
ESTABLISHED
,
102
INACTIVE
,
103
UNSUCCESSFUL
104
};
110
void
SetState
(
State
state);
117
bool
IsPending
(
void
)
const
;
124
bool
IsEstablished
(
void
)
const
;
131
bool
IsInactive
(
void
)
const
;
138
bool
IsUnsuccessful
(
void
)
const
;
144
void
NotifyMpduTransmission
(uint16_t nextSeqNumber);
152
bool
IsBlockAckRequestNeeded
(
void
)
const
;
154
void
CompleteExchange
(
void
);
155
156
157
private
:
158
State
m_state
;
159
uint16_t
m_sentMpdus
;
160
bool
m_needBlockAckReq
;
161
};
162
163
}
//namespace ns3
164
165
#endif
/* ORIGINATOR_BLOCK_ACK_AGREEMENT_H */
ns3::OriginatorBlockAckAgreement::m_sentMpdus
uint16_t m_sentMpdus
sent MPDUs
Definition:
originator-block-ack-agreement.h:159
ns3::OriginatorBlockAckAgreement
Maintains the state and information about transmitted MPDUs with ack policy block ack for an originat...
Definition:
originator-block-ack-agreement.h:33
ns3::OriginatorBlockAckAgreement::IsBlockAckRequestNeeded
bool IsBlockAckRequestNeeded(void) const
Returns true if all packets for which a block ack was negotiated have been transmitted so a block ack...
Definition:
originator-block-ack-agreement.cc:87
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement
OriginatorBlockAckAgreement(Mac48Address recipient, uint8_t tid)
Constructor.
Definition:
originator-block-ack-agreement.cc:26
ns3::OriginatorBlockAckAgreement::IsEstablished
bool IsEstablished(void) const
Check if the current state of this agreement is ESTABLISHED.
Definition:
originator-block-ack-agreement.cc:56
ns3::OriginatorBlockAckAgreement::IsPending
bool IsPending(void) const
Check if the current state of this agreement is PENDING.
Definition:
originator-block-ack-agreement.cc:50
ns3::OriginatorBlockAckAgreement::PENDING
Definition:
originator-block-ack-agreement.h:100
ns3::OriginatorBlockAckAgreement::IsInactive
bool IsInactive(void) const
Check if the current state of this agreement is INACTIVE.
Definition:
originator-block-ack-agreement.cc:62
ns3::OriginatorBlockAckAgreement::~OriginatorBlockAckAgreement
~OriginatorBlockAckAgreement()
Definition:
originator-block-ack-agreement.cc:34
ns3::OriginatorBlockAckAgreement::IsUnsuccessful
bool IsUnsuccessful(void) const
Check if the current state of this agreement is UNSUCCESSFUL.
Definition:
originator-block-ack-agreement.cc:68
ns3::OriginatorBlockAckAgreement::SetState
void SetState(State state)
Set the current state.
Definition:
originator-block-ack-agreement.cc:39
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::OriginatorBlockAckAgreement::INACTIVE
Definition:
originator-block-ack-agreement.h:102
ns3::Mac48Address
an EUI-48 address
Definition:
mac48-address.h:43
block-ack-agreement.h
ns3::OriginatorBlockAckAgreement::State
State
Represents the state for this agreement.
Definition:
originator-block-ack-agreement.h:98
ns3::BlockAckAgreement
Maintains information for a block ack agreement.
Definition:
block-ack-agreement.h:32
ns3::OriginatorBlockAckAgreement::NotifyMpduTransmission
void NotifyMpduTransmission(uint16_t nextSeqNumber)
Notifies a packet's transmission with ack policy Block Ack.
Definition:
originator-block-ack-agreement.cc:74
ns3::OriginatorBlockAckAgreement::m_state
State m_state
state
Definition:
originator-block-ack-agreement.h:158
ns3::OriginatorBlockAckAgreement::ESTABLISHED
Definition:
originator-block-ack-agreement.h:101
ns3::BlockAckManager
Manages all block ack agreements for an originator station.
Definition:
block-ack-manager.h:73
ns3::OriginatorBlockAckAgreement::UNSUCCESSFUL
Definition:
originator-block-ack-agreement.h:103
ns3::OriginatorBlockAckAgreement::m_needBlockAckReq
bool m_needBlockAckReq
flag whether it needs a Block ACK request
Definition:
originator-block-ack-agreement.h:160
ns3::OriginatorBlockAckAgreement::CompleteExchange
void CompleteExchange(void)
Complete exchange function.
Definition:
originator-block-ack-agreement.cc:93
Generated on Wed Nov 7 2018 10:02:14 for ns-3 by
1.8.14