A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::LteEnbNetDevice Class Reference

The eNodeB device implementation. More...

#include <lte-enb-net-device.h>

+ Inheritance diagram for ns3::LteEnbNetDevice:
+ Collaboration diagram for ns3::LteEnbNetDevice:

Public Member Functions

 LteEnbNetDevice ()
 
virtual ~LteEnbNetDevice (void)
 
virtual void DoDispose (void)
 This method is called by Object::Dispose or by the object's destructor, whichever comes first. More...
 
uint16_t GetCellId () const
 
uint32_t GetCsgId () const
 Returns the CSG ID of the eNodeB. More...
 
bool GetCsgIndication () const
 Returns the CSG indication flag of the eNodeB. More...
 
uint8_t GetDlBandwidth () const
 
uint16_t GetDlEarfcn () const
 
Ptr< LteEnbMacGetMac (void) const
 
Ptr< LteEnbPhyGetPhy (void) const
 
Ptr< LteEnbRrcGetRrc () const
 
uint8_t GetUlBandwidth () const
 
uint16_t GetUlEarfcn () const
 
virtual bool Send (Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
 
void SetCsgId (uint32_t csgId)
 Associate the eNodeB device with a particular CSG. More...
 
void SetCsgIndication (bool csgIndication)
 Enable or disable the CSG indication flag. More...
 
void SetDlBandwidth (uint8_t bw)
 
void SetDlEarfcn (uint16_t earfcn)
 
void SetUlBandwidth (uint8_t bw)
 
void SetUlEarfcn (uint16_t earfcn)
 
- Public Member Functions inherited from ns3::LteNetDevice
 LteNetDevice (void)
 
virtual ~LteNetDevice (void)
 
virtual void AddLinkChangeCallback (Callback< void > callback)
 
virtual Address GetAddress (void) const
 
virtual Address GetBroadcast (void) const
 
virtual Ptr< ChannelGetChannel (void) const
 
virtual uint32_t GetIfIndex (void) const
 
virtual uint16_t GetMtu (void) const
 
virtual Address GetMulticast (Ipv4Address addr) const
 Make and return a MAC multicast address using the provided multicast group. More...
 
virtual Address GetMulticast (Ipv6Address addr) const
 Get the MAC multicast address corresponding to the IPv6 address provided. More...
 
virtual Ptr< NodeGetNode (void) const
 
virtual bool IsBridge (void) const
 Return true if the net device is acting as a bridge. More...
 
virtual bool IsBroadcast (void) const
 
virtual bool IsLinkUp (void) const
 
virtual bool IsMulticast (void) const
 
virtual bool IsPointToPoint (void) const
 Return true if the net device is on a point-to-point link. More...
 
virtual bool NeedsArp (void) const
 
void Receive (Ptr< Packet > p)
 receive a packet from the lower layers in order to forward it to the upper layers More...
 
virtual bool SendFrom (Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
 
virtual void SetAddress (Address address)
 Set the address of this interface. More...
 
virtual void SetIfIndex (const uint32_t index)
 
virtual bool SetMtu (const uint16_t mtu)
 
virtual void SetNode (Ptr< Node > node)
 
virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb)
 
virtual void SetReceiveCallback (NetDevice::ReceiveCallback cb)
 
virtual bool SupportsSendFrom (void) const
 
- Public Member Functions inherited from ns3::NetDevice
virtual ~NetDevice ()
 
- Public Member Functions inherited from ns3::Object
 Object ()
 
virtual ~Object ()
 
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 Run the DoDispose methods of this object and all the objects aggregated to it. More...
 
AggregateIterator GetAggregateIterator (void) const
 
virtual TypeId GetInstanceTypeId (void) const
 
template<typename T >
Ptr< T > GetObject (void) const
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 
void Initialize (void)
 This method calls the virtual DoInitialize method on all the objects aggregated to this object. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
 
void SetAttribute (std::string name, const AttributeValue &value)
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::LteNetDevice
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::NetDevice
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 Noop. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Protected Member Functions

virtual void DoInitialize (void)
 This method is called only once by Object::Initialize. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void NotifyNewAggregate (void)
 This method is invoked whenever two sets of objects are aggregated together. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 This method is invoked once all member attributes have been initialized. More...
 

Private Member Functions

void UpdateConfig ()
 Propagate attributes and configuration to sub-modules. More...
 

Private Attributes

Ptr< LteAnrm_anr
 
uint16_t m_cellId
 Cell Identifer. More...
 
uint16_t m_csgId
 
bool m_csgIndication
 
uint8_t m_dlBandwidth
 downlink bandwidth in RBs More...
 
uint16_t m_dlEarfcn
 downlink carrier frequency More...
 
Ptr< LteHandoverAlgorithmm_handoverAlgorithm
 
bool m_isConfigured
 
bool m_isConstructed
 
Ptr< LteEnbMacm_mac
 
Ptr< LteEnbPhym_phy
 
Ptr< LteEnbRrcm_rrc
 
Ptr< FfMacSchedulerm_scheduler
 
uint8_t m_ulBandwidth
 uplink bandwidth in RBs More...
 
uint16_t m_ulEarfcn
 uplink carrier frequency More...
 

Additional Inherited Members

- Public Types inherited from ns3::NetDevice
enum  PacketType {
  PACKET_HOST = 1, NS3_PACKET_HOST = PACKET_HOST, PACKET_BROADCAST, NS3_PACKET_BROADCAST = PACKET_BROADCAST,
  PACKET_MULTICAST, NS3_PACKET_MULTICAST = PACKET_MULTICAST, PACKET_OTHERHOST, NS3_PACKET_OTHERHOST = PACKET_OTHERHOST
}
 Packet types are used as they are in Linux. More...
 
typedef Callback< bool, Ptr
< NetDevice >, Ptr< const
Packet >, uint16_t, const
Address &, const Address
&, enum PacketType
PromiscReceiveCallback
 
typedef Callback< bool, Ptr
< NetDevice >, Ptr< const
Packet >, uint16_t, const
Address & > 
ReceiveCallback
 
- Protected Attributes inherited from ns3::LteNetDevice
NetDevice::ReceiveCallback m_rxCallback
 

Detailed Description

The eNodeB device implementation.

Config Paths

ns3::LteEnbNetDevice is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice

Attributes

  • LteEnbRrc: The RRC associated to this EnbNetDevice
  • LteHandoverAlgorithm: The handover algorithm associated to this EnbNetDevice
  • LteAnr: The automatic neighbour relation function associated to this EnbNetDevice
  • LteEnbMac: The MAC associated to this EnbNetDevice
  • FfMacScheduler: The scheduler associated to this EnbNetDevice
  • LteEnbPhy: The PHY associated to this EnbNetDevice
  • UlBandwidth: Uplink Transmission Bandwidth Configuration in number of Resource Blocks
  • DlBandwidth: Downlink Transmission Bandwidth Configuration in number of Resource Blocks
  • CellId: Cell Identifier
  • DlEarfcn: Downlink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) as per 3GPP 36.101 Section 5.7.3.
  • UlEarfcn: Uplink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) as per 3GPP 36.101 Section 5.7.3.
  • CsgId: The Closed Subscriber Group (CSG) identity that this eNodeB belongs to
  • CsgIndication: If true, only UEs which are members of the CSG (i.e. same CSG ID) can gain access to the eNodeB, therefore enforcing closed access mode. Otherwise, the eNodeB operates as a non-CSG cell and implements open access mode.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read

