|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
24 #include <ns3/llc-snap-header.h>
25 #include <ns3/simulator.h>
26 #include <ns3/callback.h>
28 #include <ns3/packet.h>
29 #include <ns3/lte-net-device.h>
30 #include <ns3/packet-burst.h>
31 #include <ns3/uinteger.h>
32 #include <ns3/trace-source-accessor.h>
33 #include <ns3/pointer.h>
35 #include <ns3/lte-amc.h>
36 #include <ns3/lte-enb-mac.h>
37 #include <ns3/lte-enb-net-device.h>
38 #include <ns3/lte-enb-rrc.h>
39 #include <ns3/lte-ue-net-device.h>
40 #include <ns3/lte-enb-phy.h>
41 #include <ns3/ff-mac-scheduler.h>
42 #include <ns3/lte-handover-algorithm.h>
43 #include <ns3/lte-anr.h>
44 #include <ns3/lte-ffr-algorithm.h>
45 #include <ns3/ipv4-l3-protocol.h>
46 #include <ns3/ipv6-l3-protocol.h>
47 #include <ns3/abort.h>
49 #include <ns3/lte-enb-component-carrier-manager.h>
50 #include <ns3/object-map.h>
51 #include <ns3/object-factory.h>
63 TypeId (
"ns3::LteEnbNetDevice")
65 .AddConstructor<LteEnbNetDevice> ()
66 .AddAttribute (
"LteEnbRrc",
67 "The RRC associated to this EnbNetDevice",
70 MakePointerChecker <LteEnbRrc> ())
71 .AddAttribute (
"LteHandoverAlgorithm",
72 "The handover algorithm associated to this EnbNetDevice",
75 MakePointerChecker <LteHandoverAlgorithm> ())
76 .AddAttribute (
"LteAnr",
77 "The automatic neighbour relation function associated to this EnbNetDevice",
80 MakePointerChecker <LteAnr> ())
81 .AddAttribute (
"LteFfrAlgorithm",
82 "The FFR algorithm associated to this EnbNetDevice",
85 MakePointerChecker <LteFfrAlgorithm> ())
86 .AddAttribute (
"LteEnbComponentCarrierManager",
87 "The RRC associated to this EnbNetDevice",
90 MakePointerChecker <LteEnbComponentCarrierManager> ())
91 .AddAttribute (
"ComponentCarrierMap",
"List of component carriers.",
94 MakeObjectMapChecker<ComponentCarrierEnb> ())
95 .AddAttribute (
"UlBandwidth",
96 "Uplink Transmission Bandwidth Configuration in number of Resource Blocks",
100 MakeUintegerChecker<uint8_t> ())
101 .AddAttribute (
"DlBandwidth",
102 "Downlink Transmission Bandwidth Configuration in number of Resource Blocks",
106 MakeUintegerChecker<uint8_t> ())
107 .AddAttribute (
"CellId",
111 MakeUintegerChecker<uint16_t> ())
112 .AddAttribute (
"DlEarfcn",
113 "Downlink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) "
114 "as per 3GPP 36.101 Section 5.7.3. ",
117 MakeUintegerChecker<uint32_t> (0, 262143))
118 .AddAttribute (
"UlEarfcn",
119 "Uplink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) "
120 "as per 3GPP 36.101 Section 5.7.3. ",
123 MakeUintegerChecker<uint32_t> (0, 262143))
124 .AddAttribute (
"CsgId",
125 "The Closed Subscriber Group (CSG) identity that this eNodeB belongs to",
129 MakeUintegerChecker<uint32_t> ())
130 .AddAttribute (
"CsgIndication",
131 "If true, only UEs which are members of the CSG (i.e. same CSG ID) "
132 "can gain access to the eNodeB, therefore enforcing closed access mode. "
133 "Otherwise, the eNodeB operates as a non-CSG cell and implements open access mode.",
143 : m_isConstructed (false),
144 m_isConfigured (false),
146 m_componentCarrierManager(0)
176 for (uint32_t i = 0; i <
m_ccMap.size (); i++)
202 return DynamicCast<ComponentCarrierEnb> (
m_ccMap.at (index))->GetMac ();
208 return DynamicCast<ComponentCarrierEnb> (
m_ccMap.at (index))->GetPhy ();
234 if (it.second->GetCellId () == cellId)
350 std::map < uint8_t, Ptr<ComponentCarrierBaseStation> >
371 it->second->Initialize ();
373 m_rrc->Initialize ();
379 m_anr->Initialize ();
392 "unsupported protocol " << protocolNumber <<
", only IPv4 and IPv6 are supported");
393 return m_rrc->SendData (packet);
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Ptr< LteEnbComponentCarrierManager > GetComponentCarrierManager() const
virtual void DoDispose(void)
Destructor implementation.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
bool m_csgIndication
CSG indication.
AttributeValue implementation for Boolean.
uint32_t m_ulEarfcn
DEPRECATE - It is maintained for backward compatibility after adding CA feature- uplink carrier frequ...
uint16_t GetCellId() const
bool GetCsgIndication() const
Returns the CSG indication flag of the eNodeB.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetCsgIndication(bool csgIndication)
Enable or disable the CSG indication flag.
Ptr< const AttributeAccessor > MakeObjectMapAccessor(U T::*memberVariable)
MakeAccessorHelper implementation for ObjectVector.
virtual void DoDispose(void)
Destructor implementation.
static TypeId GetTypeId(void)
Get the type ID.
std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > m_ccMap
ComponentCarrier map.
Hold objects of type Ptr<T>.
Container for a set of ns3::Object pointers.
Ptr< LteEnbMac > GetMac(void) const
uint16_t m_dlBandwidth
DEPRECATE - It is maintained for backward compatibility after adding CA feature- downlink bandwidth i...
std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > GetCcMap(void) const
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Ptr< LteEnbPhy > GetPhy(void) const
Ptr< LteEnbRrc > GetRrc() const
uint32_t m_dlEarfcn
DEPRECATE - It is maintained for backward compatibility after adding CA feature- downlink carrier fre...
bool m_isConstructed
is constructed?
virtual bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
Smart pointer class similar to boost::intrusive_ptr.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
uint32_t GetUlEarfcn() const
bool m_isConfigured
is configured?
void SetCsgId(uint32_t csgId)
Associate the eNodeB device with a particular CSG.
Ptr< LteFfrAlgorithm > m_ffrAlgorithm
DEPRECATED - It is maintained for backward compatibility after adding CA feature.
a polymophic address class
Ptr< const AttributeChecker > MakeBooleanChecker(void)
Ptr< LteEnbComponentCarrierManager > m_componentCarrierManager
the component carrier manager of this eNb
uint16_t m_ulBandwidth
DEPRECATE - It is maintained for backward compatibility after adding CA feature- uplink bandwidth in ...
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
uint32_t GetDlEarfcn() const
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
static const uint16_t PROT_NUMBER
The protocol number for IPv6 (0x86DD).
uint32_t GetCsgId() const
Returns the CSG ID of the eNodeB.
void SetUlBandwidth(uint16_t bw)
static const uint16_t PROT_NUMBER
Protocol number (0x0800)
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< LteEnbRrc > m_rrc
the RRC
void UpdateConfig()
Propagate attributes and configuration to sub-modules.
void SetUlEarfcn(uint32_t earfcn)
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
void SetDlEarfcn(uint32_t earfcn)
LteNetDevice provides basic implementation for all LTE network devices.
virtual void DoInitialize(void)
Initialize() implementation.
Hold an unsigned integer type.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
uint16_t m_cellId
Cell Identifier.
bool HasCellId(uint16_t cellId) const
uint16_t GetUlBandwidth() const
Ptr< LteHandoverAlgorithm > m_handoverAlgorithm
the handover algorithm
virtual ~LteEnbNetDevice(void)
uint16_t GetDlBandwidth() const
void SetDlBandwidth(uint16_t bw)
void SetCcMap(std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > ccm)
Set the ComponentCarrier Map of the Enb.