src/lte/test/lte-test-uplink-sinr.cc
author Vedran Miletić <rivanvx@gmail.com>
Thu, 02 Jan 2014 18:34:30 +0100
changeset 10553 8c347165bb56
parent 10344 5aedb1614579
child 10892 3e86fac77082
permissions -rw-r--r--
Move tests outside ns3 namespace
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     2
/*
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     4
 *
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     7
 * published by the Free Software Foundation;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     8
 *
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    12
 * GNU General Public License for more details.
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    13
 *
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    17
 *
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    18
 * Author: Manuel Requena <manuel.requena@cttc.es>
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
    19
 * Modified by Marco Miozzo <mmiozzo@ctt.es>
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
    20
 *     Extend to Data and SRS frames
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    21
 */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    22
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    23
#include "ns3/simulator.h"
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    24
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    25
#include "ns3/log.h"
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    26
8157
3851d59eb714 lte sinr tests using new spectrum-test macros
Nicola Baldo <nbaldo@cttc.es>
parents: 8149
diff changeset
    27
#include "ns3/spectrum-test.h"
3851d59eb714 lte sinr tests using new spectrum-test macros
Nicola Baldo <nbaldo@cttc.es>
parents: 8149
diff changeset
    28
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    29
#include "ns3/lte-phy-tag.h"
9089
59146801f94e fix test header inclusion
Tom Henderson <tomh@tomh.org>
parents: 9077
diff changeset
    30
#include "lte-test-ue-phy.h"
59146801f94e fix test header inclusion
Tom Henderson <tomh@tomh.org>
parents: 9077
diff changeset
    31
#include "lte-test-sinr-chunk-processor.h"
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
    32
#include "ns3/lte-spectrum-signal-parameters.h"
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    33
9052
db76e8754e2f Fix bugs in merging lena-pem on test headers files
mmiozzo
parents: 9047
diff changeset
    34
#include "lte-test-uplink-sinr.h"
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    35
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
    36
#include <ns3/lte-helper.h>
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
    37
8003
e150d8ba48c8 move lena-test to lte-test
mrequena
parents: 7996
diff changeset
    38
NS_LOG_COMPONENT_DEFINE ("LteUplinkSinrTest");
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    39
10553
8c347165bb56 Move tests outside ns3 namespace
Vedran Miletić <rivanvx@gmail.com>
parents: 10344
diff changeset
    40
using namespace ns3;
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    41
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    42
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    43
/**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    44
 * Test 1.2 SINR calculation in uplink
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    45
 */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    46
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    47
/**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    48
 * TestSuite
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    49
 */
8003
e150d8ba48c8 move lena-test to lte-test
mrequena
parents: 7996
diff changeset
    50
