22 #include "ns3/simulator.h"
24 #include "ns3/string.h"
25 #include "ns3/double.h"
27 #include "ns3/boolean.h"
29 #include "ns3/mobility-helper.h"
30 #include "ns3/lte-helper.h"
32 #include "ns3/lte-ue-phy.h"
33 #include "ns3/lte-ue-net-device.h"
34 #include "ns3/lte-enb-phy.h"
35 #include "ns3/lte-enb-net-device.h"
36 #include "ns3/ff-mac-scheduler.h"
38 #include "ns3/lte-global-pathloss-database.h"
51 static std::string
BuildNameString (
double orientationDegrees,
double beamwidthDegrees,
double x,
double y);
52 LteEnbAntennaTestCase (
double orientationDegrees,
double beamwidthDegrees,
double x,
double y,
double antennaGainDb);
57 virtual void DoRun (
void);
71 std::ostringstream oss;
72 oss <<
"o=" << orientationDegrees
73 <<
", bw=" << beamwidthDegrees
81 :
TestCase (BuildNameString (orientationDegrees, beamwidthDegrees, x, y)),
82 m_orientationDegrees (orientationDegrees),
83 m_beamwidthDegrees (beamwidthDegrees),
86 m_antennaGainDb (antennaGainDb)
117 positionAlloc->Add (
Vector (0.0, 0.0, 0.0));
138 lteHelper->
Attach (ueDevs, enbDevs.
Get (0));
169 const double enbTxPowerDbm = 30;
170 const double ueTxPowerDbm = 10;
171 const double ktDbm = -174;
172 const double noisePowerDbm = ktDbm + 10 * std::log10 (25 * 180000);
173 const double ueNoiseFigureDb = 9.0;
174 const double enbNoiseFigureDb = 5.0;
179 double expectedSinrDl = enbTxPowerDbm +
m_antennaGainDb - noisePowerDbm + ueNoiseFigureDb;
180 if (expectedSinrDl > 0)
182 double calculatedSinrDbDl = -INFINITY;
183 if (testDlSinr->GetSinr () != 0)
185 calculatedSinrDbDl = 10.0 * std::log10 (testDlSinr->GetSinr ()->operator[] (0));
188 double calculatedAntennaGainDbDl = - (enbTxPowerDbm - calculatedSinrDbDl - noisePowerDbm - ueNoiseFigureDb);
191 double expectedSinrUl = ueTxPowerDbm +
m_antennaGainDb - noisePowerDbm + enbNoiseFigureDb;
192 if (expectedSinrUl > 0)
194 double calculatedSinrDbUl = -INFINITY;
195 if (testUlSinr->GetSinr () != 0)
197 calculatedSinrDbUl = 10.0 * std::log10 (testUlSinr->GetSinr ()->operator[] (0));
199 double calculatedAntennaGainDbUl = - (ueTxPowerDbm - calculatedSinrDbUl - noisePowerDbm - enbNoiseFigureDb);
205 double measuredLossDl = dlPathlossDb.
GetPathloss (1, 1);
207 double measuredLossUl = ulPathlossDb.
GetPathloss (1, 1);