A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
phy-rx-stats-calculator.cc
Go to the documentation of this file.
1
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Jaume Nin <jnin@cttc.es>
19
* modified by: Marco Miozzo <mmiozzo@cttc.es>
20
* Convert MacStatsCalculator in PhyRxStatsCalculator
21
*/
22
23
#include "
phy-rx-stats-calculator.h
"
24
#include "ns3/string.h"
25
#include <ns3/simulator.h>
26
#include <ns3/log.h>
27
28
namespace
ns3 {
29
30
NS_LOG_COMPONENT_DEFINE
(
"PhyRxStatsCalculator"
);
31
32
NS_OBJECT_ENSURE_REGISTERED
(PhyRxStatsCalculator);
33
34
PhyRxStatsCalculator::PhyRxStatsCalculator
()
35
: m_dlRxFirstWrite (true),
36
m_ulRxFirstWrite (true)
37
{
38
NS_LOG_FUNCTION
(
this
);
39
40
}
41
42
PhyRxStatsCalculator::~PhyRxStatsCalculator
()
43
{
44
NS_LOG_FUNCTION
(
this
);
45
}
46
47
TypeId
48
PhyRxStatsCalculator::GetTypeId
(
void
)
49
{
50
static
TypeId
tid =
TypeId
(
"ns3::PhyRxStatsCalculator"
)
51
.
SetParent
<
LteStatsCalculator
> ()
52
.AddConstructor<PhyRxStatsCalculator> ()
53
.AddAttribute (
"DlRxOutputFilename"
,
54
"Name of the file where the downlink results will be saved."
,
55
StringValue
(
"DlRxPhyStats.txt"
),
56
MakeStringAccessor (&
PhyRxStatsCalculator::SetDlRxOutputFilename
),
57
MakeStringChecker ())
58
.AddAttribute (
"UlRxOutputFilename"
,
59
"Name of the file where the uplink results will be saved."
,
60
StringValue
(
"UlRxPhyStats.txt"
),
61
MakeStringAccessor (&
PhyRxStatsCalculator::SetUlRxOutputFilename
),
62
MakeStringChecker ())
63
;
64
return
tid;
65
}
66
67
void
68
PhyRxStatsCalculator::SetUlRxOutputFilename
(std::string outputFilename)
69
{
70
LteStatsCalculator::SetUlOutputFilename
(outputFilename);
71
}
72
73
std::string
74
PhyRxStatsCalculator::GetUlRxOutputFilename
(
void
)
75
{
76
return
LteStatsCalculator::GetUlOutputFilename
();
77
}
78
79
void
80
PhyRxStatsCalculator::SetDlRxOutputFilename
(std::string outputFilename)
81
{
82
LteStatsCalculator::SetDlOutputFilename
(outputFilename);
83
}
84
85
std::string
86
PhyRxStatsCalculator::GetDlRxOutputFilename
(
void
)
87
{
88
return
LteStatsCalculator::GetDlOutputFilename
();
89
}
90
91
void
92
PhyRxStatsCalculator::DlPhyReception
(
PhyReceptionStatParameters
params)
93
{
94
NS_LOG_FUNCTION
(
this
<< params.
m_cellId
<< params.
m_imsi
<< params.
m_timestamp
<< params.
m_rnti
<< params.
m_layer
<< params.
m_mcs
<< params.
m_size
<< params.
m_rv
<< params.
m_ndi
<< params.
m_correctness
);
95
NS_LOG_INFO
(
"Write DL Rx Phy Stats in "
<<
GetDlRxOutputFilename
().c_str ());
96
97
std::ofstream outFile;
98
if
(
m_dlRxFirstWrite
==
true
)
99
{
100
outFile.open (
GetDlRxOutputFilename
().c_str ());
101
if
(!outFile.is_open ())
102
{
103
NS_LOG_ERROR
(
"Can't open file "
<<
GetDlRxOutputFilename
().c_str ());
104
return
;
105
}
106
m_dlRxFirstWrite
=
false
;
107
outFile <<
"% time\tcellId\tIMSI\tRNTI\ttxMode\tlayer\tmcs\tsize\trv\tndi\tcorrect"
;
108
outFile << std::endl;
109
}
110
else
111
{
112
outFile.open (
GetDlRxOutputFilename
().c_str (), std::ios_base::app);
113
if
(!outFile.is_open ())
114
{
115
NS_LOG_ERROR
(
"Can't open file "
<<
GetDlRxOutputFilename
().c_str ());
116
return
;
117
}
118
}
119
120
// outFile << Simulator::Now ().GetNanoSeconds () / (double) 1e9 << "\t";
121
outFile << params.
m_timestamp
<<
"\t"
;
122
outFile << (uint32_t) params.
m_cellId
<<
"\t"
;
123
outFile << params.
m_imsi
<<
"\t"
;
124
outFile << params.
m_rnti
<<
"\t"
;
125
outFile << (uint32_t) params.
m_txMode
<<
"\t"
;
126
outFile << (uint32_t) params.
m_layer
<<
"\t"
;
127
outFile << (uint32_t) params.
m_mcs
<<
"\t"
;
128
outFile << params.
m_size
<<
"\t"
;
129
outFile << (uint32_t) params.
m_rv
<<
"\t"
;
130
outFile << (uint32_t) params.
m_ndi
<<
"\t"
;
131
outFile << (uint32_t) params.
m_correctness
<< std::endl;
132
outFile.close ();
133
}
134
135
void
136
PhyRxStatsCalculator::UlPhyReception
(
PhyReceptionStatParameters
params)
137
{
138
NS_LOG_FUNCTION
(
this
<< params.
m_cellId
<< params.
m_imsi
<< params.
m_timestamp
<< params.
m_rnti
<< params.
m_layer
<< params.
m_mcs
<< params.
m_size
<< params.
m_rv
<< params.
m_ndi
<< params.
m_correctness
);
139
NS_LOG_INFO
(
"Write UL Rx Phy Stats in "
<<
GetUlRxOutputFilename
().c_str ());
140
141
std::ofstream outFile;
142
if
(
m_ulRxFirstWrite
==
true
)
143
{
144
outFile.open (
GetUlRxOutputFilename
().c_str ());
145
if
(!outFile.is_open ())
146
{
147
NS_LOG_ERROR
(
"Can't open file "
<<
GetUlRxOutputFilename
().c_str ());
148
return
;
149
}
150
m_ulRxFirstWrite
=
false
;
151
outFile <<
"% time\tcellId\tIMSI\tRNTI\ttxMode\tlayer\tmcs\tsize\trv\tndi\tcorrect"
;
152
outFile << std::endl;
153
}
154
else
155
{
156
outFile.open (
GetUlRxOutputFilename
().c_str (), std::ios_base::app);
157
if
(!outFile.is_open ())
158
{
159
NS_LOG_ERROR
(
"Can't open file "
<<
GetUlRxOutputFilename
().c_str ());
160
return
;
161
}
162
}
163
164
// outFile << Simulator::Now ().GetNanoSeconds () / (double) 1e9 << "\t";
165
outFile << params.
m_timestamp
<<
"\t"
;
166
outFile << (uint32_t) params.
m_cellId
<<
"\t"
;
167
outFile << params.
m_imsi
<<
"\t"
;
168
outFile << params.
m_rnti
<<
"\t"
;
169
outFile << (uint32_t) params.
m_txMode
<<
"\t"
;
170
outFile << (uint32_t) params.
m_layer
<<
"\t"
;
171
outFile << (uint32_t) params.
m_mcs
<<
"\t"
;
172
outFile << params.
m_size
<<
"\t"
;
173
outFile << (uint32_t) params.
m_rv
<<
"\t"
;
174
outFile << (uint32_t) params.
m_ndi
<<
"\t"
;
175
outFile << (uint32_t) params.
m_correctness
<< std::endl;
176
outFile.close ();
177
}
178
179
}
// namespace ns3
src
lte
helper
phy-rx-stats-calculator.cc
Generated on Tue May 14 2013 11:08:24 for ns-3 by
1.8.1.2