Attributes defined in parent class ns3::LteNetDevice

  • Mtu: The MAC-level Maximum Transmission Unit

No TraceSources are defined for this type.

Definition at line 52 of file lte-enb-net-device.h.

Constructor & Destructor Documentation

ns3::LteEnbNetDevice::LteEnbNetDevice ( )

Definition at line 137 of file lte-enb-net-device.cc.

References NS_LOG_FUNCTION.

ns3::LteEnbNetDevice::~LteEnbNetDevice ( void  )
virtual

Definition at line 145 of file lte-enb-net-device.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

void ns3::LteEnbNetDevice::DoDispose ( void  )
virtual

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

It is safe to call GetObject from within this method.

Reimplemented from ns3::LteNetDevice.

Definition at line 151 of file lte-enb-net-device.cc.

References ns3::LteNetDevice::DoDispose(), m_anr, m_handoverAlgorithm, m_mac, m_phy, m_rrc, m_scheduler, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::LteEnbNetDevice::DoInitialize ( void  )
protectedvirtual

This method is called only once by Object::Initialize.

If the user calls Object::Initialize multiple times, DoInitialize is called only the first time.

Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject and AggregateObject from within this method.

Reimplemented from ns3::Object.

Definition at line 315 of file lte-enb-net-device.cc.

