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-tx-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 PhyTxStatsCalculator
21
*/
22
23
#include "
phy-tx-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
(
"PhyTxStatsCalculator"
);
31
32
NS_OBJECT_ENSURE_REGISTERED
(PhyTxStatsCalculator);
33
34
PhyTxStatsCalculator::PhyTxStatsCalculator
()
35
: m_dlTxFirstWrite (true),
36
m_ulTxFirstWrite (true)
37
{
38
NS_LOG_FUNCTION
(
this
);
39
40
}
41
42
PhyTxStatsCalculator::~PhyTxStatsCalculator
()
43
{
44
NS_LOG_FUNCTION
(
this
);
45
}
46
47
TypeId
48
PhyTxStatsCalculator::GetTypeId
(
void
)
49
{
50
static
TypeId
tid =
TypeId
(
"ns3::PhyTxStatsCalculator"
)
51
.
SetParent
<
LteStatsCalculator
> ()
52
.AddConstructor<PhyTxStatsCalculator> ()
53
.AddAttribute (
"DlTxOutputFilename"
,
54
"Name of the file where the downlink results will be saved."
,
55
StringValue
(
"DlTxPhyStats.txt"
),
56
MakeStringAccessor (&
PhyTxStatsCalculator::SetDlTxOutputFilename
),
57
MakeStringChecker ())
58
.AddAttribute (
"UlTxOutputFilename"
,
59
"Name of the file where the uplink results will be saved."
,
60
StringValue
(
"UlTxPhyStats.txt"
),
61
MakeStringAccessor (&
PhyTxStatsCalculator::SetUlTxOutputFilename
),
62
MakeStringChecker ())
63
;
64
return
tid;
65
}
66
67
void
68
PhyTxStatsCalculator::SetUlTxOutputFilename
(std::string outputFilename)
69
{
70
LteStatsCalculator::SetUlOutputFilename
(outputFilename);
71
}
72
73
std::string
74
PhyTxStatsCalculator::GetUlTxOutputFilename
(
void
)
75
{
76
return
LteStatsCalculator::GetUlOutputFilename
();
77
}
78
79
void
80
PhyTxStatsCalculator::SetDlTxOutputFilename
(std::string outputFilename)
81
{
82
LteStatsCalculator::SetDlOutputFilename
(outputFilename);
83
}
84
85
std::string
86
PhyTxStatsCalculator::GetDlTxOutputFilename
(
void
)
87
{
88
return
LteStatsCalculator::GetDlOutputFilename
();
89
}
90
91
void
92
PhyTxStatsCalculator::DlPhyTransmission
(
PhyTransmissionStatParameters
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
);
95
NS_LOG_INFO
(
"Write DL Tx Phy Stats in "
<<
GetDlTxOutputFilename
().c_str ());
96
97
std::ofstream outFile;
98
if
(
m_dlTxFirstWrite
==
true
)
99
{
100
outFile.open (
GetDlOutputFilename
().c_str ());
101
if
(!outFile.is_open ())
102
{
103
NS_LOG_ERROR
(
"Can't open file "
<<
GetDlTxOutputFilename
().c_str ());
104
return
;
105
}
106
m_dlTxFirstWrite
=
false
;
107
//outFile << "% time\tcellId\tIMSI\tRNTI\tlayer\tmcs\tsize\trv\tndi"; // txMode is not available at dl tx side
108
outFile <<
"% time\tcellId\tIMSI\tRNTI\ttxMode\tlayer\tmcs\tsize\trv\tndi"
;
109
outFile << std::endl;
110
}
111
else
112
{
113
outFile.open (
GetDlTxOutputFilename
().c_str (), std::ios_base::app);
114
if
(!outFile.is_open ())
115
{
116
NS_LOG_ERROR
(
"Can't open file "
<<
GetDlTxOutputFilename
().c_str ());
117
return
;
118
}
119
}
120
121
// outFile << Simulator::Now ().GetNanoSeconds () / (double) 1e9 << "\t";
122
outFile << params.
m_timestamp
<<
"\t"
;
123
outFile << (uint32_t) params.
m_cellId
<<
"\t"
;
124
outFile << params.
m_imsi
<<
"\t"
;
125
outFile << params.
m_rnti
<<
"\t"
;
126
//outFile << (uint32_t) params.m_txMode << "\t"; // txMode is not available at dl tx side
127
outFile << (uint32_t) params.
m_layer
<<
"\t"
;
128
outFile << (uint32_t) params.
m_mcs
<<
"\t"
;
129
outFile << params.
m_size
<<
"\t"
;
130
outFile << (uint32_t) params.
m_rv
<<
"\t"
;
131
outFile << (uint32_t) params.
m_ndi
<< std::endl;
132
outFile.close ();
133
}
134
135
void
136
PhyTxStatsCalculator::UlPhyTransmission
(
PhyTransmissionStatParameters
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
);
139
NS_LOG_INFO
(
"Write UL Tx Phy Stats in "
<<
GetUlTxOutputFilename
().c_str ());
140
141
std::ofstream outFile;
142
if
(
m_ulTxFirstWrite
==
true
)
143
{
144
outFile.open (
GetUlTxOutputFilename
().c_str ());
145
if
(!outFile.is_open ())
146
{
147
NS_LOG_ERROR
(
"Can't open file "
<<
GetUlTxOutputFilename
().c_str ());
148
return
;
149
}
150
m_ulTxFirstWrite
=
false
;
151
// outFile << "% time\tcellId\tIMSI\tRNTI\ttxMode\tlayer\tmcs\tsize\trv\tndi";
152
outFile <<
"% time\tcellId\tIMSI\tRNTI\tlayer\tmcs\tsize\trv\tndi"
;
153
outFile << std::endl;
154
}
155
else
156
{
157
outFile.open (
GetUlTxOutputFilename
().c_str (), std::ios_base::app);
158
if
(!outFile.is_open ())
159
{
160
NS_LOG_ERROR
(
"Can't open file "
<<
GetUlTxOutputFilename
().c_str ());
161
return
;
162
}
163
}
164
165
// outFile << Simulator::Now ().GetNanoSeconds () / (double) 1e9 << "\t";
166
outFile << params.
m_timestamp
<<
"\t"
;
167
outFile << (uint32_t) params.
m_cellId
<<
"\t"
;
168
outFile << params.
m_imsi
<<
"\t"
;
169
outFile << params.
m_rnti
<<
"\t"
;
170
//outFile << (uint32_t) params.m_txMode << "\t";
171
outFile << (uint32_t) params.
m_layer
<<
"\t"
;
172
outFile << (uint32_t) params.
m_mcs
<<
"\t"
;
173
outFile << params.
m_size
<<
"\t"
;
174
outFile << (uint32_t) params.
m_rv
<<
"\t"
;
175
outFile << (uint32_t) params.
m_ndi
<< std::endl;
176
outFile.close ();
177
}
178
179
}
// namespace ns3
180
src
lte
helper
phy-tx-stats-calculator.cc
Generated on Tue May 14 2013 11:08:24 for ns-3 by
1.8.1.2