Update LteEnbMac for sending report only when they are received, avioding empty parameters
This commit is contained in:
@@ -382,17 +382,20 @@ LteEnbMac::DoSubframeIndication (uint32_t frameNo, uint32_t subframeNo)
|
||||
|
||||
// --- 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 @@ LteEnbMac::DoSubframeIndication (uint32_t frameNo, uint32_t subframeNo)
|
||||
|
||||
// --- 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
|
||||
|
||||
Reference in New Issue
Block a user