src/lte/examples/lena-dual-stripe.cc
author Marco Miozzo <marco.miozzo@cttc.es>
Mon, 03 Jun 2013 17:01:52 +0200
changeset 10080 1b36e2276e15
parent 10066 45eb94d3e4ee
child 10085 048edf672cef
permissions -rw-r--r--
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     2
/*
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     3
 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     4
 *
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     7
 * published by the Free Software Foundation;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     8
 *
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    12
 * GNU General Public License for more details.
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    13
 *
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    14
 * You should have received a copy of the GNU General Public License
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    15
 * along with this program; if not, write to the Free Software
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    17
 *
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    19
 */
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    20
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    21
#include <ns3/core-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    22
#include <ns3/network-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    23
#include <ns3/mobility-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    24
#include <ns3/internet-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    25
#include <ns3/lte-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    26
#include <ns3/config-store-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    27
#include <ns3/buildings-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    28
#include <ns3/point-to-point-helper.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    29
#include <ns3/applications-module.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    30
#include <ns3/log.h>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    31
#include <iomanip>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    32
#include <ios>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    33
#include <string>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    34
#include <vector>
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    35
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    36
// The topology of this simulation program is inspired from 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    37
// 3GPP R4-092042, Section 4.2.1 Dual Stripe Model
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    38
// note that the term "apartments" used in that document matches with
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    39
// the term "room" used in the BuildingsMobilityModel 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    40
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    41
using namespace ns3;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    42
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    43
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    44
NS_LOG_COMPONENT_DEFINE ("LenaDualStripe");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    45
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    46
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    47
bool AreOverlapping (Box a, Box b)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    48
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    49
  return !((a.xMin > b.xMax) || (b.xMin > a.xMax) || (a.yMin > b.yMax) || (b.yMin > a.yMax));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    50
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    51
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    52
class FemtocellBlockAllocator
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    53
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    54
public:
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    55
  FemtocellBlockAllocator (Box area, uint32_t nApartmentsX, uint32_t nFloors);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    56
  void Create (uint32_t n);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    57
  void Create ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    58
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    59
private:
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    60
  bool OverlapsWithAnyPrevious (Box);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    61
  Box m_area;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    62
  uint32_t m_nApartmentsX;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    63
  uint32_t m_nFloors;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    64
  std::list<Box> m_previousBlocks;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    65
  double m_xSize;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    66
  double m_ySize;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    67
  Ptr<UniformRandomVariable> m_xMinVar;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    68
  Ptr<UniformRandomVariable> m_yMinVar;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    69
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    70
};
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    71
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    72
FemtocellBlockAllocator::FemtocellBlockAllocator (Box area, uint32_t nApartmentsX, uint32_t nFloors)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    73
  : m_area (area),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    74
    m_nApartmentsX (nApartmentsX),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    75
    m_nFloors (nFloors),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    76
    m_xSize (nApartmentsX*10 + 20),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    77
    m_ySize (70)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    78
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    79
    m_xMinVar = CreateObject<UniformRandomVariable> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    80
    m_xMinVar->SetAttribute ("Min", DoubleValue (area.xMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    81
    m_xMinVar->SetAttribute ("Max", DoubleValue (area.xMax - m_xSize));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    82
    m_yMinVar = CreateObject<UniformRandomVariable> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    83
    m_yMinVar->SetAttribute ("Min", DoubleValue (area.yMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    84
    m_yMinVar->SetAttribute ("Max", DoubleValue (area.yMax - m_ySize));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    85
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    86
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    87
void 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    88
FemtocellBlockAllocator::Create (uint32_t n)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    89
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    90
  for (uint32_t i = 0; i < n; ++i)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    91
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    92
      Create ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    93
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    94
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    95
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    96
void
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    97
FemtocellBlockAllocator::Create ()
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    98
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
    99
  Box box;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   100
  uint32_t attempt = 0;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   101
  do 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   102
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   103
      NS_ASSERT_MSG (attempt < 100, "Too many failed attemtps to position apartment block. Too many blocks? Too small area?");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   104
      box.xMin = m_xMinVar->GetValue ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   105
      box.xMax = box.xMin + m_xSize;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   106
      box.yMin = m_yMinVar->GetValue ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   107
      box.yMax = box.yMin + m_ySize;      
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   108
      ++attempt;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   109
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   110
  while (OverlapsWithAnyPrevious (box));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   111
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   112
  NS_LOG_LOGIC ("allocated non overlapping block " << box);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   113
  m_previousBlocks.push_back (box);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   114
  Ptr<GridBuildingAllocator>  gridBuildingAllocator;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   115
  gridBuildingAllocator = CreateObject<GridBuildingAllocator> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   116
  gridBuildingAllocator->SetAttribute ("GridWidth", UintegerValue (1));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   117
  gridBuildingAllocator->SetAttribute ("LengthX", DoubleValue (10*m_nApartmentsX)); 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   118
  gridBuildingAllocator->SetAttribute ("LengthY", DoubleValue (10*2));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   119
  gridBuildingAllocator->SetAttribute ("DeltaX", DoubleValue (10));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   120
  gridBuildingAllocator->SetAttribute ("DeltaY", DoubleValue (10));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   121
  gridBuildingAllocator->SetAttribute ("Height", DoubleValue (3*m_nFloors));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   122
  gridBuildingAllocator->SetBuildingAttribute ("NRoomsX", UintegerValue (m_nApartmentsX));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   123
  gridBuildingAllocator->SetBuildingAttribute ("NRoomsY", UintegerValue (2));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   124
  gridBuildingAllocator->SetBuildingAttribute ("NFloors", UintegerValue (m_nFloors));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   125
  gridBuildingAllocator->SetAttribute ("MinX", DoubleValue (box.xMin + 10));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   126
  gridBuildingAllocator->SetAttribute ("MinY", DoubleValue (box.yMin + 10));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   127
  gridBuildingAllocator->Create (2);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   128
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   129
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   130
bool 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   131
FemtocellBlockAllocator::OverlapsWithAnyPrevious (Box box)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   132
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   133
  for (std::list<Box>::iterator it = m_previousBlocks.begin (); it != m_previousBlocks.end (); ++it)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   134
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   135
      if (AreOverlapping (*it, box))
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   136
        {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   137
          return true;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   138
        }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   139
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   140
  return false;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   141
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   142
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   143
void 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   144
PrintGnuplottableBuildingListToFile (std::string filename)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   145
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   146
  std::ofstream outFile;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   147
  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   148
  if (!outFile.is_open ())
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   149
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   150
      NS_LOG_ERROR ("Can't open file " << filename);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   151
      return;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   152
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   153
  uint32_t index = 0;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   154
  for (BuildingList::Iterator it = BuildingList::Begin (); it != BuildingList::End (); ++it)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   155
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   156
      ++index;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   157
      Box box = (*it)->GetBoundaries ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   158
      outFile << "set object " << index
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   159
              << " rect from " << box.xMin  << "," << box.yMin  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   160
              << " to "   << box.xMax  << "," << box.yMax
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   161
              << " front fs empty "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   162
              << std::endl;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   163
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   164
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   165
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   166
void 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   167
PrintGnuplottableUeListToFile (std::string filename)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   168
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   169
  std::ofstream outFile;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   170
  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   171
  if (!outFile.is_open ())
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   172
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   173
      NS_LOG_ERROR ("Can't open file " << filename);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   174
      return;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   175
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   176
  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   177
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   178
      Ptr<Node> node = *it;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   179
      int nDevs = node->GetNDevices ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   180
      for (int j = 0; j < nDevs; j++)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   181
        {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   182
          Ptr<LteUeNetDevice> uedev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   183
          if (uedev)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   184
            {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   185
              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   186
              outFile << "set label \"" << uedev->GetImsi ()
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   187
                      << "\" at "<< pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps 0.3 lc rgb \"grey\" offset 0,0"  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   188
                      << std::endl;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   189
            }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   190
        }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   191
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   192
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   193
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   194
void 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   195
PrintGnuplottableEnbListToFile (std::string filename)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   196
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   197
  std::ofstream outFile;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   198
  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   199
  if (!outFile.is_open ())
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   200
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   201
      NS_LOG_ERROR ("Can't open file " << filename);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   202
      return;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   203
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   204
  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   205
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   206
      Ptr<Node> node = *it;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   207
      int nDevs = node->GetNDevices ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   208
      for (int j = 0; j < nDevs; j++)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   209
        {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   210
          Ptr<LteEnbNetDevice> enbdev = node->GetDevice (j)->GetObject <LteEnbNetDevice> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   211
          if (enbdev)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   212
            {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   213
              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   214
              outFile << "set label \"" << enbdev->GetCellId ()
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   215
                      << "\" at "<< pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"white\" front  point pt 2 ps 0.3 lc rgb \"white\" offset 0,0"  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   216
                      << std::endl;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   217
            }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   218
        }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   219
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   220
}
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   221
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   222
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   223
static ns3::GlobalValue g_nBlocks ("nBlocks", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   224
                                   "Number of femtocell blocks", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   225
                                   ns3::UintegerValue (10),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   226
                                   ns3::MakeUintegerChecker<uint32_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   227
static ns3::GlobalValue g_nApartmentsX ("nApartmentsX", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   228
                                        "Number of apartments along the X axis in a femtocell block",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   229
                                        ns3::UintegerValue (10),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   230
                                        ns3::MakeUintegerChecker<uint32_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   231
static ns3::GlobalValue g_nFloors ("nFloors", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   232
                                   "Number of floors",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   233
                                   ns3::UintegerValue (1),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   234
                                   ns3::MakeUintegerChecker<uint32_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   235
static ns3::GlobalValue g_nMacroEnbSites ("nMacroEnbSites", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   236
                                          "How many macro sites there are",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   237
                                          ns3::UintegerValue (3),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   238
                                          ns3::MakeUintegerChecker<uint32_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   239
static ns3::GlobalValue g_nMacroEnbSitesX ("nMacroEnbSitesX", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   240
                                           "(minimum) number of sites along the X-axis of the hex grid",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   241
                                           ns3::UintegerValue (1),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   242
                                           ns3::MakeUintegerChecker<uint32_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   243
static ns3::GlobalValue g_interSiteDistance ("interSiteDistance", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   244
                                             "min distance between two nearby macro cell sites",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   245
                                             ns3::DoubleValue (500),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   246
                                             ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   247
static ns3::GlobalValue g_areaMarginFactor ("areaMarginFactor", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   248
                                            "how much the UE area extends outside the macrocell grid, "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   249
                                            "expressed as fraction of the interSiteDistance",   
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   250
                                            ns3::DoubleValue (0.5),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   251
                                            ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   252
static ns3::GlobalValue g_macroUeDensity ("macroUeDensity", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   253
                                          "How many macrocell UEs there are per square meter",   
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   254
                                          ns3::DoubleValue (0.0001),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   255
                                          ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   256
static ns3::GlobalValue g_homeEnbDeploymentRatio ("homeEnbDeploymentRatio", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   257
                                                  "The HeNB deployment ratio as per 3GPP R4-092042",   
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   258
                                                  ns3::DoubleValue (0.2),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   259
                                                  ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   260
static ns3::GlobalValue g_homeEnbActivationRatio ("homeEnbActivationRatio", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   261
                                                  "The HeNB activation ratio as per 3GPP R4-092042",   
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   262
                                                  ns3::DoubleValue (0.5),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   263
                                                  ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   264
static ns3::GlobalValue g_homeUesHomeEnbRatio ("homeUesHomeEnbRatio", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   265
                                               "How many (on average) home UEs per HeNB there are in the simulation",         
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   266
                                               ns3::DoubleValue (1.0),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   267
                                               ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   268
static ns3::GlobalValue g_macroEnbTxPowerDbm ("macroEnbTxPowerDbm", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   269
                                              "TX power [dBm] used by macro eNBs",   
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   270
                                              ns3::DoubleValue (46.0),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   271
                                              ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   272
static ns3::GlobalValue g_homeEnbTxPowerDbm ("homeEnbTxPowerDbm", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   273
                                             "TX power [dBm] used by HeNBs",   
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   274
                                             ns3::DoubleValue (20.0),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   275
                                             ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   276
static ns3::GlobalValue g_macroEnbDlEarfcn ("macroEnbDlEarfcn", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   277
                                            "DL EARFCN used by macro eNBs", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   278
                                            ns3::UintegerValue (100),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   279
                                            ns3::MakeUintegerChecker<uint16_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   280
static ns3::GlobalValue g_homeEnbDlEarfcn ("homeEnbDlEarfcn", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   281
                                           "DL EARFCN used by HeNBs",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   282
                                           ns3::UintegerValue (100),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   283
                                           ns3::MakeUintegerChecker<uint16_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   284
static ns3::GlobalValue g_macroEnbBandwidth ("macroEnbBandwidth", 
9653
382d27da8905 merged lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 9612 9105
diff changeset
   285
                                             "bandwidth [num RBs] used by macro eNBs",  
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   286
                                             ns3::UintegerValue (25),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   287
                                             ns3::MakeUintegerChecker<uint16_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   288
static ns3::GlobalValue g_homeEnbBandwidth ("homeEnbBandwidth", 
9653
382d27da8905 merged lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 9612 9105
diff changeset
   289
                                            "bandwidth [num RBs] used by HeNBs",  
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   290
                                            ns3::UintegerValue (25),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   291
                                            ns3::MakeUintegerChecker<uint16_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   292
static ns3::GlobalValue g_simTime ("simTime", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   293
                                   "Total duration of the simulation [s]",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   294
                                   ns3::DoubleValue (0.25),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   295
                                   ns3::MakeDoubleChecker<double> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   296
static ns3::GlobalValue g_generateRem ("generateRem", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   297
                                       "if true, will generate a REM and then abort the simulation;"
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   298
                                       "if false, will run the simulation normally (without generating any REM)",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   299
                                       ns3::BooleanValue (false),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   300
                                       ns3::MakeBooleanChecker ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   301
static ns3::GlobalValue g_epc ("epc", 
9612
0f8803049d1e improve documentation of LTE-EPC attributes
Nicola Baldo <nbaldo@cttc.es>
parents: 9570
diff changeset
   302
                               "If true, will setup the EPC to simulate an end-to-end topology, "
0f8803049d1e improve documentation of LTE-EPC attributes
Nicola Baldo <nbaldo@cttc.es>
parents: 9570
diff changeset
   303
                               "with real IP applications over PDCP and RLC UM (or RLC AM by changing "
0f8803049d1e improve documentation of LTE-EPC attributes
Nicola Baldo <nbaldo@cttc.es>
parents: 9570
diff changeset
   304
                               "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). "
0f8803049d1e improve documentation of LTE-EPC attributes
Nicola Baldo <nbaldo@cttc.es>
parents: 9570
diff changeset
   305
                               "If false, only the LTE radio access will be simulated with RLC SM. ",  
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   306
                               ns3::BooleanValue (false),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   307
                               ns3::MakeBooleanChecker ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   308
static ns3::GlobalValue g_epcDl ("epcDl", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   309
                                 "if true, will activate data flows in the downlink when EPC is being used. "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   310
                                 "If false, downlink flows won't be activated. "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   311
                                 "If EPC is not used, this parameter will be ignored.",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   312
                                 ns3::BooleanValue (true),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   313
                                 ns3::MakeBooleanChecker ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   314
static ns3::GlobalValue g_epcUl ("epcUl", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   315
                                 "if true, will activate data flows in the uplink when EPC is being used. "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   316
                                 "If false, uplink flows won't be activated. "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   317
                                 "If EPC is not used, this parameter will be ignored.",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   318
                                 ns3::BooleanValue (true),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   319
                                 ns3::MakeBooleanChecker ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   320
static ns3::GlobalValue g_useUdp ("useUdp", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   321
                                  "if true, the UdpClient application will be used. "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   322
                                  "Otherwise, the BulkSend application will be used over a TCP connection. "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   323
                                  "If EPC is not used, this parameter will be ignored.",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   324
                                  ns3::BooleanValue (true),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   325
                                  ns3::MakeBooleanChecker ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   326
static ns3::GlobalValue g_fadingTrace ("fadingTrace", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   327
                                           "The path of the fading trace (by default no fading trace "
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   328
                                           "is loaded, i.e., fading is not considered)",  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   329
                                           ns3::StringValue (""),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   330
                                           ns3::MakeStringChecker ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   331
static ns3::GlobalValue g_numBearersPerUe ("numBearersPerUe",
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   332
                                               "How many bearers per UE there are in the simulation",
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   333
                                               ns3::UintegerValue (1),
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   334
                                               ns3::MakeUintegerChecker<uint16_t> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   335
9570
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   336
static ns3::GlobalValue g_srsPeriodicity ("srsPeriodicity",
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   337
                                               "SRS Periodicity (has to be at least greater than the number of UEs per eNB)",
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   338
                                               ns3::UintegerValue (80),
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   339
                                               ns3::MakeUintegerChecker<uint16_t> ());
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   340
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   341
int
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   342
main (int argc, char *argv[])
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   343
{
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   344
  // change some default attributes so that they are reasonable for
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   345
  // this scenario, but do this before processing command line
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   346
  // arguments, so that the user is allowed to override these settings 
10065
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   347
  Config::SetDefault ("ns3::UdpClient::Interval", TimeValue (MilliSeconds (1)));
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   348
  Config::SetDefault ("ns3::UdpClient::MaxPackets", UintegerValue (1000000));
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   349
  Config::SetDefault ("ns3::LteRlcUm::MaxTxBufferSize", UintegerValue (10 * 1024));
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   350
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   351
  CommandLine cmd;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   352
  cmd.Parse (argc, argv);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   353
  ConfigStore inputConfig;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   354
  inputConfig.ConfigureDefaults ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   355
  // parse again so you can override input file default values via command line
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   356
  cmd.Parse (argc, argv); 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   357
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   358
  // the scenario parameters get their values from the global attributes defined above
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   359
  UintegerValue uintegerValue;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   360
  DoubleValue doubleValue;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   361
  BooleanValue booleanValue;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   362
  StringValue stringValue;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   363
  GlobalValue::GetValueByName ("nBlocks", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   364
  uint32_t nBlocks = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   365
  GlobalValue::GetValueByName ("nApartmentsX", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   366
  uint32_t nApartmentsX = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   367
  GlobalValue::GetValueByName ("nFloors", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   368
  uint32_t nFloors = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   369
  GlobalValue::GetValueByName ("nMacroEnbSites", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   370
  uint32_t nMacroEnbSites = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   371
  GlobalValue::GetValueByName ("nMacroEnbSitesX", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   372
  uint32_t nMacroEnbSitesX = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   373
  GlobalValue::GetValueByName ("interSiteDistance", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   374
  double interSiteDistance = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   375
  GlobalValue::GetValueByName ("areaMarginFactor", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   376
  double areaMarginFactor = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   377
  GlobalValue::GetValueByName ("macroUeDensity", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   378
  double macroUeDensity = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   379
  GlobalValue::GetValueByName ("homeEnbDeploymentRatio", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   380
  double homeEnbDeploymentRatio = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   381
  GlobalValue::GetValueByName ("homeEnbActivationRatio", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   382
  double homeEnbActivationRatio = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   383
  GlobalValue::GetValueByName ("homeUesHomeEnbRatio", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   384
  double homeUesHomeEnbRatio = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   385
  GlobalValue::GetValueByName ("macroEnbTxPowerDbm", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   386
  double macroEnbTxPowerDbm = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   387
  GlobalValue::GetValueByName ("homeEnbTxPowerDbm", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   388
  double homeEnbTxPowerDbm = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   389
  GlobalValue::GetValueByName ("macroEnbDlEarfcn", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   390
  uint16_t macroEnbDlEarfcn = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   391
  GlobalValue::GetValueByName ("homeEnbDlEarfcn", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   392
  uint16_t homeEnbDlEarfcn = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   393
  GlobalValue::GetValueByName ("macroEnbBandwidth", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   394
  uint16_t macroEnbBandwidth = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   395
  GlobalValue::GetValueByName ("homeEnbBandwidth", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   396
  uint16_t homeEnbBandwidth = uintegerValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   397
  GlobalValue::GetValueByName ("simTime", doubleValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   398
  double simTime = doubleValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   399
  GlobalValue::GetValueByName ("epc", booleanValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   400
  bool epc = booleanValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   401
  GlobalValue::GetValueByName ("epcDl", booleanValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   402
  bool epcDl = booleanValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   403
  GlobalValue::GetValueByName ("epcUl", booleanValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   404
  bool epcUl = booleanValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   405
  GlobalValue::GetValueByName ("useUdp", booleanValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   406
  bool useUdp = booleanValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   407
  GlobalValue::GetValueByName ("generateRem", booleanValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   408
  bool generateRem = booleanValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   409
  GlobalValue::GetValueByName ("fadingTrace", stringValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   410
  std::string fadingTrace = stringValue.Get ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   411
  GlobalValue::GetValueByName ("numBearersPerUe", uintegerValue);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   412
  uint16_t numBearersPerUe = uintegerValue.Get ();
9570
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   413
  GlobalValue::GetValueByName ("srsPeriodicity", uintegerValue);
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   414
  uint16_t srsPeriodicity = uintegerValue.Get ();
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   415
fda36a257171 Introduce srsPeriodicity parameter in lena-dual-stripe
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9368
diff changeset
   416
  Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue(srsPeriodicity));
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   417
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   418
  Box macroUeBox;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   419
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   420
  if (nMacroEnbSites > 0)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   421
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   422
      uint32_t currentSite = nMacroEnbSites -1;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   423
      uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   424
      uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   425
      uint32_t rowIndex = biRowIndex*2 + 1;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   426
      if (biRowRemainder >= nMacroEnbSitesX)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   427
        {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   428
          ++rowIndex;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   429
        }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   430
      uint32_t nMacroEnbSitesY = rowIndex;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   431
      NS_LOG_LOGIC ("nMacroEnbSitesY = " << nMacroEnbSitesY);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   432
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   433
      macroUeBox = Box (-areaMarginFactor*interSiteDistance, 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   434
                        (nMacroEnbSitesX + areaMarginFactor)*interSiteDistance, 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   435
                        -areaMarginFactor*interSiteDistance, 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   436
                        (nMacroEnbSitesY -1)*interSiteDistance*sqrt(0.75) + areaMarginFactor*interSiteDistance,
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   437
                        1.0, 2.0);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   438
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   439
  else
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   440
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   441
      // still need the box to place femtocell blocks
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   442
      macroUeBox = Box (0, 150, 0, 150, 1.0, 2.0);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   443
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   444
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   445
  FemtocellBlockAllocator blockAllocator (macroUeBox, nApartmentsX, nFloors);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   446
  blockAllocator.Create (nBlocks);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   447
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   448
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   449
  uint32_t nHomeEnbs = round (4 * nApartmentsX * nBlocks * nFloors * homeEnbDeploymentRatio * homeEnbActivationRatio);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   450
  NS_LOG_LOGIC ("nHomeEnbs = " << nHomeEnbs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   451
  uint32_t nHomeUes = round (nHomeEnbs * homeUesHomeEnbRatio);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   452
  NS_LOG_LOGIC ("nHomeUes = " << nHomeUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   453
  double macroUeAreaSize = (macroUeBox.xMax - macroUeBox.xMin) * (macroUeBox.yMax - macroUeBox.yMin);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   454
  uint32_t nMacroUes = round (macroUeAreaSize * macroUeDensity) ;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   455
  NS_LOG_LOGIC ("nMacroUes = " << nMacroUes << " (density=" << macroUeDensity << ")");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   456
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   457
  NodeContainer homeEnbs;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   458
  homeEnbs.Create (nHomeEnbs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   459
  NodeContainer macroEnbs;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   460
  macroEnbs.Create (3 * nMacroEnbSites);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   461
  NodeContainer homeUes;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   462
  homeUes.Create (nHomeUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   463
  NodeContainer macroUes;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   464
  macroUes.Create (nMacroUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   465
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   466
  MobilityHelper mobility;
10080
1b36e2276e15 Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents: 10066
diff changeset
   467
  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   468
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   469
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   470
  Ptr <LteHelper> lteHelper = CreateObject<LteHelper> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   471
  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::HybridBuildingsPropagationLossModel"));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   472
  lteHelper->SetPathlossModelAttribute ("ShadowSigmaExtWalls", DoubleValue (0));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   473
  lteHelper->SetPathlossModelAttribute ("ShadowSigmaOutdoor", DoubleValue (1));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   474
  lteHelper->SetPathlossModelAttribute ("ShadowSigmaIndoor", DoubleValue (1.5));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   475
  // use always LOS model
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   476
  lteHelper->SetPathlossModelAttribute ("Los2NlosThr", DoubleValue (1e6));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   477
  lteHelper->SetSpectrumChannelType ("ns3::MultiModelSpectrumChannel");
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   478
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   479
//   lteHelper->EnableLogComponents ();
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   480
//   LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   481
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   482
  if (!fadingTrace.empty ())
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   483
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   484
      lteHelper->SetAttribute ("FadingModel", StringValue ("ns3::TraceFadingLossModel"));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   485
      lteHelper->SetFadingModelAttribute("TraceFilename", StringValue (fadingTrace));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   486
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   487
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   488
  Ptr<EpcHelper> epcHelper;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   489
  if (epc)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   490
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   491
      NS_LOG_LOGIC ("enabling EPC");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   492
      epcHelper = CreateObject<EpcHelper> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   493
      lteHelper->SetEpcHelper (epcHelper);      
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   494
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   495
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   496
  // Macro eNBs in 3-sector hex grid
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   497
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   498
  mobility.Install (macroEnbs);
10080
1b36e2276e15 Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents: 10066
diff changeset
   499
  BuildingsHelper::Install (macroEnbs);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   500
  Ptr<LteHexGridEnbTopologyHelper> lteHexGridEnbTopologyHelper = CreateObject<LteHexGridEnbTopologyHelper> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   501
  lteHexGridEnbTopologyHelper->SetLteHelper (lteHelper);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   502
  lteHexGridEnbTopologyHelper->SetAttribute ("InterSiteDistance", DoubleValue (interSiteDistance));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   503
  lteHexGridEnbTopologyHelper->SetAttribute ("MinX", DoubleValue (interSiteDistance/2));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   504
  lteHexGridEnbTopologyHelper->SetAttribute ("GridWidth", UintegerValue (nMacroEnbSitesX));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   505
  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (macroEnbTxPowerDbm));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   506
  lteHelper->SetEnbAntennaModelType ("ns3::ParabolicAntennaModel");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   507
  lteHelper->SetEnbAntennaModelAttribute ("Beamwidth",   DoubleValue (70));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   508
  lteHelper->SetEnbAntennaModelAttribute ("MaxAttenuation",     DoubleValue (20.0));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   509
  lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (macroEnbDlEarfcn));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   510
  lteHelper->SetEnbDeviceAttribute ("UlEarfcn", UintegerValue (macroEnbDlEarfcn + 18000));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   511
  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (macroEnbBandwidth));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   512
  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (macroEnbBandwidth));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   513
  NetDeviceContainer macroEnbDevs = lteHexGridEnbTopologyHelper->SetPositionAndInstallEnbDevice (macroEnbs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   514
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   515
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   516
  // HomeEnbs randomly indoor
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   517
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   518
  Ptr<PositionAllocator> positionAlloc = CreateObject<RandomRoomPositionAllocator> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   519
  mobility.SetPositionAllocator (positionAlloc);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   520
  mobility.Install (homeEnbs);
10080
1b36e2276e15 Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents: 10066
diff changeset
   521
  BuildingsHelper::Install (homeEnbs);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   522
  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (homeEnbTxPowerDbm));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   523
  lteHelper->SetEnbAntennaModelType ("ns3::IsotropicAntennaModel");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   524
  lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (homeEnbDlEarfcn));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   525
  lteHelper->SetEnbDeviceAttribute ("UlEarfcn", UintegerValue (homeEnbDlEarfcn + 18000));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   526
  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (homeEnbBandwidth));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   527
  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (homeEnbBandwidth));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   528
  NetDeviceContainer homeEnbDevs  = lteHelper->InstallEnbDevice (homeEnbs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   529
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   530
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   531
  // macro Ues 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   532
  NS_LOG_LOGIC ("randomly allocating macro UEs in " << macroUeBox);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   533
  positionAlloc = CreateObject<RandomBoxPositionAllocator> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   534
  Ptr<UniformRandomVariable> xVal = CreateObject<UniformRandomVariable> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   535
  xVal->SetAttribute ("Min", DoubleValue (macroUeBox.xMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   536
  xVal->SetAttribute ("Max", DoubleValue (macroUeBox.xMax));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   537
  positionAlloc->SetAttribute ("X", PointerValue (xVal));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   538
  Ptr<UniformRandomVariable> yVal = CreateObject<UniformRandomVariable> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   539
  yVal->SetAttribute ("Min", DoubleValue (macroUeBox.yMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   540
  yVal->SetAttribute ("Max", DoubleValue (macroUeBox.yMax));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   541
  positionAlloc->SetAttribute ("Y", PointerValue (yVal));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   542
  Ptr<UniformRandomVariable> zVal = CreateObject<UniformRandomVariable> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   543
  zVal->SetAttribute ("Min", DoubleValue (macroUeBox.zMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   544
  zVal->SetAttribute ("Max", DoubleValue (macroUeBox.zMax));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   545
  positionAlloc->SetAttribute ("Z", PointerValue (zVal));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   546
  mobility.SetPositionAllocator (positionAlloc);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   547
  mobility.Install (macroUes);
10080
1b36e2276e15 Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents: 10066
diff changeset
   548
  BuildingsHelper::Install (macroUes);
1b36e2276e15 Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents: 10066
diff changeset
   549
  
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   550
  NetDeviceContainer macroUeDevs = lteHelper->InstallUeDevice (macroUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   551
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   552
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   553
  // home UEs located in the same apartment in which there are the Home eNBs
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   554
  positionAlloc = CreateObject<SameRoomPositionAllocator> (homeEnbs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   555
  mobility.SetPositionAllocator (positionAlloc);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   556
  mobility.Install (homeUes);
10080
1b36e2276e15 Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents: 10066
diff changeset
   557
  BuildingsHelper::Install (homeUes);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   558
  NetDeviceContainer homeUeDevs = lteHelper->InstallUeDevice (homeUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   559
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   560
  Ipv4Address remoteHostAddr;
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   561
  NodeContainer ues;
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   562
  Ipv4StaticRoutingHelper ipv4RoutingHelper;
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   563
  Ipv4InterfaceContainer ueIpIfaces;
10065
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   564
  Ptr<Node> remoteHost;
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   565
  NetDeviceContainer ueDevs;
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   566
  if (epc)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   567
    {
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   568
      NS_LOG_LOGIC ("setting up internet and remote host");
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   569
  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   570
      // Create a single RemoteHost
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   571
      NodeContainer remoteHostContainer;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   572
      remoteHostContainer.Create (1);
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   573
      remoteHost = remoteHostContainer.Get (0);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   574
      InternetStackHelper internet;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   575
      internet.Install (remoteHostContainer);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   576
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   577
      // Create the Internet
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   578
      PointToPointHelper p2ph;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   579
      p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   580
      p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   581
      p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   582
      Ptr<Node> pgw = epcHelper->GetPgwNode ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   583
      NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   584
      Ipv4AddressHelper ipv4h;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   585
      ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   586
      Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   587
      // in this container, interface 0 is the pgw, 1 is the remoteHost
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   588
      remoteHostAddr = internetIpIfaces.GetAddress (1);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   589
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   590
      Ipv4StaticRoutingHelper ipv4RoutingHelper;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   591
      Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   592
      remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   593
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   594
      // for internetworking purposes, consider together home UEs and macro UEs
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   595
      ues.Add (homeUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   596
      ues.Add (macroUes);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   597
      ueDevs.Add (homeUeDevs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   598
      ueDevs.Add (macroUeDevs);      
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   599
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   600
      // Install the IP stack on the UEs      
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   601
      internet.Install (ues);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   602
      ueIpIfaces = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueDevs));
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   603
    }
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   604
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   605
  // attachment (needs to be done after IP stack configuration)
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   606
  // macro UEs attached to the closest macro eNB
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   607
  lteHelper->AttachToClosestEnb (macroUeDevs, macroEnbDevs);
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   608
  // each home UE is ttach explicitly to its home eNB
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   609
  NetDeviceContainer::Iterator ueDevIt;
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   610
  NetDeviceContainer::Iterator enbDevIt = homeEnbDevs.Begin ();
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   611
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   612
  for (ueDevIt = homeUeDevs.Begin ();
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   613
       ueDevIt != homeUeDevs.End ();
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   614
       ++ueDevIt, ++enbDevIt)
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   615
    {
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   616
      // this because of the order in which SameRoomPositionAllocator
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   617
      // will place the UEs
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   618
      if (enbDevIt == homeEnbDevs.End ())
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   619
        {
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   620
          enbDevIt = homeEnbDevs.Begin ();
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   621
        }
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   622
      lteHelper->Attach (*ueDevIt, *enbDevIt);
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   623
    }
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   624
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   625
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   626
  if (epc)
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   627
    {
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   628
      NS_LOG_LOGIC ("setting up applications");
10065
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   629
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   630
      // Install and start applications on UEs and remote host
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   631
      uint16_t dlPort = 10000;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   632
      uint16_t ulPort = 20000;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   633
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   634
      // randomize a bit start times to avoid simulation artifacts
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   635
      // (e.g., buffer overflows due to packet transmissions happening
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   636
      // exactly at the same time) 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   637
      Ptr<UniformRandomVariable> startTimeSeconds = CreateObject<UniformRandomVariable> ();
9700
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   638
      if (useUdp)
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   639
        {      
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   640
          startTimeSeconds->SetAttribute ("Min", DoubleValue (0));
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   641
          startTimeSeconds->SetAttribute ("Max", DoubleValue (0.010));
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   642
        }
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   643
      else
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   644
        {
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   645
          // TCP needs to be started late enough so that all UEs are connected
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   646
          // otherwise TCP SYN packets will get lost
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   647
          startTimeSeconds->SetAttribute ("Min", DoubleValue (0.100));
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   648
          startTimeSeconds->SetAttribute ("Max", DoubleValue (0.110));
137f5c458b90 fixed TCP app start time in lena-dual-stripe
Nicola Baldo <nbaldo@cttc.es>
parents: 9653
diff changeset
   649
        }
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   650
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   651
      for (uint32_t u = 0; u < ues.GetN (); ++u)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   652
        {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   653
          Ptr<Node> ue = ues.Get (u);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   654
          // Set the default gateway for the UE
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   655
          Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ue->GetObject<Ipv4> ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   656
          ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   657
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   658
          for (uint32_t b = 0; b < numBearersPerUe; ++b)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   659
            {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   660
              ++dlPort;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   661
              ++ulPort;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   662
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   663
              ApplicationContainer clientApps;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   664
              ApplicationContainer serverApps;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   665
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   666
              if (useUdp)
10065
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   667
                {
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   668
                  if (epcDl)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   669
                    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   670
                      NS_LOG_LOGIC ("installing UDP DL app for UE " << u);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   671
                      UdpClientHelper dlClientHelper (ueIpIfaces.GetAddress (u), dlPort);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   672
                      clientApps.Add (dlClientHelper.Install (remoteHost));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   673
                      PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   674
                                                           InetSocketAddress (Ipv4Address::GetAny (), dlPort));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   675
                      serverApps.Add (dlPacketSinkHelper.Install (ue));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   676
                    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   677
                  if (epcUl)
10065
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   678
                    {
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   679
                      NS_LOG_LOGIC ("installing UDP UL app for UE " << u);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   680
                      UdpClientHelper ulClientHelper (remoteHostAddr, ulPort);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   681
                      clientApps.Add (ulClientHelper.Install (ue));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   682
                      PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   683
                                                           InetSocketAddress (Ipv4Address::GetAny (), ulPort));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   684
                      serverApps.Add (ulPacketSinkHelper.Install (remoteHost));  
10065
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   685
                    }
f602bfca0399 Change default MaxTxBufferSize in RLC-UM to 10KBytes
Manuel Requena <manuel.requena@cttc.es>
parents: 9612
diff changeset
   686
                }
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   687
              else // use TCP
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   688
                {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   689
                  if (epcDl)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   690
                    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   691
                      NS_LOG_LOGIC ("installing TCP DL app for UE " << u);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   692
                      BulkSendHelper dlClientHelper ("ns3::TcpSocketFactory",
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   693
                                                     InetSocketAddress (ueIpIfaces.GetAddress (u), dlPort));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   694
                      dlClientHelper.SetAttribute ("MaxBytes", UintegerValue (0));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   695
                      clientApps.Add (dlClientHelper.Install (remoteHost));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   696
                      PacketSinkHelper dlPacketSinkHelper ("ns3::TcpSocketFactory", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   697
                                                           InetSocketAddress (Ipv4Address::GetAny (), dlPort));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   698
                      serverApps.Add (dlPacketSinkHelper.Install (ue));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   699
                    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   700
                  if (epcUl)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   701
                    {     
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   702
                      NS_LOG_LOGIC ("installing TCP UL app for UE " << u);              
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   703
                      BulkSendHelper ulClientHelper ("ns3::TcpSocketFactory",
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   704
                                                     InetSocketAddress (remoteHostAddr, ulPort));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   705
                      ulClientHelper.SetAttribute ("MaxBytes", UintegerValue (0));                  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   706
                      clientApps.Add (ulClientHelper.Install (ue));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   707
                      PacketSinkHelper ulPacketSinkHelper ("ns3::TcpSocketFactory", 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   708
                                                           InetSocketAddress (Ipv4Address::GetAny (), ulPort));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   709
                      serverApps.Add (ulPacketSinkHelper.Install (remoteHost));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   710
                    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   711
                } // end if (useUdp)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   712
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   713
              Ptr<EpcTft> tft = Create<EpcTft> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   714
              if (epcDl)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   715
                {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   716
                  EpcTft::PacketFilter dlpf;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   717
                  dlpf.localPortStart = dlPort;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   718
                  dlpf.localPortEnd = dlPort;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   719
                  tft->Add (dlpf); 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   720
                }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   721
              if (epcUl)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   722
                {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   723
                  EpcTft::PacketFilter ulpf;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   724
                  ulpf.remotePortStart = ulPort;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   725
                  ulpf.remotePortEnd = ulPort;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   726
                  tft->Add (ulpf);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   727
                }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   728
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   729
              if (epcDl || epcUl)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   730
                {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   731
                  EpsBearer bearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT);
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   732
                  lteHelper->ActivateDedicatedEpsBearer (ueDevs.Get (u), bearer, tft);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   733
                }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   734
              Time startTime = Seconds (startTimeSeconds->GetValue ());
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   735
              serverApps.Start (startTime);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   736
              clientApps.Start (startTime);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   737
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   738
            } // end for b
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   739
        }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   740
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   741
    } 
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   742
  else // (epc == false)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   743
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   744
      // for radio bearer activation purposes, consider together home UEs and macro UEs
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   745
      NetDeviceContainer ueDevs;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   746
      ueDevs.Add (homeUeDevs);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   747
      ueDevs.Add (macroUeDevs);  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   748
      for (uint32_t u = 0; u < ueDevs.GetN (); ++u)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   749
        {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   750
          Ptr<NetDevice> ueDev = ueDevs.Get (u);
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   751
          for (uint32_t b = 0; b < numBearersPerUe; ++b)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   752
            {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   753
              enum EpsBearer::Qci q = EpsBearer::NGBR_VIDEO_TCP_DEFAULT;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   754
              EpsBearer bearer (q);
9368
f5eaecb7acc2 Merge with lena-pem 9124:b4fcfc26791f (HARQ)
mmiozzo
parents: 9304 9350
diff changeset
   755
              lteHelper->ActivateDataRadioBearer (ueDev, bearer);
9304
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   756
            }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   757
        }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   758
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   759
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   760
  BuildingsHelper::MakeMobilityModelConsistent ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   761
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   762
  Ptr<RadioEnvironmentMapHelper> remHelper;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   763
  if (generateRem)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   764
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   765
      PrintGnuplottableBuildingListToFile ("buildings.txt");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   766
      PrintGnuplottableEnbListToFile ("enbs.txt");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   767
      PrintGnuplottableUeListToFile ("ues.txt");
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   768
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   769
      remHelper = CreateObject<RadioEnvironmentMapHelper> ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   770
      remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/0"));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   771
      remHelper->SetAttribute ("OutputFile", StringValue ("lena-dual-stripe.rem"));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   772
      remHelper->SetAttribute ("XMin", DoubleValue (macroUeBox.xMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   773
      remHelper->SetAttribute ("XMax", DoubleValue (macroUeBox.xMax));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   774
      remHelper->SetAttribute ("YMin", DoubleValue (macroUeBox.yMin));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   775
      remHelper->SetAttribute ("YMax", DoubleValue (macroUeBox.yMax));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   776
      remHelper->SetAttribute ("Z", DoubleValue (1.5));
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   777
      remHelper->Install ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   778
      // simulation will stop right after the REM has been generated
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   779
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   780
  else
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   781
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   782
      Simulator::Stop (Seconds (simTime));  
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   783
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   784
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   785
  lteHelper->EnableMacTraces ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   786
  lteHelper->EnableRlcTraces ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   787
  if (epc)
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   788
    {
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   789
      lteHelper->EnablePdcpTraces ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   790
    }
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   791
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   792
  Simulator::Run ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   793
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   794
  //GtkConfigStore config;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   795
  //config.ConfigureAttributes ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   796
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   797
  lteHelper = 0;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   798
  Simulator::Destroy ();
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   799
  return 0;
db6d857a07f0 lena-dual-stripe: desynchronize apps and support multiple bearers per UE
Nicola Baldo <nbaldo@cttc.es>
parents: 9057
diff changeset
   800
}