src/lte/model/lte-enb-mac.cc
changeset 8495 2cd30a9776e0
parent 8462 cf6a48994db5
child 8598 9e2444c2da44
child 8714 398bbcbb3f42
equal deleted inserted replaced
8489:e28b8dc6a107 8495:2cd30a9776e0
   380   m_subframeNo = subframeNo;
   380   m_subframeNo = subframeNo;
   381 
   381 
   382 
   382 
   383   // --- DOWNLINK ---
   383   // --- DOWNLINK ---
   384   // Send Dl-CQI info to the scheduler
   384   // Send Dl-CQI info to the scheduler
   385   FfMacSchedSapProvider::SchedDlCqiInfoReqParameters dlcqiInfoReq;
   385   if (m_dlCqiReceived.size () > 0)
   386   dlcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   386     {
   387 
   387       FfMacSchedSapProvider::SchedDlCqiInfoReqParameters dlcqiInfoReq;
   388   int cqiNum = m_dlCqiReceived.size ();
   388       dlcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   389   if (cqiNum > MAX_CQI_LIST)
   389 
   390     {
   390       int cqiNum = m_dlCqiReceived.size ();
   391       cqiNum = MAX_CQI_LIST;
   391       if (cqiNum > MAX_CQI_LIST)
   392     }
   392         {
   393   dlcqiInfoReq.m_cqiList.insert (dlcqiInfoReq.m_cqiList.begin (), m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
   393           cqiNum = MAX_CQI_LIST;
   394   m_dlCqiReceived.erase (m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
   394         }
   395   m_schedSapProvider->SchedDlCqiInfoReq (dlcqiInfoReq);
   395       dlcqiInfoReq.m_cqiList.insert (dlcqiInfoReq.m_cqiList.begin (), m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
       
   396       m_dlCqiReceived.erase (m_dlCqiReceived.begin (), m_dlCqiReceived.end ());
       
   397       m_schedSapProvider->SchedDlCqiInfoReq (dlcqiInfoReq);
       
   398     }
   396 
   399 
   397 
   400 
   398   // Get downlink transmission opportunities
   401   // Get downlink transmission opportunities
   399   FfMacSchedSapProvider::SchedDlTriggerReqParameters params;  // to be filled
   402   FfMacSchedSapProvider::SchedDlTriggerReqParameters params;  // to be filled
   400   params.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   403   params.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   401   m_schedSapProvider->SchedDlTriggerReq (params);
   404   m_schedSapProvider->SchedDlTriggerReq (params);
   402 
   405 
   403 
   406 
   404   // --- UPLINK ---
   407   // --- UPLINK ---
   405   // Send UL-CQI info to the scheduler
   408   // Send UL-CQI info to the scheduler
   406   FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqiInfoReq;
   409   if (m_ulCqiReceived.size () > 0)
   407   ulcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   410     {
   408   cqiNum = m_ulCqiReceived.size ();
   411       FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqiInfoReq;
   409   if (cqiNum >= 1)
   412       ulcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   410     {
   413       int cqiNum = m_ulCqiReceived.size ();
   411       ulcqiInfoReq.m_ulCqi = m_ulCqiReceived.at (cqiNum - 1);
   414       if (cqiNum >= 1)
   412       if (cqiNum > 1)
       
   413         {
   415         {
   414           // empty old ul cqi
   416           ulcqiInfoReq.m_ulCqi = m_ulCqiReceived.at (cqiNum - 1);
   415           while (m_ulCqiReceived.size () > 0)
   417           if (cqiNum > 1)
   416             {
   418             {
   417               m_ulCqiReceived.pop_back ();
   419               // empty old ul cqi
       
   420               while (m_ulCqiReceived.size () > 0)
       
   421                 {
       
   422                   m_ulCqiReceived.pop_back ();
       
   423                 }
   418             }
   424             }
       
   425           m_schedSapProvider->SchedUlCqiInfoReq (ulcqiInfoReq);
   419         }
   426         }
   420       m_schedSapProvider->SchedUlCqiInfoReq (ulcqiInfoReq);
   427     }
   421     }
   428   
   422 
       
   423   // Send BSR reports to the scheduler
   429   // Send BSR reports to the scheduler
   424   FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters ulMacReq;
   430   if (m_ulCeReceived.size () > 0)
   425   ulMacReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   431     {
   426   ulMacReq.m_macCeList.insert (ulMacReq.m_macCeList.begin (), m_ulCeReceived.begin (), m_ulCeReceived.end ());
   432       FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters ulMacReq;
   427   m_ulCeReceived.erase (m_ulCeReceived.begin (), m_ulCeReceived.end ());
   433       ulMacReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   428   m_schedSapProvider->SchedUlMacCtrlInfoReq (ulMacReq);
   434       ulMacReq.m_macCeList.insert (ulMacReq.m_macCeList.begin (), m_ulCeReceived.begin (), m_ulCeReceived.end ());
       
   435       m_ulCeReceived.erase (m_ulCeReceived.begin (), m_ulCeReceived.end ());
       
   436       m_schedSapProvider->SchedUlMacCtrlInfoReq (ulMacReq);
       
   437     }
   429 
   438 
   430 
   439 
   431   // Get uplink transmission opportunities
   440   // Get uplink transmission opportunities
   432   FfMacSchedSapProvider::SchedUlTriggerReqParameters ulparams;
   441   FfMacSchedSapProvider::SchedUlTriggerReqParameters ulparams;
   433   ulparams.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
   442   ulparams.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);