Attribute to enable/disable ANR
This commit is contained in:
@@ -175,6 +175,11 @@ TypeId LteHelper::GetTypeId (void)
|
||||
BooleanValue (true),
|
||||
MakeBooleanAccessor (&LteHelper::m_useIdealRrc),
|
||||
MakeBooleanChecker ())
|
||||
.AddAttribute ("AnrEnabled",
|
||||
"Activate or deactivate Automatic Neighbour Relation function",
|
||||
BooleanValue (true),
|
||||
MakeBooleanAccessor (&LteHelper::m_isAnrEnabled),
|
||||
MakeBooleanChecker ())
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
@@ -392,9 +397,9 @@ LteHelper::InstallSingleEnbDevice (Ptr<Node> n)
|
||||
Ptr<LteEnbMac> mac = CreateObject<LteEnbMac> ();
|
||||
Ptr<FfMacScheduler> sched = m_schedulerFactory.Create<FfMacScheduler> ();
|
||||
Ptr<LteHandoverAlgorithm> handoverAlgorithm = m_handoverAlgorithmFactory.Create<LteHandoverAlgorithm> ();
|
||||
Ptr<LteAnr> anr = CreateObject<LteAnr> (cellId);
|
||||
Ptr<LteEnbRrc> rrc = CreateObject<LteEnbRrc> ();
|
||||
|
||||
|
||||
if (m_useIdealRrc)
|
||||
{
|
||||
Ptr<LteEnbRrcProtocolIdeal> rrcProtocol = CreateObject<LteEnbRrcProtocolIdeal> ();
|
||||
@@ -430,9 +435,6 @@ LteHelper::InstallSingleEnbDevice (Ptr<Node> n)
|
||||
rrc->SetLteHandoverManagementSapProvider (handoverAlgorithm->GetLteHandoverManagementSapProvider ());
|
||||
handoverAlgorithm->SetLteHandoverManagementSapUser (rrc->GetLteHandoverManagementSapUser ());
|
||||
|
||||
rrc->SetLteAnrSapProvider (anr->GetLteAnrSapProvider ());
|
||||
anr->SetLteAnrSapUser (rrc->GetLteAnrSapUser ());
|
||||
|
||||
mac->SetFfMacSchedSapProvider (sched->GetFfMacSchedSapProvider ());
|
||||
mac->SetFfMacCschedSapProvider (sched->GetFfMacCschedSapProvider ());
|
||||
|
||||
@@ -453,7 +455,14 @@ LteHelper::InstallSingleEnbDevice (Ptr<Node> n)
|
||||
dev->SetAttribute ("FfMacScheduler", PointerValue (sched));
|
||||
dev->SetAttribute ("LteEnbRrc", PointerValue (rrc));
|
||||
dev->SetAttribute ("LteHandoverAlgorithm", PointerValue (handoverAlgorithm));
|
||||
dev->SetAttribute ("LteAnr", PointerValue (anr));
|
||||
|
||||
if (m_isAnrEnabled)
|
||||
{
|
||||
Ptr<LteAnr> anr = CreateObject<LteAnr> (cellId);
|
||||
rrc->SetLteAnrSapProvider (anr->GetLteAnrSapProvider ());
|
||||
anr->SetLteAnrSapUser (rrc->GetLteAnrSapUser ());
|
||||
dev->SetAttribute ("LteAnr", PointerValue (anr));
|
||||
}
|
||||
|
||||
phy->SetDevice (dev);
|
||||
dlPhy->SetDevice (dev);
|
||||
|
||||
@@ -675,6 +675,7 @@ private:
|
||||
uint16_t m_cellIdCounter;
|
||||
|
||||
bool m_useIdealRrc;
|
||||
bool m_isAnrEnabled;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -121,6 +121,7 @@ TypeId LteEnbNetDevice::GetTypeId (void)
|
||||
}
|
||||
|
||||
LteEnbNetDevice::LteEnbNetDevice ()
|
||||
: m_anr (0)
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
}
|
||||
@@ -147,6 +148,12 @@ LteEnbNetDevice::DoDispose ()
|
||||
m_handoverAlgorithm->Dispose ();
|
||||
m_handoverAlgorithm = 0;
|
||||
|
||||
if (m_anr != 0)
|
||||
{
|
||||
m_anr->Dispose ();
|
||||
m_anr = 0;
|
||||
}
|
||||
|
||||
m_phy->Dispose ();
|
||||
m_phy = 0;
|
||||
|
||||
@@ -269,7 +276,11 @@ LteEnbNetDevice::DoInitialize (void)
|
||||
m_mac->Initialize ();
|
||||
m_rrc->Initialize ();
|
||||
m_handoverAlgorithm->Initialize ();
|
||||
m_anr->Initialize ();
|
||||
|
||||
if (m_anr != 0)
|
||||
{
|
||||
m_anr->Initialize ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2092,7 +2092,11 @@ void
|
||||
LteEnbRrc::AddX2Neighbour (uint16_t cellId)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << cellId);
|
||||
m_anrSapProvider->AddNeighbourRelation (cellId);
|
||||
|
||||
if (m_anrSapProvider != 0)
|
||||
{
|
||||
m_anrSapProvider->AddNeighbourRelation (cellId);
|
||||
}
|
||||
}
|
||||
|
||||
LteRrcSap::SystemInformationBlockType1
|
||||
|
||||
Reference in New Issue
Block a user