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