# HG changeset patch # User Budiarto Herman # Date 1377262052 -10800 # Node ID e9286f613bf96b575b4686f1e26009b8f1cd9626 # Parent 31ba13ced6b50b1e95e809b8d2698894686dd25c Attribute to enable/disable ANR diff -r 31ba13ced6b5 -r e9286f613bf9 src/lte/helper/lte-helper.cc --- a/src/lte/helper/lte-helper.cc Tue Aug 20 11:32:22 2013 +0300 +++ b/src/lte/helper/lte-helper.cc Fri Aug 23 15:47:32 2013 +0300 @@ -175,6 +175,11 @@ 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 @@ Ptr mac = CreateObject (); Ptr sched = m_schedulerFactory.Create (); Ptr handoverAlgorithm = m_handoverAlgorithmFactory.Create (); - Ptr anr = CreateObject (cellId); Ptr rrc = CreateObject (); + if (m_useIdealRrc) { Ptr rrcProtocol = CreateObject (); @@ -430,9 +435,6 @@ 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 @@ dev->SetAttribute ("FfMacScheduler", PointerValue (sched)); dev->SetAttribute ("LteEnbRrc", PointerValue (rrc)); dev->SetAttribute ("LteHandoverAlgorithm", PointerValue (handoverAlgorithm)); - dev->SetAttribute ("LteAnr", PointerValue (anr)); + + if (m_isAnrEnabled) + { + Ptr anr = CreateObject (cellId); + rrc->SetLteAnrSapProvider (anr->GetLteAnrSapProvider ()); + anr->SetLteAnrSapUser (rrc->GetLteAnrSapUser ()); + dev->SetAttribute ("LteAnr", PointerValue (anr)); + } phy->SetDevice (dev); dlPhy->SetDevice (dev); diff -r 31ba13ced6b5 -r e9286f613bf9 src/lte/helper/lte-helper.h --- a/src/lte/helper/lte-helper.h Tue Aug 20 11:32:22 2013 +0300 +++ b/src/lte/helper/lte-helper.h Fri Aug 23 15:47:32 2013 +0300 @@ -675,6 +675,7 @@ uint16_t m_cellIdCounter; bool m_useIdealRrc; + bool m_isAnrEnabled; }; diff -r 31ba13ced6b5 -r e9286f613bf9 src/lte/model/lte-enb-net-device.cc --- a/src/lte/model/lte-enb-net-device.cc Tue Aug 20 11:32:22 2013 +0300 +++ b/src/lte/model/lte-enb-net-device.cc Fri Aug 23 15:47:32 2013 +0300 @@ -121,6 +121,7 @@ } LteEnbNetDevice::LteEnbNetDevice () + : m_anr (0) { NS_LOG_FUNCTION (this); } @@ -147,6 +148,12 @@ 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 @@ m_mac->Initialize (); m_rrc->Initialize (); m_handoverAlgorithm->Initialize (); - m_anr->Initialize (); + + if (m_anr != 0) + { + m_anr->Initialize (); + } } diff -r 31ba13ced6b5 -r e9286f613bf9 src/lte/model/lte-enb-rrc.cc --- a/src/lte/model/lte-enb-rrc.cc Tue Aug 20 11:32:22 2013 +0300 +++ b/src/lte/model/lte-enb-rrc.cc Fri Aug 23 15:47:32 2013 +0300 @@ -2092,7 +2092,11 @@ LteEnbRrc::AddX2Neighbour (uint16_t cellId) { NS_LOG_FUNCTION (this << cellId); - m_anrSapProvider->AddNeighbourRelation (cellId); + + if (m_anrSapProvider != 0) + { + m_anrSapProvider->AddNeighbourRelation (cellId); + } } LteRrcSap::SystemInformationBlockType1