connection of SAPs moved from EnbNetDevice to LenaHelper
authorNicola Baldo <nicola@baldo.biz>
Wed, 06 Apr 2011 09:20:19 +0200
changeset 7944 f7e5e0540487
parent 7943 db21a8048ab9
child 7945 dbab335f9eea
connection of SAPs moved from EnbNetDevice to LenaHelper
src/lte/helper/lena-helper.cc
src/lte/model/lte-enb-net-device.cc
src/lte/model/lte-enb-net-device.h
src/lte/model/lte-enb-phy.cc
--- a/src/lte/helper/lena-helper.cc	Tue Apr 05 15:52:24 2011 +0200
+++ b/src/lte/helper/lena-helper.cc	Wed Apr 06 09:20:19 2011 +0200
@@ -158,9 +158,26 @@
   ulPhy->SetMobility (mm);
 
   m_uplinkChannel->AddRx (ulPhy);
+
   Ptr<LteEnbMac> mac = CreateObject<LteEnbMac> ();
   Ptr<FfMacScheduler> sched = m_scheduler.Create<FfMacScheduler> ();  
   Ptr<LteEnbRrc> rrc = CreateObject<LteEnbRrc> ();
+
+
+  // connect SAPs
+  rrc->SetLteEnbCmacSapProvider (mac->GetLteEnbCmacSapProvider ());
+  mac->SetLteEnbCmacSapUser (rrc->GetLteEnbCmacSapUser ());
+  rrc->SetLteMacSapProvider (mac->GetLteMacSapProvider ());
+
+  mac->SetFfMacSchedSapProvider (sched->GetFfMacSchedSapProvider ());
+  mac->SetFfMacCschedSapProvider (sched->GetFfMacCschedSapProvider ());
+
+  sched->SetFfMacSchedSapUser (mac->GetFfMacSchedSapUser ());
+  sched->SetFfMacCschedSapUser (mac->GetFfMacCschedSapUser ());
+
+  phy->SetLteEnbPhySapUser (mac->GetLteEnbPhySapUser ());
+  mac->SetLteEnbPhySapProvider (phy->GetLteEnbPhySapProvider ());
+
   Ptr<LteEnbNetDevice> dev = CreateObject<LteEnbNetDevice> (n, phy, mac, sched, rrc);
   phy->SetDevice (dev);
   dlPhy->SetDevice (dev);
--- a/src/lte/model/lte-enb-net-device.cc	Tue Apr 05 15:52:24 2011 +0200
+++ b/src/lte/model/lte-enb-net-device.cc	Wed Apr 06 09:20:19 2011 +0200
@@ -68,7 +68,6 @@
 {
   NS_LOG_FUNCTION (this);
   NS_FATAL_ERROR ("This constructor should not be called");
-  InitLteEnbNetDevice ();
 }
 
 LteEnbNetDevice::LteEnbNetDevice (Ptr<Node> node, Ptr<LteEnbPhy> phy, Ptr<LteEnbMac> mac, Ptr<FfMacScheduler> sched, Ptr<LteEnbRrc> rrc)
@@ -78,8 +77,10 @@
   m_mac = mac;
   m_scheduler = sched;
   m_rrc = rrc;
-  InitLteEnbNetDevice ();
   SetNode (node);
+  NS_ASSERT_MSG (m_cellIdCounter < 65535, "max num eNBs exceeded");
+  m_cellId = ++m_cellIdCounter;
+  UpdateConfig ();
 }
 
 LteEnbNetDevice::~LteEnbNetDevice (void)
@@ -109,42 +110,16 @@
 
 
 void
-LteEnbNetDevice::InitLteEnbNetDevice (void)
+LteEnbNetDevice::UpdateConfig (void)
 {
   NS_LOG_FUNCTION (this);
 
-  SetNode (0);
-  if (GetPhy () == 0)
-    {
-      NS_LOG_DEBUG (this << "PHY NULL");
-    }
-  else
-    {
-      NS_LOG_DEBUG (this << "PHY ! NULL");
-    }
-  
-  m_rrc->SetLteEnbCmacSapProvider (m_mac->GetLteEnbCmacSapProvider ());
-  m_mac->SetLteEnbCmacSapUser (m_rrc->GetLteEnbCmacSapUser ());
-  m_rrc->SetLteMacSapProvider (m_mac->GetLteMacSapProvider ());
-
-  m_mac->SetFfMacSchedSapProvider (m_scheduler->GetFfMacSchedSapProvider ());
-  m_mac->SetFfMacCschedSapProvider (m_scheduler->GetFfMacCschedSapProvider ());
-
-  m_scheduler->SetFfMacSchedSapUser (m_mac->GetFfMacSchedSapUser ());
-  m_scheduler->SetFfMacCschedSapUser (m_mac->GetFfMacCschedSapUser ());
-
-  GetPhy ()->GetObject<LteEnbPhy> ()->SetLteEnbPhySapUser (m_mac->GetLteEnbPhySapUser ());
-  m_mac->SetLteEnbPhySapProvider (GetPhy ()->GetObject<LteEnbPhy> ()->GetLteEnbPhySapProvider ());
-
   m_rrc->ConfigureCell (25, 25);
-  NS_ASSERT_MSG (m_cellIdCounter < 65535, "max num eNBs exceeded");
-  m_cellId = ++m_cellIdCounter;
 
   // WILD HACK -  should use the PHY SAP instead. Probably should handle this through the RRC
-  GetPhy ()->GetObject<LteEnbPhy> ()->DoSetBandwidth (25,25);
-  GetPhy ()->GetObject<LteEnbPhy> ()->DoSetCellId (m_cellId);
+  m_phy->DoSetBandwidth (25,25);
+  m_phy->DoSetCellId (m_cellId);
   
-  Simulator::ScheduleNow (&LteEnbPhy::StartFrame, GetPhy ()->GetObject<LteEnbPhy> ());
 }
 
 
--- a/src/lte/model/lte-enb-net-device.h	Tue Apr 05 15:52:24 2011 +0200
+++ b/src/lte/model/lte-enb-net-device.h	Wed Apr 06 09:20:19 2011 +0200
@@ -66,11 +66,6 @@
   virtual void DoDispose (void);
 
   /**
-   * \brief Initialize all parameters of this device
-   */
-  void InitLteEnbNetDevice (void);
-
-  /**
    * \return a pointer to the MAC 
    */
   Ptr<LteEnbMac> GetMac (void);
@@ -105,7 +100,7 @@
 
   void DoReceive (Ptr<Packet> p);
 
-  // Ptr<UeManager> m_ueManager;
+  void UpdateConfig (void);  
 
   Ptr<LteEnbMac> m_mac;
 
--- a/src/lte/model/lte-enb-phy.cc	Tue Apr 05 15:52:24 2011 +0200
+++ b/src/lte/model/lte-enb-phy.cc	Wed Apr 06 09:20:19 2011 +0200
@@ -102,6 +102,7 @@
     m_nrSubFrames (0)
 {
   m_enbPhySapProvider = new EnbMemberLteEnbPhySapProvider (this);
+  Simulator::ScheduleNow (&LteEnbPhy::StartFrame, this);
 }