References m_anr, m_handoverAlgorithm, m_isConstructed, m_mac, m_phy, m_rrc, NS_LOG_FUNCTION, and UpdateConfig().

+ Here is the call graph for this function:

uint32_t ns3::LteEnbNetDevice::GetCsgId ( ) const

Returns the CSG ID of the eNodeB.

Returns
the Closed Subscriber Group identity
See also
LteEnbNetDevice::SetCsgId

Definition at line 286 of file lte-enb-net-device.cc.

References m_csgId.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

bool ns3::LteEnbNetDevice::GetCsgIndication ( ) const

Returns the CSG indication flag of the eNodeB.

Returns
the CSG indication flag
See also
LteEnbNetDevice::SetCsgIndication

Definition at line 300 of file lte-enb-net-device.cc.

References m_csgIndication.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

uint8_t ns3::LteEnbNetDevice::GetDlBandwidth ( ) const
Returns
the downlink bandwidth in RBs

Definition at line 233 of file lte-enb-net-device.cc.

References m_dlBandwidth.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

uint16_t ns3::LteEnbNetDevice::GetDlEarfcn ( ) const
Returns
the downlink carrier frequency (EARFCN)

Definition at line 260 of file lte-enb-net-device.cc.

References m_dlEarfcn.

Referenced by ns3::LteHelper::InstallSingleEnbDevice().

+ Here is the caller graph for this function:

Ptr< LteEnbMac > ns3::LteEnbNetDevice::GetMac ( void  ) const
Returns
a pointer to the MAC

Definition at line 182 of file lte-enb-net-device.cc.

References m_mac.

Ptr< LteEnbRrc > ns3::LteEnbNetDevice::GetRrc ( ) const
Returns
a pointer to the Radio Resource Control instance of the eNB

Definition at line 194 of file lte-enb-net-device.cc.

References m_rrc.

Referenced by ns3::LteUeRrcProtocolIdeal::SetEnbRrcSapProvider(), and ns3::LteUeRrcProtocolReal::SetEnbRrcSapProvider().

+ Here is the caller graph for this function:

TypeId ns3::LteEnbNetDevice::GetTypeId ( void  )
static

Definition at line 53 of file lte-enb-net-device.cc.

References GetCsgId(), GetCsgIndication(), GetDlBandwidth(), GetUlBandwidth(), m_anr, m_cellId, m_dlEarfcn, m_handoverAlgorithm, m_mac, m_phy, m_rrc, m_scheduler, m_ulEarfcn, SetCsgId(), SetCsgIndication(), SetDlBandwidth(), ns3::TypeId::SetParent(), and SetUlBandwidth().

Referenced by ns3::LteHelper::LteHelper().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint8_t ns3::LteEnbNetDevice::GetUlBandwidth ( ) const
Returns
the uplink bandwidth in RBs

Definition at line 206 of file lte-enb-net-device.cc.

References m_ulBandwidth.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

