Update LteEnbMac for sending report only when they are received, avioding empty parameters
authorMarco Miozzo <marco.miozzo@cttc.es>
Thu, 22 Dec 2011 17:55:42 +0100
changeset 8495 2cd30a9776e0
parent 8489 e28b8dc6a107
child 8496 8d1759a15c2e
Update LteEnbMac for sending report only when they are received, avioding empty parameters
src/lte/model/lte-enb-mac.cc
--- a/src/lte/model/lte-enb-mac.cc	Wed Dec 21 19:32:18 2011 +0100
+++ b/src/lte/model/lte-enb-mac.cc	Thu Dec 22 17:55:42 2011 +0100
@@ -382,17 +382,20 @@
 
   // --- DOWNLINK ---
   // Send Dl-CQI info to the scheduler
-  FfMacSchedSapProvider::SchedDlCqiInfoReqParameters dlcqiInfoReq;
-  dlcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
-
-  int cqiNum = m_dlCqiReceived.size ();
-  if (cqiNum > MAX_CQI_LIST)
+  if (m_dlCqiReceived.size () > 0)
     {
-      cqiNum = MAX_CQI_LIST;
+      FfMacSchedSapProvider::SchedDlCqiInfoReqParameters dlcqiInfoReq;
+      dlcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+
+      int cqiNum = m_dlCqiReceived.size ();
+      if (cqiNum > MAX_CQI_LIST)
+        {
+          cqiNum = MAX_CQI_LIST;
+        }
+      dlcqiInfoReq.m_cqiList.insert (dlcqiInfoReq.m_cqiList.begin (), m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
+      m_dlCqiReceived.erase (m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
+      m_schedSapProvider->SchedDlCqiInfoReq (dlcqiInfoReq);
     }
-  dlcqiInfoReq.m_cqiList.insert (dlcqiInfoReq.m_cqiList.begin (), m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
-  m_dlCqiReceived.erase (m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
-  m_schedSapProvider->SchedDlCqiInfoReq (dlcqiInfoReq);
 
 
   // Get downlink transmission opportunities
@@ -403,29 +406,35 @@
 
   // --- UPLINK ---
   // Send UL-CQI info to the scheduler
-  FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqiInfoReq;
-  ulcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
-  cqiNum = m_ulCqiReceived.size ();
-  if (cqiNum >= 1)
+  if (m_ulCqiReceived.size () > 0)
     {
-      ulcqiInfoReq.m_ulCqi = m_ulCqiReceived.at (cqiNum - 1);
-      if (cqiNum > 1)
+      FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqiInfoReq;
+      ulcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+      int cqiNum = m_ulCqiReceived.size ();
+      if (cqiNum >= 1)
         {
-          // empty old ul cqi
-          while (m_ulCqiReceived.size () > 0)
+          ulcqiInfoReq.m_ulCqi = m_ulCqiReceived.at (cqiNum - 1);
+          if (cqiNum > 1)
             {
-              m_ulCqiReceived.pop_back ();
+              // empty old ul cqi
+              while (m_ulCqiReceived.size () > 0)
+                {
+                  m_ulCqiReceived.pop_back ();
+                }
             }
+          m_schedSapProvider->SchedUlCqiInfoReq (ulcqiInfoReq);
         }
-      m_schedSapProvider->SchedUlCqiInfoReq (ulcqiInfoReq);
     }
-
+  
   // Send BSR reports to the scheduler
-  FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters ulMacReq;
-  ulMacReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
-  ulMacReq.m_macCeList.insert (ulMacReq.m_macCeList.begin (), m_ulCeReceived.begin (), m_ulCeReceived.end ());
-  m_ulCeReceived.erase (m_ulCeReceived.begin (), m_ulCeReceived.end ());
-  m_schedSapProvider->SchedUlMacCtrlInfoReq (ulMacReq);
+  if (m_ulCeReceived.size () > 0)
+    {
+      FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters ulMacReq;
+      ulMacReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+      ulMacReq.m_macCeList.insert (ulMacReq.m_macCeList.begin (), m_ulCeReceived.begin (), m_ulCeReceived.end ());
+      m_ulCeReceived.erase (m_ulCeReceived.begin (), m_ulCeReceived.end ());
+      m_schedSapProvider->SchedUlMacCtrlInfoReq (ulMacReq);
+    }
 
 
   // Get uplink transmission opportunities