From 6614880a83bf4d0fe54e7058b80bd27d27471b71 Mon Sep 17 00:00:00 2001 From: Manuel Requena Date: Tue, 31 May 2011 17:37:37 +0200 Subject: [PATCH] clean link adaptation test --- src/lte/test/lte-test-link-adaptation.cc | 109 ++--------------------- src/lte/test/lte-test-link-adaptation.h | 3 +- 2 files changed, 8 insertions(+), 104 deletions(-) diff --git a/src/lte/test/lte-test-link-adaptation.cc b/src/lte/test/lte-test-link-adaptation.cc index 3f0fd0822..cfdbab2da 100644 --- a/src/lte/test/lte-test-link-adaptation.cc +++ b/src/lte/test/lte-test-link-adaptation.cc @@ -57,41 +57,8 @@ LteTestDlSchedulingCallback (LteLinkAdaptationTestCase *testcase, std::string pa LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite () : TestSuite ("lte-link-adaptation", SYSTEM) { -// LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); -// LogComponentEnable ("LteLinkAdaptationTest", logLevel); - NS_LOG_INFO ("Creating LteLinkAdaptionTestSuite"); -// Tests: distance --> loss -#if 0 - int distanceMin = 1; - int distanceMax = 2000; - int distanceStep = 1000; - bool logStep = false; - - for ( int distance = distanceMin ; - distance <= distanceMax ; - logStep ? ( distance *= distanceStep) : ( distance += distanceStep ) ) - { - /** - * Propagation Loss (in W/Hz) - * - * ( 4 * PI * distance * frequency ) 2 - * Loss = ( ------------------------------- ) - * ( c ) - * - * where: c is speed of light in vacuum = 3e8 (m/s) - * distance in (m) - * frequency in (Hz) - */ - double lossLinear = ( ( 4.0 * M_PI * distance * 2.160e9 ) / 3e8 ); - lossLinear = lossLinear * lossLinear; - double lossDb = 10 * log10(lossLinear); - - AddTestCase (new LteLinkAdaptationTestCase (lossDb, distance)); - } -#endif - struct SnrEfficiencyMcs { double snrDb; @@ -140,25 +107,22 @@ LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite () {28.00000, 6.84687, 28}, {29.00000, 7.17649, 28}, {30.00000, 7.50663, 28}, - }; + }; int numOfTests = sizeof (snrEfficiencyMcs) / sizeof (SnrEfficiencyMcs); - double txPowerDbm = 30; // default eNB TX power over whole bandwdith double ktDbm = -174; // reference LTE noise PSD double noisePowerDbm = ktDbm + 10*log10(25*180000); // corresponds to kT*bandwidth in linear units double receiverNoiseFigureDb = 9.0; // default UE noise figure - + for ( int i = 0 ; i < numOfTests; i++ ) - { + { double lossDb = txPowerDbm - snrEfficiencyMcs[i].snrDb - noisePowerDbm - receiverNoiseFigureDb; - double lossLinear = pow (10, lossDb / 10); - double distance = ( ( 3e8 * sqrt ( lossLinear ) ) / ( 4.0 * M_PI * 2.160e9 ) ); std::ostringstream name; name << " snr= " << snrEfficiencyMcs[i].snrDb << " dB, " << " mcs= " << snrEfficiencyMcs[i].mcsIndex; - AddTestCase (new LteLinkAdaptationTestCase (name.str (), snrEfficiencyMcs[i].snrDb, lossDb, distance, snrEfficiencyMcs[i].mcsIndex)); + AddTestCase (new LteLinkAdaptationTestCase (name.str (), snrEfficiencyMcs[i].snrDb, lossDb, snrEfficiencyMcs[i].mcsIndex)); } } @@ -170,11 +134,10 @@ static LteLinkAdaptationTestSuite lteLinkAdaptationTestSuite; * TestCase */ -LteLinkAdaptationTestCase::LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, double distance, uint16_t mcsIndex) +LteLinkAdaptationTestCase::LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, uint16_t mcsIndex) : TestCase (name), m_snrDb (snrDb), m_loss (loss), - m_distance (distance), m_mcsIndex (mcsIndex) { std::ostringstream sstream1, sstream2; @@ -191,47 +154,6 @@ LteLinkAdaptationTestCase::~LteLinkAdaptationTestCase () void LteLinkAdaptationTestCase::DoRun (void) { - // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); - // LogComponentEnable ("LteAmc", logLevel); - // LogComponentEnable ("LteLinkAdaptationTest", logLevel); - // LogComponentEnable ("LteEnbRrc", logLevel); - // LogComponentEnable ("LteUeRrc", logLevel); - // LogComponentEnable ("LteEnbMac", logLevel); - // LogComponentEnable ("LteUeMac", logLevel); - // LogComponentEnable ("LteRlc", logLevel); - // LogComponentEnable ("RrPacketScheduler", logLevel); - - // LogComponentEnable ("RrFfMacScheduler", logLevel); - - // LogComponentEnable ("LtePhy", logLevel); - // LogComponentEnable ("LteEnbPhy", logLevel); - // LogComponentEnable ("LteUePhy", logLevel); - - // LogComponentEnable ("LteSpectrumValueHelper", logLevel); - // LogComponentEnable ("LteSpectrumPhy", logLevel); - // LogComponentEnable ("LteInterference", logLevel); - // LogComponentEnable ("LteSinrChunkProcessor", logLevel); - // LogComponentEnable ("LteTestSinrChunkProcessor", logLevel); - - // LogComponentEnable ("LtePropagationLossModel", logLevel); - // LogComponentEnable ("LossModel", logLevel); - // LogComponentEnable ("ShadowingLossModel", logLevel); - // LogComponentEnable ("PenetrationLossModel", logLevel); - // LogComponentEnable ("MultipathLossModel", logLevel); - // LogComponentEnable ("PathLossModel", logLevel); - // LogComponentEnable ("FriisSpectrumPropagationLossModel", logLevel); - // LogComponentEnable ("ConstantSpectrumPropagationLossModel", logLevel); - - // LogComponentEnable ("LteNetDevice", logLevel); - // LogComponentEnable ("LteUeNetDevice", logLevel); - // LogComponentEnable ("LteEnbNetDevice", logLevel); - - // LogComponentEnable ("MobilityModel", logLevel); - // LogComponentEnable ("ConstantPositionMobilityModel", logLevel); - // LogComponentEnable ("MultiModelSpectrumChannel", logLevel); - // LogComponentEnable ("SingleModelSpectrumChannel", logLevel); - - /** * Simulation Topology */ @@ -251,15 +173,9 @@ LteLinkAdaptationTestCase::DoRun (void) ueNodes.Create (1); NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes ); - // Position of the eNodeB and UE - Ptr positionAlloc = CreateObject (); - positionAlloc->Add (Vector (0.0, 0.0, 0.0)); - positionAlloc->Add (Vector (100.0, 0.0, 0.0)); - // Install Mobility Model MobilityHelper mobility; mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); - mobility.SetPositionAllocator (positionAlloc); mobility.Install (allNodes); // Create Devices and install them in the Nodes (eNB and UE) @@ -277,21 +193,16 @@ LteLinkAdaptationTestCase::DoRun (void) EpsBearer bearer (q); lena->ActivateEpsBearer (ueDevs, bearer); - - // this is to test that the SNR is as intended + // Use testing chunk processor in the PHY layer + // It will be used to test that the SNR is as intended Ptr uePhy = ueDevs.Get (0)->GetObject ()->GetPhy ()->GetObject (); Ptr testSinr = Create (uePhy); uePhy->GetDownlinkSpectrumPhy ()->AddSinrChunkProcessor (testSinr); - Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling", MakeBoundCallback(&LteTestDlSchedulingCallback, this)); Simulator::Stop (Seconds (0.005)); - //Simulator::Stop (Seconds (0.01)); -// Simulator::Stop (Seconds (0.1)); -/* Simulator::Stop (Seconds (2.0));*/ -// Simulator::Stop (Seconds (10.0)); Simulator::Run (); double calculatedSinrDb = 10.0 * log10 (testSinr->GetSinr ()[0]); @@ -309,7 +220,6 @@ LteLinkAdaptationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, if ( firstTime ) { firstTime = false; -// NS_LOG_UNCOND (" Frame\tSbframe\tRnti\tmcsTb1\tsizeTb1\tmcsTb2\tsizeTb2"); NS_LOG_UNCOND ("SNR\tRef_MCS\tCalc_MCS"); } @@ -319,12 +229,7 @@ LteLinkAdaptationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, * because CQI feedback is still not available at the eNB. */ if ( (frameNo > 1) || (subframeNo > 4) ) -// if ( (frameNo == 1) && (subframeNo == 10) ) { -// NS_LOG_UNCOND (" " << frameNo << "\t" << subframeNo << "\t" << rnti << "\t" -// << (uint16_t)mcsTb1 << "\t" << sizeTb1 << "\t" -// << (uint16_t)mcsTb2 << "\t" << sizeTb2); - NS_LOG_UNCOND (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1); NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_mcsIndex, "Wrong MCS index"); diff --git a/src/lte/test/lte-test-link-adaptation.h b/src/lte/test/lte-test-link-adaptation.h index f6e17ca38..aad03a95b 100644 --- a/src/lte/test/lte-test-link-adaptation.h +++ b/src/lte/test/lte-test-link-adaptation.h @@ -40,7 +40,7 @@ public: class LteLinkAdaptationTestCase : public TestCase { public: - LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, double distance, uint16_t mcsIndex); + LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, uint16_t mcsIndex); LteLinkAdaptationTestCase (); virtual ~LteLinkAdaptationTestCase (); @@ -52,7 +52,6 @@ class LteLinkAdaptationTestCase : public TestCase double m_snrDb; double m_loss; - double m_distance; uint16_t m_mcsIndex; };