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.