22 #include <ns3/simulator.h>
24 #include <ns3/callback.h>
25 #include <ns3/config.h>
26 #include <ns3/string.h>
27 #include <ns3/double.h>
29 #include <ns3/boolean.h>
30 #include <ns3/pointer.h>
32 #include "ns3/mobility-helper.h"
33 #include "ns3/lte-helper.h"
35 #include <ns3/ff-mac-scheduler.h>
36 #include <ns3/lte-enb-net-device.h>
37 #include <ns3/lte-enb-phy.h>
38 #include <ns3/lte-enb-rrc.h>
39 #include <ns3/lte-ue-net-device.h>
40 #include <ns3/lte-ue-phy.h>
41 #include <ns3/lte-ue-rrc.h>
45 #include <ns3/lte-common.h>
48 #include <ns3/lte-rrc-sap.h>
59 :
TestSuite (
"lte-downlink-power-control", SYSTEM)
63 NS_LOG_INFO (
"Creating LteDownlinkPowerControlTestSuite");
67 std::vector<int> activeRbs_txpowdB30nrb6run1earfcn500 (4);
68 activeRbs_txpowdB30nrb6run1earfcn500[0] = 0;
69 activeRbs_txpowdB30nrb6run1earfcn500[1] = 2;
70 activeRbs_txpowdB30nrb6run1earfcn500[2] = 3;
71 activeRbs_txpowdB30nrb6run1earfcn500[3] = 5;
73 uint16_t earfcn = 500;
77 std::map<int, double> powerTxMap;
78 double rbTxPower = powerTx;
81 powerTxMap.insert (std::pair<int,double>(0, rbTxPower));
84 powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
87 powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
90 powerTxMap.insert (std::pair<int,double>(5, rbTxPower));
92 SpectrumValue spectrumValue_txpowdB30nrb6run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6));
93 spectrumValue_txpowdB30nrb6run1earfcn500[0] = 2.325820769916e-07;
94 spectrumValue_txpowdB30nrb6run1earfcn500[1] = 0.000000000000e+00;
95 spectrumValue_txpowdB30nrb6run1earfcn500[2] = 4.640622533585e-07;
96 spectrumValue_txpowdB30nrb6run1earfcn500[3] = 9.259259259259e-07;
97 spectrumValue_txpowdB30nrb6run1earfcn500[4] = 0.000000000000e+00;
98 spectrumValue_txpowdB30nrb6run1earfcn500[5] = 1.467493696723e-06;
102 powerTxMap, activeRbs_txpowdB30nrb6run1earfcn500,
103 spectrumValue_txpowdB30nrb6run1earfcn500), TestCase::QUICK);
107 std::vector<int> activeRbs_txpowdB30nrb6run1earfcn500 (4);
108 activeRbs_txpowdB30nrb6run1earfcn500[0] = 0;
109 activeRbs_txpowdB30nrb6run1earfcn500[1] = 2;
110 activeRbs_txpowdB30nrb6run1earfcn500[2] = 3;
111 activeRbs_txpowdB30nrb6run1earfcn500[3] = 5;
113 uint16_t earfcn = 500;
117 std::map<int, double> powerTxMap;
118 double rbTxPower = powerTx;
121 powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
124 powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
127 powerTxMap.insert (std::pair<int,double>(5, rbTxPower));
129 SpectrumValue spectrumValue_txpowdB30nrb6run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6));
130 spectrumValue_txpowdB30nrb6run1earfcn500[0] = 9.259259259259e-07;
131 spectrumValue_txpowdB30nrb6run1earfcn500[1] = 0.000000000000e+00;
132 spectrumValue_txpowdB30nrb6run1earfcn500[2] = 4.640622533585e-07;
133 spectrumValue_txpowdB30nrb6run1earfcn500[3] = 9.259259259259e-07;
134 spectrumValue_txpowdB30nrb6run1earfcn500[4] = 0.000000000000e+00;
135 spectrumValue_txpowdB30nrb6run1earfcn500[5] = 1.467493696723e-06;
139 powerTxMap, activeRbs_txpowdB30nrb6run1earfcn500,
140 spectrumValue_txpowdB30nrb6run1earfcn500), TestCase::QUICK);
143 std::vector<int> activeRbs_txpowdB30nrb25run1earfcn500 (15);
144 activeRbs_txpowdB30nrb25run1earfcn500[0] = 0;
145 activeRbs_txpowdB30nrb25run1earfcn500[1] = 1;
146 activeRbs_txpowdB30nrb25run1earfcn500[2] = 2;
147 activeRbs_txpowdB30nrb25run1earfcn500[3] = 3;
148 activeRbs_txpowdB30nrb25run1earfcn500[4] = 7;
149 activeRbs_txpowdB30nrb25run1earfcn500[5] = 8;
150 activeRbs_txpowdB30nrb25run1earfcn500[6] = 9;
151 activeRbs_txpowdB30nrb25run1earfcn500[7] = 11;
152 activeRbs_txpowdB30nrb25run1earfcn500[8] = 13;
153 activeRbs_txpowdB30nrb25run1earfcn500[9] = 14;
154 activeRbs_txpowdB30nrb25run1earfcn500[10] = 18;
155 activeRbs_txpowdB30nrb25run1earfcn500[11] = 19;
156 activeRbs_txpowdB30nrb25run1earfcn500[12] = 20;
157 activeRbs_txpowdB30nrb25run1earfcn500[13] = 21;
158 activeRbs_txpowdB30nrb25run1earfcn500[14] = 24;
160 uint16_t earfcn = 500;
164 std::map<int, double> powerTxMap;
165 double rbTxPower = powerTx;
167 powerTxMap.insert (std::pair<int,double>(0, rbTxPower));
169 powerTxMap.insert (std::pair<int,double>(1, rbTxPower));
171 powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
173 powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
175 powerTxMap.insert (std::pair<int,double>(7, rbTxPower));
177 powerTxMap.insert (std::pair<int,double>(8, rbTxPower));
179 powerTxMap.insert (std::pair<int,double>(9, rbTxPower));
181 powerTxMap.insert (std::pair<int,double>(11, rbTxPower));
183 powerTxMap.insert (std::pair<int,double>(13, rbTxPower));
185 powerTxMap.insert (std::pair<int,double>(14, rbTxPower));
187 powerTxMap.insert (std::pair<int,double>(18, rbTxPower));
189 powerTxMap.insert (std::pair<int,double>(19, rbTxPower));
191 powerTxMap.insert (std::pair<int,double>(20, rbTxPower));
193 powerTxMap.insert (std::pair<int,double>(21, rbTxPower));
195 powerTxMap.insert (std::pair<int,double>(24, rbTxPower));
198 SpectrumValue spectrumValue_txpowdB30nrb25run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, bw));
199 spectrumValue_txpowdB30nrb25run1earfcn500[0] = 1.113749408060e-07;
200 spectrumValue_txpowdB30nrb25run1earfcn500[1] = 7.409475839182e-08;
201 spectrumValue_txpowdB30nrb25run1earfcn500[2] = 5.581969847799e-08;
202 spectrumValue_txpowdB30nrb25run1earfcn500[3] = 2.797612026209e-07;
203 spectrumValue_txpowdB30nrb25run1earfcn500[4] = 0.000000000000e+00;
204 spectrumValue_txpowdB30nrb25run1earfcn500[5] = 0.000000000000e+00;
205 spectrumValue_txpowdB30nrb25run1earfcn500[6] = 0.000000000000e+00;
206 spectrumValue_txpowdB30nrb25run1earfcn500[7] = 3.521984872135e-07;
207 spectrumValue_txpowdB30nrb25run1earfcn500[8] = 3.521984872135e-07;
208 spectrumValue_txpowdB30nrb25run1earfcn500[9] = 3.521984872135e-07;
209 spectrumValue_txpowdB30nrb25run1earfcn500[10] = 0.000000000000e+00;
210 spectrumValue_txpowdB30nrb25run1earfcn500[11] = 1.478384791559e-07;
211 spectrumValue_txpowdB30nrb25run1earfcn500[12] = 0.000000000000e+00;
212 spectrumValue_txpowdB30nrb25run1earfcn500[13] = 3.521984872135e-07;
213 spectrumValue_txpowdB30nrb25run1earfcn500[14] = 1.113749408060e-07;
214 spectrumValue_txpowdB30nrb25run1earfcn500[15] = 0.000000000000e+00;
215 spectrumValue_txpowdB30nrb25run1earfcn500[16] = 0.000000000000e+00;
216 spectrumValue_txpowdB30nrb25run1earfcn500[17] = 0.000000000000e+00;
217 spectrumValue_txpowdB30nrb25run1earfcn500[18] = 2.222222222222e-07;
218 spectrumValue_txpowdB30nrb25run1earfcn500[19] = 1.113749408060e-07;
219 spectrumValue_txpowdB30nrb25run1earfcn500[20] = 1.113749408060e-07;
220 spectrumValue_txpowdB30nrb25run1earfcn500[21] = 7.409475839182e-08;
221 spectrumValue_txpowdB30nrb25run1earfcn500[22] = 0.000000000000e+00;
222 spectrumValue_txpowdB30nrb25run1earfcn500[23] = 0.000000000000e+00;
223 spectrumValue_txpowdB30nrb25run1earfcn500[24] = 4.433916255486e-07;
227 powerTxMap, activeRbs_txpowdB30nrb25run1earfcn500,
228 spectrumValue_txpowdB30nrb25run1earfcn500), TestCase::QUICK);
232 std::vector<int> activeRbs_txpowdB30nrb25run1earfcn500 (15);
233 activeRbs_txpowdB30nrb25run1earfcn500[0] = 0;
234 activeRbs_txpowdB30nrb25run1earfcn500[1] = 1;
235 activeRbs_txpowdB30nrb25run1earfcn500[2] = 2;
236 activeRbs_txpowdB30nrb25run1earfcn500[3] = 3;
237 activeRbs_txpowdB30nrb25run1earfcn500[4] = 7;
238 activeRbs_txpowdB30nrb25run1earfcn500[5] = 8;
239 activeRbs_txpowdB30nrb25run1earfcn500[6] = 9;
240 activeRbs_txpowdB30nrb25run1earfcn500[7] = 11;
241 activeRbs_txpowdB30nrb25run1earfcn500[8] = 13;
242 activeRbs_txpowdB30nrb25run1earfcn500[9] = 14;
243 activeRbs_txpowdB30nrb25run1earfcn500[10] = 18;
244 activeRbs_txpowdB30nrb25run1earfcn500[11] = 19;
245 activeRbs_txpowdB30nrb25run1earfcn500[12] = 20;
246 activeRbs_txpowdB30nrb25run1earfcn500[13] = 21;
247 activeRbs_txpowdB30nrb25run1earfcn500[14] = 24;
249 uint16_t earfcn = 500;
253 std::map<int, double> powerTxMap;
254 double rbTxPower = powerTx;
256 powerTxMap.insert (std::pair<int,double>(0, rbTxPower));
258 powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
260 powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
262 powerTxMap.insert (std::pair<int,double>(7, rbTxPower));
264 powerTxMap.insert (std::pair<int,double>(8, rbTxPower));
266 powerTxMap.insert (std::pair<int,double>(13, rbTxPower));
268 powerTxMap.insert (std::pair<int,double>(14, rbTxPower));
270 powerTxMap.insert (std::pair<int,double>(18, rbTxPower));
272 powerTxMap.insert (std::pair<int,double>(19, rbTxPower));
274 powerTxMap.insert (std::pair<int,double>(24, rbTxPower));
277 SpectrumValue spectrumValue_txpowdB30nrb25run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, bw));
278 spectrumValue_txpowdB30nrb25run1earfcn500[0] = 1.113749408060e-07;
279 spectrumValue_txpowdB30nrb25run1earfcn500[1] = 2.222222222222e-07;
280 spectrumValue_txpowdB30nrb25run1earfcn500[2] = 5.581969847799e-08;
281 spectrumValue_txpowdB30nrb25run1earfcn500[3] = 2.797612026209e-07;
282 spectrumValue_txpowdB30nrb25run1earfcn500[4] = 0.000000000000e+00;
283 spectrumValue_txpowdB30nrb25run1earfcn500[5] = 0.000000000000e+00;
284 spectrumValue_txpowdB30nrb25run1earfcn500[6] = 0.000000000000e+00;
285 spectrumValue_txpowdB30nrb25run1earfcn500[7] = 3.521984872135e-07;
286 spectrumValue_txpowdB30nrb25run1earfcn500[8] = 3.521984872135e-07;
287 spectrumValue_txpowdB30nrb25run1earfcn500[9] = 2.222222222222e-07;
288 spectrumValue_txpowdB30nrb25run1earfcn500[10] = 0.000000000000e+00;
289 spectrumValue_txpowdB30nrb25run1earfcn500[11] = 2.222222222222e-07;
290 spectrumValue_txpowdB30nrb25run1earfcn500[12] = 0.000000000000e+00;
291 spectrumValue_txpowdB30nrb25run1earfcn500[13] = 3.521984872135e-07;
292 spectrumValue_txpowdB30nrb25run1earfcn500[14] = 1.113749408060e-07;
293 spectrumValue_txpowdB30nrb25run1earfcn500[15] = 0.000000000000e+00;
294 spectrumValue_txpowdB30nrb25run1earfcn500[16] = 0.000000000000e+00;
295 spectrumValue_txpowdB30nrb25run1earfcn500[17] = 0.000000000000e+00;
296 spectrumValue_txpowdB30nrb25run1earfcn500[18] = 2.222222222222e-07;
297 spectrumValue_txpowdB30nrb25run1earfcn500[19] = 1.113749408060e-07;
298 spectrumValue_txpowdB30nrb25run1earfcn500[20] = 2.222222222222e-07;
299 spectrumValue_txpowdB30nrb25run1earfcn500[21] = 2.222222222222e-07;
300 spectrumValue_txpowdB30nrb25run1earfcn500[22] = 0.000000000000e+00;
301 spectrumValue_txpowdB30nrb25run1earfcn500[23] = 0.000000000000e+00;
302 spectrumValue_txpowdB30nrb25run1earfcn500[24] = 4.433916255486e-07;
306 powerTxMap, activeRbs_txpowdB30nrb25run1earfcn500,
307 spectrumValue_txpowdB30nrb25run1earfcn500), TestCase::QUICK);
313 "DataCtrlPowerDifference_noChange"), TestCase::QUICK);
315 "DataCtrlPowerDifference_dB_6"), TestCase::QUICK);
317 "DataCtrlPowerDifference_dB_4dot77"), TestCase::QUICK);
319 "DataCtrlPowerDifference_dB_3"), TestCase::QUICK);
321 "DataCtrlPowerDifference_dB_1dot77"), TestCase::QUICK);
323 "DataCtrlPowerDifference_dB0"), TestCase::QUICK);
325 "DataCtrlPowerDifference_dB1"), TestCase::QUICK);
327 "DataCtrlPowerDifference_dB2"), TestCase::QUICK);
329 "DataCtrlPowerDifference_dB3"), TestCase::QUICK);
343 pdschConfigDedicated.
pa = pa;
344 double rbTxpower = txPower + LteRrcSap::ConvertPdschConfigDedicated2Double (pdschConfigDedicated);
357 uint16_t earfcn, uint8_t bw,
double powerTx,
358 std::map<int, double> powerTxMap, std::vector <int> activeRbs,
360 :
TestCase (
"Downlink Power Control: " + name),
361 m_actual (
LteSpectrumValueHelper::CreateTxPowerSpectralDensity (earfcn, bw, powerTx, powerTxMap, activeRbs)),
364 NS_LOG_INFO (
"Creating LteDownlinkPowerControlTestCase");
374 NS_LOG_INFO (
"Creating LteDownlinkPowerControlSpectrumValueTestCase");
381 :
TestCase (
"Downlink Power Control: " + name)
386 NS_LOG_INFO (
"Creating LteDownlinkPowerControlTestCase");
426 lteHelper->
Attach (ueDevs, enbDevs.
Get (0));
429 enbDevs.
Get (0)->GetAttribute (
"LteFfrAlgorithm", tmp);
450 Simulator::Stop (
Seconds (0.400));
453 double dataPower = 10.0 * std::log10 (testDlDataPowerReceived->GetSinr ()->operator[] (0));
454 double ctrlPower = 10.0 * std::log10 (testDlCtrlPowerReceived->
GetSinr ()->operator[] (0));
455 double powerDiff = (-1.0)*ctrlPower + dataPower;
463 "Downlink Data and Ctrl Power Difference are not equal within tolerance");
465 Simulator::Destroy ();
470 std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
477 std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
484 std::string context, uint16_t rnti, uint8_t pa)
491 :
TestCase (
"Downlink Power Control: " + name),
492 m_useIdealRrc (useIdealRrc),
493 m_changePdschConfigDedicatedTriggered (false),
494 m_connectionReconfigurationUeReceived (false),
495 m_connectionReconfigurationEnbCompleted (false)
509 NS_LOG_DEBUG (
"eNb ConnectionReconfigurationCompleted");
527 NS_LOG_DEBUG (
"FFR Algorithm ChangePdschConfigDedicated");
564 lteHelper->
Attach (ueDevs, enbDevs.
Get (0));
567 enbDevs.
Get (0)->GetAttribute (
"LteFfrAlgorithm", tmp);
570 pdschConfigDedicated.
pa = LteRrcSap::PdschConfigDedicated::dB_6;
579 Config::Connect (
"/NodeList/0/DeviceList/0/LteFfrAlgorithm/ChangePdschConfigDedicated",
581 Config::Connect (
"/NodeList/1/DeviceList/0/LteUeRrc/ConnectionReconfiguration",
583 Config::Connect (
"/NodeList/0/DeviceList/0/LteEnbRrc/ConnectionReconfiguration",
586 Simulator::Stop (
Seconds (0.400));
590 "Ffr have not changed PdschConfigDedicated for UE");
592 "Ue have not received RrcConnectionReconfiguration");
594 "Enb have not received RrcConnectionReconfigurationCompleted");
596 Simulator::Destroy ();
AttributeValue implementation for Boolean.
virtual void DoRun(void)
Implementation to actually run this TestCase.
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
void Reset(void)
Reset the initial value of every attribute as well as the value of every global to what they were bef...
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
Ptr< SpectrumValue > m_expected
virtual void DoRun(void)
Implementation to actually run this TestCase.
static LteDownlinkPowerControlTestSuite lteDownlinkPowerControlTestSuite
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
Make Callbacks with one bound argument.
SpectrumModelUid_t GetSpectrumModelUid() const
Ptr< Object > GetObject(void) const
Get the Object referenced by the PointerValue.
void Attach(NetDeviceContainer ueDevices)
Enables automatic attachment of a set of UE devices to a suitable cell using Idle mode initial cell s...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
void ChangePdschConfigDedicated(uint16_t rnti, uint8_t pa)
void Connect(std::string path, const CallbackBase &cb)
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Activate a Data Radio Bearer on a given UE devices (for LTE-only simulation).
This class defines all functions to create spectrum model for lte.
void SetFfrAlgorithmType(std::string type)
Set the type of FFR algorithm to be used by eNodeB devices.
void NotifyConnectionReconfigurationUe(LteDownlinkPowerControlRrcConnectionReconfigurationTestCase *testcase, std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
LteDownlinkPowerControlTestSuite()
TestSuite.
This class contains the specification of EPS Bearers.
bool m_connectionReconfigurationUeReceived
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
LteRrcSap::PdschConfigDedicated m_pdschConfigDedicated
Ptr< SpectrumValue > m_actual
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
void ChangePdschConfigDedicated(bool change)
void ConnectionReconfigurationEnb(std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
holds a vector of ns3::NetDevice pointers
Ptr< SpectrumValue > GetSinr()
virtual ~LteDownlinkPowerControlRrcConnectionReconfigurationTestCase()
bool m_changePdschConfigDedicatedTriggered
bool m_changePdschConfigDedicated
Ptr< LteSpectrumPhy > GetDownlinkSpectrumPhy()
LteDownlinkPowerControlSpectrumValueTestCase(std::string name, uint16_t earfcn, uint8_t bw, double powerTx, std::map< int, double > powerTxMap, std::vector< int > activeRbs, SpectrumValue &expected)
TestCase Data.
#define NS_TEST_ASSERT_MSG_EQ_TOL(actual, limit, tol, msg)
Test that actual and expected (limit) values are equal to plus or minus some tolerance and report and...
double CalculateRbTxPower(double txPower, uint8_t pa)
void ChangePdschConfigDedicatedCallback(LteDownlinkPowerControlRrcConnectionReconfigurationTestCase *testcase, std::string context, uint16_t rnti, uint8_t pa)
void SetDefault(std::string name, const AttributeValue &value)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
Hold objects of type Ptr.
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
virtual ~LteDownlinkPowerControlSpectrumValueTestCase()
Ptr< T > Create(void)
Create class instances by constructors with varying numbers of arguments and return them by Ptr...
double m_expectedPowerDiff
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Helper class used to assign positions and mobility models to nodes.
virtual void DoRun(void)
Implementation to actually run this TestCase.
#define NS_TEST_ASSERT_MSG_SPECTRUM_VALUE_EQ_TOL(actual, expected, tol, msg)
Test if two SpectrumValue instances are equal within a given tolerance.
virtual ~LteDownlinkPowerControlTestCase()
Test 1.1 SINR calculation in downlink.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Time Seconds(double value)
Construct a Time in the indicated unit.
void ConnectionReconfigurationUe(std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
void SetPdschConfigDedicated(LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
LteDownlinkPowerControlTestCase(bool changePower, uint8_t pa, std::string name)
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
bool m_connectionReconfigurationEnbCompleted
Set of values corresponding to a given SpectrumModel.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
LteDownlinkPowerControlRrcConnectionReconfigurationTestCase(bool useIdealRrc, std::string name)
void NotifyConnectionReconfigurationEnb(LteDownlinkPowerControlRrcConnectionReconfigurationTestCase *testcase, std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
The LtePhy models the physical layer of LTE.
The LteUeNetDevice class implements the UE net device.