uint16_t ns3::LteEnbNetDevice::GetUlEarfcn ( ) const
Returns
the uplink carrier frequency (EARFCN)

Definition at line 273 of file lte-enb-net-device.cc.

References m_ulEarfcn.

Referenced by ns3::LteHelper::InstallSingleEnbDevice().

+ Here is the caller graph for this function:

bool ns3::LteEnbNetDevice::Send ( Ptr< Packet packet,
const Address dest,
uint16_t  protocolNumber 
)
virtual
Parameters
packetpacket sent from above down to Network Device
destmac address of the destination (already resolved)
protocolNumberidentifies the type of payload contained in this packet. Used to call the right L3Protocol when the packet is received.

Called from higher layer to send packet into Network Device to the specified destination Address

Returns
whether the Send operation succeeded

Implements ns3::NetDevice.

Definition at line 333 of file lte-enb-net-device.cc.

References m_rrc, NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::Ipv4L3Protocol::PROT_NUMBER.

void ns3::LteEnbNetDevice::SetCsgId ( uint32_t  csgId)

Associate the eNodeB device with a particular CSG.

Parameters
csgIdthe intended Closed Subscriber Group identity

CSG identity is a number identifying a Closed Subscriber Group which the cell belongs to. eNodeB is associated with a single CSG identity.

The same CSG identity can also be associated to several UEs, which is equivalent as enlisting these UEs as the members of this particular CSG.

See also
LteEnbNetDevice::SetCsgIndication

Definition at line 292 of file lte-enb-net-device.cc.

References m_csgId, NS_LOG_FUNCTION, and UpdateConfig().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteEnbNetDevice::SetCsgIndication ( bool  csgIndication)

Enable or disable the CSG indication flag.

Parameters
csgIndicationif TRUE, only CSG members are allowed to access this cell

When the CSG indication field is set to TRUE, only UEs which are members of the CSG (i.e. same CSG ID) can gain access to the eNodeB, therefore enforcing closed access mode. Otherwise, the eNodeB operates as a non-CSG cell and implements open access mode.

Note
This restriction only applies to initial cell selection and EPC-enabled simulation.
See also
LteEnbNetDevice::SetCsgIndication

Definition at line 306 of file lte-enb-net-device.cc.

References m_csgIndication, NS_LOG_FUNCTION, and UpdateConfig().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteEnbNetDevice::SetDlBandwidth ( uint8_t  bw)
Parameters
bwthe downlink bandwidth in RBs

Definition at line 239 of file lte-enb-net-device.cc.

References m_dlBandwidth, NS_FATAL_ERROR, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::LteEnbNetDevice::SetDlEarfcn ( uint16_t  earfcn)
Parameters
earfcnthe downlink carrier frequency (EARFCN)

Definition at line 266 of file lte-enb-net-device.cc.

References m_dlEarfcn, and NS_LOG_FUNCTION.

void ns3::LteEnbNetDevice::SetUlBandwidth ( uint8_t  bw)
Parameters
bwthe uplink bandwidth in RBs

Definition at line 212 of file lte-enb-net-device.cc.

References m_ulBandwidth, NS_FATAL_ERROR, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::LteEnbNetDevice::SetUlEarfcn ( uint16_t  earfcn)
Parameters
earfcnthe uplink carrier frequency (EARFCN)

Definition at line 279 of file lte-enb-net-device.cc.

References m_ulEarfcn, and NS_LOG_FUNCTION.

void ns3::LteEnbNetDevice::UpdateConfig ( void  )
private

Propagate attributes and configuration to sub-modules.

Several attributes (e.g., the bandwidth) are exported as the attributes of the LteEnbNetDevice from a user perspective, but are actually used also in other sub-modules (the RRC, the PHY, the scheduler, etc.). This method takes care of updating the configuration of all these sub-modules so that their copy of attribute values are in sync with the one in the LteEnbNetDevice.

Definition at line 342 of file lte-enb-net-device.cc.

