--- 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<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 @@
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<LteAnr> anr = CreateObject<LteAnr> (cellId);
+ rrc->SetLteAnrSapProvider (anr->GetLteAnrSapProvider ());
+ anr->SetLteAnrSapUser (rrc->GetLteAnrSapUser ());
+ dev->SetAttribute ("LteAnr", PointerValue (anr));
+ }
phy->SetDevice (dev);
dlPhy->SetDevice (dev);
--- 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;
};
--- 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 ();
+ }
}
--- 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