diff --git a/src/lte/test/lte-test-fading.cc b/src/lte/test/lte-test-fading.cc deleted file mode 100644 index 6ae8c6e33..000000000 --- a/src/lte/test/lte-test-fading.cc +++ /dev/null @@ -1,288 +0,0 @@ -/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ -/* -* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License version 2 as -* published by the Free Software Foundation; -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -* -* Author: Marco Miozzo -*/ - -#include "ns3/simulator.h" -#include "ns3/log.h" -#include "ns3/spectrum-test.h" -#include "ns3/lte-phy-tag.h" -#include "ns3/lte-test-ue-phy.h" -#include "ns3/lte-chunk-processor.h" -#include "ns3/lte-test-fading.h" -#include -#include -#include -#include -#include -#include "ns3/string.h" -#include "ns3/double.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "lte-test-sinr-chunk-processor.h" - -using namespace ns3; - -NS_LOG_COMPONENT_DEFINE ("LteFadingTest"); - -/** -* Test 1.1 Fading compound test -*/ - -/** -* This TestSuite tests the fading model... -*/ - - - -LteFadingTestSuite::LteFadingTestSuite () -: TestSuite ("lte-fading-model", SYSTEM) -{ - - - // -------------- COMPOUND TESTS ---------------------------------- - - LogComponentEnable ("LteFadingTest", LOG_LEVEL_ALL); - - // NS_LOG_INFO ("Creating LteDownlinkSinrTestSuite"); - - Ptr lteHelper = CreateObject (); - - lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::BuildingsPropagationLossModel")); - - // Create Nodes: eNodeB, home eNB, UE and home UE (UE attached to HeNB) - NodeContainer enbNodes; - NodeContainer henbNodes; - NodeContainer ueNodes; - NodeContainer hueNodes; - enbNodes.Create (1); - henbNodes.Create (2); - ueNodes.Create (5); - hueNodes.Create (3); - - // Install Mobility Model - MobilityHelper mobility; - mobility.SetMobilityModel ("ns3::BuildingsMobilityModel"); - mobility.Install (enbNodes); - mobility.Install (henbNodes); - mobility.Install (ueNodes); - mobility.Install (hueNodes); - - NetDeviceContainer enbDevs; - NetDeviceContainer henbDevs; - NetDeviceContainer ueDevs; - NetDeviceContainer hueDevs; - enbDevs = lteHelper->InstallEnbDevice (enbNodes); - ueDevs = lteHelper->InstallUeDevice (ueNodes); - henbDevs = lteHelper->InstallEnbDevice (henbNodes); - hueDevs = lteHelper->InstallUeDevice (hueNodes); - - - - lteHelper->Attach (ueDevs, enbDevs.Get (0)); - lteHelper->Attach (hueDevs, henbDevs.Get (0)); - - // Test #1 Okumura Hata Model (150 < freq < 1500 MHz) (Macro<->UE) - - double distance = 2000; - double hm = 1; - double hb = 30; -// double freq = 869e6; // E_UTRA BAND #5 see table 5.5-1 of 36.101 - Ptr mm1 = enbNodes.Get (0)->GetObject (); - mm1->SetPosition (Vector (0.0, 0.0, hb)); - - Ptr mm2 = ueNodes.Get (0)->GetObject (); - mm2->SetPosition (Vector (distance, 0.0, hm)); - - AddTestCase (new LteFadingTestCase (mm1, mm2, 137.93, "OH Urban Large city"), TestCase::QUICK); - - -} - -static LteFadingTestSuite lteFadingTestSuite; - - -/** -* TestCase -*/ - -LteFadingTestCase::LteFadingTestCase (Ptr m1, Ptr m2, double refValue, std::string name) -: TestCase ("FADING calculation: " + name), -m_node1 (m1), -m_node2 (m2), -m_lossRef (refValue) -{ -} - -LteFadingTestCase::~LteFadingTestCase () -{ -} - -void -LteFadingTestCase::DoRun (void) -{ - // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); - - // LogComponentEnable ("LteEnbRrc", logLevel); - // LogComponentEnable ("LteUeRrc", logLevel); - // LogComponentEnable ("LteEnbMac", logLevel); - // LogComponentEnable ("LteUeMac", logLevel); - // LogComponentEnable ("LteRlc", logLevel); - // LogComponentEnable ("RrPacketScheduler", logLevel); - // - // LogComponentEnable ("LtePhy", logLevel); - // LogComponentEnable ("LteEnbPhy", logLevel); - // LogComponentEnable ("LteUePhy", logLevel); - // - // LogComponentEnable ("LteSpectrumPhy", logLevel); - // LogComponentEnable ("LteInterference", logLevel); - // LogComponentEnable ("LteChunkProcessor", logLevel); - // - // LogComponentEnable ("LtePropagationLossModel", logLevel); - // LogComponentEnable ("LossModel", logLevel); - // LogComponentEnable ("ShadowingLossModel", logLevel); - // LogComponentEnable ("PenetrationLossModel", logLevel); - // LogComponentEnable ("MultipathLossModel", logLevel); - // LogComponentEnable ("PathLossModel", logLevel); - // - // LogComponentEnable ("LteNetDevice", logLevel); - // LogComponentEnable ("LteUeNetDevice", logLevel); - // LogComponentEnable ("LteEnbNetDevice", logLevel); - - LogComponentEnable ("TraceFadingLossModel", LOG_LEVEL_ALL); -// LogComponentEnable ("TraceFadingLossModel", LOG_LEVEL_ALL); -// LogComponentEnable ("BuildingsPropagationLossModel", LOG_LEVEL_ALL); - NS_LOG_INFO ("Testing " << GetName()); - - - m_fadingModule = CreateObject (); - - m_fadingModule->SetAttribute("TraceFilename", StringValue("../../../src/lte/model/fading-traces/fading_trace_EPA_3kmph.fad")); - //m_fadingModule->SetAttribute("WindowSize", TimeValue(Seconds (0.003))); - - m_fadingModule->CreateFadingChannelRealization (m_node1, m_node2); - -// Ptr sm; -// -// Bands bands; -// BandInfo bi; -// -// bi.fl = 2.400e9; -// bi.fc = 2.410e9; -// bi.fh = 2.420e9; -// bands.push_back (bi); -// -// bi.fl = 2.420e9; -// bi.fc = 2.431e9; -// bi.fh = 2.442e9; -// bands.push_back (bi); -// -// sm = Create (bands); -// -// /** -// * TX signal #1: Power Spectral Density (W/Hz) of the signal = [0 0] dBm and BW = [20 22] MHz -// */ -// Ptr inPsd1 = Create (sm); -// (*inPsd1)[0] = 1.; -// (*inPsd1)[1] = 1.; -// Ptr outPsd1 = Create (sm); -// outPsd1 = m_fadingModule->CalcRxPowerSpectralDensity (inPsd1, m_node1, m_node2); -// -// NS_LOG_INFO ("A ver " << (*outPsd1)[0] << " " << (*outPsd1)[1]); - double samplingInterval = 0.001; - double time = 0.0; - while (time<0.010) - { - Time t = Seconds (time); - Simulator::Schedule(t, &LteFadingTestCase::GetFadingSample, this); - time += samplingInterval; - } - Simulator::Stop (Seconds (10.1)); - Simulator::Run (); - Simulator::Destroy (); -// double loss = m_downlinkPropagationLossModel->GetLoss (m_node1, m_node2); - time = 0.0; - int rbNum = 2; - std::vector sum (rbNum); - std::vector sumSquared (rbNum); - for (int i = 0; i < rbNum; i++) - { - sum.at (i) = 0.; - sumSquared.at (i) = 0.; - } - for (std::vector::size_type i = 0; i != m_fadingSamples.size (); i++) - { - NS_LOG_INFO ("Sample time " << time << " : " << m_fadingSamples.at(i)[0] << " " << m_fadingSamples.at(i)[1]); - time += samplingInterval; - for (int j = 0; j < rbNum; j++) - { - sum.at (j) += m_fadingSamples.at(i)[j]; - sumSquared.at (j) += (m_fadingSamples.at(i)[j]*m_fadingSamples.at(i)[j]); - } - } -// NS_LOG_INFO ("Calculated loss: " << loss); - NS_LOG_INFO ("Theoretical loss: " << m_lossRef); - for (int i = 0; i < rbNum; i++) - { - double mean = sum.at (i)/m_fadingSamples.size (); - double sigma = sqrt(sumSquared.at (i)/m_fadingSamples.size () - (mean*mean)); - NS_LOG_INFO (" Mean " << mean << " sigma " << sigma); - } - - // NS_TEST_ASSERT_MSG_EQ_TOL(loss, m_lossRef, 0.1, "Wrong loss !"); -} - - -void -LteFadingTestCase::GetFadingSample () -{ - Ptr sm; - - Bands bands; - BandInfo bi; - - bi.fl = 2.400e9; - bi.fc = 2.410e9; - bi.fh = 2.420e9; - bands.push_back (bi); - - bi.fl = 2.420e9; - bi.fc = 2.431e9; - bi.fh = 2.442e9; - bands.push_back (bi); - - sm = Create (bands); - - /** - * TX signal #1: Power Spectral Density (W/Hz) of the signal = [0 0] dBm and BW = [20 22] MHz - */ - Ptr inPsd1 = Create (sm); - (*inPsd1)[0] = 1.; - (*inPsd1)[1] = 1.; - Ptr outPsd1 = Create (sm); - outPsd1 = m_fadingModule->CalcRxPowerSpectralDensity (inPsd1, m_node1, m_node2); - (*outPsd1)[0] = (10 * std::log10 (180000*(*outPsd1)[0])) - (10 * std::log10 (180000*(*inPsd1)[0])); - (*outPsd1)[1] = (10 * std::log10 (180000*(*outPsd1)[1])) - (10 * std::log10 (180000*(*inPsd1)[1])); - m_fadingSamples.push_back ((*outPsd1)); -} diff --git a/src/lte/test/lte-test-fading.h b/src/lte/test/lte-test-fading.h deleted file mode 100644 index 8b93e769a..000000000 --- a/src/lte/test/lte-test-fading.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ -/* -* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License version 2 as -* published by the Free Software Foundation; -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -* -* Author: Marco Miozzo -*/ - -#ifndef LTE_TEST_FADING_H -#define LTE_TEST_FADING_H - -#include "ns3/spectrum-value.h" - -#include "ns3/test.h" - -#include -#include -#include - -#include - -using namespace ns3; - - -/** - * \ingroup lte-test - * \ingroup tests - * - * \brief Test 1.1 fading model - */ - -class LteFadingTestSuite : public TestSuite -{ - public: - LteFadingTestSuite (); -}; - - -/** - * \ingroup lte-test - * \ingroup tests - * - * \brief Fading test case is checking if the pathloss between macro and UE - * is equal to the theoretical value when using the Okumura Hata Model - * (150 < freq < 1500 MHz). - */ -class LteFadingTestCase : public TestCase -{ - public: - /** - * Lte Fading Test Case function - * \param m1 building mobility model #1 - * \param m2 building modility model #2 - * \param refValue reference value - * \param name the reference name - */ - LteFadingTestCase (Ptr m1, Ptr m2, double refValue, std::string name); - virtual ~LteFadingTestCase (); - - private: - virtual void DoRun (void); - - void GetFadingSample (); - - Ptr m_node1; ///< building mobility model #1 - Ptr m_node2; ///< building mobility model #2 - Ptr m_fadingModule; ///< fading loss model - double m_lossRef; ///< loss reference - std::vector m_fadingSamples; ///< fading samples - - -}; - -/** - * \ingroup lte-test - * \ingroup tests - * - * \brief Lte Fading System Test Case - */ -class LteFadingSystemTestCase : public TestCase -{ - public: - /** - * Lte Fading System Test Case function - * \param name the reference name - * \param snrDb SNR in DB - * \param dist the distance - * \param mcsIndex the MCS index - */ - LteFadingSystemTestCase (std::string name, double snrDb, double dist, uint16_t mcsIndex); - LteFadingSystemTestCase (); - virtual ~LteFadingSystemTestCase (); - - /** - * DL scheduling function - * \param dlInfo DL scheduling info - */ - void DlScheduling (DlSchedulingCallbackInfo dlInfo); - - private: - virtual void DoRun (void); - - double m_snrDb; ///< SNR in DB - double m_distance; ///< distance - uint16_t m_mcsIndex; ///< MCS index -}; - -#endif /*LTE_TEST_FADING_H*/