References m_cellId, m_csgId, m_csgIndication, m_dlBandwidth, m_dlEarfcn, m_isConfigured, m_isConstructed, m_rrc, m_ulBandwidth, m_ulEarfcn, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by DoInitialize(), SetCsgId(), and SetCsgIndication().

+ Here is the caller graph for this function:

Member Data Documentation

Ptr<LteAnr> ns3::LteEnbNetDevice::m_anr
private

Definition at line 201 of file lte-enb-net-device.h.

Referenced by DoDispose(), DoInitialize(), and GetTypeId().

uint16_t ns3::LteEnbNetDevice::m_cellId
private

Cell Identifer.

Part of the CGI, see TS 29.274, section 8.21.1

Definition at line 203 of file lte-enb-net-device.h.

Referenced by GetCellId(), GetTypeId(), and UpdateConfig().

uint16_t ns3::LteEnbNetDevice::m_csgId
private

Definition at line 211 of file lte-enb-net-device.h.

Referenced by GetCsgId(), SetCsgId(), and UpdateConfig().

bool ns3::LteEnbNetDevice::m_csgIndication
private

Definition at line 212 of file lte-enb-net-device.h.

Referenced by GetCsgIndication(), SetCsgIndication(), and UpdateConfig().

uint8_t ns3::LteEnbNetDevice::m_dlBandwidth
private

downlink bandwidth in RBs

Definition at line 205 of file lte-enb-net-device.h.

Referenced by GetDlBandwidth(), SetDlBandwidth(), and UpdateConfig().

uint16_t ns3::LteEnbNetDevice::m_dlEarfcn
private

downlink carrier frequency

Definition at line 208 of file lte-enb-net-device.h.

Referenced by GetDlEarfcn(), GetTypeId(), SetDlEarfcn(), and UpdateConfig().

Ptr<LteHandoverAlgorithm> ns3::LteEnbNetDevice::m_handoverAlgorithm
private

Definition at line 199 of file lte-enb-net-device.h.

Referenced by DoDispose(), DoInitialize(), and GetTypeId().

bool ns3::LteEnbNetDevice::m_isConfigured
private

Definition at line 177 of file lte-enb-net-device.h.

Referenced by UpdateConfig().

bool ns3::LteEnbNetDevice::m_isConstructed
private

Definition at line 176 of file lte-enb-net-device.h.

Referenced by DoInitialize(), and UpdateConfig().

Ptr<LteEnbMac> ns3::LteEnbNetDevice::m_mac
private

Definition at line 191 of file lte-enb-net-device.h.

Referenced by DoDispose(), DoInitialize(), GetMac(), and GetTypeId().

Ptr<LteEnbPhy> ns3::LteEnbNetDevice::m_phy
private

Definition at line 193 of file lte-enb-net-device.h.

Referenced by DoDispose(), DoInitialize(), GetPhy(), and GetTypeId().

Ptr<LteEnbRrc> ns3::LteEnbNetDevice::m_rrc
private

Definition at line 195 of file lte-enb-net-device.h.

Referenced by DoDispose(), DoInitialize(), GetRrc(), GetTypeId(), Send(), and UpdateConfig().

Ptr<FfMacScheduler> ns3::LteEnbNetDevice::m_scheduler
private

Definition at line 197 of file lte-enb-net-device.h.

Referenced by DoDispose(), and GetTypeId().

uint8_t ns3::LteEnbNetDevice::m_ulBandwidth
private

uplink bandwidth in RBs

Definition at line 206 of file lte-enb-net-device.h.

Referenced by GetUlBandwidth(), SetUlBandwidth(), and UpdateConfig().

uint16_t ns3::LteEnbNetDevice::m_ulEarfcn
private

uplink carrier frequency

Definition at line 209 of file lte-enb-net-device.h.

Referenced by GetTypeId(), GetUlEarfcn(), SetUlEarfcn(), and UpdateConfig().


The documentation for this class was generated from the following files: