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