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
bs-net-device.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2007,2008, 2009 INRIA, UDcast
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
* Authors: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
19
* Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
20
*/
21
22
#ifndef WIMAX_BS_NET_DEVICE_H
23
#define WIMAX_BS_NET_DEVICE_H
24
25
#include "
wimax-net-device.h
"
26
#include "ns3/event-id.h"
27
#include "
wimax-connection.h
"
28
#include "ns3/nstime.h"
29
#include "ns3/mac48-address.h"
30
#include "ns3/ipv4-address.h"
31
#include "ns3/bs-service-flow-manager.h"
32
#include "
dl-mac-messages.h
"
33
#include "
ipcs-classifier.h
"
34
35
namespace
ns3 {
36
37
class
Node;
38
class
Packet;
39
class
SSRecord;
40
class
SSManager;
41
class
BSScheduler;
42
class
BurstProfileManager;
43
class
BSLinkManager;
44
class
UplinkScheduler;
45
class
BsServiceFlowManager;
46
50
class
BaseStationNetDevice
:
public
WimaxNetDevice
51
{
52
public
:
53
enum
State
54
{
55
BS_STATE_DL_SUB_FRAME
,
BS_STATE_UL_SUB_FRAME
,
BS_STATE_TTG
,
BS_STATE_RTG
56
};
57
58
enum
MacPreamble
59
{
60
SHORT_PREAMBLE
= 1,
LONG_PREAMBLE
61
};
62
63
static
TypeId
GetTypeId
(
void
);
64
BaseStationNetDevice
(
void
);
65
BaseStationNetDevice
(
Ptr<Node>
node,
Ptr<WimaxPhy>
phy);
66
BaseStationNetDevice
(
Ptr<Node>
node,
67
Ptr<WimaxPhy>
phy,
68
Ptr<UplinkScheduler>
uplinkScheduler,
69
Ptr<BSScheduler>
bsScheduler);
70
~BaseStationNetDevice
(
void
);
74
void
SetInitialRangingInterval
(
Time
initialRangInterval);
78
void
InitBaseStationNetDevice
(
void
);
82
Time
GetInitialRangingInterval
(
void
)
const
;
86
void
SetDcdInterval
(
Time
dcdInterval);
90
Time
GetDcdInterval
(
void
)
const
;
94
void
SetUcdInterval
(
Time
ucdInterval);
98
Time
GetUcdInterval
(
void
)
const
;
102
void
SetIntervalT8
(
Time
interval);
106
Time
GetIntervalT8
(
void
)
const
;
110
void
SetMaxRangingCorrectionRetries
(uint8_t maxRangCorrectionRetries);
114
uint8_t
GetMaxRangingCorrectionRetries
(
void
)
const
;
118
void
SetMaxInvitedRangRetries
(uint8_t maxInvitedRangRetries);
122
uint8_t
GetMaxInvitedRangRetries
(
void
)
const
;
126
void
SetRangReqOppSize
(uint8_t rangReqOppSize);
130
uint8_t
GetRangReqOppSize
(
void
)
const
;
134
void
SetBwReqOppSize
(uint8_t bwReqOppSize);
138
uint8_t
GetBwReqOppSize
(
void
)
const
;
142
void
SetNrDlSymbols
(uint32_t dlSymbols);
146
uint32_t
GetNrDlSymbols
(
void
)
const
;
150
void
SetNrUlSymbols
(uint32_t ulSymbols);
154
uint32_t
GetNrUlSymbols
(
void
)
const
;
158
uint32_t
GetNrDcdSent
(
void
)
const
;
162
uint32_t
GetNrUcdSent
(
void
)
const
;
163
164
Time
GetDlSubframeStartTime
(
void
)
const
;
165
Time
GetUlSubframeStartTime
(
void
)
const
;
166
uint8_t
GetRangingOppNumber
(
void
)
const
;
170
Ptr<SSManager>
GetSSManager
(
void
)
const
;
174
void
SetSSManager
(
Ptr<SSManager>
ssManager);
178
Ptr<UplinkScheduler>
GetUplinkScheduler
(
void
)
const
;
182
void
SetUplinkScheduler
(
Ptr<UplinkScheduler>
ulScheduler);
186
Ptr<BSLinkManager>
GetLinkManager
(
void
)
const
;
190
void
SetBSScheduler
(
Ptr<BSScheduler>
bsSchedule);
194
Ptr<BSScheduler>
GetBSScheduler
(
void
)
const
;
195
199
void
SetLinkManager
(
Ptr<BSLinkManager>
linkManager);
203
Ptr<IpcsClassifier>
GetBsClassifier
(
void
)
const
;
207
void
SetBsClassifier
(
Ptr<IpcsClassifier>
classifier);
208
209
Time
GetPsDuration
(
void
)
const
;
210
Time
GetSymbolDuration
(
void
)
const
;
211
212
void
Start
(
void
);
213
void
Stop
(
void
);
220
bool
Enqueue
(
Ptr<Packet>
packet,
const
MacHeaderType
&hdrType,
Ptr<WimaxConnection>
connection);
221
Ptr<WimaxConnection>
GetConnection
(
Cid
cid);
222
223
void
MarkUplinkAllocations
(
void
);
224
void
MarkRangingOppStart
(
Time
rangingOppStartTime);
225
226
Ptr<BsServiceFlowManager>
GetServiceFlowManager
(
void
)
const
;
227
void
SetServiceFlowManager
(
Ptr<BsServiceFlowManager>
);
228
private
:
229
void
DoDispose
(
void
);
230
void
StartFrame
(
void
);
231
void
StartDlSubFrame
(
void
);
232
void
EndDlSubFrame
(
void
);
233
void
StartUlSubFrame
(
void
);
234
void
EndUlSubFrame
(
void
);
235
void
EndFrame
(
void
);
236
237
bool
DoSend
(
Ptr<Packet>
packet,
const
Mac48Address
& source,
const
Mac48Address
& dest, uint16_t protocolNumber);
238
void
DoReceive
(
Ptr<Packet>
packet);
242
void
CreateMapMessages
(
void
);
246
void
CreateDescriptorMessages
(
bool
sendDcd,
bool
senUcd);
247
void
SendBursts
(
void
);
248
249
Ptr<Packet>
CreateDlMap
(
void
);
250
Ptr<Packet>
CreateDcd
(
void
);
251
Ptr<Packet>
CreateUlMap
(
void
);
252
Ptr<Packet>
CreateUcd
(
void
);
253
void
SetDlBurstProfiles
(
Dcd
*dcd);
254
void
SetUlBurstProfiles
(
Ucd
*ucd);
255
256
void
MarkUplinkAllocationStart
(
Time
allocationStartTime);
257
void
MarkUplinkAllocationEnd
(
Time
allocationEndTime,
Cid
cid, uint8_t uiuc);
258
void
UplinkAllocationStart
(
void
);
259
void
UplinkAllocationEnd
(
Cid
cid, uint8_t uiuc);
260
void
RangingOppStart
(
void
);
261
262
// parameters defined in Table 342
263
Time
m_initialRangInterval
;
// in seconds
264
Time
m_dcdInterval
;
// in seconds
265
Time
m_ucdInterval
;
// in seconds
266
Time
m_intervalT8
;
// in milliseconds, wait for DSA/DSC Acknowledge timeout
267
268
uint8_t
m_maxRangCorrectionRetries
;
269
uint8_t
m_maxInvitedRangRetries
;
270
uint8_t
m_rangReqOppSize
;
// in symbols
271
uint8_t
m_bwReqOppSize
;
// in symbols
272
273
uint32_t
m_nrDlSymbols
;
274
uint32_t
m_nrUlSymbols
;
275
276
// to keep track total number of a certain management messages sent by the BS
277
uint32_t
m_nrDlMapSent
;
278
uint32_t
m_nrUlMapSent
;
279
// number of DCDs and UCDs sent even if same
280
uint32_t
m_nrDcdSent
;
281
uint32_t
m_nrUcdSent
;
282
283
uint32_t
m_dcdConfigChangeCount
;
284
uint32_t
m_ucdConfigChangeCount
;
285
286
uint32_t
m_framesSinceLastDcd
;
287
uint32_t
m_framesSinceLastUcd
;
288
289
// uint32_t m_nrFrames; //temporarily defined in wimax-net-device, as static
290
uint32_t
m_nrDlFrames
;
291
uint32_t
m_nrUlFrames
;
292
293
// to keep track if number of SSs have changed since the last frame
294
uint16_t
m_nrSsRegistered
;
295
296
uint16_t
m_nrDlAllocations
;
297
uint16_t
m_nrUlAllocations
;
298
299
Time
m_dlSubframeStartTime
;
300
Time
m_ulSubframeStartTime
;
301
302
uint8_t
m_ulAllocationNumber
;
// to see UL burst number
303
uint8_t
m_rangingOppNumber
;
// current ranging TO number
304
305
CidFactory
*
m_cidFactory
;
306
307
uint32_t
m_allocationStartTime
;
308
309
Ptr<SSManager>
m_ssManager
;
310
Ptr<UplinkScheduler>
m_uplinkScheduler
;
311
Ptr<BSScheduler>
m_scheduler
;
312
Ptr<BSLinkManager>
m_linkManager
;
313
Ptr<IpcsClassifier>
m_bsClassifier
;
314
Ptr<BsServiceFlowManager>
m_serviceFlowManager
;
315
// same fields as in PHY, for quick access
316
Time
m_psDuration
;
317
Time
m_symbolDuration
;
318
319
TracedCallback<Ptr<const Packet>
,
Mac48Address
,
Cid
>
m_traceBSRx
;
320
327
TracedCallback<Ptr<const Packet>
>
m_bsTxTrace
;
328
335
TracedCallback<Ptr<const Packet>
>
m_bsTxDropTrace
;
336
344
TracedCallback<Ptr<const Packet>
>
m_bsPromiscRxTrace
;
345
353
TracedCallback<Ptr<const Packet>
>
m_bsRxTrace
;
354
361
TracedCallback<Ptr<const Packet>
>
m_bsRxDropTrace
;
362
};
363
364
}
// namespace ns3
365
366
#endif
/* WIMAX_BS_NET_DEVICE_H */
src
wimax
model
bs-net-device.h
Generated on Fri Dec 21 2012 19:00:50 for ns-3 by
1.8.1.2