/** @file rg_sch_mga.c
@brief This module handles schedulers' measurement gap and ack-nack repetiton functionality */
-static const char* RLOG_MODULE_NAME="MAC";
-static int RLOG_MODULE_ID=4096;
-static int RLOG_FILE_ID=169;
/* header include files -- defines (.h) */
#include "common_def.h"
#include "rg_sch_err.h"
#include "rg_sch.h"
#include "rg_sch_cmn.h"
-#include "rl_interface.h"
-#include "rl_common.h"
/* header/extern include files (.x) */
#include "tfu.x" /* RGU types */
#include "rg_sch.x" /* typedefs for Scheduler */
/* local defines */
-PRIVATE S16 rgSCHMeasGapANRepUtlAddUe ARGS((
+static S16 rgSCHMeasGapANRepUtlAddUe ARGS((
RgSchCellCb *cell,
RgSchUeCb *ue,
RgrUeMeasGapCfg *cfg));
-PRIVATE S16 rgSCHMeasGapANRepUtlRmvUe ARGS((
+static S16 rgSCHMeasGapANRepUtlRmvUe ARGS((
RgSchCellCb *cell,
RgSchUeCb *ue));
-PRIVATE S16 rgSchAckNackRepUtlRmvUe ARGS((
+static S16 rgSchAckNackRepUtlRmvUe ARGS((
RgSchCellCb *cell,
RgSchUeCb *ue));
-PRIVATE Void rgSchAckNackRepUtlHdlTti ARGS((
+static Void rgSchAckNackRepUtlHdlTti ARGS((
RgSchCellCb *cell,
CmLListCp *ackNackRepQ));
-PRIVATE Void rgSCHMeasGapANRepUtlHdlTti ARGS((
+static Void rgSCHMeasGapANRepUtlHdlTti ARGS((
RgSchCellCb *cell,
CmLListCp *measGapQ));
#ifdef LTE_TDD
-PRIVATE uint8_t rgSCHAckNakRepFindUlDuration ARGS((
+static uint8_t rgSCHAckNakRepFindUlDuration ARGS((
RgSchCellCb *cell,
RgSchDlSf *dlSf,
CmLteTimingInfo repTime,
uint8_t repCnt));
-PRIVATE Void rgSCHAckNakRepGetUlOffsetFrmDl ARGS((
+static Void rgSCHAckNakRepGetUlOffsetFrmDl ARGS((
RgSchDlSf *dlSf,
CmLteTimingInfo crntDlTime,
uint8_t *noSubfrms));
* -# ROK
**/
-#ifdef ANSI
-S16 rgSCHMeasGapANRepUeCfg
-(
-RgSchCellCb *cell,
-RgSchUeCb *ue,
-RgrUeCfg *ueCfg
-)
-#else
-S16 rgSCHMeasGapANRepUeCfg(cell, ue, ueCfg)
-RgSchCellCb *cell;
-RgSchUeCb *ue;
-RgrUeCfg *ueCfg;
-#endif
+S16 rgSCHMeasGapANRepUeCfg(RgSchCellCb *cell,RgSchUeCb *ue,RgrUeCfg *ueCfg)
{
ue->measGapCb.isMesGapEnabled = ueCfg->ueMesGapCfg.isMesGapEnabled;
* -# RFAILED
**/
-#ifdef ANSI
-S16 rgSCHMeasGapANRepUeRecfg
-(
-RgSchCellCb *cell,
-RgSchUeCb *ue,
-RgrUeRecfg *ueRecfg
-)
-#else
-S16 rgSCHMeasGapANRepUeRecfg(cell, ue, ueRecfg)
-RgSchCellCb *cell;
-RgSchUeCb *ue;
-RgrUeRecfg *ueRecfg;
-#endif
+S16 rgSCHMeasGapANRepUeRecfg(RgSchCellCb *cell,RgSchUeCb *ue,RgrUeRecfg *ueRecfg)
{
RgrUeMeasGapCfg *reCfg;
RgSchUeMeasGapCb *ueMeasCb;
* @param
* @return
*/
-#ifdef ANSI
-PRIVATE S16 rgSCHMeasGapANRepUtlAddUe
-(
-RgSchCellCb *cell,
-RgSchUeCb *ue,
-RgrUeMeasGapCfg *cfg
-)
-#else
-PRIVATE S16 rgSCHMeasGapANRepUtlAddUe (cell, ue, cfg)
-RgSchCellCb *cell;
-RgSchUeCb *ue;
-RgrUeMeasGapCfg *cfg;
-#endif
+static S16 rgSCHMeasGapANRepUtlAddUe(RgSchCellCb *cell,RgSchUeCb *ue,RgrUeMeasGapCfg *cfg)
{
switch (cfg->gapPrd)
&(ue->measGapCb.measQLnk));
break;
default:
- RLOG_ARG1(L_ERROR,DBG_CELLID,cell->cellId,
- "rgSCHMeasGapANRepUeRecfg() Incorrect GAP Period"
+ DU_LOG("\nERROR --> SCH : rgSCHMeasGapANRepUeRecfg() Incorrect GAP Period"
"CRNTI:%d",ue->ueId);
return RFAILED;
}
* @param
* @return
*/
-#ifdef ANSI
-PRIVATE S16 rgSCHMeasGapANRepUtlRmvUe
-(
-RgSchCellCb *cell,
-RgSchUeCb *ue
-)
-#else
-PRIVATE S16 rgSCHMeasGapANRepUtlRmvUe (cell, ue)
-RgSchCellCb *cell;
-RgSchUeCb *ue;
-#endif
+static S16 rgSCHMeasGapANRepUtlRmvUe(RgSchCellCb *cell,RgSchUeCb *ue)
{
switch (ue->measGapCb.gapPrd)
* -# ROK
**/
-#ifdef ANSI
-Void rgSCHMeasGapANRepUeDel
-(
-RgSchCellCb *cell,
-RgSchUeCb *ue,
-Bool isUeDel
-)
-#else
-Void rgSCHMeasGapANRepUeDel(cell, ue, isUeDel)
-RgSchCellCb *cell;
-RgSchUeCb *ue;
-Bool isUeDel;
-#endif
+Void rgSCHMeasGapANRepUeDel(RgSchCellCb *cell,RgSchUeCb *ue,Bool isUeDel)
{
if (ue->measGapCb.isMesGapEnabled)
* @param
* @return
*/
-#ifdef ANSI
-PRIVATE S16 rgSchAckNackRepUtlRmvUe
-(
- RgSchCellCb *cell,
- RgSchUeCb *ue
- )
-#else
-PRIVATE S16 rgSchAckNackRepUtlRmvUe (cell, ue)
- RgSchCellCb *cell;
- RgSchUeCb *ue;
-#endif
+static S16 rgSchAckNackRepUtlRmvUe(RgSchCellCb *cell,RgSchUeCb *ue)
{
- uint8_t hqIdx;
- uint8_t repIdx;
+ uint8_t hqIdx;
+ uint8_t repIdx;
RgSchDlHqProcCb *hqP;
- uint8_t tbCnt;
+ uint8_t tbCnt;
- RgSchDlHqEnt *hqEnt = RG_SCH_CMN_GET_UE_HQE(ue, cell);
+ RgSchDlHqEnt *hqEnt = RG_SCH_CMN_GET_UE_HQE(ue, cell);
for (hqIdx = 0; hqIdx < hqEnt->numHqPrcs; hqIdx++)
{
* -# ROK
**/
-#ifdef ANSI
-S16 rgSCHMeasGapANRepTtiHndl
-(
-RgSchCellCb *cell
-)
-#else
-S16 rgSCHMeasGapANRepTtiHndl(cell)
-RgSchCellCb *cell;
-#endif
+S16 rgSCHMeasGapANRepTtiHndl(RgSchCellCb *cell)
{
- uint8_t offset;
+ uint8_t offset;
CmLListCp *queue;
RgSchDlSf *dlSf;
CmLteTimingInfo repTime;
* @param CmLListCp *ackNakRepQ
* @return Void
*/
-#ifdef ANSI
-PRIVATE Void rgSchAckNackRepUtlHdlTti
-(
-RgSchCellCb *cell,
-CmLListCp *ackNackRepQ
-)
-#else
-PRIVATE Void rgSchAckNackRepUtlHdlTti (cell, ackNackRepQ)
-RgSchCellCb *cell;
-CmLListCp *ackNackRepQ;
-#endif
+static Void rgSchAckNackRepUtlHdlTti(RgSchCellCb *cell,CmLListCp *ackNackRepQ)
{
CmLList *node;
RgSchUeCb *ue;
* @param
* @return
*/
-#ifdef ANSI
-PRIVATE Void rgSCHMeasGapANRepUtlHdlTti
-(
-RgSchCellCb *cell,
-CmLListCp *measGapQ
-)
-#else
-PRIVATE Void rgSCHMeasGapANRepUtlHdlTti (cell, measGapQ)
-RgSchCellCb *cell;
-CmLListCp *measGapQ;
-#endif
+static Void rgSCHMeasGapANRepUtlHdlTti(RgSchCellCb *cell,CmLListCp *measGapQ)
{
CmLList *node;
RgSchUeCb *ue;
* @return S16
* -# ROK
**/
-#ifdef ANSI
-S16 rgSCHMeasGapANRepGetDlInactvUe
-(
-RgSchCellCb *cell,
-CmLListCp *dlInactvUeLst
-)
-#else
-S16 rgSCHMeasGapANRepGetDlInactvUe(cell, dlInactvUeLst)
-RgSchCellCb *cell;
-CmLListCp *dlInactvUeLst;
-#endif
+S16 rgSCHMeasGapANRepGetDlInactvUe(RgSchCellCb *cell,CmLListCp *dlInactvUeLst)
{
- uint8_t offset;
+ uint8_t offset;
CmLList *node;
CmLList *hqNode;
CmLListCp *queue;
RgSchUeCb *ue;
RgSchDlSf *dlSf;
CmLteTimingInfo ackNakTime;
- uint16_t schedTime;
- uint8_t harqFdbkOffset;
+ uint16_t schedTime;
+ uint8_t harqFdbkOffset;
#ifdef LTE_TDD
- uint8_t repCntr;
+ uint8_t repCntr;
#endif
RgSchDlHqProcCb *hqP;
RgSchDlHqTbCb *tbCb;
- uint32_t i;
+ uint32_t i;
schedTime = cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.slot + RG_DL_DELTA;
* -# ROK
**/
-#ifdef ANSI
-S16 rgSCHMeasGapANRepGetUlInactvUe
-(
-RgSchCellCb *cell,
-CmLListCp *ulInactvUeLst
-)
-#else
-S16 rgSCHMeasGapANRepGetUlInactvUe(cell, ulInactvUeLst)
-RgSchCellCb *cell;
-CmLListCp *ulInactvUeLst;
-#endif
+S16 rgSCHMeasGapANRepGetUlInactvUe(RgSchCellCb *cell,CmLListCp *ulInactvUeLst)
{
- uint8_t offset;
- CmLList *node;
- CmLList *hqNode;
- CmLListCp *queue;
- RgSchUeCb *ue;
- CmLteTimingInfo ackNakTime;
- RgSchDlSf *dlSf;
- uint16_t schedTime;
- uint8_t pdcchToPuschGap;
- uint8_t idx=0;
+ uint8_t offset;
+ CmLList *node;
+ CmLList *hqNode;
+ CmLListCp *queue;
+ RgSchUeCb *ue;
+ CmLteTimingInfo ackNakTime;
+ RgSchDlSf *dlSf;
+ uint16_t schedTime;
+ uint8_t pdcchToPuschGap;
+ uint8_t idx=0;
#ifdef LTE_TDD
- uint8_t repCntr;
+ uint8_t repCntr;
#endif
RgSchDlHqProcCb *hqP;
RgSchDlHqTbCb *tbCb;
- uint32_t i;
+ uint32_t i;
/*ccpu00139481- Meas Gap should be monitored in UL with TFU_ULCNTRL_DLDELTA*/
schedTime = cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.slot + \
* ahead - UE cant read PDCCH format0 if it is in measurement gap. */
rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_UL_MEASGAP,
(RG_SCH_MEAS_GAP_LEN + pdcchToPuschGap - idx));
- //printf("Starting Meas Gap 40 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn, ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx);
+ //DU_LOG("\nINFO --> SCH : Starting Meas Gap 40 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn,\
+ ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx);
}
node = node->next;
}
/* Start timer */
rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_UL_MEASGAP,
(RG_SCH_MEAS_GAP_LEN + pdcchToPuschGap - idx));
- //printf("Starting Meas Gap 80 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn, ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx);
+ //DU_LOG("\nINFO --> SCH : Starting Meas Gap 80 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn,\
+ ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx);
}
node = node->next;
}
* -# ROK
**/
-#ifdef ANSI
-Void rgSCHMeasGapANRepDlInactvTmrExpry
-(
-RgSchUeCb *ue,
-uint8_t tmrEvnt
-)
-#else
-Void rgSCHMeasGapANRepDlInactvTmrExpry(ue, tmrEvnt)
-RgSchUeCb *ue;
-uint8_t tmrEvnt;
-#endif
+Void rgSCHMeasGapANRepDlInactvTmrExpry(RgSchUeCb *ue,uint8_t tmrEvnt)
{
RgSchCellCb *cell = ue->cell;
* -# ROK
**/
-#ifdef ANSI
-Void rgSCHMeasGapANRepUlInactvTmrExpry
-(
-RgSchUeCb *ue,
-uint8_t tmrEvnt
-)
-#else
-Void rgSCHMeasGapANRepUlInactvTmrExpry(ue, tmrEvnt)
-RgSchUeCb *ue;
-uint8_t tmrEvnt;
-#endif
+Void rgSCHMeasGapANRepUlInactvTmrExpry(RgSchUeCb *ue,uint8_t tmrEvnt)
{
RgSchCellCb *cell = ue->cell;
* -# ROK
**/
-#ifdef ANSI
-Void rgSCHMeasGapANRepTmrExpry
-(
-RgSchUeCb *ue
-)
-#else
-Void rgSCHMeasGapANRepTmrExpry(ue)
-RgSchUeCb *ue;
-#endif
+Void rgSCHMeasGapANRepTmrExpry(RgSchUeCb *ue)
{
ue->measGapCb.isMeasuring = FALSE;
* -# ROK
**/
-#ifdef ANSI
-Void rgSCHAckNakRepTmrExpry
-(
-RgSchUeCb *ue
-)
-#else
-Void rgSCHAckNakRepTmrExpry(ue)
-RgSchUeCb *ue;
-#endif
+Void rgSCHAckNakRepTmrExpry(RgSchUeCb *ue)
{
ue->ackNakRepCb.isAckNakRep = FALSE;
* -# ROK
**/
-#ifdef ANSI
-Void rgSCHAckNakRepAddToQ
-(
-RgSchCellCb *cell,
-RgSchDlSf *crntDlSf
-)
-#else
-Void rgSCHAckNakRepAddToQ(cell, crntDlSf)
-RgSchCellCb *cell;
-RgSchDlSf *crntDlSf;
-#endif
+Void rgSCHAckNakRepAddToQ(RgSchCellCb *cell,RgSchDlSf *crntDlSf)
{
RgSchUeCb *ue;
CmLList *node;
*
**/
-#ifdef ANSI
-PRIVATE uint8_t rgSCHAckNakRepFindUlDuration
-(
-RgSchCellCb *cell,
-RgSchDlSf *dlSf,
-CmLteTimingInfo repTime,
-uint8_t repCnt
-)
-#else
-PRIVATE uint8_t rgSCHAckNakRepFindUlDuration(cell, dlSf, repTime, repCnt)
-RgSchCellCb *cell;
-RgSchDlSf *dlSf;
-CmLteTimingInfo repTime;
-uint8_t repCnt;
-#endif
+static uint8_t rgSCHAckNakRepFindUlDuration(RgSchCellCb *cell,RgSchDlSf *dlSf,CmLteTimingInfo repTime,uint8_t repCnt)
{
CmLteTimingInfo ulfrm;
uint8_t noSubfrms = 0;
uint16_t ulDlCfgIdx = cell->ulDlCfgIdx;
- S16 rem = 0;
+ S16 rem = 0;
S16 idx;
- S8 diff;
+ S8 diff;
rgSCHAckNakRepGetUlOffsetFrmDl(dlSf, repTime, &noSubfrms);
RG_SCH_ADD_TO_CRNT_TIME(repTime, ulfrm, noSubfrms);
*
**/
-#ifdef ANSI
-PRIVATE Void rgSCHAckNakRepGetUlOffsetFrmDl
-(
-RgSchDlSf *dlSf,
-CmLteTimingInfo crntDlTime,
-uint8_t *noSubfrms
-)
-#else
-PRIVATE Void rgSCHAckNakRepGetUlOffsetFrmDl(dlSf, crntDlTime, noSubfrms)
-RgSchDlSf *dlSf;
-CmLteTimingInfo crntDlTime;
-uint8_t *noSubfrms;
-#endif
- {
+static Void rgSCHAckNakRepGetUlOffsetFrmDl(RgSchDlSf *dlSf,CmLteTimingInfo crntDlTime,uint8_t *noSubfrms )
+{
if(dlSf->dlFdbkInfo.sfnOffset != 0)
{