author | Nicola Baldo <nbaldo@cttc.es> |
Mon, 04 Feb 2013 18:47:25 +0100 | |
changeset 9653 | 382d27da8905 |
parent 9063 | 32755d0516f4 |
child 9703 | 681f35b212ff |
permissions | -rw-r--r-- |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
2 |
/* |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
3 |
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
4 |
* |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
8 |
* |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
13 |
* |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
17 |
* |
8274 | 18 |
* Author: Giuseppe Piro <g.piro@poliba.it> |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
19 |
* Marco Miozzo <mmiozzo@cttc.es> |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
20 |
*/ |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
21 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
22 |
|
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
23 |
#include <ns3/trace-fading-loss-model.h> |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
24 |
#include <ns3/mobility-model.h> |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
25 |
#include <ns3/spectrum-value.h> |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
26 |
#include <ns3/log.h> |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
27 |
#include <ns3/string.h> |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
28 |
#include <ns3/double.h> |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
29 |
#include "ns3/uinteger.h" |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
30 |
#include <fstream> |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
31 |
#include <ns3/simulator.h> |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
32 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
33 |
NS_LOG_COMPONENT_DEFINE ("TraceFadingLossModel"); |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
34 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
35 |
namespace ns3 { |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
36 |
|
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
37 |
NS_OBJECT_ENSURE_REGISTERED (TraceFadingLossModel); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
38 |
|
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
39 |
|
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
40 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
41 |
TraceFadingLossModel::TraceFadingLossModel () |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
42 |
{ |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
43 |
NS_LOG_FUNCTION (this); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
44 |
SetNext (NULL); |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
45 |
} |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
46 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
47 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
48 |
TraceFadingLossModel::~TraceFadingLossModel () |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
49 |
{ |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
50 |
m_fadingTrace.clear (); |
8346
c54981e1e269
Valgrind-error fix: deallocate random variables in TraceFadingLossModel destructor
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8281
diff
changeset
|
51 |
m_windowOffsetsMap.clear (); |
c54981e1e269
Valgrind-error fix: deallocate random variables in TraceFadingLossModel destructor
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8281
diff
changeset
|
52 |
m_startVariableMap.clear (); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
53 |
} |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
54 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
55 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
56 |
TypeId |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
57 |
TraceFadingLossModel::GetTypeId (void) |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
58 |
{ |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
59 |
static TypeId tid = TypeId ("ns3::TraceFadingLossModel") |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
60 |
.SetParent<SpectrumPropagationLossModel> () |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
61 |
.AddConstructor<TraceFadingLossModel> () |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
62 |
.AddAttribute ("TraceFilename", |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
63 |
"Name of file to load a trace from.", |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
64 |
StringValue (""), |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
65 |
MakeStringAccessor (&TraceFadingLossModel::SetTraceFileName), |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
66 |
MakeStringChecker ()) |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
67 |
.AddAttribute ("TraceLength", |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
68 |
"The total length of the fading trace (default value 10 s.)", |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
69 |
TimeValue (Seconds (10.0)), |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
70 |
MakeTimeAccessor (&TraceFadingLossModel::SetTraceLength), |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
71 |
MakeTimeChecker ()) |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
72 |
.AddAttribute ("SamplesNum", |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
73 |
"The number of samples the trace is made of (default 10000)", |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
74 |
UintegerValue (10000), |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
75 |
MakeUintegerAccessor (&TraceFadingLossModel::m_samplesNum), |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
76 |
MakeUintegerChecker<uint32_t> ()) |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
77 |
.AddAttribute ("WindowSize", |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
78 |
"The size of the window for the fading trace (default value 0.5 s.)", |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
79 |
TimeValue (Seconds (0.5)), |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
80 |
MakeTimeAccessor (&TraceFadingLossModel::m_windowSize), |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
81 |
MakeTimeChecker ()) |
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
82 |
.AddAttribute ("RbNum", |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
83 |
"The number of RB the trace is made of (default 100)", |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
84 |
UintegerValue (100), |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
85 |
MakeUintegerAccessor (&TraceFadingLossModel::m_rbNum), |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
86 |
MakeUintegerChecker<uint8_t> ()) |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
87 |
; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
88 |
return tid; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
89 |
} |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
90 |
|
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
91 |
void |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
92 |
TraceFadingLossModel::SetTraceFileName (std::string fileName) |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
93 |
{ |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
94 |
NS_LOG_FUNCTION (this << "Set Fading Trace " << fileName); |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
95 |
|
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
96 |
m_traceFile = fileName; |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
97 |
} |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
98 |
|
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
99 |
void |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
100 |
TraceFadingLossModel::SetTraceLength (Time t) |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
101 |
{ |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
102 |
m_traceLength = t; |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
103 |
} |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
104 |
|
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
105 |
void |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
106 |
TraceFadingLossModel::DoStart () |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
107 |
{ |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
108 |
LoadTrace (); |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
109 |
} |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
110 |
|
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
111 |
|
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
112 |
void |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
113 |
TraceFadingLossModel::LoadTrace () |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
114 |
{ |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
115 |
NS_LOG_FUNCTION (this << "Loading Fading Trace " << m_traceFile); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
116 |
std::ifstream ifTraceFile; |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
117 |
ifTraceFile.open (m_traceFile.c_str (), std::ifstream::in); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
118 |
m_fadingTrace.clear (); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
119 |
if (!ifTraceFile.good ()) |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
120 |
{ |
8279 | 121 |
NS_LOG_INFO (this << " File: " << m_traceFile); |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
122 |
NS_ASSERT_MSG(ifTraceFile.good (), " Fading trace file not found"); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
123 |
} |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
124 |
|
8281
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
125 |
// NS_LOG_INFO (this << " length " << m_traceLength.GetSeconds ()); |
a6edf2b38054
Lena Helper updated for managing fading module and lena-fading.cc example works
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8279
diff
changeset
|
126 |
// NS_LOG_INFO (this << " RB " << (uint32_t)m_rbNum << " samples " << m_samplesNum); |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
127 |
for (uint32_t i = 0; i < m_rbNum; i++) |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
128 |
{ |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
129 |
FadingTraceSample rbTimeFadingTrace; |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
130 |
for (uint32_t j = 0; j < m_samplesNum; j++) |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
131 |
{ |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
132 |
double sample; |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
133 |
ifTraceFile >> sample; |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
134 |
rbTimeFadingTrace.push_back (sample); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
135 |
} |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
136 |
m_fadingTrace.push_back (rbTimeFadingTrace); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
137 |
} |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
138 |
m_timeGranularity = m_traceLength.GetMilliSeconds () / m_samplesNum; |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
139 |
m_lastWindowUpdate = Simulator::Now (); |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
140 |
} |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
141 |
|
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
142 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
143 |
Ptr<SpectrumValue> |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
144 |
TraceFadingLossModel::DoCalcRxPowerSpectralDensity ( |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
145 |
Ptr<const SpectrumValue> txPsd, |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
146 |
Ptr<const MobilityModel> a, |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
147 |
Ptr<const MobilityModel> b) const |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
148 |
{ |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
149 |
NS_LOG_FUNCTION (this << *txPsd << a << b); |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
150 |
|
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
151 |
std::map <ChannelRealizationId_t, int >::iterator itOff; |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
152 |
ChannelRealizationId_t mobilityPair = std::make_pair (a,b); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
153 |
itOff = m_windowOffsetsMap.find (mobilityPair); |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
154 |
if (itOff!=m_windowOffsetsMap.end ()) |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
155 |
{ |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
156 |
if (Simulator::Now ().GetSeconds () >= m_lastWindowUpdate.GetSeconds () + m_windowSize.GetSeconds ()) |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
157 |
{ |
9055
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
158 |
// update all the offsets |
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
159 |
NS_LOG_INFO ("Fading Windows Updated"); |
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
160 |
std::map <ChannelRealizationId_t, int >::iterator itOff2; |
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
161 |
for (itOff2 = m_windowOffsetsMap.begin (); itOff2 != m_windowOffsetsMap.end (); itOff2++) |
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
162 |
{ |
9057 | 163 |
std::map <ChannelRealizationId_t, Ptr<UniformRandomVariable> >::iterator itVar; |
9055
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
164 |
itVar = m_startVariableMap.find ((*itOff2).first); |
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
165 |
(*itOff2).second = (*itVar).second->GetValue (); |
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
166 |
} |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
167 |
m_lastWindowUpdate = Simulator::Now (); |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
168 |
} |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
169 |
} |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
170 |
else |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
171 |
{ |
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
172 |
NS_LOG_LOGIC (this << "insert new channel realization, m_windowOffsetMap.size () = " << m_windowOffsetsMap.size ()); |
8987
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
173 |
Ptr<UniformRandomVariable> startV = CreateObject<UniformRandomVariable> (); |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
174 |
startV->SetAttribute ("Min", DoubleValue (1.0)); |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
175 |
startV->SetAttribute ("Max", DoubleValue ((m_traceLength.GetSeconds () - m_windowSize.GetSeconds ()) * 1000.0)); |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
176 |
ChannelRealizationId_t mobilityPair = std::make_pair (a,b); |
8987
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
177 |
m_startVariableMap.insert (std::pair<ChannelRealizationId_t,Ptr<UniformRandomVariable> > (mobilityPair, startV)); |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
178 |
m_windowOffsetsMap.insert (std::pair<ChannelRealizationId_t,int> (mobilityPair, startV->GetValue ())); |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
179 |
} |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
180 |
|
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
181 |
|
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
182 |
Ptr<SpectrumValue> rxPsd = Copy<SpectrumValue> (txPsd); |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
183 |
Values::iterator vit = rxPsd->ValuesBegin (); |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
184 |
|
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
185 |
//Vector aSpeedVector = a->GetVelocity (); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
186 |
//Vector bSpeedVector = b->GetVelocity (); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
187 |
|
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
9057
diff
changeset
|
188 |
//double speed = std::sqrt (std::pow (aSpeedVector.x-bSpeedVector.x,2) + std::pow (aSpeedVector.y-bSpeedVector.y,2)); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
189 |
|
8596
0740902f6eb1
use proper log macros in trace-fading-loss-model.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8346
diff
changeset
|
190 |
NS_LOG_LOGIC (this << *rxPsd); |
8883
8fee8c73c2e9
Update Fading module for iter-cell interference and encaspulate the channels realization within the module itself
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8596
diff
changeset
|
191 |
NS_ASSERT (!m_fadingTrace.empty ()); |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
192 |
int now_ms = static_cast<int> (Simulator::Now ().GetMilliSeconds () * m_timeGranularity); |
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
193 |
int lastUpdate_ms = static_cast<int> (m_lastWindowUpdate.GetMilliSeconds () * m_timeGranularity); |
9056
caa25bcd1fbd
Update TraceFadingLossModel for circular windowing in fading traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9055
diff
changeset
|
194 |
int index = ((*itOff).second + now_ms - lastUpdate_ms) % m_samplesNum; |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
195 |
int subChannel = 0; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
196 |
while (vit != rxPsd->ValuesEnd ()) |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
197 |
{ |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
198 |
NS_ASSERT (subChannel < 100); |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
199 |
if (*vit != 0.) |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
200 |
{ |
8270
a6461404c925
Move fading trace managment in TraceFadingLossModel with single instance of the trace
mmiozzo
parents:
8220
diff
changeset
|
201 |
double fading = m_fadingTrace.at (subChannel).at (index); |
9055
66a5f5805985
Bug-fix in TraceFadingLossModel: windows offset update
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8883
diff
changeset
|
202 |
NS_LOG_INFO (this << " FADING now " << now_ms << " offset " << (*itOff).second << " id " << index << " fading " << fading); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
203 |
double power = *vit; // in Watt/Hz |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
9057
diff
changeset
|
204 |
power = 10 * std::log10 (180000 * power); // in dB |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
205 |
|
8596
0740902f6eb1
use proper log macros in trace-fading-loss-model.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8346
diff
changeset
|
206 |
NS_LOG_LOGIC (this << subChannel << *vit << power << fading); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
207 |
|
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
9057
diff
changeset
|
208 |
*vit = std::pow (10., ((power + fading) / 10)) / 180000; // in Watt |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
209 |
|
8596
0740902f6eb1
use proper log macros in trace-fading-loss-model.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8346
diff
changeset
|
210 |
NS_LOG_LOGIC (this << subChannel << *vit); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
211 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
212 |
} |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
213 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
214 |
++vit; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
215 |
++subChannel; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
216 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
217 |
} |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
218 |
|
8596
0740902f6eb1
use proper log macros in trace-fading-loss-model.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8346
diff
changeset
|
219 |
NS_LOG_LOGIC (this << *rxPsd); |
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
220 |
return rxPsd; |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
221 |
} |
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
222 |
|
8987
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
223 |
int64_t |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
224 |
TraceFadingLossModel::AssignStreams (int64_t stream) |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
225 |
{ |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
226 |
NS_LOG_FUNCTION (this << stream); |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
227 |
int64_t currentStream = stream; |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
228 |
std::map <ChannelRealizationId_t, Ptr<UniformRandomVariable> >::iterator itVar; |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
229 |
itVar = m_startVariableMap.begin (); |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
230 |
while (itVar!=m_startVariableMap.end ()) |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
231 |
{ |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
232 |
(*itVar).second->SetStream (currentStream); |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
233 |
currentStream += 1; |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
234 |
} |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
235 |
return (currentStream - stream); |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
236 |
} |
03b1accee8d1
Replace src/lte usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8883
diff
changeset
|
237 |
|
8220
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
238 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
239 |
|
85a6d922f416
Add class for managing fading based on traces
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
240 |
} // namespace ns3 |