Attribute to enable/disable ANR

This commit is contained in:
Budiarto Herman
2013-08-23 15:47:32 +03:00
parent 11f8a59286
commit e3bc429a38
4 changed files with 32 additions and 7 deletions

View File

@@ -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);

View File

@@ -675,6 +675,7 @@ private:
uint16_t m_cellIdCounter;
bool m_useIdealRrc;
bool m_isAnrEnabled;
};

View File

@@ -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 ();
}
}

View File

@@ -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