src/lte/helper/radio-bearer-stats-calculator.cc
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--
zero stats when no PDU received
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
    25
#include <vector>
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
    26
#include <algorithm>
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff changeset
    27
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
    28
namespace ns3
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
    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
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
    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
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
    35
RadioBearerStatsCalculator::RadioBearerStatsCalculator () :
8540
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    36
  m_firstWrite (true), m_bearerType ("RLC")
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    37
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    38
  NS_LOG_FUNCTION (this);
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    39
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    40
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    41
RadioBearerStatsCalculator::RadioBearerStatsCalculator (std::string bearerType) :
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    42
  m_firstWrite (true)
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff changeset
    43
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    44
  NS_LOG_FUNCTION (this);
8540
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    50
  NS_LOG_FUNCTION (this);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    57
  static TypeId tid =
8540
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    58
    TypeId ("ns3::RadioBearerStatsCalculator")
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    59
    .SetParent<LteStatsCalculator> ().AddConstructor<RadioBearerStatsCalculator> ()
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    60
    .AddAttribute ("StartTime", "Start time of the on going epoch.", TimeValue (Seconds (0.)),MakeTimeAccessor (&RadioBearerStatsCalculator::m_startTime), MakeTimeChecker ())
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    61
    .AddAttribute ("EpochDuration", "Epoch duration.", TimeValue (Seconds (0.25)), MakeTimeAccessor (&RadioBearerStatsCalculator::m_epochDuration), MakeTimeChecker ())
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    62
    .AddAttribute ("DlRlcOutputFilename",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    63
                   "Name of the file where the downlink results will be saved.",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    64
                   StringValue ("DlRlcStats.txt"),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    65
                   MakeStringAccessor (&LteStatsCalculator::SetDlOutputFilename),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    66
                   MakeStringChecker ())
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    67
    .AddAttribute ("UlRlcOutputFilename",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    68
                   "Name of the file where the uplink results will be saved.",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    69
                   StringValue ("UlRlcStats.txt"),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    70
                   MakeStringAccessor (&LteStatsCalculator::SetUlOutputFilename),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    71
                   MakeStringChecker ())
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    72
    .AddAttribute ("DlPdcpOutputFilename",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    73
                   "Name of the file where the downlink results will be saved.",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    74
                   StringValue ("DlPdcpStats.txt"),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    75
                   MakeStringAccessor (&RadioBearerStatsCalculator::SetDlPdcpOutputFilename),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    76
                   MakeStringChecker ())
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    77
    .AddAttribute ("UlPdcpOutputFilename",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    78
                   "Name of the file where the uplink results will be saved.",
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    79
                   StringValue ("UlPdcpStats.txt"),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    80
                   MakeStringAccessor (&RadioBearerStatsCalculator::SetUlPdcpOutputFilename),
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    81
                   MakeStringChecker ())
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
    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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    89
  NS_LOG_FUNCTION (this << "UlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    90
  CheckEpoch ();
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    91
  ImsiLcidPair_t p (imsi, lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    92
  if (Simulator::Now () > m_startTime)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
    93
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
    94
      m_flowId[p] = LteFlowId_t (rnti, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
    95
      m_ulTxPackets[p]++;
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
    96
      m_ulTxData[p] += packetSize;
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
    97
    }
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
    98
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
    99
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   100
void
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   101
RadioBearerStatsCalculator::DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   102
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   103
  NS_LOG_FUNCTION (this << "DlTxPDU" << imsi << rnti << (uint32_t) lcid << packetSize);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   104
  CheckEpoch ();
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   105
  ImsiLcidPair_t p (imsi, lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   106
  if (Simulator::Now () > m_startTime)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   107
    {
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   108
      m_dlCellId[p] = cellId;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   109
      m_flowId[p] = LteFlowId_t (rnti, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   110
      m_dlTxPackets[p]++;
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   111
      m_dlTxData[p] += packetSize;
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   116
RadioBearerStatsCalculator::UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize,
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   117
                                     uint64_t delay)
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff changeset
   118
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   119
  NS_LOG_FUNCTION (this << "UlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   120
  ImsiLcidPair_t p (imsi, lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   121
  CheckEpoch ();
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   122
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   123
  if (Simulator::Now () > m_startTime)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   124
    {
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   125
      m_ulCellId[p] = cellId;
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   126
      m_ulRxPackets[p]++;
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   127
      m_ulRxData[p] += packetSize;
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   128
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   129
      Uint64StatsMap::iterator it = m_ulDelay.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   130
      if (it == m_ulDelay.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   131
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   132
          NS_LOG_DEBUG (this << " Creating UL stats calculators for IMSI " << p.m_imsi << " and LCID " << (uint32_t) p.m_lcId);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   133
          m_ulDelay[p] = CreateObject<MinMaxAvgTotalCalculator<uint64_t> > ();
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   134
          m_ulPduSize[p] = CreateObject<MinMaxAvgTotalCalculator<uint32_t> > ();
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   135
        }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   136
      m_ulDelay[p]->Update (delay);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   137
      m_ulPduSize[p]->Update (packetSize);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   138
    }
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   139
}
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff changeset
   140
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   141
void
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   142
RadioBearerStatsCalculator::DlRxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   143
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   144
  NS_LOG_FUNCTION (this << "DlRxPDU" << imsi << rnti << (uint32_t) lcid << packetSize << delay);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   145
  CheckEpoch ();
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   146
  ImsiLcidPair_t p (imsi, lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   147
  if (Simulator::Now () > m_startTime)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   148
    {
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   149
      m_dlRxPackets[p]++;
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   150
      m_dlRxData[p] += packetSize;
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   151
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   152
      Uint64StatsMap::iterator it = m_dlDelay.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   153
      if (it == m_dlDelay.end ())
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   154
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   155
          NS_LOG_DEBUG (this << " Creating DL stats calculators for IMSI " << p.m_imsi << " and LCID " << (uint32_t) p.m_lcId);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   156
          m_dlDelay[p] = CreateObject<MinMaxAvgTotalCalculator<uint64_t> > ();
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   157
          m_dlPduSize[p] = CreateObject<MinMaxAvgTotalCalculator<uint32_t> > ();
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   158
        }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   159
      m_dlDelay[p]->Update (delay);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
931ab6dd9ffb write Rlc Status into a file
mrequena
parents: 7905
diff changeset
   167
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   168
  NS_LOG_FUNCTION (this << GetUlOutputFilename ().c_str () << GetDlOutputFilename ().c_str ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   169
  NS_LOG_INFO ("Write Rlc Stats in " << GetUlOutputFilename ().c_str () << " and in " << GetDlOutputFilename ().c_str ());
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   170
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   171
  std::ofstream ulOutFile;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   172
  std::ofstream dlOutFile;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   173
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   174
  if (m_firstWrite == true)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   175
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   176
      ulOutFile.open (GetUlOutputFilename ().c_str ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   177
      if (!ulOutFile.is_open ())
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   178
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   179
          NS_LOG_ERROR ("Can't open file " << GetUlOutputFilename ().c_str ());
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   180
          return;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   181
        }
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   182
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   183
      dlOutFile.open (GetDlOutputFilename ().c_str ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   184
      if (!dlOutFile.is_open ())
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   185
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   186
          NS_LOG_ERROR ("Can't open file " << GetDlOutputFilename ().c_str ());
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   187
          return;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   188
        }
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   189
      m_firstWrite = false;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   190
      ulOutFile << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t";
7957
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   191
      ulOutFile << "delay\tstdDev\tmin\tmax\t";
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   192
      ulOutFile << "PduSize\tstdDev\tmin\tmax";
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   193
      ulOutFile << std::endl;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   194
      dlOutFile << "% start\tend\tCellId\tIMSI\tRNTI\tLCID\tnTxPDUs\tTxBytes\tnRxPDUs\tRxBytes\t";
7957
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   195
      dlOutFile << "delay\tstdDev\tmin\tmax\t";
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   196
      dlOutFile << "PduSize\tstdDev\tmin\tmax";
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   197
      dlOutFile << std::endl;
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   198
    }
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   199
  else
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   200
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   201
      ulOutFile.open (GetUlOutputFilename ().c_str (), std::ios_base::app);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   202
      if (!ulOutFile.is_open ())
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   203
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   204
          NS_LOG_ERROR ("Can't open file " << GetUlOutputFilename ().c_str ());
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   205
          return;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   206
        }
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   207
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   208
      dlOutFile.open (GetDlOutputFilename ().c_str (), std::ios_base::app);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   209
      if (!dlOutFile.is_open ())
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   210
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   211
          NS_LOG_ERROR ("Can't open file " << GetDlOutputFilename ().c_str ());
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   212
          return;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8139
diff changeset
   213
        }
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   214
    }
7916
931ab6dd9ffb write Rlc Status into a file
mrequena
parents: 7905
diff changeset
   215
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   216
  WriteUlResults (ulOutFile);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   217
  WriteDlResults (dlOutFile);
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   218
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   219
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   220
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   221
void
8461
71ddd85a693b RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents: 8403
diff changeset
   222
RadioBearerStatsCalculator::WriteUlResults (std::ofstream& outFile)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   223
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   226
  // Get the unique IMSI / LCID list
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   227
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   228
  std::vector < ImsiLcidPair_t > pairVector;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   231
      if (find (pairVector.begin (), pairVector.end (), (*it).first) == pairVector.end ())
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   232
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   233
          pairVector.push_back ((*it).first);
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   234
        }
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff changeset
   235
    }
7916
931ab6dd9ffb write Rlc Status into a file
mrequena
parents: 7905
diff changeset
   236
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   237
  Time endTime = m_startTime + m_epochDuration;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   238
  for (std::vector<ImsiLcidPair_t>::iterator it = pairVector.begin (); it != pairVector.end (); ++it)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   241
      outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   242
      outFile << endTime.GetNanoSeconds () / 1.0e9 << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   243
      outFile << GetUlCellId (p.m_imsi, p.m_lcId) << "\t";
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   244
      outFile << p.m_imsi << "\t";
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   245
      outFile << m_flowId[p].m_rnti << "\t";
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   246
      outFile << (uint32_t) m_flowId[p].m_lcId << "\t";
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   247
      outFile << GetUlTxPackets (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   248
      outFile << GetUlTxData (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   249
      outFile << GetUlRxPackets (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   250
      outFile << GetUlRxData (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   251
      std::vector<double> stats = GetUlDelayStats (p.m_imsi, p.m_lcId);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   252
      for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   253
        {
7957
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   254
          outFile << (*it) * 1e-9 << "\t";
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   255
        }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   256
      stats = GetUlPduSizeStats (p.m_imsi, p.m_lcId);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   257
      for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   258
        {
7957
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   259
          outFile << (*it) << "\t";
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   260
        }
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   261
      outFile << std::endl;
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   262
    }
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   263
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   264
  outFile.close ();
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   265
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   266
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   267
void
8461
71ddd85a693b RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents: 8403
diff changeset
   268
RadioBearerStatsCalculator::WriteDlResults (std::ofstream& outFile)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   269
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7971
diff changeset
   272
  // Get the unique IMSI list
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   273
  std::vector < ImsiLcidPair_t > pairVector;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   274
  for (Uint32Map::iterator it = m_dlTxPackets.begin (); it != m_dlTxPackets.end (); ++it)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   275
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   276
      if (find (pairVector.begin (), pairVector.end (), (*it).first) == pairVector.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   277
        {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   278
          pairVector.push_back ((*it).first);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   279
        }
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   280
    }
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   281
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   282
  Time endTime = m_startTime + m_epochDuration;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   283
  for (std::vector<ImsiLcidPair_t>::iterator pair = pairVector.begin (); pair != pairVector.end (); ++pair)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   286
      outFile << m_startTime.GetNanoSeconds () / 1.0e9 << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   287
      outFile << endTime.GetNanoSeconds () / 1.0e9 << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   288
      outFile << GetDlCellId (p.m_imsi, p.m_lcId) << "\t";
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   289
      outFile << p.m_imsi << "\t";
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   290
      outFile << m_flowId[p].m_rnti << "\t";
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   291
      outFile << (uint32_t) m_flowId[p].m_lcId << "\t";
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   292
      outFile << GetDlTxPackets (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   293
      outFile << GetDlTxData (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   294
      outFile << GetDlRxPackets (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   295
      outFile << GetDlRxData (p.m_imsi, p.m_lcId) << "\t";
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   296
      std::vector<double> stats = GetDlDelayStats (p.m_imsi, p.m_lcId);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   297
      for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   298
        {
7957
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   299
          outFile << (*it) * 1e-9 << "\t";
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   300
        }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   301
      stats = GetDlPduSizeStats (p.m_imsi, p.m_lcId);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   302
      for (std::vector<double>::iterator it = stats.begin (); it != stats.end (); ++it)
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   303
        {
7957
76943b3e9d60 Made RLC output readeable to humans
jnin
parents: 7954
diff changeset
   304
          outFile << (*it) << "\t";
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   305
        }
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   306
      outFile << std::endl;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   307
    }
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7971
diff changeset
   308
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   312
void
8461
71ddd85a693b RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents: 8403
diff changeset
   313
RadioBearerStatsCalculator::ResetResults (void)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   314
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   317
  m_ulTxPackets.erase (m_ulTxPackets.begin (), m_ulTxPackets.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   318
  m_ulRxPackets.erase (m_ulRxPackets.begin (), m_ulRxPackets.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   319
  m_ulRxData.erase (m_ulRxData.begin (), m_ulRxData.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   320
  m_ulTxData.erase (m_ulTxData.begin (), m_ulTxData.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   321
  m_ulDelay.erase (m_ulDelay.begin (), m_ulDelay.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   322
  m_ulPduSize.erase (m_ulPduSize.begin (), m_ulPduSize.end ());
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   323
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   324
  m_dlTxPackets.erase (m_dlTxPackets.begin (), m_dlTxPackets.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   325
  m_dlRxPackets.erase (m_dlRxPackets.begin (), m_dlRxPackets.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   326
  m_dlRxData.erase (m_dlRxData.begin (), m_dlRxData.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   327
  m_dlTxData.erase (m_dlTxData.begin (), m_dlTxData.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   328
  m_dlDelay.erase (m_dlDelay.begin (), m_dlDelay.end ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   329
  m_dlPduSize.erase (m_dlPduSize.begin (), m_dlPduSize.end ());
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   330
}
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   331
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   332
void
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   333
RadioBearerStatsCalculator::CheckEpoch (void)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   334
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   337
  if (Simulator::Now () > m_startTime + m_epochDuration)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   338
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   339
      ShowResults ();
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   340
      ResetResults ();
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   341
      StartEpoch ();
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   342
    }
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   343
}
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   344
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   345
void
8461
71ddd85a693b RlcStatsCalculator --> RadioBearerStatsCalculator
Nicola Baldo <nbaldo@cttc.es>
parents: 8403
diff changeset
   346
RadioBearerStatsCalculator::StartEpoch (void)
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   347
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   348
  NS_LOG_FUNCTION (this);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   349
  while (Simulator::Now () > m_startTime + m_epochDuration)
8491
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   350
    {
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   351
      m_startTime += m_epochDuration;
97a454b21dc8 Fix bug in updating epoch times
Jaume Nin
parents: 8461
diff changeset
   352
    }
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   353
}
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   358
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   359
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   366
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   367
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   374
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   375
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   382
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   383
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   390
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   391
  ImsiLcidPair_t p (imsi, lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   392
  Uint64StatsMap::iterator it = m_ulDelay.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   393
  if (it == m_ulDelay.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   394
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   395
      NS_LOG_ERROR ("UL delay for " << imsi << " - " << (uint16_t) lcid << " not found");
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   396
      return 0;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   397
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   398
    }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   399
  return m_ulDelay[p]->getMean ();
7941
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   400
}
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   401
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
c92f27568aef Fixed throughput calculation
jnin
parents: 7940
diff changeset
   404
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   405
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   406
  ImsiLcidPair_t p (imsi, lcid);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   407
  std::vector<double> stats;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   408
  Uint64StatsMap::iterator it = m_ulDelay.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   409
  if (it == m_ulDelay.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   410
    {
8650
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   411
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   412
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   413
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   414
      stats.push_back (0.0);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   415
      return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   416
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   417
    }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   418
  stats.push_back (m_ulDelay[p]->getMean ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   419
  stats.push_back (m_ulDelay[p]->getStddev ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   420
  stats.push_back (m_ulDelay[p]->getMin ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   421
  stats.push_back (m_ulDelay[p]->getMax ());
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   422
  return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   423
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   424
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   427
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   428
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   429
  ImsiLcidPair_t p (imsi, lcid);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   430
  std::vector<double> stats;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   431
  Uint32StatsMap::iterator it = m_ulPduSize.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   432
  if (it == m_ulPduSize.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   433
    {
8650
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   434
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   435
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   436
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   437
      stats.push_back (0.0);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   438
      return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   439
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   440
    }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   441
  stats.push_back (m_ulPduSize[p]->getMean ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   442
  stats.push_back (m_ulPduSize[p]->getStddev ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   443
  stats.push_back (m_ulPduSize[p]->getMin ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   444
  stats.push_back (m_ulPduSize[p]->getMax ());
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   445
  return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   446
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   447
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   450
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   451
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   452
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   458
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   459
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   460
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   461
  return m_dlRxPackets[p];
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   462
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   463
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   466
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   467
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   468
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   469
  return m_dlTxData[p];
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   470
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   471
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   474
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   475
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   476
  ImsiLcidPair_t p (imsi, lcid);
8055
235d5e4ff8b0 Added Doxygen documentation to RlcStats
jnin
parents: 8034
diff changeset
   477
  return m_dlRxData[p];
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   478
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   479
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   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
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   482
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   483
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   484
  ImsiLcidPair_t p (imsi, lcid);
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   485
  return m_ulCellId[p];
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   486
}
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   487
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   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
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   490
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   491
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   492
  ImsiLcidPair_t p (imsi, lcid);
8160
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   493
  return m_dlCellId[p];
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   494
}
3acc5e72aa88 Added CellId output to RlcStats file
jnin
parents: 8149
diff changeset
   495
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   498
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   499
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   500
  ImsiLcidPair_t p (imsi, lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   501
  Uint64StatsMap::iterator it = m_dlDelay.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   502
  if (it == m_dlDelay.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   503
    {
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   504
      NS_LOG_ERROR ("DL delay for " << imsi << " not found");
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   505
      return 0;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   506
    }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   507
  return m_dlDelay[p]->getMean ();
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   508
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   509
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   513
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   514
  ImsiLcidPair_t p (imsi, lcid);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   515
  std::vector<double> stats;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   516
  Uint64StatsMap::iterator it = m_dlDelay.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   517
  if (it == m_dlDelay.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   518
    {
8650
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   519
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   520
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   521
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   522
      stats.push_back (0.0);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   523
      return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   524
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   525
    }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   526
  stats.push_back (m_dlDelay[p]->getMean ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   527
  stats.push_back (m_dlDelay[p]->getStddev ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   528
  stats.push_back (m_dlDelay[p]->getMin ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   529
  stats.push_back (m_dlDelay[p]->getMax ());
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   530
  return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   531
}
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   532
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   535
{
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   536
  NS_LOG_FUNCTION (this << imsi << (uint16_t) lcid);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   537
  ImsiLcidPair_t p (imsi, lcid);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   538
  std::vector<double> stats;
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   539
  Uint32StatsMap::iterator it = m_dlPduSize.find (p);
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   540
  if (it == m_dlPduSize.end ())
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   541
    {
8650
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   542
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   543
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   544
      stats.push_back (0.0);
9e372de3b581 zero stats when no PDU received
iptech@cttc.cat
parents: 8540
diff changeset
   545
      stats.push_back (0.0);
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   546
      return stats;
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   547
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   548
    }
8494
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   549
  stats.push_back (m_dlPduSize[p]->getMean ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   550
  stats.push_back (m_dlPduSize[p]->getStddev ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   551
  stats.push_back (m_dlPduSize[p]->getMin ());
00f009a467e3 Code style fix
Jaume Nin
parents: 8491
diff changeset
   552
  stats.push_back (m_dlPduSize[p]->getMax ());
7954
80e46addfeee Added DL and UL RLC performance
jnin
parents: 7941
diff changeset
   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
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   556
std::string
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   557
RadioBearerStatsCalculator::GetUlOutputFilename (void)
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   558
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   559
  if (m_bearerType == "RLC")
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   560
    {
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   561
      return LteStatsCalculator::GetUlOutputFilename ();
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   562
    }
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   563
  else
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   564
    {
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   565
      return GetUlPdcpOutputFilename ();
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   566
    }
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   567
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   568
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   569
std::string
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   570
RadioBearerStatsCalculator::GetDlOutputFilename (void)
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   571
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   572
  if (m_bearerType == "RLC")
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   573
    {
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   574
      return LteStatsCalculator::GetDlOutputFilename ();
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   575
    }
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   576
  else
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   577
    {
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   578
      return GetDlPdcpOutputFilename ();
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   579
    }
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   580
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   581
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   582
void
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   583
RadioBearerStatsCalculator::SetUlPdcpOutputFilename (std::string outputFilename)
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   584
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   585
  m_ulPdcpOutputFilename = outputFilename;
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   586
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   587
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   588
std::string
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   589
RadioBearerStatsCalculator::GetUlPdcpOutputFilename (void)
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   590
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   591
  return m_ulPdcpOutputFilename;
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   592
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   593
void
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   594
RadioBearerStatsCalculator::SetDlPdcpOutputFilename (std::string outputFilename)
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   595
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   596
  m_dlPdcpOutputFilename = outputFilename;
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   597
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   598
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   599
std::string
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   600
RadioBearerStatsCalculator::GetDlPdcpOutputFilename (void)
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   601
{
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   602
  return m_dlPdcpOutputFilename;
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   603
}
5e6afc302fb2 Moved all output filenames to attributes
Jaume Nin
parents: 8494
diff changeset
   604
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents:
diff changeset
   605
} // namespace ns3