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)
153 BuildingsHelper::Install (enbNodes);
156 BuildingsHelper::Install (ueNodes);
166 lteHelper->
Attach (ueDevs, enbDevs.
Get (0));
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));
192 double simulationTime = 0.6;
193 double tolerance = 0.1;
209 Simulator::Schedule (Seconds (0.2), &RrFfMacScheduler::TransmissionModeConfigurationUpdate, rrsched, rnti, 1);
210 Simulator::Schedule (Seconds (0.4), &RrFfMacScheduler::TransmissionModeConfigurationUpdate, rrsched, rnti, 2);
220 Simulator::Schedule (Seconds (0.2), &PfFfMacScheduler::TransmissionModeConfigurationUpdate, pfsched, rnti, 1);
221 Simulator::Schedule (Seconds (0.4), &PfFfMacScheduler::TransmissionModeConfigurationUpdate, pfsched, rnti, 2);
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);
244 Simulator::Stop (Seconds (simulationTime));
246 Simulator::Destroy ();
249 for (uint8_t i = 0; i <
m_estThrDl.size (); i++)
Simulation virtual time values and global simulation resolution.
void SetPathlossModelAttribute(std::string n, const AttributeValue &v)
set an attribute for the pathloss model to be created
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
std::string m_schedulerType
NetDeviceContainer InstallEnbDevice(NodeContainer c)
create a set of eNB devices
hold variables of type string
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
LenaMimoTestCase(uint16_t dist, std::vector< uint32_t > estThrDl, std::string schedulerType, bool useIdealRrc)
Implements the SCHED SAP and CSCHED SAP for a Proportional Fair scheduler.
Ptr< LteEnbPhy > GetPhy(void) const
virtual ~LenaMimoTestCase()
std::vector< uint32_t > m_estThrDl
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.
void EnableRlcTraces(void)
Enable trace sinks for RLC layer.
This system test program creates different test cases with a single eNB...
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
#define NS_FATAL_ERROR(msg)
fatal error handling
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Call ActivateDataRadioBearer (ueDevice, bearer) for each UE device in a given set.
void SetSchedulerType(std::string type)
virtual void DoRun(void)
Implementation to actually run this TestCase.
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.
static LenaTestMimoSuite lenaTestMimoSuite
hold variables of type 'enum'
hold objects of type ns3::Time
uint64_t GetDlRxData(uint64_t imsi, uint8_t lcid)
Gets the number of received downlink data bytes.
holds a vector of ns3::NetDevice pointers
#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...
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())
void GetRlcBufferSample(Ptr< RadioBearerStatsCalculator > rlcStats, uint64_t imsi, uint8_t rnti)
void GetAttribute(std::string name, AttributeValue &value) const
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual child TestCase case to this TestCase.
void SetPosition(const Vector &position)
Ptr< RadioBearerStatsCalculator > GetRlcStats(void)
NetDeviceContainer InstallUeDevice(NodeContainer c)
create a set of UE devices
Helper class used to assign positions and mobility models to nodes.
std::vector< uint64_t > m_dlDataRxed
Implements the SCHED SAP and CSCHED SAP for a Round Robin scheduler.
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
Ptr< Node > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
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 EnableMacTraces(void)
Enable trace sinks for MAC layer.
Ptr< LteUePhy > GetPhy(void) const
Hold a floating point type.
void SetAttribute(std::string name, const AttributeValue &value)
The eNodeB device implementation.
Ptr< T > GetObject(void) const
static std::string BuildNameString(uint16_t dist, std::string schedulerType, bool useIdealRrc)
The LteUeNetDevice class implements the UE net device.