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
wimax-phy.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 INRIA
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: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
19
*/
20
21
#ifndef WIMAX_PHY_H
22
#define WIMAX_PHY_H
23
24
#include <stdint.h>
25
#include <list>
26
#include "ns3/callback.h"
27
#include "ns3/nstime.h"
28
#include "ns3/event-id.h"
29
#include "
bvec.h
"
30
#include "
send-params.h
"
31
#include "ns3/log.h"
32
#include "ns3/object.h"
33
#include "ns3/traced-callback.h"
34
35
namespace
ns3 {
36
37
class
WimaxChannel;
38
class
WimaxNetDevice;
39
class
NetDevice;
40
class
Packet;
41
45
class
WimaxPhy
:
public
Object
46
{
47
public
:
48
enum
ModulationType
// Table 356 and 362
49
{
50
MODULATION_TYPE_BPSK_12
,
MODULATION_TYPE_QPSK_12
,
MODULATION_TYPE_QPSK_34
,
MODULATION_TYPE_QAM16_12
,
51
MODULATION_TYPE_QAM16_34
,
MODULATION_TYPE_QAM64_23
,
MODULATION_TYPE_QAM64_34
52
};
53
54
enum
PhyState
55
{
56
PHY_STATE_IDLE
,
PHY_STATE_SCANNING
,
PHY_STATE_TX
,
PHY_STATE_RX
57
};
58
59
enum
PhyType
60
{
61
SimpleWimaxPhy
,
simpleOfdmWimaxPhy
62
};
63
64
static
TypeId
GetTypeId
(
void
);
65
WimaxPhy
(
void
);
66
virtual
~WimaxPhy
(
void
);
71
void
Attach
(
Ptr<WimaxChannel>
channel);
75
Ptr<WimaxChannel>
GetChannel
(
void
)
const
;
80
void
SetDevice
(
Ptr<WimaxNetDevice>
device);
84
Ptr<NetDevice>
GetDevice
(
void
)
const
;
89
void
SetReceiveCallback
(
Callback
<
void
,
Ptr<const PacketBurst>
> callback);
93
Callback<void, Ptr<const PacketBurst>
>
GetReceiveCallback
(
void
)
const
;
98
virtual
void
Send
(
SendParams
*params) = 0;
102
virtual
PhyType
GetPhyType
(
void
)
const
= 0;
108
void
SetDuplex
(uint64_t rxFrequency, uint64_t txFrequency);
113
void
SetSimplex
(uint64_t frequency);
117
uint64_t
GetRxFrequency
(
void
)
const
;
121
uint64_t
GetTxFrequency
(
void
)
const
;
125
uint64_t
GetScanningFrequency
(
void
)
const
;
131
void
SetNrCarriers
(uint8_t nrCarriers);
135
uint8_t
GetNrCarriers
(
void
)
const
;
140
void
SetFrameDuration
(
Time
frameDuration);
144
Time
GetFrameDurationSec
(
void
)
const
;
148
Time
GetFrameDuration
(
void
)
const
;
153
void
SetFrequency
(uint32_t frequency);
157
uint32_t
GetFrequency
(
void
)
const
;
162
void
SetChannelBandwidth
(uint32_t channelBandwidth);
166
uint32_t
GetChannelBandwidth
(
void
)
const
;
170
uint16_t
GetNfft
(
void
)
const
;
174
double
GetSamplingFactor
(
void
)
const
;
178
double
GetSamplingFrequency
(
void
)
const
;
183
void
SetPsDuration
(
Time
psDuration);
187
Time
GetPsDuration
(
void
)
const
;
192
void
SetSymbolDuration
(
Time
symbolDuration);
196
Time
GetSymbolDuration
(
void
)
const
;
200
double
GetGValue
(
void
)
const
;
205
void
SetPsPerSymbol
(uint16_t psPerSymbol);
209
uint16_t
GetPsPerSymbol
(
void
)
const
;
210
215
void
SetPsPerFrame
(uint16_t psPerFrame);
219
uint16_t
GetPsPerFrame
(
void
)
const
;
224
void
SetSymbolsPerFrame
(uint32_t symbolsPerFrame);
228
uint32_t
GetSymbolsPerFrame
(
void
)
const
;
232
bool
IsDuplex
(
void
)
const
;
237
void
SetState
(
PhyState
state);
241
PhyState
GetState
(
void
)
const
;
248
void
StartScanning
(uint64_t frequency,
Time
timeout
,
Callback<void, bool, uint64_t>
callback);
249
253
void
SetScanningCallback
(
void
)
const
;
254
EventId
GetChnlSrchTimeoutEvent
(
void
)
const
;
259
void
SetDataRates
(
void
);
264
uint32_t
GetDataRate
(
ModulationType
modulationType)
const
;
270
Time
GetTransmissionTime
(uint32_t size,
ModulationType
modulationType)
const
;
276
uint64_t
GetNrSymbols
(uint32_t size,
ModulationType
modulationType)
const
;
282
uint64_t
GetNrBytes
(uint32_t symbols,
ModulationType
modulationType)
const
;
286
uint16_t
GetTtg
(
void
)
const
;
290
uint16_t
GetRtg
(
void
)
const
;
291
uint8_t
GetFrameDurationCode
(
void
)
const
;
292
Time
GetFrameDuration
(uint8_t frameDurationCode)
const
;
296
void
SetPhyParameters
(
void
);
297
virtual
void
DoDispose
(
void
);
301
virtual
Ptr<Object>
GetMobility
(
void
);
306
virtual
void
SetMobility
(
Ptr<Object>
mobility);
307
316
virtual
int64_t
AssignStreams
(int64_t stream) = 0;
317
318
private
:
319
void
GetModulationFecParams
(
ModulationType
modulationType, uint8_t &bitsPerSymbol,
double
&fecCode)
const
;
320
void
EndScanning
(
void
);
321
virtual
Time
DoGetTransmissionTime
(uint32_t size,
ModulationType
modulationType)
const
= 0;
322
virtual
void
DoAttach
(
Ptr<WimaxChannel>
channel) = 0;
323
virtual
void
DoSetDataRates
(
void
) = 0;
324
virtual
uint32_t
DoGetDataRate
(
ModulationType
modulationType)
const
= 0;
325
virtual
uint64_t
DoGetNrSymbols
(uint32_t size,
ModulationType
modulationType)
const
= 0;
326
virtual
uint64_t
DoGetNrBytes
(uint32_t symbols,
ModulationType
modulationType)
const
= 0;
327
virtual
uint16_t
DoGetTtg
(
void
)
const
= 0;
328
virtual
uint16_t
DoGetRtg
(
void
)
const
= 0;
329
330
virtual
uint8_t
DoGetFrameDurationCode
(
void
)
const
= 0;
331
virtual
Time
DoGetFrameDuration
(uint8_t frameDurationCode)
const
= 0;
332
virtual
void
DoSetPhyParameters
(
void
) = 0;
333
virtual
double
DoGetSamplingFactor
(
void
)
const
= 0;
334
virtual
uint16_t
DoGetNfft
(
void
)
const
= 0;
335
virtual
double
DoGetSamplingFrequency
(
void
)
const
= 0;
336
virtual
double
DoGetGValue
(
void
)
const
= 0;
337
338
Ptr<WimaxNetDevice>
m_device
;
339
Ptr<WimaxChannel>
m_channel
;
340
341
uint64_t
m_txFrequency
;
342
uint64_t
m_rxFrequency
;
343
uint64_t
m_scanningFrequency
;
344
EventId
m_dlChnlSrchTimeoutEvent
;
345
bool
m_duplex
;
346
PhyState
m_state
;
347
348
Callback<void, Ptr<const PacketBurst>
>
m_rxCallback
;
349
Callback<void, bool, uint64_t>
m_scanningCallback
;
350
351
uint8_t
m_nrCarriers
;
352
Time
m_frameDuration
;
// in seconds
353
uint32_t
m_frequency
;
// in KHz
354
uint32_t
m_channelBandwidth
;
// in Hz
355
Time
m_psDuration
;
// in seconds
356
Time
m_symbolDuration
;
// in seconds
357
uint16_t
m_psPerSymbol
;
358
uint16_t
m_psPerFrame
;
359
uint32_t
m_symbolsPerFrame
;
360
Ptr<Object>
m_mobility
;
361
};
362
363
}
// namespace ns3
364
365
#endif
/* WIMAX_PHY_H */
src
wimax
model
wimax-phy.h
Generated on Tue May 14 2013 11:08:38 for ns-3 by
1.8.1.2