author | Peter D. Barnes, Jr. <barnes26@llnl.gov> |
Wed, 15 May 2013 14:45:28 -0400 | |
changeset 9782 | ed82eb2702d0 |
parent 9071 | 8d6ac7364664 |
child 9784 | 740a983ed25b |
permissions | -rw-r--r-- |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
2 |
/* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
3 |
* Copyright (c) 2007,2008, 2009 INRIA, UDcast |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
4 |
* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
8 |
* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
13 |
* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
17 |
* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
18 |
* Author: Mohamed Amine Ismail <amine.ismail@sophia.inria.fr> |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
19 |
* <amine.ismail@udcast.com> |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
20 |
*/ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
21 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#include "ns3/simulator.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
23 |
#include "ns3/packet.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
24 |
#include "ns3/node.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
25 |
#include "ns3/uinteger.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
26 |
#include "ns3/double.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
27 |
#include "ns3/string.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
28 |
#include "wimax-net-device.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
29 |
#include "simple-ofdm-wimax-phy.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
30 |
#include "wimax-channel.h" |
6330 | 31 |
#include "ns3/packet-burst.h" |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
32 |
#include "wimax-mac-header.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
33 |
#include "simple-ofdm-wimax-channel.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
34 |
#include "ns3/trace-source-accessor.h" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
35 |
#include <string> |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
36 |
#include <cmath> |
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
37 |
|
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
38 |
NS_LOG_COMPONENT_DEFINE ("SimpleOfdmWimaxPhy"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
39 |
namespace ns3 { |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
40 |
|
6393
f7e1f9dfa08d
ensure objects are regsitered
Josh Pelkey <jpelkey@gatech.edu>
parents:
6330
diff
changeset
|
41 |
NS_OBJECT_ENSURE_REGISTERED (SimpleOfdmWimaxPhy); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
42 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
43 |
TypeId SimpleOfdmWimaxPhy::GetTypeId (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
44 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
45 |
static TypeId |
7252
c8200621e252
rerun check-style.py with uncrustify-0.58
Tom Henderson <tomh@tomh.org>
parents:
7195
diff
changeset
|
46 |
tid = |
6445 | 47 |
TypeId ("ns3::SimpleOfdmWimaxPhy").SetParent<WimaxPhy> () |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
48 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
49 |
.AddAttribute ("NoiseFigure", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
50 |
"Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver.", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
51 |
DoubleValue (5), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
52 |
MakeDoubleAccessor (&SimpleOfdmWimaxPhy::SetNoiseFigure, &SimpleOfdmWimaxPhy::GetNoiseFigure), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
53 |
MakeDoubleChecker<double> ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
54 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
55 |
.AddAttribute ("TxPower", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
56 |
"Transmission power (dB).", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
57 |
DoubleValue (30), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
58 |
MakeDoubleAccessor (&SimpleOfdmWimaxPhy::SetTxPower, &SimpleOfdmWimaxPhy::GetTxPower), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
59 |
MakeDoubleChecker<double> ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
60 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
61 |
.AddAttribute ("G", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
62 |
"This is the ratio of CP time to useful time.", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
63 |
DoubleValue (0.25), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
64 |
MakeDoubleAccessor (&SimpleOfdmWimaxPhy::DoSetGValue, &SimpleOfdmWimaxPhy::DoGetGValue), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
65 |
MakeDoubleChecker<double> ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
66 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
67 |
.AddAttribute ("TxGain", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
68 |
"Transmission gain (dB).", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
69 |
DoubleValue (0), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
70 |
MakeDoubleAccessor (&SimpleOfdmWimaxPhy::SetTxGain, &SimpleOfdmWimaxPhy::GetTxGain), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
71 |
MakeDoubleChecker<double> ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
72 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
73 |
.AddAttribute ("RxGain", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
74 |
"Reception gain (dB).", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
75 |
DoubleValue (0), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
76 |
MakeDoubleAccessor (&SimpleOfdmWimaxPhy::SetRxGain, &SimpleOfdmWimaxPhy::GetRxGain), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
77 |
MakeDoubleChecker<double> ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
78 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
79 |
.AddAttribute ("Nfft", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
80 |
"FFT size", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
81 |
UintegerValue (256), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
82 |
MakeUintegerAccessor (&SimpleOfdmWimaxPhy::DoSetNfft, &SimpleOfdmWimaxPhy::DoGetNfft), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
83 |
MakeUintegerChecker<uint16_t> (256, 1024)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
84 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
85 |
.AddAttribute ("TraceFilePath", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
86 |
"Path to the directory containing SNR to block error rate files", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
87 |
StringValue (""), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
88 |
MakeStringAccessor (&SimpleOfdmWimaxPhy::GetTraceFilePath, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
89 |
&SimpleOfdmWimaxPhy::SetTraceFilePath), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
90 |
MakeStringChecker ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
91 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
92 |
.AddTraceSource ("Rx", "Receive trace", MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_traceRx)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
93 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
94 |
.AddTraceSource ("Tx", "Transmit trace", MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_traceTx)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
95 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
96 |
.AddTraceSource ("PhyTxBegin", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
97 |
"Trace source indicating a packet has begun transmitting over the channel medium", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
98 |
MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_phyTxBeginTrace)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
99 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
100 |
.AddTraceSource ("PhyTxEnd", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
101 |
"Trace source indicating a packet has been completely transmitted over the channel", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
102 |
MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_phyTxEndTrace)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
103 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
104 |
.AddTraceSource ("PhyTxDrop", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
105 |
"Trace source indicating a packet has been dropped by the device during transmission", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
106 |
MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_phyTxDropTrace)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
107 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
108 |
.AddTraceSource ("PhyRxBegin", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
109 |
"Trace source indicating a packet has begun being received from the channel medium by the device", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
110 |
MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_phyRxBeginTrace)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
111 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
112 |
.AddTraceSource ("PhyRxEnd", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
113 |
"Trace source indicating a packet has been completely received from the channel medium by the device", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
114 |
MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_phyRxEndTrace)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
115 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
116 |
.AddTraceSource ("PhyRxDrop", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
117 |
"Trace source indicating a packet has been dropped by the device during reception", |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
118 |
MakeTraceSourceAccessor (&SimpleOfdmWimaxPhy::m_phyRxDropTrace)); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
119 |
return tid; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
120 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
121 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
122 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
123 |
SimpleOfdmWimaxPhy::InitSimpleOfdmWimaxPhy (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
124 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
125 |
m_fecBlockSize = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
126 |
m_nrFecBlocksSent = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
127 |
m_dataRateBpsk12 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
128 |
m_dataRateQpsk12 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
129 |
m_dataRateQpsk34 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
130 |
m_dataRateQam16_12 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
131 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
132 |
m_dataRateQam16_34 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
133 |
m_dataRateQam64_23 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
134 |
m_dataRateQam64_34 = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
135 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
136 |
m_nrBlocks = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
137 |
m_blockSize = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
138 |
m_paddingBits = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
139 |
m_rxGain = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
140 |
m_txGain = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
141 |
m_nfft = 256; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
142 |
m_g = (double) 1 / 4; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
143 |
SetNrCarriers (192); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
144 |
m_fecBlocks = new std::list<bvec>; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
145 |
m_receivedFecBlocks = new std::list<bvec>; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
146 |
m_currentBurstSize = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
147 |
m_noiseFigure = 5; // dB |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
148 |
m_txPower = 30; // dBm |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
149 |
SetBandwidth (10000000); // 10Mhz |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
150 |
m_nbErroneousBlock = 0; |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
151 |
m_nrRecivedFecBlocks = 0; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
152 |
m_snrToBlockErrorRateManager = new SNRToBlockErrorRateManager (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
153 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
154 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
155 |
SimpleOfdmWimaxPhy::SimpleOfdmWimaxPhy (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
156 |
{ |
8982
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
157 |
m_URNG = CreateObject<UniformRandomVariable> (); |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
158 |
|
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
159 |
InitSimpleOfdmWimaxPhy (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
160 |
m_snrToBlockErrorRateManager->SetTraceFilePath ((char*) ""); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
161 |
m_snrToBlockErrorRateManager->LoadTraces (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
162 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
163 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
164 |
SimpleOfdmWimaxPhy::SimpleOfdmWimaxPhy (char * tracesPath) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
165 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
166 |
InitSimpleOfdmWimaxPhy (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
167 |
m_snrToBlockErrorRateManager->SetTraceFilePath (tracesPath); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
168 |
m_snrToBlockErrorRateManager->LoadTraces (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
169 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
170 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
171 |
SimpleOfdmWimaxPhy::~SimpleOfdmWimaxPhy (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
172 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
173 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
174 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
175 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
176 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
177 |
SimpleOfdmWimaxPhy::ActivateLoss (bool loss) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
178 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
179 |
m_snrToBlockErrorRateManager->ActivateLoss (loss); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
180 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
181 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
182 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
183 |
SimpleOfdmWimaxPhy::SetSNRToBlockErrorRateTracesPath (char * tracesPath) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
184 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
185 |
m_snrToBlockErrorRateManager->SetTraceFilePath (tracesPath); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
186 |
m_snrToBlockErrorRateManager->ReLoadTraces (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
187 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
188 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
189 |
uint32_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
190 |
SimpleOfdmWimaxPhy::GetBandwidth (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
191 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
192 |
return WimaxPhy::GetChannelBandwidth (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
193 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
194 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
195 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
196 |
SimpleOfdmWimaxPhy::SetBandwidth (uint32_t BW) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
197 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
198 |
WimaxPhy::SetChannelBandwidth (BW); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
199 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
200 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
201 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
202 |
SimpleOfdmWimaxPhy::GetTxPower (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
203 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
204 |
return m_txPower; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
205 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
206 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
207 |
SimpleOfdmWimaxPhy::SetTxPower (double txPower) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
208 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
209 |
m_txPower = txPower; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
210 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
211 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
212 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
213 |
SimpleOfdmWimaxPhy::GetNoiseFigure (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
214 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
215 |
return m_noiseFigure; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
216 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
217 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
218 |
SimpleOfdmWimaxPhy::SetNoiseFigure (double noiseFigure) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
219 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
220 |
m_noiseFigure = noiseFigure; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
221 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
222 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
223 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
224 |
SimpleOfdmWimaxPhy::DoDispose (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
225 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
226 |
delete m_receivedFecBlocks; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
227 |
delete m_fecBlocks; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
228 |
m_receivedFecBlocks = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
229 |
m_fecBlocks = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
230 |
delete m_snrToBlockErrorRateManager; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
231 |
WimaxPhy::DoDispose (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
232 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
233 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
234 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
235 |
SimpleOfdmWimaxPhy::DoAttach (Ptr<WimaxChannel> channel) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
236 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
237 |
GetChannel ()->Attach (this); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
238 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
239 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
240 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
241 |
SimpleOfdmWimaxPhy::Send (SendParams *params) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
242 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
243 |
OfdmSendParams *o_params = dynamic_cast<OfdmSendParams*> (params); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
244 |
Send (o_params->GetBurst (), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
245 |
(WimaxPhy::ModulationType) o_params->GetModulationType (), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
246 |
o_params->GetDirection ()); |
6130
f8c1ac900340
Enabling pcap tracing in examples/wimax/wimax-simlpe.cc
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
6126
diff
changeset
|
247 |
|
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
248 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
249 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
250 |
WimaxPhy::PhyType |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
251 |
SimpleOfdmWimaxPhy::GetPhyType (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
252 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
253 |
return WimaxPhy::simpleOfdmWimaxPhy; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
254 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
255 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
256 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
257 |
SimpleOfdmWimaxPhy::Send (Ptr<PacketBurst> burst, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
258 |
WimaxPhy::ModulationType modulationType, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
259 |
uint8_t direction) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
260 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
261 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
262 |
if (GetState () != PHY_STATE_TX) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
263 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
264 |
m_currentBurstSize = burst->GetSize (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
265 |
m_nrFecBlocksSent = 0; |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
266 |
m_currentBurst = burst; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
267 |
SetBlockParameters (burst->GetSize (), modulationType); |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
268 |
NotifyTxBegin (m_currentBurst); |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
269 |
StartSendDummyFecBlock (true, modulationType, direction); |
6130
f8c1ac900340
Enabling pcap tracing in examples/wimax/wimax-simlpe.cc
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
6126
diff
changeset
|
270 |
m_traceTx (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
271 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
272 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
273 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
274 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
275 |
SimpleOfdmWimaxPhy::StartSendDummyFecBlock (bool isFirstBlock, |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
276 |
WimaxPhy::ModulationType modulationType, |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
277 |
uint8_t direction) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
278 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
279 |
SetState (PHY_STATE_TX); |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
280 |
bool isLastFecBlock = 0; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
281 |
if (isFirstBlock) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
282 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
283 |
m_blockTime = GetBlockTransmissionTime (modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
284 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
285 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
286 |
SimpleOfdmWimaxChannel *channel = dynamic_cast<SimpleOfdmWimaxChannel*> (PeekPointer (GetChannel ())); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
287 |
|
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
288 |
if (m_nrRemainingBlocksToSend==1) |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
289 |
{ |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
290 |
isLastFecBlock = true; |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
291 |
} |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
292 |
else |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
293 |
{ |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
294 |
isLastFecBlock = false; |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
295 |
} |
7107
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
296 |
channel->Send (m_blockTime, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
297 |
m_currentBurstSize, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
298 |
this, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
299 |
isFirstBlock, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
300 |
isLastFecBlock, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
301 |
GetTxFrequency (), |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
302 |
modulationType, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
303 |
direction, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
304 |
m_txPower, |
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
305 |
m_currentBurst); |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
306 |
|
7107
6c0fabb46bce
WiMAX code style patch
Flavio Kubota <kubota@lrc.ic.unicamp.br>
parents:
6852
diff
changeset
|
307 |
m_nrRemainingBlocksToSend--; |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
308 |
Simulator::Schedule (m_blockTime, &SimpleOfdmWimaxPhy::EndSendFecBlock, this, modulationType, direction); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
309 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
310 |
|
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
311 |
|
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
312 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
313 |
SimpleOfdmWimaxPhy::EndSendFecBlock (WimaxPhy::ModulationType modulationType, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
314 |
uint8_t direction) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
315 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
316 |
m_nrFecBlocksSent++; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
317 |
SetState (PHY_STATE_IDLE); |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
318 |
|
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
319 |
if (m_nrFecBlocksSent * m_blockSize == m_currentBurstSize * 8 + m_paddingBits) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
320 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
321 |
// this is the last FEC block of the burst |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
322 |
NS_ASSERT_MSG (m_nrRemainingBlocksToSend == 0, "Error while sending a burst"); |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
323 |
NotifyTxEnd (m_currentBurst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
324 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
325 |
else |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
326 |
{ |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
327 |
StartSendDummyFecBlock (false,modulationType,direction); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
328 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
329 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
330 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
331 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
332 |
SimpleOfdmWimaxPhy::EndSend (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
333 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
334 |
SetState (PHY_STATE_IDLE); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
335 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
336 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
337 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
338 |
SimpleOfdmWimaxPhy::StartReceive (uint32_t burstSize, |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
339 |
bool isFirstBlock, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
340 |
uint64_t frequency, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
341 |
WimaxPhy::ModulationType modulationType, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
342 |
uint8_t direction, |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
343 |
double rxPower, |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
344 |
Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
345 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
346 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
347 |
uint8_t drop = 0; |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
348 |
double Nwb = -114 + m_noiseFigure + 10 * std::log (GetBandwidth () / 1000000000.0) / 2.303; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
349 |
double SNR = rxPower - Nwb; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
350 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
351 |
SNRToBlockErrorRateRecord * record = m_snrToBlockErrorRateManager->GetSNRToBlockErrorRateRecord (SNR, modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
352 |
double I1 = record->GetI1 (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
353 |
double I2 = record->GetI2 (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
354 |
|
8982
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
355 |
double blockErrorRate = m_URNG->GetValue (I1, I2); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
356 |
|
8982
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
357 |
double rand = m_URNG->GetValue (0.0, 1.0); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
358 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
359 |
if (rand < blockErrorRate) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
360 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
361 |
drop = 1; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
362 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
363 |
if (rand > blockErrorRate) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
364 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
365 |
drop = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
366 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
367 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
368 |
if (blockErrorRate == 1.0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
369 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
370 |
drop = 1; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
371 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
372 |
if (blockErrorRate == 0.0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
373 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
374 |
drop = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
375 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
376 |
delete record; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
377 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
378 |
NS_LOG_INFO ("PHY: Receive rxPower=" << rxPower << ", Nwb=" << Nwb << ", SNR=" << SNR << ", Modulation=" |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
379 |
<< modulationType << ", BlocErrorRate=" << blockErrorRate << ", drop=" << (int) drop); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
380 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
381 |
switch (GetState ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
382 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
383 |
case PHY_STATE_SCANNING: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
384 |
if (frequency == GetScanningFrequency ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
385 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
386 |
Simulator::Cancel (GetChnlSrchTimeoutEvent ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
387 |
SetScanningCallback (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
388 |
SetSimplex (frequency); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
389 |
SetState (PHY_STATE_IDLE); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
390 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
391 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
392 |
case PHY_STATE_IDLE: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
393 |
if (frequency == GetRxFrequency ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
394 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
395 |
if (isFirstBlock) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
396 |
{ |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
397 |
NotifyRxBegin (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
398 |
m_receivedFecBlocks->clear (); |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
399 |
m_nrRecivedFecBlocks=0; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
400 |
SetBlockParameters (burstSize, modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
401 |
m_blockTime = GetBlockTransmissionTime (modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
402 |
} |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
403 |
|
6199
51d002229ef7
Bug 866 - WiMAX mobility models not aggregated to Node
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
6130
diff
changeset
|
404 |
Simulator::Schedule (m_blockTime, |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
405 |
&SimpleOfdmWimaxPhy::EndReceiveFecBlock, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
406 |
this, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
407 |
burstSize, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
408 |
modulationType, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
409 |
direction, |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
410 |
drop, |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
411 |
burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
412 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
413 |
SetState (PHY_STATE_RX); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
414 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
415 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
416 |
case PHY_STATE_RX: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
417 |
// drop |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
418 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
419 |
case PHY_STATE_TX: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
420 |
if (IsDuplex () && frequency == GetRxFrequency ()) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
421 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
422 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
423 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
424 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
425 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
426 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
427 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
428 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
429 |
SimpleOfdmWimaxPhy::EndReceiveFecBlock (uint32_t burstSize, |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
430 |
WimaxPhy::ModulationType modulationType, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
431 |
uint8_t direction, |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
432 |
uint8_t drop, |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
433 |
Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
434 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
435 |
SetState (PHY_STATE_IDLE); |
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
436 |
m_nrRecivedFecBlocks++; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
437 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
438 |
if (drop == true) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
439 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
440 |
m_nbErroneousBlock++; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
441 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
442 |
|
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
443 |
if ((uint32_t) m_nrRecivedFecBlocks * m_blockSize == burstSize * 8 + m_paddingBits) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
444 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
445 |
NotifyRxEnd (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
446 |
if (m_nbErroneousBlock == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
447 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
448 |
Simulator::Schedule (Seconds (0), |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
449 |
&SimpleOfdmWimaxPhy::EndReceive, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
450 |
this, |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
451 |
burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
452 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
453 |
else |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
454 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
455 |
NotifyRxDrop (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
456 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
457 |
m_nbErroneousBlock = 0; |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
458 |
m_nrRecivedFecBlocks = 0; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
459 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
460 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
461 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
462 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
463 |
SimpleOfdmWimaxPhy::EndReceive (Ptr<const PacketBurst> burst) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
464 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
465 |
Ptr<PacketBurst> b = burst->Copy (); |
6130
f8c1ac900340
Enabling pcap tracing in examples/wimax/wimax-simlpe.cc
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
6126
diff
changeset
|
466 |
GetReceiveCallback () (b); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
467 |
m_traceRx (burst); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
468 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
469 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
470 |
bvec |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
471 |
SimpleOfdmWimaxPhy::ConvertBurstToBits (Ptr<const PacketBurst> burst) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
472 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
473 |
bvec buffer (burst->GetSize () * 8, 0); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
474 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
475 |
std::list<Ptr<Packet> > packets = burst->GetPackets (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
476 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
477 |
uint32_t j = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
478 |
for (std::list<Ptr<Packet> >::iterator iter = packets.begin (); iter != packets.end (); ++iter) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
479 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
480 |
Ptr<Packet> packet = *iter; |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
481 |
uint8_t *pstart = (uint8_t*) std::malloc (packet->GetSize ()); |
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
482 |
std::memset (pstart, 0, packet->GetSize ()); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
483 |
packet->CopyData (pstart, packet->GetSize ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
484 |
bvec temp (8); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
485 |
temp.resize (0, 0); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
486 |
temp.resize (8, 0); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
487 |
for (uint32_t i = 0; i < packet->GetSize (); i++) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
488 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
489 |
for (uint8_t l = 0; l < 8; l++) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
490 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
491 |
temp[l] = (bool)((((uint8_t) pstart[i]) >> (7 - l)) & 0x01); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
492 |
buffer.at (j * 8 + l) = temp[l]; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
493 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
494 |
j++; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
495 |
} |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
496 |
std::free (pstart); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
497 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
498 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
499 |
return buffer; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
500 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
501 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
502 |
/* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
503 |
Converts back the bit buffer (bvec) to the actual burst. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
504 |
Actually creates byte buffer from the bvec and resets the buffer |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
505 |
of each packet in the copy of the orifinal burst stored before transmitting. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
506 |
By doing this it preserves the metadata and tags in the packet. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
507 |
Function could also be named DeserializeBurst because actually it |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
508 |
copying to the burst's byte buffer. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
509 |
*/ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
510 |
Ptr<PacketBurst> |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
511 |
SimpleOfdmWimaxPhy::ConvertBitsToBurst (bvec buffer) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
512 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
513 |
uint8_t init[buffer.size () / 8]; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
514 |
uint8_t *pstart = init; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
515 |
uint8_t temp; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
516 |
int32_t j = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
517 |
// recreating byte buffer from bit buffer (bvec) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
518 |
for (uint32_t i = 0; i < buffer.size (); i += 8) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
519 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
520 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
521 |
temp = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
522 |
for (int l = 0; l < 8; l++) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
523 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
524 |
bool bin = buffer.at (i + l); |
9071
8d6ac7364664
fix error: call of overloaded pow() is ambiguous
Tom Henderson <tomh@tomh.org>
parents:
9063
diff
changeset
|
525 |
temp += (uint8_t)(bin * std::pow (2.0, (7 - l))); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
526 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
527 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
528 |
*(pstart + j) = temp; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
529 |
j++; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
530 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
531 |
uint16_t bufferSize = buffer.size () / 8; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
532 |
uint16_t pos = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
533 |
Ptr<PacketBurst> RecvBurst = Create<PacketBurst> (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
534 |
while (pos < bufferSize) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
535 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
536 |
uint16_t packetSize = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
537 |
// Get the header type: first bit |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
538 |
uint8_t ht = (pstart[pos] >> 7) & 0x01; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
539 |
if (ht == 1) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
540 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
541 |
// BW request header. Size is always 8 bytes |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
542 |
packetSize = 6; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
543 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
544 |
else |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
545 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
546 |
// Read the size |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
547 |
uint8_t Len_MSB = pstart[pos + 1] & 0x07; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
548 |
packetSize = (uint16_t)((uint16_t)(Len_MSB << 8) | (uint16_t)(pstart[pos + 2])); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
549 |
if (packetSize == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
550 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
551 |
break; // padding |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
552 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
553 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
554 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
555 |
Ptr<Packet> p = Create<Packet> (&(pstart[pos]), packetSize); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
556 |
RecvBurst->AddPacket (p); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
557 |
pos += packetSize; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
558 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
559 |
return RecvBurst; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
560 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
561 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
562 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
563 |
SimpleOfdmWimaxPhy::CreateFecBlocks (const bvec &buffer, WimaxPhy::ModulationType modulationType) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
564 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
565 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
566 |
bvec fecBlock (m_blockSize); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
567 |
for (uint32_t i = 0, j = m_nrBlocks; j > 0; i += m_blockSize, j--) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
568 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
569 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
570 |
if (j == 1 && m_paddingBits > 0) // last block can be smaller than block size |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
571 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
572 |
fecBlock = bvec (buffer.begin () + i, buffer.end ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
573 |
fecBlock.resize (m_blockSize, 0); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
574 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
575 |
else |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
576 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
577 |
fecBlock = bvec (buffer.begin () + i, buffer.begin () + i + m_blockSize); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
578 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
579 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
580 |
m_fecBlocks->push_back (fecBlock); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
581 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
582 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
583 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
584 |
bvec |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
585 |
SimpleOfdmWimaxPhy::RecreateBuffer () |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
586 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
587 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
588 |
bvec buffer (m_blockSize * m_nrBlocks); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
589 |
bvec block (m_blockSize); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
590 |
uint32_t i = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
591 |
for (uint32_t j = 0; j < m_nrBlocks; j++) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
592 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
593 |
bvec tmpRecFecBloc = m_receivedFecBlocks->front (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
594 |
buffer.insert (buffer.begin () + i, tmpRecFecBloc.begin (), tmpRecFecBloc.end ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
595 |
m_receivedFecBlocks->pop_front (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
596 |
i += m_blockSize; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
597 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
598 |
return buffer; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
599 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
600 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
601 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
602 |
SimpleOfdmWimaxPhy::DoSetDataRates (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
603 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
604 |
m_dataRateBpsk12 = CalculateDataRate (MODULATION_TYPE_BPSK_12); // 6912000 bps |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
605 |
m_dataRateQpsk12 = CalculateDataRate (MODULATION_TYPE_QPSK_12); // 13824000 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
606 |
m_dataRateQpsk34 = CalculateDataRate (MODULATION_TYPE_QPSK_34); // 20736000 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
607 |
m_dataRateQam16_12 = CalculateDataRate (MODULATION_TYPE_QAM16_12); // 27648000 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
608 |
m_dataRateQam16_34 = CalculateDataRate (MODULATION_TYPE_QAM16_34); // 41472000 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
609 |
m_dataRateQam64_23 = CalculateDataRate (MODULATION_TYPE_QAM64_23); // 55224000 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
610 |
m_dataRateQam64_34 = CalculateDataRate (MODULATION_TYPE_QAM64_34); // 62208000 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
611 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
612 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
613 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
614 |
SimpleOfdmWimaxPhy::GetModulationFecParams (WimaxPhy::ModulationType modulationType, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
615 |
uint8_t &bitsPerSymbol, |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
616 |
double &fecCode) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
617 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
618 |
switch (modulationType) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
619 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
620 |
case MODULATION_TYPE_BPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
621 |
bitsPerSymbol = 1; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
622 |
fecCode = (double) 1 / 2; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
623 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
624 |
case MODULATION_TYPE_QPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
625 |
bitsPerSymbol = 2; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
626 |
fecCode = (double) 1 / 2; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
627 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
628 |
case MODULATION_TYPE_QPSK_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
629 |
bitsPerSymbol = 2; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
630 |
fecCode = (double) 3 / 4; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
631 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
632 |
case MODULATION_TYPE_QAM16_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
633 |
bitsPerSymbol = 4; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
634 |
fecCode = (double) 1 / 2; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
635 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
636 |
case MODULATION_TYPE_QAM16_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
637 |
bitsPerSymbol = 4; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
638 |
fecCode = (double) 3 / 4; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
639 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
640 |
case MODULATION_TYPE_QAM64_23: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
641 |
bitsPerSymbol = 6; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
642 |
fecCode = (double) 2 / 3; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
643 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
644 |
case MODULATION_TYPE_QAM64_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
645 |
bitsPerSymbol = 6; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
646 |
fecCode = 0.75; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
647 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
648 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
649 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
650 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
651 |
uint32_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
652 |
SimpleOfdmWimaxPhy::CalculateDataRate (WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
653 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
654 |
uint8_t bitsPerSymbol = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
655 |
double fecCode = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
656 |
GetModulationFecParams (modulationType, bitsPerSymbol, fecCode); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
657 |
double symbolsPerSecond = 1 / GetSymbolDuration ().GetSeconds (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
658 |
uint16_t bitsTransmittedPerSymbol = (uint16_t)(bitsPerSymbol * GetNrCarriers () * fecCode); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
659 |
// 96, 192, 288, 384, 576, 767 and 864 bits per symbol for the seven modulations, respectively |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
660 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
661 |
return (uint32_t) symbolsPerSecond * bitsTransmittedPerSymbol; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
662 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
663 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
664 |
uint32_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
665 |
SimpleOfdmWimaxPhy::DoGetDataRate (WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
666 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
667 |
switch (modulationType) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
668 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
669 |
case MODULATION_TYPE_BPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
670 |
return m_dataRateBpsk12; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
671 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
672 |
case MODULATION_TYPE_QPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
673 |
return m_dataRateQpsk12; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
674 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
675 |
case MODULATION_TYPE_QPSK_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
676 |
return m_dataRateQpsk34; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
677 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
678 |
case MODULATION_TYPE_QAM16_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
679 |
return m_dataRateQam16_12; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
680 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
681 |
case MODULATION_TYPE_QAM16_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
682 |
return m_dataRateQam16_34; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
683 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
684 |
case MODULATION_TYPE_QAM64_23: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
685 |
return m_dataRateQam64_23; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
686 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
687 |
case MODULATION_TYPE_QAM64_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
688 |
return m_dataRateQam64_34; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
689 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
690 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
691 |
NS_FATAL_ERROR ("Invalid modulation type"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
692 |
return 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
693 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
694 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
695 |
Time |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
696 |
SimpleOfdmWimaxPhy::GetBlockTransmissionTime (WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
697 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
698 |
return Seconds ((double) GetFecBlockSize (modulationType) / DoGetDataRate (modulationType)); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
699 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
700 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
701 |
Time |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
702 |
SimpleOfdmWimaxPhy::DoGetTransmissionTime (uint32_t size, WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
703 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
704 |
/*adding 3 extra nano second to cope with the loss of precision problem. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
705 |
the time is internally stored in a 64 bit hence a floating-point time would loss |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
706 |
precision, e.g., 0.00001388888888888889 seconds will become 13888888888 femtoseconds.*/ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
707 |
return Seconds (DoGetNrSymbols (size, modulationType) * GetSymbolDuration ().GetSeconds ()) + NanoSeconds (3); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
708 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
709 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
710 |
uint64_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
711 |
SimpleOfdmWimaxPhy::DoGetNrSymbols (uint32_t size, WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
712 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
713 |
Time transmissionTime = Seconds ((double)(GetNrBlocks (size, modulationType) * GetFecBlockSize (modulationType)) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
714 |
/ DoGetDataRate (modulationType)); |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
715 |
return (uint64_t) std::ceil (transmissionTime.GetSeconds () / GetSymbolDuration ().GetSeconds ()); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
716 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
717 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
718 |
uint64_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
719 |
SimpleOfdmWimaxPhy::DoGetNrBytes (uint32_t symbols, WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
720 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
721 |
Time transmissionTime = Seconds (symbols * GetSymbolDuration ().GetSeconds ()); |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents:
8982
diff
changeset
|
722 |
return (uint64_t) std::floor ((transmissionTime.GetSeconds () * DoGetDataRate (modulationType)) / 8); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
723 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
724 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
725 |
uint32_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
726 |
SimpleOfdmWimaxPhy::GetFecBlockSize (WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
727 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
728 |
uint32_t blockSize = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
729 |
switch (modulationType) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
730 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
731 |
case MODULATION_TYPE_BPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
732 |
blockSize = 12; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
733 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
734 |
case MODULATION_TYPE_QPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
735 |
blockSize = 24; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
736 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
737 |
case MODULATION_TYPE_QPSK_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
738 |
blockSize = 36; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
739 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
740 |
case MODULATION_TYPE_QAM16_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
741 |
blockSize = 48; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
742 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
743 |
case MODULATION_TYPE_QAM16_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
744 |
blockSize = 72; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
745 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
746 |
case MODULATION_TYPE_QAM64_23: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
747 |
blockSize = 96; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
748 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
749 |
case MODULATION_TYPE_QAM64_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
750 |
blockSize = 108; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
751 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
752 |
default: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
753 |
NS_FATAL_ERROR ("Invalid modulation type"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
754 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
755 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
756 |
return blockSize * 8; // in bits |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
757 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
758 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
759 |
// Channel coding block size, Table 215, page 434 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
760 |
uint32_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
761 |
SimpleOfdmWimaxPhy::GetCodedFecBlockSize (WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
762 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
763 |
uint32_t blockSize = 0; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
764 |
switch (modulationType) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
765 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
766 |
case MODULATION_TYPE_BPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
767 |
blockSize = 24; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
768 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
769 |
case MODULATION_TYPE_QPSK_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
770 |
blockSize = 48; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
771 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
772 |
case MODULATION_TYPE_QPSK_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
773 |
blockSize = 48; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
774 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
775 |
case MODULATION_TYPE_QAM16_12: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
776 |
blockSize = 96; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
777 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
778 |
case MODULATION_TYPE_QAM16_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
779 |
blockSize = 96; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
780 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
781 |
case MODULATION_TYPE_QAM64_23: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
782 |
blockSize = 144; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
783 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
784 |
case MODULATION_TYPE_QAM64_34: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
785 |
blockSize = 144; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
786 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
787 |
default: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
788 |
NS_FATAL_ERROR ("Invalid modulation type"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
789 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
790 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
791 |
return blockSize * 8; // in bits |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
792 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
793 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
794 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
795 |
SimpleOfdmWimaxPhy::SetBlockParameters (uint32_t burstSize, WimaxPhy::ModulationType modulationType) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
796 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
797 |
m_blockSize = GetFecBlockSize (modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
798 |
m_nrBlocks = GetNrBlocks (burstSize, modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
799 |
m_paddingBits = (m_nrBlocks * m_blockSize) - (burstSize * 8); |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
800 |
m_nrRemainingBlocksToSend = m_nrBlocks; |
6730
256ec487a425
work around signed integral promotion
Tom Henderson <tomh@tomh.org>
parents:
6728
diff
changeset
|
801 |
NS_ASSERT_MSG (static_cast<uint32_t> (m_nrBlocks * m_blockSize) >= (burstSize * 8), "Size of padding bytes < 0"); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
802 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
803 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
804 |
uint16_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
805 |
SimpleOfdmWimaxPhy::DoGetTtg (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
806 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
807 |
// assumed equal to 2 symbols |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
808 |
return 2 * GetPsPerSymbol (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
809 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
810 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
811 |
uint16_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
812 |
SimpleOfdmWimaxPhy::DoGetRtg (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
813 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
814 |
// assumed equal to 2 symbols |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
815 |
return 2 * GetPsPerSymbol (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
816 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
817 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
818 |
uint8_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
819 |
SimpleOfdmWimaxPhy::DoGetFrameDurationCode (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
820 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
821 |
uint16_t duration = 0; |
6126
ac31bd504e69
Fix bug#839: TestSuite wimax-ss-mac-layer crashes on Darwin 9.8.0 Power Macintosh
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
6111
diff
changeset
|
822 |
duration = (uint16_t)(GetFrameDuration ().GetSeconds () * 10000); |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
823 |
uint8_t retval = 0; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
824 |
switch (duration) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
825 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
826 |
case 25: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
827 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
828 |
retval = FRAME_DURATION_2_POINT_5_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
829 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
830 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
831 |
case 40: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
832 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
833 |
retval = FRAME_DURATION_4_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
834 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
835 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
836 |
case 50: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
837 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
838 |
retval = FRAME_DURATION_5_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
839 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
840 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
841 |
case 80: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
842 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
843 |
retval = FRAME_DURATION_8_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
844 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
845 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
846 |
case 100: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
847 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
848 |
retval = FRAME_DURATION_10_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
849 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
850 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
851 |
case 125: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
852 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
853 |
retval = FRAME_DURATION_12_POINT_5_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
854 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
855 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
856 |
case 200: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
857 |
{ |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
858 |
retval = FRAME_DURATION_20_MS; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
859 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
860 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
861 |
default: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
862 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
863 |
NS_FATAL_ERROR ("Invalid frame duration = " << duration); |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
864 |
retval = 0; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
865 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
866 |
} |
9782
ed82eb2702d0
[Coverity] Structurally dead code (UNREACHABLE)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
9071
diff
changeset
|
867 |
return retval; |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
868 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
869 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
870 |
Time |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
871 |
SimpleOfdmWimaxPhy::DoGetFrameDuration (uint8_t frameDurationCode) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
872 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
873 |
switch (frameDurationCode) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
874 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
875 |
case FRAME_DURATION_2_POINT_5_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
876 |
return Seconds (2.5); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
877 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
878 |
case FRAME_DURATION_4_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
879 |
return Seconds (4); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
880 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
881 |
case FRAME_DURATION_5_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
882 |
return Seconds (5); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
883 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
884 |
case FRAME_DURATION_8_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
885 |
return Seconds (8); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
886 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
887 |
case FRAME_DURATION_10_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
888 |
return Seconds (10); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
889 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
890 |
case FRAME_DURATION_12_POINT_5_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
891 |
return Seconds (12.5); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
892 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
893 |
case FRAME_DURATION_20_MS: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
894 |
return Seconds (20); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
895 |
break; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
896 |
default: |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
897 |
NS_FATAL_ERROR ("Invalid modulation type"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
898 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
899 |
return Seconds (0); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
900 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
901 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
902 |
/* |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
903 |
Retruns number of blocks (FEC blocks) the burst will be splitted in. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
904 |
The size of the block is specific for each modulation type. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
905 |
*/ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
906 |
uint16_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
907 |
SimpleOfdmWimaxPhy::GetNrBlocks (uint32_t burstSize, WimaxPhy::ModulationType modulationType) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
908 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
909 |
uint32_t blockSize = GetFecBlockSize (modulationType); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
910 |
uint16_t nrBlocks = (burstSize * 8) / blockSize; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
911 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
912 |
if ((burstSize * 8) % blockSize > 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
913 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
914 |
nrBlocks += 1; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
915 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
916 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
917 |
return nrBlocks; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
918 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
919 |
/*---------------------PHY parameters functions-----------------------*/ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
920 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
921 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
922 |
SimpleOfdmWimaxPhy::DoSetPhyParameters (void) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
923 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
924 |
/*Calculations as per section 8.3.2. |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
925 |
Currently assuming license-exempt 5 GHz band. For channel bandwidth 20 MHz (Table B.28, page 812) and frame duration 10 ms |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
926 |
(Table 232, page 460) i.e, 100 frames per second, sampling frequency is 23040000, symbol (OFDM symbol) duration is |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
927 |
1.388888888888889e-05 seconds, PS duration is 1.7361111111111112e-07 seconds. Hence PSs per frame is 57600, symbols per frame |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
928 |
is 720 and PSs per symbol is 80. Note that defining these parameters (symbol and PS duration) as Time may not result in exaclty |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
929 |
these values therefore lrint has been used (otherwise should be defined as double). |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
930 |
For licensed bands set channel bandwidth according to Table B.26, page 810.*/ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
931 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
932 |
double samplingFrequency = DoGetSamplingFrequency (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
933 |
Time psDuration = Seconds ((double) 4 / samplingFrequency); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
934 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
935 |
SetPsDuration (psDuration); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
936 |
uint16_t psPerFrame = (uint16_t)(GetFrameDuration ().GetSeconds () / psDuration.GetSeconds ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
937 |
SetPsPerFrame (psPerFrame); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
938 |
double subcarrierSpacing = samplingFrequency / DoGetNfft (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
939 |
double tb = (double) 1 / subcarrierSpacing; // Tb (useful symbol time) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
940 |
double tg = DoGetGValue () * tb; // Tg (cyclic prefix time) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
941 |
Time symbolDuration = Seconds (tb + tg); // OFDM Symbol Time |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
942 |
SetSymbolDuration (symbolDuration); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
943 |
uint16_t psPerSymbol = lrint (symbolDuration.GetSeconds () / psDuration.GetSeconds ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
944 |
SetPsPerSymbol (psPerSymbol); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
945 |
uint32_t symbolsPerFrame = lrint (GetFrameDuration ().GetSeconds () / symbolDuration.GetSeconds ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
946 |
SetSymbolsPerFrame (symbolsPerFrame); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
947 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
948 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
949 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
950 |
SimpleOfdmWimaxPhy::DoSetNfft (uint16_t nfft) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
951 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
952 |
m_nfft = nfft; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
953 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
954 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
955 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
956 |
uint16_t |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
957 |
SimpleOfdmWimaxPhy::DoGetNfft (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
958 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
959 |
return m_nfft; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
960 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
961 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
962 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
963 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
964 |
SimpleOfdmWimaxPhy::DoGetSamplingFactor (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
965 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
966 |
// sampling factor (n), see Table 213, page 429 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
967 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
968 |
uint32_t channelBandwidth = GetChannelBandwidth (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
969 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
970 |
if (channelBandwidth % 1750000 == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
971 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
972 |
return (double) 8 / 7; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
973 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
974 |
else if (channelBandwidth % 1500000 == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
975 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
976 |
return (double) 86 / 75; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
977 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
978 |
else if (channelBandwidth % 1250000 == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
979 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
980 |
return (double) 144 / 125; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
981 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
982 |
else if (channelBandwidth % 2750000 == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
983 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
984 |
return (double) 316 / 275; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
985 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
986 |
else if (channelBandwidth % 2000000 == 0) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
987 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
988 |
return (double) 57 / 50; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
989 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
990 |
else |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
991 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
992 |
NS_LOG_DEBUG ("Oops may be wrong channel bandwidth for OFDM PHY!"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
993 |
NS_FATAL_ERROR ("wrong channel bandwidth for OFDM PHY"); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
994 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
995 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
996 |
return (double) 8 / 7; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
997 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
998 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
999 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1000 |
SimpleOfdmWimaxPhy::DoGetSamplingFrequency (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1001 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1002 |
// sampling frequency (Fs), see 8.3.2.2 |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1003 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1004 |
return (DoGetSamplingFactor () * GetChannelBandwidth () / 8000) * 8000; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1005 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1006 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1007 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1008 |
SimpleOfdmWimaxPhy::DoGetGValue (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1009 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1010 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1011 |
return m_g; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1012 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1013 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1014 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1015 |
SimpleOfdmWimaxPhy::DoSetGValue (double g) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1016 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1017 |
m_g = g; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1018 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1019 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1020 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1021 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1022 |
SimpleOfdmWimaxPhy::SetTxGain (double txGain) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1023 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1024 |
m_txGain = txGain; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1025 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1026 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1027 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1028 |
SimpleOfdmWimaxPhy::SetRxGain (double txRain) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1029 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1030 |
m_rxGain = txRain; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1031 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1032 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1033 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1034 |
SimpleOfdmWimaxPhy::GetTxGain (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1035 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1036 |
return m_txGain; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1037 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1038 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1039 |
double |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1040 |
SimpleOfdmWimaxPhy::GetRxGain (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1041 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1042 |
return m_rxGain; |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1043 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1044 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1045 |
std::string |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1046 |
SimpleOfdmWimaxPhy::GetTraceFilePath (void) const |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1047 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1048 |
return (m_snrToBlockErrorRateManager->GetTraceFilePath ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1049 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1050 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1051 |
void |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1052 |
SimpleOfdmWimaxPhy::SetTraceFilePath (std::string path) |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1053 |
{ |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1054 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1055 |
m_snrToBlockErrorRateManager->SetTraceFilePath ((char*) path.c_str ()); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1056 |
m_snrToBlockErrorRateManager->LoadTraces (); |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1057 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1058 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1059 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1060 |
SimpleOfdmWimaxPhy::NotifyTxBegin (Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1061 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1062 |
m_phyTxBeginTrace (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1063 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1064 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1065 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1066 |
SimpleOfdmWimaxPhy::NotifyTxEnd (Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1067 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1068 |
m_phyTxEndTrace (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1069 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1070 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1071 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1072 |
SimpleOfdmWimaxPhy::NotifyTxDrop (Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1073 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1074 |
m_phyTxDropTrace (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1075 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1076 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1077 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1078 |
SimpleOfdmWimaxPhy::NotifyRxBegin (Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1079 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1080 |
m_phyRxBeginTrace (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1081 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1082 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1083 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1084 |
SimpleOfdmWimaxPhy::NotifyRxEnd (Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1085 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1086 |
m_phyRxEndTrace (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1087 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1088 |
|
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1089 |
void |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1090 |
SimpleOfdmWimaxPhy::NotifyRxDrop (Ptr<PacketBurst> burst) |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1091 |
{ |
6402
088c5e38acb3
Fix Bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
iamine
parents:
6393
diff
changeset
|
1092 |
m_phyRxDropTrace (burst); |
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1093 |
} |
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1094 |
|
8982
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1095 |
int64_t |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1096 |
SimpleOfdmWimaxPhy::AssignStreams (int64_t stream) |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1097 |
{ |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1098 |
NS_LOG_FUNCTION (this << stream); |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1099 |
m_URNG->SetStream (stream); |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1100 |
return 1; |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1101 |
} |
a85e48eb2acb
Replace src/wimax usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
7256
diff
changeset
|
1102 |
|
6111
0b22ae082153
Merge WiMAX module
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff
changeset
|
1103 |
} // namespace ns3 |