LteUplinkSinrTestSuite::LteUplinkSinrTestSuite ()
e150d8ba48c8 move lena-test to lte-test
mrequena
parents: 7996
diff changeset
    51
  : TestSuite ("lte-uplink-sinr", SYSTEM)
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    52
{
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    53
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    54
   * Build Spectrum Model values for the TX signal
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    55
   */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    56
  Ptr<SpectrumModel> sm;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    57
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    58
  Bands bands;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    59
  BandInfo bi;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    60
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    61
  bi.fl = 2.400e9;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    62
  bi.fc = 2.410e9;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    63
  bi.fh = 2.420e9;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    64
  bands.push_back (bi);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    65
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    66
  bi.fl = 2.420e9;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    67
  bi.fc = 2.431e9;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    68
  bi.fh = 2.442e9;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    69
  bands.push_back (bi);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    70
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    71
  sm = Create<SpectrumModel> (bands);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    72
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    73
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    74
   * TX signals #1: Power Spectral Density (W/Hz) of the signals of interest = [-46 -inf] and [-inf -48] dBm and BW = [20 22] MHz
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    75
   */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    76
  Ptr<SpectrumValue> rxPsd1 = Create<SpectrumValue> (sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    77
  (*rxPsd1)[0] = 1.255943215755e-15;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    78
  (*rxPsd1)[1] = 0.0;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    79
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    80
  Ptr<SpectrumValue> rxPsd2 = Create<SpectrumValue> (sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    81
  (*rxPsd2)[0] = 0.0;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    82
  (*rxPsd2)[1] = 7.204059965732e-16;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    83
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    84
  Ptr<SpectrumValue> theoreticalSinr1 = Create<SpectrumValue> (sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    85
  (*theoreticalSinr1)[0] = 3.72589167251055;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    86
  (*theoreticalSinr1)[1] = 3.72255684126076;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    87
9266
d26408b17360 bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents: 9089
diff changeset
    88
  AddTestCase (new LteUplinkDataSinrTestCase (rxPsd1, rxPsd2, theoreticalSinr1, "sdBm = [-46 -inf] and [-inf -48]"), TestCase::QUICK);
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
    89
  
9266
d26408b17360 bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents: 9089
diff changeset
    90
  AddTestCase (new LteUplinkSrsSinrTestCase (rxPsd1, rxPsd2, theoreticalSinr1, "sdBm = [-46 -inf] and [-inf -48]"), TestCase::QUICK);
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    91
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    92
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    93
   * TX signals #2: Power Spectral Density of the signals of interest = [-63 -inf] and [-inf -61] dBm and BW = [20 22] MHz
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    94
   */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    95
  Ptr<SpectrumValue> rxPsd3 = Create<SpectrumValue> (sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    96
  (*rxPsd3)[0] = 2.505936168136e-17;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    97
  (*rxPsd3)[1] = 0.0;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    98
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
    99
  Ptr<SpectrumValue> rxPsd4 = Create<SpectrumValue> (sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   100
  (*rxPsd4)[0] = 0.0;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   101
  (*rxPsd4)[1] = 3.610582885110e-17;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   102
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   103
  Ptr<SpectrumValue> theoreticalSinr2 = Create<SpectrumValue> (sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   104
  (*theoreticalSinr2)[0] = 0.0743413124381667;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   105
  (*theoreticalSinr2)[1] = 0.1865697965291756;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   106
9266
d26408b17360 bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents: 9089
diff changeset
   107
  AddTestCase (new LteUplinkDataSinrTestCase (rxPsd3, rxPsd4, theoreticalSinr2, "sdBm = [-63 -inf] and [-inf -61]"), TestCase::QUICK);
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   108
  
9266
d26408b17360 bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents: 9089
diff changeset
   109
  AddTestCase (new LteUplinkSrsSinrTestCase (rxPsd3, rxPsd4, theoreticalSinr2, "sdBm = [-63 -inf] and [-inf -61]"), TestCase::QUICK);
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   110
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   111
}
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   112
8003
e150d8ba48c8 move lena-test to lte-test
mrequena
parents: 7996
diff changeset
   113
static LteUplinkSinrTestSuite lteUplinkSinrTestSuite;
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   114
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   115
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   116
/**
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   117
 * TestCase Data
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   118
 */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   119
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   120
LteUplinkDataSinrTestCase::LteUplinkDataSinrTestCase (Ptr<SpectrumValue> sv1, Ptr<SpectrumValue> sv2, Ptr<SpectrumValue> sinr, std::string name)
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   121
  : TestCase ("SINR calculation in uplink data frame: " + name),
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   122
    m_sv1 (sv1),
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   123
    m_sv2 (sv2),
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   124
    m_sm (sv1->GetSpectrumModel ()),
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   125
    m_sinr (sinr)
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   126
{
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   127
  NS_LOG_INFO ("Creating LteUplinkDataSinrTestCase");
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   128
}
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   129
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   130
LteUplinkDataSinrTestCase::~LteUplinkDataSinrTestCase ()
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   131
{
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   132
}
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   133
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   134
void
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   135
LteUplinkDataSinrTestCase::DoRun (void)
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   136
{
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   137
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   138
   * Instantiate a single receiving LteSpectrumPhy
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   139
   */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   140
  Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> ();
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   141
  Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> ();
8009
a7a16b565d0b Test 1.1 and 1.2: test LteUePhy interface instead of CqiSinrChunkProcessor interface
mrequena
parents: 8003
diff changeset
   142
  Ptr<LteTestUePhy> uePhy = CreateObject<LteTestUePhy> (dlPhy, ulPhy);
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   143
  uint16_t cellId = 100;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   144
  dlPhy->SetCellId (cellId);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   145
  ulPhy->SetCellId (cellId);
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   146
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   147
  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   148
  ulPhy->AddDataSinrChunkProcessor (chunkProcessor);
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   149
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   150
  /**
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   151
  * Generate several calls to LteSpectrumPhy::StartRx corresponding to 
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   152
  * several signals. One will be the signal of interest, i.e., the
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   153
  *  LteSpectrumSignalParametersDataFrame of the Packet burst
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   154
  * will have the same CellId of the receiving PHY; the others will have 
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   155
  * a different CellId and hence will be the interfering signals
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   156
  */
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   157
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   158
  // Number of packet bursts (2 data + 4 interferences)
9077
16e6f501eeef Really fix bug 1345 - ns-3 should build with clang >= 3.0 (requires -Wno-deprecated due to sgi-hashmap.h)
Vedran Miletić <rivanvx@gmail.com>
parents: 9052
diff changeset
   159
  const int numOfDataPbs = 2;
16e6f501eeef Really fix bug 1345 - ns-3 should build with clang >= 3.0 (requires -Wno-deprecated due to sgi-hashmap.h)
Vedran Miletić <rivanvx@gmail.com>
parents: 9052
diff changeset
   160
  const int numOfIntfPbs = 4;
16e6f501eeef Really fix bug 1345 - ns-3 should build with clang >= 3.0 (requires -Wno-deprecated due to sgi-hashmap.h)
Vedran Miletić <rivanvx@gmail.com>
parents: 9052
diff changeset
   161
  const int numOfPbs = numOfDataPbs + numOfIntfPbs;
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   162
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   163
  // Number of packets in the packet bursts
9077
16e6f501eeef Really fix bug 1345 - ns-3 should build with clang >= 3.0 (requires -Wno-deprecated due to sgi-hashmap.h)
Vedran Miletić <rivanvx@gmail.com>
parents: 9052
diff changeset
   164
  const int numOfPkts = 10;
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   165
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   166
  // Packet bursts
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   167
  Ptr<PacketBurst> packetBursts[numOfPbs];
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   168
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   169
  // Packets
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   170
  Ptr<Packet> pkt[numOfPbs][numOfPkts];
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   171
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   172
  // Bursts cellId
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   173
  uint16_t pbCellId[numOfPbs];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   174
  
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   175
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8014
diff changeset
   176
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   177
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   178
   * Build packet burst (Data and interference)
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   179
   */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   180
  int pb = 0;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   181
  for ( int dataPb = 0 ; dataPb < numOfDataPbs ; dataPb++, pb++ )
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   182
    {
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   183
      // Create packet burst
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   184
      packetBursts[pb] = CreateObject<PacketBurst> ();
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   185
      pbCellId[pb] = cellId;
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   186
      // Create packets and add them to the burst
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   187
      for ( int i = 0 ; i < numOfPkts ; i++ )
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   188
        {
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   189
          pkt[pb][i] = Create<Packet> (1000);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   190
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   191
          packetBursts[pb]->AddPacket ( pkt[pb][i] );
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   192
        }
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   193
    }
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   194
  for ( int intfPb = 0 ; intfPb < numOfIntfPbs ; intfPb++, pb++ )
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   195
    {
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   196
      // Create packet burst
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   197
      packetBursts[pb] = CreateObject<PacketBurst> ();
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   198
      pbCellId[pb] = cellId * (pb + 1);
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   199
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   200
      // Create packets and add them to the burst
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   201
      for ( int i = 0 ; i < numOfPkts ; i++ )
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   202
        {
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   203
          pkt[pb][i] = Create<Packet> (1000);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   204
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   205
          packetBursts[pb]->AddPacket ( pkt[pb][i] );
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   206
        }
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   207
    }
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   208
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   209
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   210
  Ptr<SpectrumValue> noisePsd = Create<SpectrumValue> (m_sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   211
  Ptr<SpectrumValue> i1 = Create<SpectrumValue> (m_sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   212
  Ptr<SpectrumValue> i2 = Create<SpectrumValue> (m_sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   213
  Ptr<SpectrumValue> i3 = Create<SpectrumValue> (m_sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   214
  Ptr<SpectrumValue> i4 = Create<SpectrumValue> (m_sm);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   215
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   216
  (*noisePsd)[0] = 5.000000000000e-19;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   217
  (*noisePsd)[1] = 4.545454545455e-19;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   218
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   219
  (*i1)[0] = 5.000000000000e-18;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   220
  (*i2)[0] = 5.000000000000e-16;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   221
  (*i3)[0] = 1.581138830084e-16;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   222
  (*i4)[0] = 7.924465962306e-17;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   223
  (*i1)[1] = 1.437398936440e-18;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   224
  (*i2)[1] = 5.722388235428e-16;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   225
  (*i3)[1] = 7.204059965732e-17;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   226
  (*i4)[1] = 5.722388235428e-17;
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   227
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   228
  Time ts  = Seconds (1);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   229
  Time ds  = Seconds (1);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   230
  Time ti1 = Seconds (0);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   231
  Time di1 = Seconds (3);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   232
  Time ti2 = Seconds (0.7);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   233
  Time di2 = Seconds (1);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   234
  Time ti3 = Seconds (1.2);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   235
  Time di3 = Seconds (1);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   236
  Time ti4 = Seconds (1.5);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   237
  Time di4 = Seconds (0.1);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   238
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   239
  ulPhy->SetNoisePowerSpectralDensity (noisePsd);
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   240
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   241
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   242
   * Schedule the reception of the data signals plus the interference signals
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   243
   */
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   244
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   245
  // 2 UEs send data to the eNB through 2 subcarriers
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   246
  Ptr<LteSpectrumSignalParametersDataFrame> sp1 = Create<LteSpectrumSignalParametersDataFrame> ();
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   247
  sp1->psd = m_sv1;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   248
  sp1->txPhy = 0;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   249
  sp1->duration = ds;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   250
  sp1->packetBurst = packetBursts[0];
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   251
  sp1->cellId = pbCellId[0];
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   252
  Simulator::Schedule (ts, &LteSpectrumPhy::StartRx, ulPhy, sp1);
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   253
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   254
  Ptr<LteSpectrumSignalParametersDataFrame> sp2 = Create<LteSpectrumSignalParametersDataFrame> ();
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   255
  sp2->psd = m_sv2;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   256
  sp2->txPhy = 0;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   257
  sp2->duration = ds;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   258
  sp2->packetBurst = packetBursts[1];
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   259
  sp2->cellId = pbCellId[1];
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   260
  Simulator::Schedule (ts, &LteSpectrumPhy::StartRx, ulPhy, sp2);
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   261
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   262
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   263
  Ptr<LteSpectrumSignalParametersDataFrame> ip1 = Create<LteSpectrumSignalParametersDataFrame> ();
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   264
  ip1->psd = i1;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   265
  ip1->txPhy = 0;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   266
  ip1->duration = di1;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   267
  ip1->packetBurst = packetBursts[2];
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   268
  ip1->cellId = pbCellId[2];
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   269
  Simulator::Schedule (ti1, &LteSpectrumPhy::StartRx, ulPhy, ip1);
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   270
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   271
  Ptr<LteSpectrumSignalParametersDataFrame> ip2 = Create<LteSpectrumSignalParametersDataFrame> ();
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   272
  ip2->psd = i2;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   273
  ip2->txPhy = 0;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   274
  ip2->duration = di2;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   275
  ip2->packetBurst = packetBursts[3];
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   276
  ip2->cellId = pbCellId[3];
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   277
  Simulator::Schedule (ti2, &LteSpectrumPhy::StartRx, ulPhy, ip2);
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   278
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   279
  Ptr<LteSpectrumSignalParametersDataFrame> ip3 = Create<LteSpectrumSignalParametersDataFrame> ();
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   280
  ip3->psd = i3;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   281
  ip3->txPhy = 0;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   282
  ip3->duration = di3;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   283
  ip3->packetBurst = packetBursts[4];
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   284
  ip3->cellId = pbCellId[4];
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   285
  Simulator::Schedule (ti3, &LteSpectrumPhy::StartRx, ulPhy, ip3);
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   286
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   287
  Ptr<LteSpectrumSignalParametersDataFrame> ip4 = Create<LteSpectrumSignalParametersDataFrame> ();
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   288
  ip4->psd = i4;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   289
  ip4->txPhy = 0;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   290
  ip4->duration = di4;
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   291
  ip4->packetBurst = packetBursts[5];
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   292
  ip4->cellId = pbCellId[5];
8339
bfa05e51eecf merge ns-3-lena-dev with ns-3-dev
Nicola Baldo <nbaldo@cttc.es>
parents: 8253
diff changeset
   293
  Simulator::Schedule (ti4, &LteSpectrumPhy::StartRx, ulPhy, ip4);
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   294
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   295
  Simulator::Stop (Seconds (5.0));
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   296
  Simulator::Run ();
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   297
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   298
  /**
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   299
   * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   300
   * to known values which have been calculated offline (with octave) for the generated signals
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   301
   */
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   302
  Ptr<SpectrumValue> calculatedSinr = chunkProcessor->GetSinr ();
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   303
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   304
  NS_LOG_INFO ("Data Frame - Theoretical SINR: " << *m_sinr);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   305
  NS_LOG_INFO ("Data Frame - Calculated SINR: " << *calculatedSinr);
8157
3851d59eb714 lte sinr tests using new spectrum-test macros
Nicola Baldo <nbaldo@cttc.es>
parents: 8149
diff changeset
   306
  
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   307
  NS_TEST_ASSERT_MSG_SPECTRUM_VALUE_EQ_TOL (*calculatedSinr, *m_sinr, 0.0000001, "Data Frame - Wrong SINR !");
8345
8ac6ec71f8f8 tests lte-{up,down}link-sinr now passing valgrind
Nicola Baldo <nbaldo@cttc.es>
parents: 8339
diff changeset
   308
  ulPhy->Dispose ();
8ac6ec71f8f8 tests lte-{up,down}link-sinr now passing valgrind
Nicola Baldo <nbaldo@cttc.es>
parents: 8339
diff changeset
   309
  Simulator::Destroy ();
8ac6ec71f8f8 tests lte-{up,down}link-sinr now passing valgrind
Nicola Baldo <nbaldo@cttc.es>
parents: 8339
diff changeset
   310
  
7996
d1e469d5d0b2 Add Test 1.2
mrequena
parents:
diff changeset
   311
}
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   312
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   313
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   314
/**
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   315
* TestCase Srs
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   316
*/
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   317
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   318
LteUplinkSrsSinrTestCase::LteUplinkSrsSinrTestCase (Ptr<SpectrumValue> sv1, Ptr<SpectrumValue> sv2, Ptr<SpectrumValue> sinr, std::string name)
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   319
: TestCase ("SINR calculation in uplink srs frame: " + name),
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   320
m_sv1 (sv1),
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   321
m_sv2 (sv2),
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   322
m_sm (sv1->GetSpectrumModel ()),
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   323
m_sinr (sinr)
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   324
{
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   325
  NS_LOG_INFO ("Creating LteUplinkSrsSinrTestCase");
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   326
}
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   327
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   328
LteUplinkSrsSinrTestCase::~LteUplinkSrsSinrTestCase ()
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   329
{
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   330
}
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   331
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   332
void
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   333
LteUplinkSrsSinrTestCase::DoRun (void)
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   334
{
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   335
  /**
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   336
  * Instantiate a single receiving LteSpectrumPhy
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   337
  */
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   338
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   339
  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
10344
5aedb1614579 Disabled some logs in LTE module tests
Budiarto Herman <budiarto.herman@magister.fi>
parents: 9266
diff changeset
   340
  // lteHelper->EnableLogComponents ();
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   341
  Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   342
  Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   343
  Ptr<LteTestUePhy> uePhy = CreateObject<LteTestUePhy> (dlPhy, ulPhy);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   344
  uint16_t cellId = 100;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   345
  dlPhy->SetCellId (cellId);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   346
  ulPhy->SetCellId (cellId);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   347
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   348
  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   349
  ulPhy->AddCtrlSinrChunkProcessor (chunkProcessor);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   350
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   351
  /**
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   352
  * Generate several calls to LteSpectrumPhy::StartRx corresponding to 
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   353
  * several signals.
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   354
  * One will be the signal of interest, i.e., the
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   355
  *  LteSpectrumSignalParametersUlSrsFrame of the first signal will have the
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   356
  *   same CellId of the receiving PHY; the others will have a different 
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   357
  *   CellId and hence will be the interfering signals
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   358
  */
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   359
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   360
  // Number of packet bursts (2 data + 4 interferences)
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   361
  int numOfDataSignals = 2;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   362
  int numOfIntfSignals = 4;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   363
  int numOfSignals = numOfDataSignals + numOfIntfSignals;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   364
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   365
  uint16_t pbCellId[numOfSignals];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   366
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   367
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   368
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   369
  /**
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   370
  * Build packet burst (Data and interference)
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   371
  */
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   372
  int pb = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   373
  for ( int dataPb = 0 ; dataPb < numOfDataSignals ; dataPb++, pb++ )
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   374
    {
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   375
      pbCellId[pb] = cellId;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   376
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   377
    }
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   378
  for ( int intfPb = 0 ; intfPb < numOfIntfSignals ; intfPb++, pb++ )
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   379
    {
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   380
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   381
      pbCellId[pb] = cellId * (pb + 1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   382
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   383
    }
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   384
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   385
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   386
  Ptr<SpectrumValue> noisePsd = Create<SpectrumValue> (m_sm);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   387
  Ptr<SpectrumValue> i1 = Create<SpectrumValue> (m_sm);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   388
  Ptr<SpectrumValue> i2 = Create<SpectrumValue> (m_sm);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   389
  Ptr<SpectrumValue> i3 = Create<SpectrumValue> (m_sm);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   390
  Ptr<SpectrumValue> i4 = Create<SpectrumValue> (m_sm);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   391
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   392
  (*noisePsd)[0] = 5.000000000000e-19;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   393
  (*noisePsd)[1] = 4.545454545455e-19;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   394
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   395
  (*i1)[0] = 5.000000000000e-18;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   396
  (*i2)[0] = 5.000000000000e-16;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   397
  (*i3)[0] = 1.581138830084e-16;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   398
  (*i4)[0] = 7.924465962306e-17;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   399
  (*i1)[1] = 1.437398936440e-18;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   400
  (*i2)[1] = 5.722388235428e-16;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   401
  (*i3)[1] = 7.204059965732e-17;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   402
  (*i4)[1] = 5.722388235428e-17;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   403
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   404
  Time ts  = Seconds (1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   405
  Time ds  = Seconds (1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   406
  Time ti1 = Seconds (0);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   407
  Time di1 = Seconds (3);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   408
  Time ti2 = Seconds (0.7);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   409
  Time di2 = Seconds (1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   410
  Time ti3 = Seconds (1.2);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   411
  Time di3 = Seconds (1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   412
  Time ti4 = Seconds (1.5);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   413
  Time di4 = Seconds (0.1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   414
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   415
  ulPhy->SetNoisePowerSpectralDensity (noisePsd);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   416
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   417
  /**
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   418
  * Schedule the reception of the data signals plus the interference signals
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   419
  */
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   420
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   421
  // 2 UEs send data to the eNB through 2 subcarriers
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   422
  Ptr<LteSpectrumSignalParametersUlSrsFrame> sp1 = Create<LteSpectrumSignalParametersUlSrsFrame> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   423
  sp1->psd = m_sv1;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   424
  sp1->txPhy = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   425
  sp1->duration = ds;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   426
  sp1->cellId = pbCellId[0];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   427
  Simulator::Schedule (ts, &LteSpectrumPhy::StartRx, ulPhy, sp1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   428
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   429
  Ptr<LteSpectrumSignalParametersUlSrsFrame> sp2 = Create<LteSpectrumSignalParametersUlSrsFrame> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   430
  sp2->psd = m_sv2;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   431
  sp2->txPhy = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   432
  sp2->duration = ds;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   433
  sp2->cellId = pbCellId[1];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   434
  Simulator::Schedule (ts, &LteSpectrumPhy::StartRx, ulPhy, sp2);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   435
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   436
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   437
  Ptr<LteSpectrumSignalParametersUlSrsFrame> ip1 = Create<LteSpectrumSignalParametersUlSrsFrame> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   438
  ip1->psd = i1;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   439
  ip1->txPhy = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   440
  ip1->duration = di1;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   441
  ip1->cellId = pbCellId[2];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   442
  Simulator::Schedule (ti1, &LteSpectrumPhy::StartRx, ulPhy, ip1);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   443
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   444
  Ptr<LteSpectrumSignalParametersUlSrsFrame> ip2 = Create<LteSpectrumSignalParametersUlSrsFrame> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   445
  ip2->psd = i2;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   446
  ip2->txPhy = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   447
  ip2->duration = di2;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   448
  ip2->cellId = pbCellId[3];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   449
  Simulator::Schedule (ti2, &LteSpectrumPhy::StartRx, ulPhy, ip2);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   450
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   451
  Ptr<LteSpectrumSignalParametersUlSrsFrame> ip3 = Create<LteSpectrumSignalParametersUlSrsFrame> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   452
  ip3->psd = i3;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   453
  ip3->txPhy = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   454
  ip3->duration = di3;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   455
  ip3->cellId = pbCellId[4];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   456
  Simulator::Schedule (ti3, &LteSpectrumPhy::StartRx, ulPhy, ip3);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   457
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   458
  Ptr<LteSpectrumSignalParametersUlSrsFrame> ip4 = Create<LteSpectrumSignalParametersUlSrsFrame> ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   459
  ip4->psd = i4;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   460
  ip4->txPhy = 0;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   461
  ip4->duration = di4;
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   462
  ip4->cellId = pbCellId[5];
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   463
  Simulator::Schedule (ti4, &LteSpectrumPhy::StartRx, ulPhy, ip4);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   464
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   465
  Simulator::Stop (Seconds (5.0));
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   466
  Simulator::Run ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   467
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   468
  /**
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   469
  * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   470
  * to known values which have been calculated offline (with octave) for the generated signals
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   471
  */
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   472
  Ptr<SpectrumValue> calculatedSinr = chunkProcessor->GetSinr ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   473
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   474
  NS_LOG_INFO ("SRS Frame - Theoretical SINR: " << *m_sinr);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   475
  NS_LOG_INFO ("SRS Frame - Calculated SINR: " << *calculatedSinr);
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   476
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   477
  NS_TEST_ASSERT_MSG_SPECTRUM_VALUE_EQ_TOL (*calculatedSinr, *m_sinr, 0.0000001, "Data Frame - Wrong SINR !");
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   478
  ulPhy->Dispose ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   479
  Simulator::Destroy ();
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   480
  
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8345
diff changeset
   481
}