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