A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
block-ack-type.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2019 Universita' di Napoli
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Author: Stefano Avallone <stavallo@unina.it>
7
*/
8
9
#include "
block-ack-type.h
"
10
11
#include "ns3/fatal-error.h"
12
13
namespace
ns3
14
{
15
16
BlockAckType::BlockAckType
(
Variant
v)
17
: m_variant(v)
18
{
19
switch
(
m_variant
)
20
{
21
case
BASIC
:
22
m_bitmapLen
.push_back(128);
23
break
;
24
case
COMPRESSED
:
25
case
EXTENDED_COMPRESSED
:
26
case
GCR
:
27
m_bitmapLen
.push_back(8);
28
break
;
29
case
MULTI_TID
:
30
case
MULTI_STA
:
31
// m_bitmapLen is left empty.
32
break
;
33
default
:
34
NS_FATAL_ERROR
(
"Unknown block ack type"
);
35
}
36
}
37
38
BlockAckType::BlockAckType
()
39
:
BlockAckType
(BASIC)
40
{
41
}
42
43
BlockAckType::BlockAckType
(
Variant
v, std::vector<uint8_t> l)
44
: m_variant(v),
45
m_bitmapLen(l)
46
{
47
}
48
49
BlockAckReqType::BlockAckReqType
(
Variant
v)
50
: m_variant(v)
51
{
52
switch
(
m_variant
)
53
{
54
case
BASIC
:
55
case
COMPRESSED
:
56
case
EXTENDED_COMPRESSED
:
57
case
GCR
:
58
m_nSeqControls
= 1;
59
break
;
60
case
MULTI_TID
:
61
m_nSeqControls
= 0;
62
break
;
63
default
:
64
NS_FATAL_ERROR
(
"Unknown block ack request type"
);
65
}
66
}
67
68
BlockAckReqType::BlockAckReqType
()
69
:
BlockAckReqType
(BASIC)
70
{
71
}
72
73
BlockAckReqType::BlockAckReqType
(
Variant
v, uint8_t nSeqControls)
74
: m_variant(v),
75
m_nSeqControls(nSeqControls)
76
{
77
}
78
79
std::ostream&
80
operator<<
(std::ostream& os,
const
BlockAckType
& type)
81
{
82
switch
(type.m_variant)
83
{
84
case
BlockAckType::BASIC
:
85
os <<
"basic-block-ack"
;
86
break
;
87
case
BlockAckType::COMPRESSED
:
88
os <<
"compressed-block-ack"
;
89
break
;
90
case
BlockAckType::EXTENDED_COMPRESSED
:
91
os <<
"extended-compressed-block-ack"
;
92
break
;
93
case
BlockAckType::MULTI_TID
:
94
os <<
"multi-tid-block-ack["
<< type.m_bitmapLen.size() <<
"]"
;
95
break
;
96
case
BlockAckType::GCR
:
97
os <<
"gcr-block-ack"
;
98
break
;
99
case
BlockAckType::MULTI_STA
:
100
os <<
"multi-sta-block-ack["
<< type.m_bitmapLen.size() <<
"]"
;
101
break
;
102
default
:
103
NS_FATAL_ERROR
(
"Unknown block ack type"
);
104
}
105
return
os;
106
}
107
108
std::ostream&
109
operator<<
(std::ostream& os,
const
BlockAckReqType
& type)
110
{
111
switch
(type.m_variant)
112
{
113
case
BlockAckReqType::BASIC
:
114
os <<
"basic-block-ack-req"
;
115
break
;
116
case
BlockAckReqType::COMPRESSED
:
117
os <<
"compressed-block-ack-req"
;
118
break
;
119
case
BlockAckReqType::EXTENDED_COMPRESSED
:
120
os <<
"extended-compressed-block-ack-req"
;
121
break
;
122
case
BlockAckReqType::MULTI_TID
:
123
os <<
"multi-tid-block-ack-req["
<< type.m_nSeqControls <<
"]"
;
124
break
;
125
case
BlockAckReqType::GCR
:
126
os <<
"gcr-block-ack-req"
;
127
break
;
128
default
:
129
NS_FATAL_ERROR
(
"Unknown block ack request type"
);
130
}
131
return
os;
132
}
133
134
}
// namespace ns3
block-ack-type.h
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition
fatal-error.h:168
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::operator<<
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition
angles.cc:148
ns3::BlockAckReqType
The different BlockAckRequest variants.
Definition
block-ack-type.h:67
ns3::BlockAckReqType::m_nSeqControls
uint8_t m_nSeqControls
Number of included Starting Sequence Control fields.
Definition
block-ack-type.h:82
ns3::BlockAckReqType::BlockAckReqType
BlockAckReqType()
Default constructor for BlockAckReqType.
Definition
block-ack-type.cc:68
ns3::BlockAckReqType::Variant
Variant
The BlockAckReq variants.
Definition
block-ack-type.h:73
ns3::BlockAckReqType::EXTENDED_COMPRESSED
@ EXTENDED_COMPRESSED
Definition
block-ack-type.h:76
ns3::BlockAckReqType::GCR
@ GCR
Definition
block-ack-type.h:78
ns3::BlockAckReqType::BASIC
@ BASIC
Definition
block-ack-type.h:74
ns3::BlockAckReqType::MULTI_TID
@ MULTI_TID
Definition
block-ack-type.h:77
ns3::BlockAckReqType::COMPRESSED
@ COMPRESSED
Definition
block-ack-type.h:75
ns3::BlockAckReqType::m_variant
Variant m_variant
Block Ack Request variant.
Definition
block-ack-type.h:81
ns3::BlockAckType
The different BlockAck variants.
Definition
block-ack-type.h:24
ns3::BlockAckType::BlockAckType
BlockAckType()
Default constructor for BlockAckType.
Definition
block-ack-type.cc:38
ns3::BlockAckType::m_variant
Variant m_variant
Block Ack variant.
Definition
block-ack-type.h:39
ns3::BlockAckType::Variant
Variant
The BlockAck variants.
Definition
block-ack-type.h:30
ns3::BlockAckType::COMPRESSED
@ COMPRESSED
Definition
block-ack-type.h:32
ns3::BlockAckType::MULTI_STA
@ MULTI_STA
Definition
block-ack-type.h:36
ns3::BlockAckType::GCR
@ GCR
Definition
block-ack-type.h:35
ns3::BlockAckType::BASIC
@ BASIC
Definition
block-ack-type.h:31
ns3::BlockAckType::MULTI_TID
@ MULTI_TID
Definition
block-ack-type.h:34
ns3::BlockAckType::EXTENDED_COMPRESSED
@ EXTENDED_COMPRESSED
Definition
block-ack-type.h:33
ns3::BlockAckType::m_bitmapLen
std::vector< uint8_t > m_bitmapLen
Length (bytes) of included bitmaps.
Definition
block-ack-type.h:40
src
wifi
model
block-ack-type.cc
Generated on Wed Jan 15 2025 18:37:16 for ns-3 by
1.11.0