src/lte/test/lte-test-pathloss-model.cc
author Marco Miozzo <marco.miozzo@cttc.es>
Thu, 07 Jul 2011 16:47:45 +0200
changeset 8191 02ce2fb4883b
parent 8189 dde497458c54
child 8192 0d4ca39493cb
permissions -rw-r--r--
Remove dependences from SpectrumPropagationLossModel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8189
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     2
/*
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     4
 *
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     8
 *
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    13
 *
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    17
 *
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    18
 * Author: Marco Miozzo <marco.miozzo@cttc.es>
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    19
 */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    20
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    21
#include "ns3/simulator.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    22
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    23
#include "ns3/log.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    24
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    25
#include "ns3/spectrum-test.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    26
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    27
#include "ns3/lte-phy-tag.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    28
#include "ns3/lte-test-ue-phy.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    29
#include "ns3/lte-sinr-chunk-processor.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    30
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    31
#include "ns3/lte-test-pathloss-model.h"
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    32
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    33
NS_LOG_COMPONENT_DEFINE ("LtePathlossModelTest");
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    34
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    35
using namespace ns3;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    36
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    37
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    38
/**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    39
 * Test 1.1 SINR calculation in downlink
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    40
 */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    41
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    42
/**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    43
 * TestSuite
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    44
 */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    45
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    46
LtePathlossModelTestSuite::LtePathlossModelTestSuite ()
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    47
  : TestSuite ("lte-pathloss-model", SYSTEM)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    48
{
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    49
  // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    50
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    51
  // LogComponentEnable ("LteTestUePhy", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    52
  // LogComponentEnable ("LteDownlinkSinrTest", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    53
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    54
  // NS_LOG_INFO ("Creating LteDownlinkSinrTestSuite");
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    55
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    56
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    57
   * Build Spectrum Model values for the TX signal
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    58
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    59
  Ptr<SpectrumModel> sm;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    60
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    61
  Bands bands;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    62
  BandInfo bi;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    63
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    64
  bi.fl = 2.400e9;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    65
  bi.fc = 2.410e9;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    66
  bi.fh = 2.420e9;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    67
  bands.push_back (bi);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    68
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    69
  bi.fl = 2.420e9;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    70
  bi.fc = 2.431e9;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    71
  bi.fh = 2.442e9;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    72
  bands.push_back (bi);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    73
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    74
  sm = Create<SpectrumModel> (bands);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    75
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    76
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    77
   * TX signal #1: Power Spectral Density (W/Hz) of the signal of interest = [-46 -48] dBm and BW = [20 22] MHz
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    78
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    79
  Ptr<SpectrumValue> rxPsd1 = Create<SpectrumValue> (sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    80
  (*rxPsd1)[0] = 1.255943215755e-15;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    81
  (*rxPsd1)[1] = 7.204059965732e-16;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    82
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    83
  Ptr<SpectrumValue> theoreticalSinr1 = Create<SpectrumValue> (sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    84
  (*theoreticalSinr1)[0] = 3.72589167251055;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    85
  (*theoreticalSinr1)[1] = 3.72255684126076;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    86
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    87
  AddTestCase (new LtePathlossModelTestCase (rxPsd1, theoreticalSinr1, "sdBm = [-46 -48]"));
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    88
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    89
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    90
   * TX signal #2: Power Spectral Density (W/Hz) of the signal of interest = [-63 -61] dBm and BW = [20 22] MHz
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    91
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    92
  Ptr<SpectrumValue> rxPsd2 = Create<SpectrumValue> (sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    93
  (*rxPsd2)[0] = 2.505936168136e-17;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    94
  (*rxPsd2)[1] = 3.610582885110e-17;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    95
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    96
  Ptr<SpectrumValue> theoreticalSinr2 = Create<SpectrumValue> (sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    97
  (*theoreticalSinr2)[0] = 0.0743413124381667;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    98
  (*theoreticalSinr2)[1] = 0.1865697965291756;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    99
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   100
  AddTestCase (new LtePathlossModelTestCase (rxPsd2, theoreticalSinr2, "sdBm = [-63 -61]"));
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   101
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   102
}
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   103
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   104
static LtePathlossModelTestSuite ltePathlossModelTestSuite;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   105
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   106
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   107
/**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   108
 * TestCase
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   109
 */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   110
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   111
LtePathlossModelTestCase::LtePathlossModelTestCase (Ptr<SpectrumValue> sv, Ptr<SpectrumValue> sinr, std::string name)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   112
  : TestCase ("SINR calculation in downlink: " + name),
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   113
    m_sv (sv),
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   114
    m_sm (sv->GetSpectrumModel ()),
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   115
    m_sinr (sinr)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   116
{
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   117
  NS_LOG_INFO ("Creating LtePathlossModelTestCase");
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   118
}
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   119
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   120
LtePathlossModelTestCase::~LtePathlossModelTestCase ()
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   121
{
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   122
}
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   123
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   124
void
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   125
LtePathlossModelTestCase::DoRun (void)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   126
{
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   127
  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   128
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   129
  LogComponentEnable ("LteEnbRrc", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   130
  LogComponentEnable ("LteUeRrc", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   131
  LogComponentEnable ("LteEnbMac", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   132
  LogComponentEnable ("LteUeMac", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   133
  LogComponentEnable ("LteRlc", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   134
  LogComponentEnable ("RrPacketScheduler", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   135
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   136
  LogComponentEnable ("LtePhy", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   137
  LogComponentEnable ("LteEnbPhy", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   138
  LogComponentEnable ("LteUePhy", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   139
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   140
  LogComponentEnable ("LteSpectrumPhy", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   141
  LogComponentEnable ("LteInterference", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   142
  LogComponentEnable ("LteSinrChunkProcessor", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   143
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   144
  LogComponentEnable ("LtePropagationLossModel", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   145
  LogComponentEnable ("LossModel", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   146
  LogComponentEnable ("ShadowingLossModel", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   147
  LogComponentEnable ("PenetrationLossModel", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   148
  LogComponentEnable ("MultipathLossModel", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   149
  LogComponentEnable ("PathLossModel", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   150
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   151
  LogComponentEnable ("LteNetDevice", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   152
  LogComponentEnable ("LteUeNetDevice", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   153
  LogComponentEnable ("LteEnbNetDevice", logLevel);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   154
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   155
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   156
   * Instantiate a single receiving LteSpectrumPhy
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   157
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   158
  Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> ();
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   159
  Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> ();
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   160
  Ptr<LteTestUePhy> uePhy = CreateObject<LteTestUePhy> (dlPhy, ulPhy);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   161
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   162
  dlPhy->SetCellId (100);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   163
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   164
  Ptr<LteCqiSinrChunkProcessor> chunkProcessor = Create<LteCqiSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   165
  dlPhy->AddSinrChunkProcessor (chunkProcessor);
8191
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   166
  
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   167
//   Ptr<SpectrumChannel> m_downlinkChannel = CreateObject<SingleModelSpectrumChannel> ();
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   168
//   Ptr<SpectrumChannel> m_uplinkChannel = CreateObject<SingleModelSpectrumChannel> ();
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   169
//   Ptr<SpectrumPropagationLossModel> dlPropagationModel = Create<BuildingsSpectrumPropagationLossModel> ();
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   170
//   Ptr<SpectrumPropagationLossModel> ulPropagationModel = Create<BuildingsSpectrumPropagationLossModel> ();
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   171
//   m_downlinkChannel->AddSpectrumPropagationLossModel (dlPropagationModel);
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   172
//   m_uplinkChannel->AddSpectrumPropagationLossModel (ulPropagationModel);
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   173
//   m_downlinkPropagationLossModel = CreateObject<BuildingsPropagationLossModel> ();
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   174
//   m_uplinkPropagationLossModel = CreateObject<BuildingsPropagationLossModel> ();
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   175
//   m_downlinkChannel->AddPropagationLossModel (m_downlinkPropagationLossModel);
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   176
//   m_uplinkChannel->AddPropagationLossModel (m_uplinkPropagationLossModel);
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   177
  
02ce2fb4883b Remove dependences from SpectrumPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8189
diff changeset
   178
  
8189
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   179
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   180
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   181
   * Generate several calls to LteSpectrumPhy::StartRx corresponding to several signals.
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   182
   * One will be the signal of interest, i.e., the PhyTag of the first Packet in the Packet burst
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   183
   * will have the same CellId of the receiving PHY;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   184
   * the others will have a different CellId and hence will be the interfering signals
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   185
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   186
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   187
  // Number of packet bursts (1 data + 4 interferences)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   188
  int numOfPbs = 5;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   189
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   190
  // Number of packets in the packet bursts
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   191
  int numOfPkts = 10;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   192
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   193
  // Packet bursts
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   194
  Ptr<PacketBurst> packetBursts[numOfPbs];
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   195
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   196
  // Packets
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   197
  Ptr<Packet> pkt[numOfPbs][numOfPkts];
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   198
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   199
  // Phy tags
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   200
  LtePhyTag pktTag[numOfPbs];
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   201
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   202
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   203
   * Build packet burst
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   204
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   205
  for ( int pb = 0 ; pb < numOfPbs ; pb++ )
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   206
    {
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   207
      // Create packet burst
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   208
      packetBursts[pb] = CreateObject<PacketBurst> ();
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   209
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   210
      // Create packets and add them to the burst
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   211
      for ( int i = 0 ; i < numOfPkts ; i++ )
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   212
        {
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   213
          pkt[pb][i] = Create<Packet> (1000);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   214
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   215
          if ( i == 0 )
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   216
            {
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   217
              // Create phy tag (different for each packet burst)
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   218
              // and add to the first packet
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   219
              pktTag[pb] = LtePhyTag (100 * (pb + 1));
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   220
              pkt[pb][i]->AddPacketTag ( pktTag[pb] );
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   221
            }
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   222
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   223
          packetBursts[pb]->AddPacket ( pkt[pb][i] );
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   224
        }
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   225
    }
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   226
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   227
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   228
  Ptr<SpectrumValue> noisePsd = Create<SpectrumValue> (m_sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   229
  Ptr<SpectrumValue> i1 = Create<SpectrumValue> (m_sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   230
  Ptr<SpectrumValue> i2 = Create<SpectrumValue> (m_sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   231
  Ptr<SpectrumValue> i3 = Create<SpectrumValue> (m_sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   232
  Ptr<SpectrumValue> i4 = Create<SpectrumValue> (m_sm);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   233
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   234
  (*noisePsd)[0] = 5.000000000000e-19;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   235
  (*noisePsd)[1] = 4.545454545455e-19;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   236
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   237
  (*i1)[0] = 5.000000000000e-18;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   238
  (*i2)[0] = 5.000000000000e-16;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   239
  (*i3)[0] = 1.581138830084e-16;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   240
  (*i4)[0] = 7.924465962306e-17;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   241
  (*i1)[1] = 1.437398936440e-18;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   242
  (*i2)[1] = 5.722388235428e-16;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   243
  (*i3)[1] = 7.204059965732e-17;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   244
  (*i4)[1] = 5.722388235428e-17;
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   245
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   246
  Time ts  = Seconds (1);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   247
  Time ds  = Seconds (1);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   248
  Time ti1 = Seconds (0);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   249
  Time di1 = Seconds (3);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   250
  Time ti2 = Seconds (0.7);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   251
  Time di2 = Seconds (1);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   252
  Time ti3 = Seconds (1.2);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   253
  Time di3 = Seconds (1);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   254
  Time ti4 = Seconds (1.5);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   255
  Time di4 = Seconds (0.1);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   256
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   257
  dlPhy->SetNoisePowerSpectralDensity (noisePsd);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   258
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   259
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   260
   * Schedule the reception of the data signal plus the interference signals
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   261
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   262
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   263
  // eNB sends data to 2 UEs through 2 subcarriers
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   264
  Simulator::Schedule (ts, &LteSpectrumPhy::StartRx, dlPhy, packetBursts[0], m_sv, dlPhy->GetSpectrumType (), ds);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   265
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   266
  Simulator::Schedule (ti1, &LteSpectrumPhy::StartRx, dlPhy, packetBursts[1], i1, dlPhy->GetSpectrumType (), di1);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   267
  Simulator::Schedule (ti2, &LteSpectrumPhy::StartRx, dlPhy, packetBursts[2], i2, dlPhy->GetSpectrumType (), di2);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   268
  Simulator::Schedule (ti3, &LteSpectrumPhy::StartRx, dlPhy, packetBursts[3], i3, dlPhy->GetSpectrumType (), di3);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   269
  Simulator::Schedule (ti4, &LteSpectrumPhy::StartRx, dlPhy, packetBursts[4], i4, dlPhy->GetSpectrumType (), di4);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   270
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   271
  Simulator::Stop (Seconds (5.0));
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   272
  Simulator::Run ();
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   273
  Simulator::Destroy ();
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   274
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   275
  /**
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   276
   * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   277
   * to known values which have been calculated offline (with octave) for the generated signals
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   278
   */
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   279
  SpectrumValue calculatedSinr = uePhy->GetSinr ();
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   280
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   281
  NS_LOG_INFO ("Theoretical SINR: " << *m_sinr);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   282
  NS_LOG_INFO ("Calculated SINR: " << calculatedSinr);
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   283
 
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   284
  NS_TEST_ASSERT_MSG_SPECTRUM_VALUE_EQ_TOL(calculatedSinr, *m_sinr, 0.0000001, "Wrong SINR !");
dde497458c54 Add pathloss test
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   285
}