24 #include <ns3/string.h>
26 #include <ns3/abort.h>
27 #include <ns3/pointer.h>
28 #include <ns3/lte-enb-rrc.h>
29 #include <ns3/epc-ue-nas.h>
30 #include <ns3/epc-enb-application.h>
31 #include <ns3/lte-ue-rrc.h>
32 #include <ns3/lte-ue-mac.h>
33 #include <ns3/lte-enb-mac.h>
34 #include <ns3/lte-enb-net-device.h>
35 #include <ns3/lte-enb-phy.h>
36 #include <ns3/lte-ue-phy.h>
37 #include <ns3/lte-spectrum-phy.h>
38 #include <ns3/lte-sinr-chunk-processor.h>
39 #include <ns3/multi-model-spectrum-channel.h>
40 #include <ns3/friis-spectrum-propagation-loss.h>
41 #include <ns3/trace-fading-loss-model.h>
42 #include <ns3/isotropic-antenna-model.h>
43 #include <ns3/lte-enb-net-device.h>
44 #include <ns3/lte-ue-net-device.h>
45 #include <ns3/ff-mac-scheduler.h>
46 #include <ns3/lte-handover-algorithm.h>
47 #include <ns3/lte-anr.h>
48 #include <ns3/lte-rlc.h>
49 #include <ns3/lte-rlc-um.h>
50 #include <ns3/lte-rlc-am.h>
51 #include <ns3/epc-enb-s1-sap.h>
52 #include <ns3/lte-rrc-protocol-ideal.h>
53 #include <ns3/lte-rrc-protocol-real.h>
54 #include <ns3/mac-stats-calculator.h>
55 #include <ns3/phy-stats-calculator.h>
56 #include <ns3/phy-tx-stats-calculator.h>
57 #include <ns3/phy-rx-stats-calculator.h>
58 #include <ns3/epc-helper.h>
60 #include <ns3/buildings-propagation-loss-model.h>
61 #include <ns3/lte-spectrum-value-helper.h>
62 #include <ns3/epc-x2.h>
72 : m_fadingStreamsAssigned (false),
95 NS_LOG_LOGIC (
this <<
" using a SpectrumPropagationLossModel in DL");
100 NS_LOG_LOGIC (
this <<
" using a PropagationLossModel in DL");
102 NS_ASSERT_MSG (dlPlm != 0,
" " << m_downlinkPathlossModel <<
" is neither PropagationLossModel nor SpectrumPropagationLossModel");
110 NS_LOG_LOGIC (
this <<
" using a SpectrumPropagationLossModel in UL");
115 NS_LOG_LOGIC (
this <<
" using a PropagationLossModel in UL");
127 m_phyStats = CreateObject<PhyStatsCalculator> ();
130 m_macStats = CreateObject<MacStatsCalculator> ();
146 .AddConstructor<LteHelper> ()
147 .AddAttribute (
"Scheduler",
148 "The type of scheduler to be used for eNBs. "
149 "The allowed values for this attributes are the type names "
150 "of any class inheriting from ns3::FfMacScheduler.",
154 MakeStringChecker ())
155 .AddAttribute (
"HandoverAlgorithm",
156 "The type of handover algorithm to be used for eNBs. "
157 "The allowed values for this attributes are the type names "
158 "of any class inheriting from ns3::HandoverAlgorithm.",
162 MakeStringChecker ())
163 .AddAttribute (
"PathlossModel",
164 "The type of pathloss model to be used. "
165 "The allowed values for this attributes are the type names "
166 "of any class inheriting from ns3::PropagationLossModel.",
169 MakeStringChecker ())
170 .AddAttribute (
"FadingModel",
171 "The type of fading model to be used."
172 "The allowed values for this attributes are the type names "
173 "of any class inheriting from ns3::SpectrumPropagationLossModel."
174 "If the type is set to an empty string, no fading model is used.",
177 MakeStringChecker ())
178 .AddAttribute (
"UseIdealRrc",
179 "If true, LteRrcProtocolIdeal will be used for RRC signaling. "
180 "If false, LteRrcProtocolReal will be used.",
183 MakeBooleanChecker ())
184 .AddAttribute (
"AnrEnabled",
185 "Activate or deactivate Automatic Neighbour Relation function",
188 MakeBooleanChecker ())
356 devices.
Add (device);
370 devices.
Add (device);
389 dlPhy->SetHarqPhyModule (harq);
390 ulPhy->SetHarqPhyModule (harq);
391 phy->SetHarqPhyModule (harq);
394 ulPhy->AddCtrlSinrChunkProcessor (pCtrl);
397 ulPhy->AddDataSinrChunkProcessor (pData);
400 ulPhy->AddInterferenceDataChunkProcessor (pInterf);
406 NS_ASSERT_MSG (mm,
"MobilityModel needs to be set on node before calling LteHelper::InstallUeDevice ()");
407 dlPhy->SetMobility (mm);
408 ulPhy->SetMobility (mm);
411 NS_ASSERT_MSG (antenna,
"error in creating the AntennaModel object");
412 dlPhy->SetAntenna (antenna);
413 ulPhy->SetAntenna (antenna);
423 rrcProtocol->SetLteEnbRrcSapProvider (rrc->GetLteEnbRrcSapProvider ());
424 rrc->SetLteEnbRrcSapUser (rrcProtocol->GetLteEnbRrcSapUser ());
425 rrc->AggregateObject (rrcProtocol);
426 rrcProtocol->SetCellId (cellId);
431 rrcProtocol->SetLteEnbRrcSapProvider (rrc->GetLteEnbRrcSapProvider ());
432 rrc->SetLteEnbRrcSapUser (rrcProtocol->GetLteEnbRrcSapUser ());
433 rrc->AggregateObject (rrcProtocol);
434 rrcProtocol->SetCellId (cellId);
440 rrc->GetAttribute (
"EpsBearerToRlcMapping", epsBearerToRlcMapping);
448 rrc->SetLteEnbCmacSapProvider (mac->GetLteEnbCmacSapProvider ());
449 mac->SetLteEnbCmacSapUser (rrc->GetLteEnbCmacSapUser ());
450 rrc->SetLteMacSapProvider (mac->GetLteMacSapProvider ());
452 rrc->SetLteHandoverManagementSapProvider (handoverAlgorithm->GetLteHandoverManagementSapProvider ());
453 handoverAlgorithm->SetLteHandoverManagementSapUser (rrc->GetLteHandoverManagementSapUser ());
455 mac->SetFfMacSchedSapProvider (sched->GetFfMacSchedSapProvider ());
456 mac->SetFfMacCschedSapProvider (sched->GetFfMacCschedSapProvider ());
458 sched->SetFfMacSchedSapUser (mac->GetFfMacSchedSapUser ());
459 sched->SetFfMacCschedSapUser (mac->GetFfMacCschedSapUser ());
461 phy->SetLteEnbPhySapUser (mac->GetLteEnbPhySapUser ());
462 mac->SetLteEnbPhySapProvider (phy->GetLteEnbPhySapProvider ());
464 phy->SetLteEnbCphySapUser (rrc->GetLteEnbCphySapUser ());
465 rrc->SetLteEnbCphySapProvider (phy->GetLteEnbCphySapProvider ());
472 dev->SetAttribute (
"FfMacScheduler",
PointerValue (sched));
474 dev->SetAttribute (
"LteHandoverAlgorithm",
PointerValue (handoverAlgorithm));
479 rrc->SetLteAnrSapProvider (anr->GetLteAnrSapProvider ());
480 anr->SetLteAnrSapUser (rrc->GetLteAnrSapUser ());
484 phy->SetDevice (dev);
485 dlPhy->SetDevice (dev);
486 ulPhy->SetDevice (dev);
500 NS_LOG_WARN (
"DL propagation model does not have a Frequency attribute");
507 NS_LOG_WARN (
"UL propagation model does not have a Frequency attribute");
519 NS_ASSERT_MSG (enbApp != 0,
"cannot retrieve EpcEnbApplication");
522 rrc->SetS1SapProvider (enbApp->GetS1SapProvider ());
523 enbApp->SetS1SapUser (rrc->GetS1SapUser ());
527 x2->SetEpcX2SapUser (rrc->GetEpcX2SapUser ());
528 rrc->SetEpcX2SapProvider (x2->GetEpcX2SapProvider ());
544 dlPhy->SetHarqPhyModule (harq);
545 ulPhy->SetHarqPhyModule (harq);
546 phy->SetHarqPhyModule (harq);
549 dlPhy->AddRsPowerChunkProcessor (pRs);
552 dlPhy->AddInterferenceCtrlChunkProcessor (pInterf);
555 dlPhy->AddCtrlSinrChunkProcessor (pCtrl);
558 dlPhy->AddDataSinrChunkProcessor (pData);
564 NS_ASSERT_MSG (mm,
"MobilityModel needs to be set on node before calling LteHelper::InstallUeDevice ()");
565 dlPhy->SetMobility (mm);
566 ulPhy->SetMobility (mm);
569 NS_ASSERT_MSG (antenna,
"error in creating the AntennaModel object");
570 dlPhy->SetAntenna (antenna);
571 ulPhy->SetAntenna (antenna);
579 rrcProtocol->SetUeRrc (rrc);
580 rrc->AggregateObject (rrcProtocol);
581 rrcProtocol->SetLteUeRrcSapProvider (rrc->GetLteUeRrcSapProvider ());
582 rrc->SetLteUeRrcSapUser (rrcProtocol->GetLteUeRrcSapUser ());
587 rrcProtocol->SetUeRrc (rrc);
588 rrc->AggregateObject (rrcProtocol);
589 rrcProtocol->SetLteUeRrcSapProvider (rrc->GetLteUeRrcSapProvider ());
590 rrc->SetLteUeRrcSapUser (rrcProtocol->GetLteUeRrcSapUser ());
595 rrc->SetUseRlcSm (
false);
599 nas->SetAsSapProvider (rrc->GetAsSapProvider ());
600 rrc->SetAsSapUser (nas->GetAsSapUser ());
602 rrc->SetLteUeCmacSapProvider (mac->GetLteUeCmacSapProvider ());
603 mac->SetLteUeCmacSapUser (rrc->GetLteUeCmacSapUser ());
604 rrc->SetLteMacSapProvider (mac->GetLteMacSapProvider ());
606 phy->SetLteUePhySapUser (mac->GetLteUePhySapUser ());
607 mac->SetLteUePhySapProvider (phy->GetLteUePhySapProvider ());
609 phy->SetLteUeCphySapUser (rrc->GetLteUeCphySapUser ());
610 rrc->SetLteUeCphySapProvider (phy->GetLteUeCphySapProvider ());
623 phy->SetDevice (dev);
624 dlPhy->SetDevice (dev);
625 ulPhy->SetDevice (dev);
626 nas->SetDevice (dev);
663 NS_FATAL_ERROR (
"This function is not valid without properly configured EPC");
667 if (ueLteDevice == 0)
669 NS_FATAL_ERROR (
"The passed NetDevice must be an LteUeNetDevice");
675 uint16_t dlEarfcn = ueLteDevice->GetDlEarfcn ();
676 ueNas->StartCellSelection (dlEarfcn);
682 m_epcHelper->ActivateEpsBearer (ueDevice, ueLteDevice->GetImsi (),
707 ueNas->Connect (enbLteDevice->GetCellId (), enbLteDevice->GetDlEarfcn ());
738 double minDistance = std::numeric_limits<double>::infinity ();
744 if (distance < minDistance)
746 minDistance = distance;
747 closestEnbDevice = *i;
751 Attach (ueDevice, closestEnbDevice);
772 uint64_t imsi = ueDevice->GetObject<
LteUeNetDevice> ()->GetImsi ();
773 m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer);
781 void ActivateDrb (uint64_t imsi, uint16_t cellId, uint16_t rnti);
791 m_ueDevice (ueDevice),
801 a->ActivateDrb (imsi, cellId, rnti);
812 uint16_t rnti = ueRrc->GetRnti ();
815 NS_ASSERT (ueRrc->GetCellId () == enbLteDevice->GetCellId ());
824 enbRrc->GetS1SapUser ()->DataRadioBearerSetupRequest (params);
844 std::ostringstream path;
845 path <<
"/NodeList/" << enbLteDevice->GetNode ()->GetId ()
846 <<
"/DeviceList/" << enbLteDevice->GetIfIndex ()
847 <<
"/LteEnbRrc/ConnectionEstablished";
881 NS_ASSERT_MSG (
m_epcHelper,
"Handover requires the use of the EPC - did you forget to call LteHelper::SetEpcHelper () ?");
890 uint16_t targetCellId = targetEnbDev->GetObject<
LteEnbNetDevice> ()->GetCellId ();
892 uint16_t rnti = ueDev->GetObject<
LteUeNetDevice> ()->GetRrc ()->GetRnti ();
893 sourceRrc->SendHandoverRequest (rnti, targetCellId);
960 m_rlcStats = CreateObject<RadioBearerStatsCalculator> (
"RLC");
967 int64_t currentStream = stream;
973 currentStream += tflm->AssignStreams (currentStream);
986 currentStream += dlPhy->AssignStreams (currentStream);
987 currentStream += ulPhy->AssignStreams (currentStream);
995 currentStream += dlPhy->AssignStreams (currentStream);
996 currentStream += ulPhy->AssignStreams (currentStream);
997 currentStream += ueMac->AssignStreams (currentStream);
1000 return (currentStream - stream);
1018 Config::Connect (
"/NodeList/*/DeviceList/*/LteEnbPhy/DlPhyTransmission",
1025 Config::Connect (
"/NodeList/*/DeviceList/*/LteUePhy/UlPhyTransmission",
1032 Config::Connect (
"/NodeList/*/DeviceList/*/LteUePhy/DlSpectrumPhy/DlPhyReception",
1039 Config::Connect (
"/NodeList/*/DeviceList/*/LteEnbPhy/UlSpectrumPhy/UlPhyReception",
1072 Config::Connect (
"/NodeList/*/DeviceList/*/LteUePhy/ReportCurrentCellRsrpSinr",
1082 Config::Connect (
"/NodeList/*/DeviceList/*/LteEnbPhy/ReportInterference",
1097 m_pdcpStats = CreateObject<RadioBearerStatsCalculator> (
"PDCP");
Parameters passed to DataRadioBearerSetupRequest ()
Iterator Begin(void) const
Get an iterator which refers to the first NetDevice in the container.
TypeId GetTypeId(void) const
Ptr< Object > m_uplinkPathlossModel
keep track of time values and allow control of global simulation resolution
void SetPathlossModelAttribute(std::string n, const AttributeValue &v)
set an attribute for the pathloss model to be created
virtual void AddPropagationLossModel(Ptr< PropagationLossModel > loss)=0
set the single-frequency propagation loss model to be used
void EnableDlRxPhyTraces(void)
Enable trace sinks for DL reception PHY layer.
smart pointer class similar to boost::intrusive_ptr
RadioBearerStatsConnector m_radioBearerStatsConnector
#define NS_LOG_FUNCTION(parameters)
Ptr< NetDevice > InstallSingleEnbDevice(Ptr< Node > n)
Create an eNodeB device (LteEnbNetDevice) on the given node.
The abstract base class of a handover algorithm that operates using the Handover Management SAP inter...
static TypeId GetTypeId(void)
NetDeviceContainer InstallEnbDevice(NodeContainer c)
create a set of eNB devices
std::vector< Ptr< Node > >::const_iterator Iterator
void EnableLogComponents(void)
Enables logging for all components of the LENA architecture.
hold variables of type string
void HandoverRequest(Time hoTime, Ptr< NetDevice > ueDev, Ptr< NetDevice > sourceEnbDev, Ptr< NetDevice > targetEnbDev)
Manually trigger an X2-based handover of a UE between two eNBs at a specific simulation time...
static void DlSchedulingCallback(Ptr< MacStatsCalculator > macStats, std::string path, uint32_t frameNo, uint32_t subframeNo, uint16_t rnti, uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2)
Trace sink for the ns3::LteEnbMac::DlScheduling trace source.
bool m_fadingStreamsAssigned
ObjectFactory m_fadingModelFactory
static void ActivateCallback(Ptr< DrbActivator > a, std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
Hold a value for an Attribute.
void EnableDlPhyTraces(void)
Enable trace sinks for DL PHY layer.
uint16_t rnti
the RNTI identifying the UE for which the DataRadioBearer is to be created
virtual void ReceiveLteControlMessageList(std::list< Ptr< LteControlMessage > >)
PhySpectrum received a new list of LteControlMessage.
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
Build bound Callbacks which take varying numbers of arguments, and potentially returning a value...
static Vector GetPosition(Ptr< Node > node)
DrbActivator(Ptr< NetDevice > ueDevice, EpsBearer bearer)
void SetUeAntennaModelAttribute(std::string n, const AttributeValue &v)
set an attribute for the AntennaModel to be used for the UEs
void SetFadingModel(std::string model)
NS_LOG_COMPONENT_DEFINE("LteHelper")
static Ptr< EpcTft > Default()
creates a TFT matching any traffic
void ReportUeSinr(uint16_t cellId, uint64_t imsi, uint16_t rnti, double sinrLinear)
Notifies the stats calculator that an UE SINR report has occurred.
#define NS_ASSERT(condition)
void Attach(NetDeviceContainer ueDevices)
Enables automatic attachment of a set of UE devices to a suitable cell using Idle mode initial cell s...
NS_OBJECT_ENSURE_REGISTERED(NullMessageSimulatorImpl)
void EnableRlcTraces(void)
Enable trace sinks for RLC layer.
void SetTypeId(TypeId tid)
Ptr< PhyStatsCalculator > m_phyStats
void EnablePdcpStats(Ptr< RadioBearerStatsCalculator > pdcpStats)
Ptr< PhyRxStatsCalculator > m_phyRxStats
std::string m_fadingModelType
Iterator End(void) const
Get an iterator which indicates past-the-last Node in the container.
bool SetAttributeFailSafe(std::string name, const AttributeValue &value)
void SetUeDeviceAttribute(std::string n, const AttributeValue &v)
set an attribute for the LteUeNetDevice to be created
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
void SetUeAntennaModelType(std::string type)
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Ptr< MacStatsCalculator > m_macStats
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
void Connect(std::string path, const CallbackBase &cb)
ObjectFactory m_ulPathlossModelFactory
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Call ActivateDataRadioBearer (ueDevice, bearer) for each UE device in a given set.
ObjectFactory m_channelFactory
void SetHandoverAlgorithmType(std::string type)
void EnableUlRxPhyTraces(void)
Enable trace sinks for UL reception PHY layer.
#define NS_FATAL_ERROR(msg)
fatal error handling
static TypeId GetTypeId(void)
void SetSchedulerType(std::string type)
uint32_t GetN(void) const
Get the number of Ptr stored in this container.
Ptr< RadioBearerStatsCalculator > m_rlcStats
std::string GetHandoverAlgorithmType() const
void EnablePdcpTraces(void)
Enable trace sinks for PDCP layer.
void AttachToClosestEnb(NetDeviceContainer ueDevices, NetDeviceContainer enbDevices)
Manual attachment of a set of UE devices to the network via the closest eNodeB (with respect to dista...
static void ReportCurrentCellRsrpSinrCallback(Ptr< PhyStatsCalculator > phyStats, std::string path, uint16_t cellId, uint16_t rnti, double rsrp, double sinr)
trace sink
Keep track of the current position and velocity of an object.
Ptr< Object > m_downlinkPathlossModel
static double GetCarrierFrequency(uint16_t earfcn)
Calculates the carrier frequency from the E-UTRA Absolute Radio Frequency Channel Number (EARFCN) acc...
This class contains the specification of EPS Bearers.
Ptr< Application > GetApplication(uint32_t index) const
Ptr< NetDevice > m_ueDevice
void SetHandoverAlgorithmAttribute(std::string n, const AttributeValue &v)
set an attribute for the handover algorithm to be created
hold variables of type 'enum'
void DoHandoverRequest(Ptr< NetDevice > ueDev, Ptr< NetDevice > sourceEnbDev, Ptr< NetDevice > targetEnbDev)
The actual function to trigger a manual handover.
double CalculateDistance(const Vector3D &a, const Vector3D &b)
Ptr< Object > Create(void) const
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
void EnableRlcStats(Ptr< RadioBearerStatsCalculator > rlcStats)
void EnableTraces(void)
Enables trace sinks for PHY, MAC, RLC and PDCP.
virtual void ReceiveLteUlHarqFeedback(UlInfoListElement_s mes)
PhySpectrum generated a new UL HARQ feedback.
Hold an unsigned integer type.
void SetSchedulerAttribute(std::string n, const AttributeValue &v)
set an attribute for the scheduler to be created
Ptr< NetDevice > InstallSingleUeDevice(Ptr< Node > n)
Create a UE device (LteUeNetDevice) on the given node.
static TypeId GetTypeId(void)
ObjectFactory m_enbAntennaModelFactory
holds a vector of ns3::NetDevice pointers
virtual void AddSpectrumPropagationLossModel(Ptr< SpectrumPropagationLossModel > loss)=0
set the frequency-dependent propagation loss model to be used
void EnablePhyTraces(void)
Enable trace sinks for PHY layer.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
ObjectFactory m_handoverAlgorithmFactory
fading loss model based on precalculated fading traces
#define NS_LOG_LOGIC(msg)
void SetEnbAntennaModelType(std::string type)
static TypeId GetTypeId()
ObjectFactory m_dlPathlossModelFactory
void SetSpectrumChannelType(std::string type)
static TypeId GetTypeId(void)
void SetFadingModelAttribute(std::string n, const AttributeValue &v)
set an attribute of the fading model
void EnableDlMacTraces(void)
Enable trace sinks for DL MAC layer.
virtual void ReceiveLteDlHarqFeedback(DlInfoListElement_s mes)
PhySpectrum generated a new DL HARQ feedback.
void ActivateDedicatedEpsBearer(NetDeviceContainer ueDevices, EpsBearer bearer, Ptr< EpcTft > tft)
Activate a dedicated EPS bearer on a given set of UE devices.
keep track of a set of node pointers.
This entity is installed inside an eNB and provides the functionality for the X2 interface.
void EnableUlTxPhyTraces(void)
Enable trace sinks for UL transmission PHY layer.
Ptr< SpectrumChannel > m_uplinkChannel
static void DlPhyTransmissionCallback(Ptr< PhyTxStatsCalculator > phyTxStats, std::string path, PhyTransmissionStatParameters params)
trace sink
Iterator Begin(void) const
Get an iterator which refers to the first Node in the container.
void AddX2Interface(NodeContainer enbNodes)
Create an X2 interface between all the eNBs in a given set.
std::string GetName(void) const
void Set(std::string name, const AttributeValue &value)
ObjectFactory m_schedulerFactory
void EnableUlPhyTraces(void)
Enable trace sinks for UL PHY layer.
void EnableDlTxPhyTraces(void)
Enable trace sinks for DL transmission PHY layer.
friend class ObjectFactory
Ptr< SpectrumPropagationLossModel > m_fadingModule
static void DlPhyReceptionCallback(Ptr< PhyRxStatsCalculator > phyRxStats, std::string path, PhyReceptionStatParameters params)
trace sink
void Receive(Ptr< Packet > p)
receive a packet from the lower layers in order to forward it to the upper layers ...
void EnableUlMacTraces(void)
Enable trace sinks for UL MAC layer.
static void UlPhyReceptionCallback(Ptr< PhyRxStatsCalculator > phyRxStats, std::string path, PhyReceptionStatParameters params)
trace sink
static void UlSchedulingCallback(Ptr< MacStatsCalculator > macStats, std::string path, uint32_t frameNo, uint32_t subframeNo, uint16_t rnti, uint8_t mcs, uint16_t size)
Trace sink for the ns3::LteEnbMac::UlScheduling trace source.
This abstract base class identifies the interface by means of which the helper object can plug on the...
#define NS_ASSERT_MSG(condition, message)
Ptr< EpcHelper > m_epcHelper
Ptr< RadioBearerStatsCalculator > GetRlcStats(void)
NetDeviceContainer InstallUeDevice(NodeContainer c)
create a set of UE devices
Ptr< PhyTxStatsCalculator > m_phyTxStats
Ptr< RadioBearerStatsCalculator > GetPdcpStats(void)
static void UlPhyTransmissionCallback(Ptr< PhyTxStatsCalculator > phyTxStats, std::string path, PhyTransmissionStatParameters params)
trace sink
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
This application is installed inside eNBs and provides the bridge functionality for user data plane p...
Modelize the propagation loss through a transmission medium.
void SetEpcHelper(Ptr< EpcHelper > h)
Set the EpcHelper to be used to setup the EPC network in conjunction with the setup of the LTE radio ...
uint32_t AddDevice(Ptr< NetDevice > device)
void SetPathlossModelType(std::string type)
std::vector< Ptr< NetDevice > >::const_iterator Iterator
virtual void ReceiveLteControlMessageList(std::list< Ptr< LteControlMessage > >)
void Initialize(void)
This method calls the virtual DoInitialize method on all the objects aggregated to this object...
void ActivateDrb(uint64_t imsi, uint16_t cellId, uint16_t rnti)
virtual void ReceivePss(uint16_t cellId, Ptr< SpectrumValue > p)
void SetEnbAntennaModelAttribute(std::string n, const AttributeValue &v)
set an attribute for the AntennaModel to be used for the eNBs
ObjectFactory m_ueNetDeviceFactory
void SetSpectrumChannelAttribute(std::string n, const AttributeValue &v)
set an attribute for the SpectrumChannel to be used for the UEs
Defines the interface for spectrum-aware channel implementations.
void PhyPduReceived(Ptr< Packet > p)
PhySpectrum received a new PHY-PDU.
void ReportInterference(uint16_t cellId, Ptr< SpectrumValue > interference)
Notifies the stats calculator that an interference report has occurred.
virtual void DoInitialize(void)
This method is called only once by Object::Initialize.
spectrum-aware propagation loss model
void EnableMacTraces(void)
Enable trace sinks for MAC layer.
a base class which provides memory management and object aggregation
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if cond is true.
Iterator End(void) const
Get an iterator which indicates past-the-last NetDevice in the container.
Ptr< RadioBearerStatsCalculator > m_pdcpStats
Hold a floating point type.
ObjectFactory m_ueAntennaModelFactory
The eNodeB device implementation.
Ptr< T > GetObject(void) const
A template-based reference counting class.
void PhyPduReceived(Ptr< Packet > p)
PhySpectrum received a new PHY-PDU.
a unique identifier for an interface.
ObjectFactory m_enbNetDeviceFactory
Ptr< SpectrumChannel > m_downlinkChannel
TypeId SetParent(TypeId tid)
virtual void DoInitialize(void)
This method is called only once by Object::Initialize.
std::string GetSchedulerType() const
The LtePhy models the physical layer of LTE.
void LogComponentEnable(char const *name, enum LogLevel level)
void SetEnbDeviceAttribute(std::string n, const AttributeValue &v)
set an attribute for the LteEnbNetDevice to be created
The LteUeNetDevice class implements the UE net device.