author | iptech@cttc.cat |
Mon, 27 Feb 2012 16:08:22 +0100 | |
changeset 8650 | 9e372de3b581 |
parent 8540 | 5e6afc302fb2 |
child 8697 | 9e9c590a80ea |
permissions | -rw-r--r-- |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
2 |
/* |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
3 |
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
4 |
* |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
8 |
* |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
13 |
* |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
17 |
* |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
18 |
* Author: Jaume Nin <jnin@cttc.es> |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
19 |
*/ |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
20 |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
21 |
#include "radio-bearer-stats-calculator.h" |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
22 |
#include "ns3/string.h" |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
23 |
#include "ns3/nstime.h" |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
24 |
#include <ns3/log.h> |
7941 | 25 |
#include <vector> |
26 |
#include <algorithm> |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
27 |
|
8491 | 28 |
namespace ns3 |
29 |
{ |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
30 |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
31 |
NS_LOG_COMPONENT_DEFINE ("RadioBearerStatsCalculator"); |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
32 |
|
8491 | 33 |
NS_OBJECT_ENSURE_REGISTERED ( RadioBearerStatsCalculator); |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
34 |
|
8491 | 35 |
RadioBearerStatsCalculator::RadioBearerStatsCalculator () : |
8540 | 36 |
m_firstWrite (true), m_bearerType ("RLC") |
37 |
{ |
|
38 |
NS_LOG_FUNCTION (this); |
|
39 |
} |
|
40 |
||
41 |
RadioBearerStatsCalculator::RadioBearerStatsCalculator (std::string bearerType) : |
|
8494 | 42 |
m_firstWrite (true) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
43 |
{ |
8494 | 44 |
NS_LOG_FUNCTION (this); |
8540 | 45 |
m_bearerType = bearerType; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
46 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
47 |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
48 |
RadioBearerStatsCalculator::~RadioBearerStatsCalculator () |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
49 |
{ |
8494 | 50 |
NS_LOG_FUNCTION (this); |
51 |
ShowResults (); |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
52 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
53 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
54 |
TypeId |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
55 |
RadioBearerStatsCalculator::GetTypeId (void) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
56 |
{ |
8494 | 57 |
static TypeId tid = |
8540 | 58 |
TypeId ("ns3::RadioBearerStatsCalculator") |
59 |
.SetParent<LteStatsCalculator> ().AddConstructor<RadioBearerStatsCalculator> () |
|
60 |
.AddAttribute ("StartTime", "Start time of the on going epoch.", TimeValue (Seconds (0.)),MakeTimeAccessor (&RadioBearerStatsCalculator::m_startTime), MakeTimeChecker ()) |
|
61 |
.AddAttribute ("EpochDuration", "Epoch duration.", TimeValue (Seconds (0.25)), MakeTimeAccessor (&RadioBearerStatsCalculator::m_epochDuration), MakeTimeChecker ()) |
|
62 |
.AddAttribute ("DlRlcOutputFilename", |
|
63 |
"Name of the file where the downlink results will be saved.", |
|
64 |
StringValue ("DlRlcStats.txt"), |
|
65 |
MakeStringAccessor (&LteStatsCalculator::SetDlOutputFilename), |
|
66 |
MakeStringChecker ()) |
|
67 |
.AddAttribute ("UlRlcOutputFilename", |
|
68 |
"Name of the file where the uplink results will be saved.", |
|
69 |
StringValue ("UlRlcStats.txt"), |
|
70 |
MakeStringAccessor (&LteStatsCalculator::SetUlOutputFilename), |
|
71 |
MakeStringChecker ()) |
|
72 |
.AddAttribute ("DlPdcpOutputFilename", |
|
73 |
"Name of the file where the downlink results will be saved.", |
|
74 |
StringValue ("DlPdcpStats.txt"), |
|
75 |
MakeStringAccessor (&RadioBearerStatsCalculator::SetDlPdcpOutputFilename), |
|
76 |
MakeStringChecker ()) |
|
77 |
.AddAttribute ("UlPdcpOutputFilename", |
|
78 |
"Name of the file where the uplink results will be saved.", |
|
79 |
StringValue ("UlPdcpStats.txt"), |
|
80 |
MakeStringAccessor (&RadioBearerStatsCalculator::SetUlPdcpOutputFilename), |
|
81 |
MakeStringChecker ()) |
|
82 |
; |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
83 |
return tid; |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
84 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
85 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
86 |
void |
8494 | 87 |
RadioBearerStatsCalculator::UlTxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
88 |
{ |
8494 | 89 |
NS_LOG_FUNCTION (this << "UlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize); |
90 |
CheckEpoch (); |
|
91 |
ImsiLcidPair_t p (imsi, lcid); |
|
92 |
if (Simulator::Now () > m_startTime) |
|
7941 | 93 |
{ |
8494 | 94 |
m_flowId[p] = LteFlowId_t (rnti, lcid); |
8055 | 95 |
m_ulTxPackets[p]++; |
96 |
m_ulTxData[p] += packetSize; |
|
7954 | 97 |
} |
98 |
} |
|
99 |
||
100 |
void |
|
8494 | 101 |
RadioBearerStatsCalculator::DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize) |
7954 | 102 |
{ |
8494 | 103 |
NS_LOG_FUNCTION (this << "DlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize); |
104 |
CheckEpoch (); |
|
105 |
ImsiLcidPair_t p (imsi, lcid); |
|
106 |
if (Simulator::Now () > m_startTime) |
|
7954 | 107 |
{ |
8491 | 108 |
m_dlCellId[p] = cellId; |
8494 | 109 |
m_flowId[p] = LteFlowId_t (rnti, lcid); |
8055 | 110 |
m_dlTxPackets[p]++; |
111 |
m_dlTxData[p] += packetSize; |
|
7941 | 112 |
} |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
113 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
114 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
115 |
void |
8494 | 116 |
RadioBearerStatsCalculator::UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, |
117 |
uint64_t delay) |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
118 |
{ |
8494 | 119 |
NS_LOG_FUNCTION (this << "UlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay); |
120 |
ImsiLcidPair_t p (imsi, lcid); |
|
121 |
CheckEpoch (); |
|
8160 | 122 |
|
8494 | 123 |
if (Simulator::Now () > m_startTime) |
7941 | 124 |
{ |
8491 | 125 |
m_ulCellId[p] = cellId; |
8055 | 126 |
m_ulRxPackets[p]++; |
127 |
m_ulRxData[p] += packetSize; |
|
7954 | 128 |
|
8494 | 129 |
Uint64StatsMap::iterator it = m_ulDelay.find (p); |
130 |
if (it == m_ulDelay.end ()) |
|
7954 | 131 |
{ |
8494 | 132 |
NS_LOG_DEBUG (this << " Creating UL stats calculators for IMSI " << p.m_imsi << " and LCID " << (uint32_t) p.m_lcId); |
8055 | 133 |
m_ulDelay[p] = CreateObject<MinMaxAvgTotalCalculator<uint64_t> > (); |
134 |
m_ulPduSize[p] = CreateObject<MinMaxAvgTotalCalculator<uint32_t> > (); |
|
7954 | 135 |
} |
8494 | 136 |
m_ulDelay[p]->Update (delay); |
137 |
m_ulPduSize[p]->Update (packetSize); |
|
7954 | 138 |
} |
139 |
} |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
140 |
|
7954 | 141 |
void |
8494 | 142 |
RadioBearerStatsCalculator::DlRxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) |
7954 | 143 |
{ |
8494 | 144 |
NS_LOG_FUNCTION (this << "DlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay); |
145 |
CheckEpoch (); |
|
146 |
ImsiLcidPair_t p (imsi, lcid); |
|
147 |
if (Simulator::Now () > m_startTime) |
|
7954 | 148 |
{ |
8055 | 149 |
m_dlRxPackets[p]++; |
150 |
m_dlRxData[p] += packetSize; |
|
7954 | 151 |
|
8494 | 152 |
Uint64StatsMap::iterator it = m_dlDelay.find (p); |
153 |
if (it == m_dlDelay.end ()) |
|
7941 | 154 |
{ |
8494 | 155 |
NS_LOG_DEBUG (this << " Creating DL stats calculators for IMSI " << p.m_imsi << " and LCID " << (uint32_t) p.m_lcId); |
8055 | 156 |
m_dlDelay[p] = CreateObject<MinMaxAvgTotalCalculator<uint64_t> > (); |
157 |
m_dlPduSize[p] = CreateObject<MinMaxAvgTotalCalculator<uint32_t> > (); |
|
7954 | 158 |
} |
8494 | 159 |
m_dlDelay[p]->Update (delay); |
160 |
m_dlPduSize[p]->Update (packetSize); |
|
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
161 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
162 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
163 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
164 |
void |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
165 |
RadioBearerStatsCalculator::ShowResults (void) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
166 |
{ |
7916 | 167 |
|
8494 | 168 |
NS_LOG_FUNCTION (this << GetUlOutputFilename ().c_str () << GetDlOutputFilename ().c_str ()); |
169 |
NS_LOG_INFO ("Write Rlc Stats in " << GetUlOutputFilename ().c_str () << " and in " << GetDlOutputFilename ().c_str ()); |
|
8149 | 170 |
|
7954 | 171 |
std::ofstream ulOutFile; |
172 |
std::ofstream dlOutFile; |
|
173 |
||
8160 | 174 |
if (m_firstWrite == true) |
7941 | 175 |
{ |
8494 | 176 |
ulOutFile.open (GetUlOutputFilename ().c_str ()); |
177 |
if (!ulOutFile.is_open ()) |
|
8149 | 178 |
{ |
8494 | 179 |
NS_LOG_ERROR ("Can't open file " << GetUlOutputFilename ().c_str ()); |
8149 | 180 |
return; |
181 |
} |
|
7954 | 182 |
|
8494 | 183 |
dlOutFile.open (GetDlOutputFilename ().c_str ()); |
184 |
if (!dlOutFile.is_open ()) |
|
8149 | 185 |
{ |
8494 | 186 |
NS_LOG_ERROR ("Can't open file " << GetDlOutputFilename ().c_str ()); |
8149 | 187 |
return; |
188 |
} |
|
7941 | 189 |
m_firstWrite = false; |
8494 | 190 |
ulOutFile << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t"; |
7957 | 191 |
ulOutFile << "delay\tstdDev\tmin\tmax\t"; |
192 |
ulOutFile << "PduSize\tstdDev\tmin\tmax"; |
|
7954 | 193 |
ulOutFile << std::endl; |
8494 | 194 |
dlOutFile << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t"; |
7957 | 195 |
dlOutFile << "delay\tstdDev\tmin\tmax\t"; |
196 |
dlOutFile << "PduSize\tstdDev\tmin\tmax"; |
|
7954 | 197 |
dlOutFile << std::endl; |
7941 | 198 |
} |
199 |
else |
|
200 |
{ |
|
8494 | 201 |
ulOutFile.open (GetUlOutputFilename ().c_str (), std::ios_base::app); |
202 |
if (!ulOutFile.is_open ()) |
|
8149 | 203 |
{ |
8494 | 204 |
NS_LOG_ERROR ("Can't open file " << GetUlOutputFilename ().c_str ()); |
8149 | 205 |
return; |
206 |
} |
|
7954 | 207 |
|
8494 | 208 |
dlOutFile.open (GetDlOutputFilename ().c_str (), std::ios_base::app); |
209 |
if (!dlOutFile.is_open ()) |
|
8149 | 210 |
{ |
8494 | 211 |
NS_LOG_ERROR ("Can't open file " << GetDlOutputFilename ().c_str ()); |
8149 | 212 |
return; |
213 |
} |
|
7941 | 214 |
} |
7916 | 215 |
|
8494 | 216 |
WriteUlResults (ulOutFile); |
217 |
WriteDlResults (dlOutFile); |
|
7941 | 218 |
|
7954 | 219 |
} |
220 |
||
221 |
void |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
222 |
RadioBearerStatsCalculator::WriteUlResults (std::ofstream& outFile) |
7954 | 223 |
{ |
8494 | 224 |
NS_LOG_FUNCTION (this); |
8403
9aa1e4eb642d
improved logging in rlc-stats-calculator.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8266
diff
changeset
|
225 |
|
8055 | 226 |
// Get the unique IMSI / LCID list |
227 |
||
8491 | 228 |
std::vector < ImsiLcidPair_t > pairVector; |
8494 | 229 |
for (Uint32Map::iterator it = m_ulTxPackets.begin (); it != m_ulTxPackets.end (); ++it) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
230 |
{ |
8494 | 231 |
if (find (pairVector.begin (), pairVector.end (), (*it).first) == pairVector.end ()) |
7941 | 232 |
{ |
8494 | 233 |
pairVector.push_back ((*it).first); |
7941 | 234 |
} |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
235 |
} |
7916 | 236 |
|
7941 | 237 |
Time endTime = m_startTime + m_epochDuration; |
8494 | 238 |
for (std::vector<ImsiLcidPair_t>::iterator it = pairVector.begin (); it != pairVector.end (); ++it) |
7941 | 239 |
{ |
8266
3a30a2b5c94c
Refactoring of the statistics classes to avoid continious calls to the attribute system.
jaumenin
parents:
8261
diff
changeset
|
240 |
ImsiLcidPair_t p = *it; |
8494 | 241 |
outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t"; |
242 |
outFile << endTime.GetNanoSeconds () / 1.0e9 << "\t"; |
|
243 |
outFile << GetUlCellId (p.m_imsi, p.m_lcId) << "\t"; |
|
8160 | 244 |
outFile << p.m_imsi << "\t"; |
245 |
outFile << m_flowId[p].m_rnti << "\t"; |
|
246 |
outFile << (uint32_t) m_flowId[p].m_lcId << "\t"; |
|
8494 | 247 |
outFile << GetUlTxPackets (p.m_imsi, p.m_lcId) << "\t"; |
248 |
outFile << GetUlTxData (p.m_imsi, p.m_lcId) << "\t"; |
|
249 |
outFile << GetUlRxPackets (p.m_imsi, p.m_lcId) << "\t"; |
|
250 |
outFile << GetUlRxData (p.m_imsi, p.m_lcId) << "\t"; |
|
251 |
std::vector<double> stats = GetUlDelayStats (p.m_imsi, p.m_lcId); |
|
252 |
for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it) |
|
7954 | 253 |
{ |
7957 | 254 |
outFile << (*it) * 1e-9 << "\t"; |
7954 | 255 |
} |
8494 | 256 |
stats = GetUlPduSizeStats (p.m_imsi, p.m_lcId); |
257 |
for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it) |
|
7954 | 258 |
{ |
7957 | 259 |
outFile << (*it) << "\t"; |
7954 | 260 |
} |
261 |
outFile << std::endl; |
|
7941 | 262 |
} |
7954 | 263 |
|
8494 | 264 |
outFile.close (); |
7954 | 265 |
} |
266 |
||
267 |
void |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
268 |
RadioBearerStatsCalculator::WriteDlResults (std::ofstream& outFile) |
7954 | 269 |
{ |
8494 | 270 |
NS_LOG_FUNCTION (this); |
8403
9aa1e4eb642d
improved logging in rlc-stats-calculator.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8266
diff
changeset
|
271 |
|
8007 | 272 |
// Get the unique IMSI list |
8491 | 273 |
std::vector < ImsiLcidPair_t > pairVector; |
8494 | 274 |
for (Uint32Map::iterator it = m_dlTxPackets.begin (); it != m_dlTxPackets.end (); ++it) |
7954 | 275 |
{ |
8494 | 276 |
if (find (pairVector.begin (), pairVector.end (), (*it).first) == pairVector.end ()) |
7954 | 277 |
{ |
8494 | 278 |
pairVector.push_back ((*it).first); |
7954 | 279 |
} |
280 |
} |
|
281 |
||
282 |
Time endTime = m_startTime + m_epochDuration; |
|
8494 | 283 |
for (std::vector<ImsiLcidPair_t>::iterator pair = pairVector.begin (); pair != pairVector.end (); ++pair) |
7954 | 284 |
{ |
8266
3a30a2b5c94c
Refactoring of the statistics classes to avoid continious calls to the attribute system.
jaumenin
parents:
8261
diff
changeset
|
285 |
ImsiLcidPair_t p = *pair; |
8494 | 286 |
outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t"; |
287 |
outFile << endTime.GetNanoSeconds () / 1.0e9 << "\t"; |
|
288 |
outFile << GetDlCellId (p.m_imsi, p.m_lcId) << "\t"; |
|
8160 | 289 |
outFile << p.m_imsi << "\t"; |
290 |
outFile << m_flowId[p].m_rnti << "\t"; |
|
291 |
outFile << (uint32_t) m_flowId[p].m_lcId << "\t"; |
|
8494 | 292 |
outFile << GetDlTxPackets (p.m_imsi, p.m_lcId) << "\t"; |
293 |
outFile << GetDlTxData (p.m_imsi, p.m_lcId) << "\t"; |
|
294 |
outFile << GetDlRxPackets (p.m_imsi, p.m_lcId) << "\t"; |
|
295 |
outFile << GetDlRxData (p.m_imsi, p.m_lcId) << "\t"; |
|
296 |
std::vector<double> stats = GetDlDelayStats (p.m_imsi, p.m_lcId); |
|
297 |
for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it) |
|
7954 | 298 |
{ |
7957 | 299 |
outFile << (*it) * 1e-9 << "\t"; |
7954 | 300 |
} |
8494 | 301 |
stats = GetDlPduSizeStats (p.m_imsi, p.m_lcId); |
302 |
for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it) |
|
7954 | 303 |
{ |
7957 | 304 |
outFile << (*it) << "\t"; |
7954 | 305 |
} |
306 |
outFile << std::endl; |
|
307 |
} |
|
8007 | 308 |
|
8494 | 309 |
outFile.close (); |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
310 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
311 |
|
7941 | 312 |
void |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
313 |
RadioBearerStatsCalculator::ResetResults (void) |
7941 | 314 |
{ |
8494 | 315 |
NS_LOG_FUNCTION (this); |
8403
9aa1e4eb642d
improved logging in rlc-stats-calculator.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8266
diff
changeset
|
316 |
|
8494 | 317 |
m_ulTxPackets.erase (m_ulTxPackets.begin (), m_ulTxPackets.end ()); |
318 |
m_ulRxPackets.erase (m_ulRxPackets.begin (), m_ulRxPackets.end ()); |
|
319 |
m_ulRxData.erase (m_ulRxData.begin (), m_ulRxData.end ()); |
|
320 |
m_ulTxData.erase (m_ulTxData.begin (), m_ulTxData.end ()); |
|
321 |
m_ulDelay.erase (m_ulDelay.begin (), m_ulDelay.end ()); |
|
322 |
m_ulPduSize.erase (m_ulPduSize.begin (), m_ulPduSize.end ()); |
|
7954 | 323 |
|
8494 | 324 |
m_dlTxPackets.erase (m_dlTxPackets.begin (), m_dlTxPackets.end ()); |
325 |
m_dlRxPackets.erase (m_dlRxPackets.begin (), m_dlRxPackets.end ()); |
|
326 |
m_dlRxData.erase (m_dlRxData.begin (), m_dlRxData.end ()); |
|
327 |
m_dlTxData.erase (m_dlTxData.begin (), m_dlTxData.end ()); |
|
328 |
m_dlDelay.erase (m_dlDelay.begin (), m_dlDelay.end ()); |
|
329 |
m_dlPduSize.erase (m_dlPduSize.begin (), m_dlPduSize.end ()); |
|
7941 | 330 |
} |
331 |
||
332 |
void |
|
8491 | 333 |
RadioBearerStatsCalculator::CheckEpoch (void) |
7941 | 334 |
{ |
8494 | 335 |
NS_LOG_FUNCTION (this); |
8403
9aa1e4eb642d
improved logging in rlc-stats-calculator.cc
Nicola Baldo <nbaldo@cttc.es>
parents:
8266
diff
changeset
|
336 |
|
8494 | 337 |
if (Simulator::Now () > m_startTime + m_epochDuration) |
7941 | 338 |
{ |
8494 | 339 |
ShowResults (); |
340 |
ResetResults (); |
|
341 |
StartEpoch (); |
|
7941 | 342 |
} |
343 |
} |
|
344 |
||
345 |
void |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
346 |
RadioBearerStatsCalculator::StartEpoch (void) |
7941 | 347 |
{ |
8494 | 348 |
NS_LOG_FUNCTION (this); |
349 |
while (Simulator::Now () > m_startTime + m_epochDuration) |
|
8491 | 350 |
{ |
351 |
m_startTime += m_epochDuration; |
|
352 |
} |
|
7941 | 353 |
} |
354 |
||
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
355 |
uint32_t |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
356 |
RadioBearerStatsCalculator::GetUlTxPackets (uint64_t imsi, uint8_t lcid) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
357 |
{ |
8494 | 358 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
359 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 360 |
return m_ulTxPackets[p]; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
361 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
362 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
363 |
uint32_t |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
364 |
RadioBearerStatsCalculator::GetUlRxPackets (uint64_t imsi, uint8_t lcid) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
365 |
{ |
8494 | 366 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
367 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 368 |
return m_ulRxPackets[p]; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
369 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
370 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
371 |
uint64_t |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
372 |
RadioBearerStatsCalculator::GetUlTxData (uint64_t imsi, uint8_t lcid) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
373 |
{ |
8494 | 374 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
375 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 376 |
return m_ulTxData[p]; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
377 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
378 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
379 |
uint64_t |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
380 |
RadioBearerStatsCalculator::GetUlRxData (uint64_t imsi, uint8_t lcid) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
381 |
{ |
8494 | 382 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
383 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 384 |
return m_ulRxData[p]; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
385 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
386 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
387 |
double |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
388 |
RadioBearerStatsCalculator::GetUlDelay (uint64_t imsi, uint8_t lcid) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
389 |
{ |
8494 | 390 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
391 |
ImsiLcidPair_t p (imsi, lcid); |
|
392 |
Uint64StatsMap::iterator it = m_ulDelay.find (p); |
|
393 |
if (it == m_ulDelay.end ()) |
|
7954 | 394 |
{ |
8494 | 395 |
NS_LOG_ERROR ("UL delay for " << imsi << " - " << (uint16_t) lcid << " not found"); |
7954 | 396 |
return 0; |
397 |
||
398 |
} |
|
8494 | 399 |
return m_ulDelay[p]->getMean (); |
7941 | 400 |
} |
401 |
||
7954 | 402 |
std::vector<double> |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
403 |
RadioBearerStatsCalculator::GetUlDelayStats (uint64_t imsi, uint8_t lcid) |
7941 | 404 |
{ |
8494 | 405 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
406 |
ImsiLcidPair_t p (imsi, lcid); |
|
7954 | 407 |
std::vector<double> stats; |
8494 | 408 |
Uint64StatsMap::iterator it = m_ulDelay.find (p); |
409 |
if (it == m_ulDelay.end ()) |
|
7954 | 410 |
{ |
8650 | 411 |
stats.push_back (0.0); |
412 |
stats.push_back (0.0); |
|
413 |
stats.push_back (0.0); |
|
414 |
stats.push_back (0.0); |
|
7954 | 415 |
return stats; |
416 |
||
417 |
} |
|
8494 | 418 |
stats.push_back (m_ulDelay[p]->getMean ()); |
419 |
stats.push_back (m_ulDelay[p]->getStddev ()); |
|
420 |
stats.push_back (m_ulDelay[p]->getMin ()); |
|
421 |
stats.push_back (m_ulDelay[p]->getMax ()); |
|
7954 | 422 |
return stats; |
423 |
} |
|
424 |
||
425 |
std::vector<double> |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
426 |
RadioBearerStatsCalculator::GetUlPduSizeStats (uint64_t imsi, uint8_t lcid) |
7954 | 427 |
{ |
8494 | 428 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
429 |
ImsiLcidPair_t p (imsi, lcid); |
|
7954 | 430 |
std::vector<double> stats; |
8494 | 431 |
Uint32StatsMap::iterator it = m_ulPduSize.find (p); |
432 |
if (it == m_ulPduSize.end ()) |
|
7954 | 433 |
{ |
8650 | 434 |
stats.push_back (0.0); |
435 |
stats.push_back (0.0); |
|
436 |
stats.push_back (0.0); |
|
437 |
stats.push_back (0.0); |
|
7954 | 438 |
return stats; |
439 |
||
440 |
} |
|
8494 | 441 |
stats.push_back (m_ulPduSize[p]->getMean ()); |
442 |
stats.push_back (m_ulPduSize[p]->getStddev ()); |
|
443 |
stats.push_back (m_ulPduSize[p]->getMin ()); |
|
444 |
stats.push_back (m_ulPduSize[p]->getMax ()); |
|
7954 | 445 |
return stats; |
446 |
} |
|
447 |
||
448 |
uint32_t |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
449 |
RadioBearerStatsCalculator::GetDlTxPackets (uint64_t imsi, uint8_t lcid) |
7954 | 450 |
{ |
8494 | 451 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
452 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 453 |
return m_dlTxPackets[p]; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
454 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
455 |
|
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
456 |
uint32_t |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
457 |
RadioBearerStatsCalculator::GetDlRxPackets (uint64_t imsi, uint8_t lcid) |
7954 | 458 |
{ |
8494 | 459 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
460 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 461 |
return m_dlRxPackets[p]; |
7954 | 462 |
} |
463 |
||
464 |
uint64_t |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
465 |
RadioBearerStatsCalculator::GetDlTxData (uint64_t imsi, uint8_t lcid) |
7954 | 466 |
{ |
8494 | 467 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
468 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 469 |
return m_dlTxData[p]; |
7954 | 470 |
} |
471 |
||
472 |
uint64_t |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
473 |
RadioBearerStatsCalculator::GetDlRxData (uint64_t imsi, uint8_t lcid) |
7954 | 474 |
{ |
8494 | 475 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
476 |
ImsiLcidPair_t p (imsi, lcid); |
|
8055 | 477 |
return m_dlRxData[p]; |
7954 | 478 |
} |
479 |
||
8160 | 480 |
uint32_t |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
481 |
RadioBearerStatsCalculator::GetUlCellId (uint64_t imsi, uint8_t lcid) |
8160 | 482 |
{ |
8494 | 483 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
484 |
ImsiLcidPair_t p (imsi, lcid); |
|
8160 | 485 |
return m_ulCellId[p]; |
486 |
} |
|
487 |
||
488 |
uint32_t |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
489 |
RadioBearerStatsCalculator::GetDlCellId (uint64_t imsi, uint8_t lcid) |
8160 | 490 |
{ |
8494 | 491 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
492 |
ImsiLcidPair_t p (imsi, lcid); |
|
8160 | 493 |
return m_dlCellId[p]; |
494 |
} |
|
495 |
||
7954 | 496 |
double |
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
497 |
RadioBearerStatsCalculator::GetDlDelay (uint64_t imsi, uint8_t lcid) |
7954 | 498 |
{ |
8494 | 499 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
500 |
ImsiLcidPair_t p (imsi, lcid); |
|
501 |
Uint64StatsMap::iterator it = m_dlDelay.find (p); |
|
502 |
if (it == m_dlDelay.end ()) |
|
7954 | 503 |
{ |
8494 | 504 |
NS_LOG_ERROR ("DL delay for " << imsi << " not found"); |
7954 | 505 |
return 0; |
506 |
} |
|
8494 | 507 |
return m_dlDelay[p]->getMean (); |
7954 | 508 |
} |
509 |
||
510 |
std::vector<double> |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
511 |
RadioBearerStatsCalculator::GetDlDelayStats (uint64_t imsi, uint8_t lcid) |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
512 |
{ |
8494 | 513 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
514 |
ImsiLcidPair_t p (imsi, lcid); |
|
7954 | 515 |
std::vector<double> stats; |
8494 | 516 |
Uint64StatsMap::iterator it = m_dlDelay.find (p); |
517 |
if (it == m_dlDelay.end ()) |
|
7954 | 518 |
{ |
8650 | 519 |
stats.push_back (0.0); |
520 |
stats.push_back (0.0); |
|
521 |
stats.push_back (0.0); |
|
522 |
stats.push_back (0.0); |
|
7954 | 523 |
return stats; |
524 |
||
525 |
} |
|
8494 | 526 |
stats.push_back (m_dlDelay[p]->getMean ()); |
527 |
stats.push_back (m_dlDelay[p]->getStddev ()); |
|
528 |
stats.push_back (m_dlDelay[p]->getMin ()); |
|
529 |
stats.push_back (m_dlDelay[p]->getMax ()); |
|
7954 | 530 |
return stats; |
531 |
} |
|
532 |
||
533 |
std::vector<double> |
|
8461
71ddd85a693b
RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents:
8403
diff
changeset
|
534 |
RadioBearerStatsCalculator::GetDlPduSizeStats (uint64_t imsi, uint8_t lcid) |
7954 | 535 |
{ |
8494 | 536 |
NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid); |
537 |
ImsiLcidPair_t p (imsi, lcid); |
|
7954 | 538 |
std::vector<double> stats; |
8494 | 539 |
Uint32StatsMap::iterator it = m_dlPduSize.find (p); |
540 |
if (it == m_dlPduSize.end ()) |
|
7954 | 541 |
{ |
8650 | 542 |
stats.push_back (0.0); |
543 |
stats.push_back (0.0); |
|
544 |
stats.push_back (0.0); |
|
545 |
stats.push_back (0.0); |
|
7954 | 546 |
return stats; |
547 |
||
548 |
} |
|
8494 | 549 |
stats.push_back (m_dlPduSize[p]->getMean ()); |
550 |
stats.push_back (m_dlPduSize[p]->getStddev ()); |
|
551 |
stats.push_back (m_dlPduSize[p]->getMin ()); |
|
552 |
stats.push_back (m_dlPduSize[p]->getMax ()); |
|
7954 | 553 |
return stats; |
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
554 |
} |
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
555 |
|
8540 | 556 |
std::string |
557 |
RadioBearerStatsCalculator::GetUlOutputFilename (void) |
|
558 |
{ |
|
559 |
if (m_bearerType == "RLC") |
|
560 |
{ |
|
561 |
return LteStatsCalculator::GetUlOutputFilename (); |
|
562 |
} |
|
563 |
else |
|
564 |
{ |
|
565 |
return GetUlPdcpOutputFilename (); |
|
566 |
} |
|
567 |
} |
|
568 |
||
569 |
std::string |
|
570 |
RadioBearerStatsCalculator::GetDlOutputFilename (void) |
|
571 |
{ |
|
572 |
if (m_bearerType == "RLC") |
|
573 |
{ |
|
574 |
return LteStatsCalculator::GetDlOutputFilename (); |
|
575 |
} |
|
576 |
else |
|
577 |
{ |
|
578 |
return GetDlPdcpOutputFilename (); |
|
579 |
} |
|
580 |
} |
|
581 |
||
582 |
void |
|
583 |
RadioBearerStatsCalculator::SetUlPdcpOutputFilename (std::string outputFilename) |
|
584 |
{ |
|
585 |
m_ulPdcpOutputFilename = outputFilename; |
|
586 |
} |
|
587 |
||
588 |
std::string |
|
589 |
RadioBearerStatsCalculator::GetUlPdcpOutputFilename (void) |
|
590 |
{ |
|
591 |
return m_ulPdcpOutputFilename; |
|
592 |
} |
|
593 |
void |
|
594 |
RadioBearerStatsCalculator::SetDlPdcpOutputFilename (std::string outputFilename) |
|
595 |
{ |
|
596 |
m_dlPdcpOutputFilename = outputFilename; |
|
597 |
} |
|
598 |
||
599 |
std::string |
|
600 |
RadioBearerStatsCalculator::GetDlPdcpOutputFilename (void) |
|
601 |
{ |
|
602 |
return m_dlPdcpOutputFilename; |
|
603 |
} |
|
604 |
||
7905
80557b09aa7f
Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff
changeset
|
605 |
} // namespace ns3 |