A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
wifi-mac-header.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2006, 2009 INRIA
4
* Copyright (c) 2009 MIRKO BANCHI
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation;
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
*
19
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
20
* Author: Mirko Banchi <mk.banchi@gmail.com>
21
*/
22
#ifndef WIFI_MAC_HEADER_H
23
#define WIFI_MAC_HEADER_H
24
25
#include "ns3/header.h"
26
#include "ns3/mac48-address.h"
27
#include "ns3/nstime.h"
28
#include <stdint.h>
29
30
namespace
ns3 {
31
32
enum
WifiMacType
33
{
34
WIFI_MAC_CTL_RTS
= 0,
35
WIFI_MAC_CTL_CTS
,
36
WIFI_MAC_CTL_ACK
,
37
WIFI_MAC_CTL_BACKREQ
,
38
WIFI_MAC_CTL_BACKRESP
,
39
WIFI_MAC_CTL_CTLWRAPPER
,
40
41
WIFI_MAC_MGT_BEACON
,
42
WIFI_MAC_MGT_ASSOCIATION_REQUEST
,
43
WIFI_MAC_MGT_ASSOCIATION_RESPONSE
,
44
WIFI_MAC_MGT_DISASSOCIATION
,
45
WIFI_MAC_MGT_REASSOCIATION_REQUEST
,
46
WIFI_MAC_MGT_REASSOCIATION_RESPONSE
,
47
WIFI_MAC_MGT_PROBE_REQUEST
,
48
WIFI_MAC_MGT_PROBE_RESPONSE
,
49
WIFI_MAC_MGT_AUTHENTICATION
,
50
WIFI_MAC_MGT_DEAUTHENTICATION
,
51
WIFI_MAC_MGT_ACTION
,
52
WIFI_MAC_MGT_ACTION_NO_ACK
,
53
WIFI_MAC_MGT_MULTIHOP_ACTION
,
54
55
WIFI_MAC_DATA
,
56
WIFI_MAC_DATA_CFACK
,
57
WIFI_MAC_DATA_CFPOLL
,
58
WIFI_MAC_DATA_CFACK_CFPOLL
,
59
WIFI_MAC_DATA_NULL
,
60
WIFI_MAC_DATA_NULL_CFACK
,
61
WIFI_MAC_DATA_NULL_CFPOLL
,
62
WIFI_MAC_DATA_NULL_CFACK_CFPOLL
,
63
WIFI_MAC_QOSDATA
,
64
WIFI_MAC_QOSDATA_CFACK
,
65
WIFI_MAC_QOSDATA_CFPOLL
,
66
WIFI_MAC_QOSDATA_CFACK_CFPOLL
,
67
WIFI_MAC_QOSDATA_NULL
,
68
WIFI_MAC_QOSDATA_NULL_CFPOLL
,
69
WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL
,
70
};
71
77
class
WifiMacHeader
:
public
Header
78
{
79
public
:
80
enum
QosAckPolicy
81
{
82
NORMAL_ACK
= 0,
83
NO_ACK
= 1,
84
NO_EXPLICIT_ACK
= 2,
85
BLOCK_ACK
= 3,
86
};
87
88
enum
AddressType
89
{
90
ADDR1
,
91
ADDR2
,
92
ADDR3
,
93
ADDR4
94
};
95
96
WifiMacHeader
();
97
~WifiMacHeader
();
98
99
static
TypeId
GetTypeId
(
void
);
100
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
101
virtual
void
Print
(std::ostream &os)
const
;
102
virtual
uint32_t
GetSerializedSize
(
void
)
const
;
103
virtual
void
Serialize
(
Buffer::Iterator
start
)
const
;
104
virtual
uint32_t
Deserialize
(
Buffer::Iterator
start
);
105
106
107
void
SetAssocReq
(
void
);
108
void
SetAssocResp
(
void
);
109
void
SetProbeReq
(
void
);
110
void
SetProbeResp
(
void
);
111
void
SetBeacon
(
void
);
112
void
SetTypeData
(
void
);
113
void
SetAction
();
114
void
SetBlockAckReq
(
void
);
115
void
SetBlockAck
(
void
);
116
void
SetMultihopAction
();
117
void
SetDsFrom
(
void
);
118
void
SetDsNotFrom
(
void
);
119
void
SetDsTo
(
void
);
120
void
SetDsNotTo
(
void
);
121
void
SetAddr1
(
Mac48Address
address
);
122
void
SetAddr2
(
Mac48Address
address
);
123
void
SetAddr3
(
Mac48Address
address
);
124
void
SetAddr4
(
Mac48Address
address
);
125
void
SetType
(
enum
WifiMacType
type);
126
void
SetRawDuration
(uint16_t duration);
127
void
SetDuration
(
Time
duration);
128
void
SetId
(uint16_t
id
);
129
void
SetSequenceNumber
(uint16_t seq);
130
void
SetFragmentNumber
(uint8_t frag);
131
void
SetNoMoreFragments
(
void
);
132
void
SetMoreFragments
(
void
);
133
void
SetRetry
(
void
);
134
void
SetNoRetry
(
void
);
135
void
SetQosTid
(uint8_t tid);
136
void
SetQosEosp
();
137
void
SetQosNoEosp
();
138
void
SetQosAckPolicy
(
enum
QosAckPolicy
);
139
void
SetQosNormalAck
(
void
);
140
void
SetQosBlockAck
(
void
);
141
void
SetQosNoAck
(
void
);
142
void
SetQosAmsdu
(
void
);
143
void
SetQosNoAmsdu
(
void
);
144
void
SetQosTxopLimit
(uint8_t txop);
145
void
SetOrder
(
void
);
146
void
SetNoOrder
(
void
);
147
148
Mac48Address
GetAddr1
(
void
)
const
;
149
Mac48Address
GetAddr2
(
void
)
const
;
150
Mac48Address
GetAddr3
(
void
)
const
;
151
Mac48Address
GetAddr4
(
void
)
const
;
152
enum
WifiMacType
GetType
(
void
)
const
;
153
bool
IsFromDs
(
void
)
const
;
154
bool
IsToDs
(
void
)
const
;
155
bool
IsData
(
void
)
const
;
156
bool
IsQosData
(
void
)
const
;
157
bool
IsCtl
(
void
)
const
;
158
bool
IsMgt
(
void
)
const
;
159
bool
IsCfpoll
(
void
)
const
;
160
bool
IsRts
(
void
)
const
;
161
bool
IsCts
(
void
)
const
;
162
bool
IsAck
(
void
)
const
;
163
bool
IsBlockAckReq
(
void
)
const
;
164
bool
IsBlockAck
(
void
)
const
;
165
bool
IsAssocReq
(
void
)
const
;
166
bool
IsAssocResp
(
void
)
const
;
167
bool
IsReassocReq
(
void
)
const
;
168
bool
IsReassocResp
(
void
)
const
;
169
bool
IsProbeReq
(
void
)
const
;
170
bool
IsProbeResp
(
void
)
const
;
171
bool
IsBeacon
(
void
)
const
;
172
bool
IsDisassociation
(
void
)
const
;
173
bool
IsAuthentication
(
void
)
const
;
174
bool
IsDeauthentication
(
void
)
const
;
175
bool
IsAction
()
const
;
176
bool
IsMultihopAction
()
const
;
177
uint16_t
GetRawDuration
(
void
)
const
;
178
Time
GetDuration
(
void
)
const
;
179
uint16_t
GetSequenceControl
(
void
)
const
;
180
uint16_t
GetSequenceNumber
(
void
)
const
;
181
uint16_t
GetFragmentNumber
(
void
)
const
;
182
bool
IsRetry
(
void
)
const
;
183
bool
IsMoreFragments
(
void
)
const
;
184
bool
IsQosBlockAck
(
void
)
const
;
185
bool
IsQosNoAck
(
void
)
const
;
186
bool
IsQosAck
(
void
)
const
;
187
bool
IsQosEosp
(
void
)
const
;
188
bool
IsQosAmsdu
(
void
)
const
;
189
uint8_t
GetQosTid
(
void
)
const
;
190
enum
QosAckPolicy
GetQosAckPolicy
(
void
)
const
;
191
uint8_t
GetQosTxopLimit
(
void
)
const
;
192
193
uint32_t
GetSize
(
void
)
const
;
194
const
char
*
GetTypeString
(
void
)
const
;
195
196
197
private
:
198
uint16_t
GetFrameControl
(
void
)
const
;
199
uint16_t
GetQosControl
(
void
)
const
;
200
void
SetFrameControl
(uint16_t control);
201
void
SetSequenceControl
(uint16_t seq);
202
void
SetQosControl
(uint16_t qos);
203
void
PrintFrameControl
(std::ostream &os)
const
;
204
205
uint8_t
m_ctrlType
;
206
uint8_t
m_ctrlSubtype
;
207
uint8_t
m_ctrlToDs
;
208
uint8_t
m_ctrlFromDs
;
209
uint8_t
m_ctrlMoreFrag
;
210
uint8_t
m_ctrlRetry
;
211
uint8_t
m_ctrlPwrMgt
;
212
uint8_t
m_ctrlMoreData
;
213
uint8_t
m_ctrlWep
;
214
uint8_t
m_ctrlOrder
;
215
uint16_t
m_duration
;
216
Mac48Address
m_addr1
;
217
Mac48Address
m_addr2
;
218
Mac48Address
m_addr3
;
219
uint8_t
m_seqFrag
;
220
uint16_t
m_seqSeq
;
221
Mac48Address
m_addr4
;
222
uint8_t
m_qosTid
;
223
uint8_t
m_qosEosp
;
224
uint8_t
m_qosAckPolicy
;
225
uint8_t
m_amsduPresent
;
226
uint16_t
m_qosStuff
;
227
};
228
229
}
// namespace ns3
230
231
232
233
#endif
/* WIFI_MAC_HEADER_H */
src
wifi
model
wifi-mac-header.h
Generated on Fri Aug 30 2013 01:43:05 for ns-3 by
1.8.1.2