25 #include <ns3/object.h>
26 #include <ns3/spectrum-interference.h>
27 #include <ns3/spectrum-error-model.h>
30 #include <ns3/simulator.h>
31 #include <ns3/packet.h>
34 #include "ns3/radio-bearer-stats-calculator.h"
35 #include <ns3/mobility-building-info.h>
36 #include <ns3/buildings-propagation-loss-model.h>
37 #include <ns3/eps-bearer.h>
38 #include <ns3/node-container.h>
39 #include <ns3/mobility-helper.h>
40 #include <ns3/net-device-container.h>
41 #include <ns3/lte-ue-net-device.h>
42 #include <ns3/lte-enb-net-device.h>
43 #include <ns3/lte-ue-rrc.h>
44 #include <ns3/lte-helper.h>
45 #include "ns3/string.h"
46 #include "ns3/double.h"
47 #include <ns3/lte-enb-phy.h>
48 #include <ns3/lte-ue-phy.h>
49 #include <ns3/boolean.h>
50 #include <ns3/rr-ff-mac-scheduler.h>
51 #include <ns3/pf-ff-mac-scheduler.h>
52 #include <ns3/pointer.h>
54 #include <ns3/buildings-helper.h>
74 std::vector<uint32_t> estThrDl;
75 estThrDl.push_back (119100);
76 estThrDl.push_back (183600);
77 estThrDl.push_back (193400);
90 std::ostringstream oss;
91 oss <<
" UE distance " << dist <<
" m" <<
" Scheduler " << schedulerType;
104 :
TestCase (BuildNameString (dist, schedulerType, useIdealRrc)),
106 m_estThrDl (estThrDl),
107 m_schedulerType (schedulerType),
108 m_useIdealRrc (useIdealRrc)
136 lteHelper->SetAttribute (
"PathlossModel",
StringValue (
"ns3::HybridBuildingsPropagationLossModel"));
137 lteHelper->SetPathlossModelAttribute (
"ShadowSigmaOutdoor",
DoubleValue (0.0));
138 lteHelper->SetPathlossModelAttribute (
"ShadowSigmaIndoor",
DoubleValue (0.0));
139 lteHelper->SetPathlossModelAttribute (
"ShadowSigmaExtWalls",
DoubleValue (0.0));
162 enbDevs = lteHelper->InstallEnbDevice (enbNodes);
163 ueDevs = lteHelper->InstallUeDevice (ueNodes);
166 lteHelper->Attach (ueDevs, enbDevs.
Get (0));
171 lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
176 enbPhy->SetAttribute (
"TxPower",
DoubleValue (46.0));
177 enbPhy->SetAttribute (
"NoiseFigure",
DoubleValue (5.0));
186 uePhy->SetAttribute (
"TxPower",
DoubleValue (23.0));
187 uePhy->SetAttribute (
"NoiseFigure",
DoubleValue (9.0));
190 lteHelper->EnableRlcTraces ();
191 lteHelper->EnableMacTraces ();
192 double simulationTime = 0.6;
193 double tolerance = 0.1;
199 enbNetDev->GetAttribute (
"FfMacScheduler", ptrval);
230 rlcStats->SetAttribute (
"EpochDuration",
TimeValue (Seconds (0.1)));
233 double sampleTime = 0.199999;
234 for (uint8_t j = 0; j <
m_estThrDl.size (); j ++)
236 NS_LOG_INFO (
"\t test with user at distance " <<
m_dist <<
" time " << sampleTime);
240 Time t = Seconds (sampleTime);
249 for (uint8_t i = 0; i <
m_estThrDl.size (); i++)
261 m_dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
std::vector< uint64_t > m_dlDataRxed
keep track of time values and allow control of global simulation resolution
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
LenaMimoTestCase(uint16_t dist, std::vector< uint32_t > estThrDl, std::string schedulerType, bool useIdealRrc)
hold variables of type string
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
#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...
virtual ~LenaMimoTestCase()
Implements the SCHED SAP and CSCHED SAP for a Proportional Fair scheduler.
static void Run(void)
Run the simulation until one of:
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
std::string m_schedulerType
#define NS_FATAL_ERROR(msg)
fatal error handling
void TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode)
NS_LOG_COMPONENT_DEFINE("LteTestMimo")
Keep track of the current position and velocity of an object.
This class contains the specification of EPS Bearers.
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
hold variables of type 'enum'
hold objects of type ns3::Time
holds a vector of ns3::NetDevice pointers
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked.
std::vector< uint32_t > m_estThrDl
void SetDefault(std::string name, const AttributeValue &value)
keep track of a set of node pointers.
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())
static Time Now(void)
Return the "current simulation time".
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual child TestCase case to this TestCase.
static LenaTestMimoSuite lenaTestMimoSuite
void SetPosition(const Vector &position)
void GetRlcBufferSample(Ptr< RadioBearerStatsCalculator > rlcStats, uint64_t imsi, uint8_t rnti)
Helper class used to assign positions and mobility models to nodes.
This system test program creates different test cases with a single eNB...
Implements the SCHED SAP and CSCHED SAP for a Round Robin scheduler.
static void Stop(void)
If an event invokes this method, it will be the last event scheduled by the Simulator::run method bef...
Ptr< Node > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
virtual void DoRun(void)
Implementation to actually run this TestCase.
static std::string BuildNameString(uint16_t dist, std::string schedulerType, bool useIdealRrc)
std::string GetName(void) const
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode)
Hold a floating point type.
The eNodeB device implementation.
Ptr< T > GetObject(void) const
static void Install(Ptr< Node > node)
Install the MobilityBuildingInfo to a node.
The LteUeNetDevice class implements the UE net device.