X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_tmr.c;fp=src%2F5gnrsch%2Fsch_tmr.c;h=1a7fb3f984d27c3f4b6774afb5e537b89731b387;hb=b3d5c17f74361fcdcb9b9febff450292197e3a57;hp=fa716742edfcf49c9f95ac627eec47239034e00c;hpb=bbec4b5e924e6f9e76438412d7704bbd61f23b3a;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_tmr.c b/src/5gnrsch/sch_tmr.c index fa716742e..1a7fb3f98 100644 --- a/src/5gnrsch/sch_tmr.c +++ b/src/5gnrsch/sch_tmr.c @@ -37,32 +37,20 @@ bool schChkTmr(PTR cb, int16_t tmrEvnt) { switch (tmrEvnt) { - case EVENT_DL_TOTAL_PRB_USAGE_TMR: - { - if(((TotalPrbUsage *)cb)->periodTimer.tmrEvnt == EVENT_DL_TOTAL_PRB_USAGE_TMR) + case EVENT_STATISTICS_TMR: { - DU_LOG("\nDEBUG --> SCH : schChkTmr: Timer Evnt [%d] already running", tmrEvnt); - return TRUE; + if(((SchStatsGrp *)cb)->periodTimer.tmrEvnt == EVENT_STATISTICS_TMR) + { + DU_LOG("\nDEBUG --> SCH : schChkTmr: Timer Evnt [%d] already running", tmrEvnt); + return TRUE; + } + break; } - break; - } - - case EVENT_UL_TOTAL_PRB_USAGE_TMR: - { - if(((TotalPrbUsage *)cb)->periodTimer.tmrEvnt == EVENT_UL_TOTAL_PRB_USAGE_TMR) + default: { - DU_LOG("\nDEBUG --> SCH : schChkTmr: Timer Evnt [%d] already running", tmrEvnt); - return TRUE; + DU_LOG("\nERROR --> SCH : schChkTmr: Invalid tmr Evnt [%d]", tmrEvnt); } - break; - } - - default: - { - DU_LOG("\nERROR --> SCH : schChkTmr: Invalid tmr Evnt [%d]", tmrEvnt); - } } - return FALSE; } @@ -74,10 +62,9 @@ bool schChkTmr(PTR cb, int16_t tmrEvnt) * * @return Void */ -void schStartTmr(SchCb *gCb, PTR cb, int16_t tmrEvnt, uint8_t timerValue) +void schStartTmr(SchCb *gCb, PTR cb, int16_t tmrEvnt, uint16_t timerValue) { - TotalPrbUsage *dlTotalPrbUsage; - TotalPrbUsage *ulTotalPrbUsage; + SchStatsGrp *statsGrp = NULLP; CmTmrArg arg; arg.wait = 0; @@ -89,25 +76,16 @@ void schStartTmr(SchCb *gCb, PTR cb, int16_t tmrEvnt, uint8_t timerValue) switch (tmrEvnt) { - case EVENT_DL_TOTAL_PRB_USAGE_TMR: + case EVENT_STATISTICS_TMR: { - dlTotalPrbUsage = ((TotalPrbUsage *)cb); + statsGrp = ((SchStatsGrp *)cb); TMR_CALCUATE_WAIT(arg.wait, timerValue, gCb->schTimersInfo.tmrRes); - arg.timers = &dlTotalPrbUsage->periodTimer; - arg.max = MAX_TOTAL_PRB_USAGE_TMR; + arg.timers = &statsGrp->periodTimer; + arg.max = MAX_NUM_TMR_PER_STATS_GRP; break; } - case EVENT_UL_TOTAL_PRB_USAGE_TMR: - { - ulTotalPrbUsage = ((TotalPrbUsage *)cb); - TMR_CALCUATE_WAIT(arg.wait, timerValue, gCb->schTimersInfo.tmrRes); - - arg.timers = &ulTotalPrbUsage->periodTimer; - arg.max = MAX_TOTAL_PRB_USAGE_TMR; - break; - } default: { DU_LOG("\nERROR --> SCH : schStartTmr: Invalid tmr Evnt [%d]", tmrEvnt); @@ -148,16 +126,10 @@ void schStopTmr(SchCb *gCb, PTR cb, uint8_t tmrType) switch (tmrType) { - case EVENT_DL_TOTAL_PRB_USAGE_TMR: - { - arg.timers = &((TotalPrbUsage *)cb)->periodTimer; - arg.max = MAX_TOTAL_PRB_USAGE_TMR; - break; - } - case EVENT_UL_TOTAL_PRB_USAGE_TMR: + case EVENT_STATISTICS_TMR: { - arg.timers = &((TotalPrbUsage *)cb)->periodTimer; - arg.max = MAX_TOTAL_PRB_USAGE_TMR; + arg.timers = &((SchStatsGrp *)cb)->periodTimer; + arg.max = MAX_NUM_TMR_PER_STATS_GRP; break; } @@ -183,56 +155,28 @@ void schStopTmr(SchCb *gCb, PTR cb, uint8_t tmrType) } /** - * @brief Handler to process Timer expiry of DL Total PRB Usage calculation + * @brief Handler for Statistics group timer expiry * - * @param[in] cb Control block depending on the type of the timer event. - * @param[in] tmrEvnt Timer event to be started + * @details * - * @return Bool indicating whether the timer is running or not - * -# ROK - * -# RFAILED -*/ -uint8_t SchProcDlTotalPrbUsageTmrExp(TotalPrbUsage *dlTotalPrbUsage) -{ - double percentageOfTotalPrbUsed = 0; - - if(dlTotalPrbUsage->totalPrbAvailForTx) - percentageOfTotalPrbUsed = ((100.0 * dlTotalPrbUsage->numPrbUsedForTx) / dlTotalPrbUsage->totalPrbAvailForTx); - SchSendStatsIndToMac(dlTotalPrbUsage->schInst, SCH_DL_TOTAL_PRB_USAGE, percentageOfTotalPrbUsed); - - /* Restart Timer */ - dlTotalPrbUsage->numPrbUsedForTx = 0; - dlTotalPrbUsage->totalPrbAvailForTx = 0; - schStartTmr(&schCb[dlTotalPrbUsage->schInst], (PTR)(dlTotalPrbUsage), EVENT_DL_TOTAL_PRB_USAGE_TMR, \ - dlTotalPrbUsage->periodicity); - - return ROK; -} - -/** - * @brief Handler to check if the timer is running + * Function : SchProcStatisticsGrpTmrExp * - * @param[in] cb Control block depending on the type of the timer event. - * @param[in] tmrEvnt Timer event to be started + * This function calculates and sends statistics of + * the stats-group for which timer expired. + * Once Statistics Indication is sent, timer for this + * group is restarted. * - * @return Bool indicating whether the timer is running or not + * @param[in] Statistics group control block + * @return uint8_t * -# ROK - * -# RFAILED -*/ -uint8_t SchProcUlTotalPrbUsageTmrExp(TotalPrbUsage *ulTotalPrbUsage) + **/ +uint8_t SchProcStatisticsGrpTmrExp(SchStatsGrp *cb) { - double percentageOfTotalPrbUsed = 0; - - if(ulTotalPrbUsage->totalPrbAvailForTx) - percentageOfTotalPrbUsed = ((100.0 * ulTotalPrbUsage->numPrbUsedForTx) / ulTotalPrbUsage->totalPrbAvailForTx); - SchSendStatsIndToMac(ulTotalPrbUsage->schInst, SCH_UL_TOTAL_PRB_USAGE, percentageOfTotalPrbUsed); - - /* Restart Timer */ - ulTotalPrbUsage->numPrbUsedForTx = 0; - ulTotalPrbUsage->totalPrbAvailForTx = 0; - schStartTmr(&schCb[ulTotalPrbUsage->schInst], (PTR)(ulTotalPrbUsage), EVENT_UL_TOTAL_PRB_USAGE_TMR, \ - ulTotalPrbUsage->periodicity); - + if(schCalcAndSendGrpStats(cb) != ROK) + { + DU_LOG("\nERROR --> SCH : SchProcStatisticsGrpTmrExp: Fails to send group statistics"); + } + schStartTmr(&schCb[cb->schInst], (PTR)(cb), EVENT_STATISTICS_TMR, cb->periodicity); return ROK; } @@ -260,16 +204,16 @@ uint8_t schTmrExpiry(PTR cb, uint8_t tmrEvnt) switch (tmrEvnt) { - case EVENT_DL_TOTAL_PRB_USAGE_TMR: - { - SchProcDlTotalPrbUsageTmrExp((TotalPrbUsage*)cb); - break; - } - case EVENT_UL_TOTAL_PRB_USAGE_TMR: + case EVENT_STATISTICS_TMR: { - SchProcUlTotalPrbUsageTmrExp((TotalPrbUsage*)cb); +#ifdef DEBUG_PRINT + DU_LOG("\nDEBUG --> SCH : Statistics Timer Expired for Subscription Id [%ld] GroupId [%d]", \ + ((SchStatsGrp*)cb)->subscriptionId, ((SchStatsGrp*)cb)->groupId); +#endif + SchProcStatisticsGrpTmrExp((SchStatsGrp*)cb); break; } + default: { DU_LOG("\nERROR --> DU : duStartTmr: Invalid tmr Evnt [%d]", tmrEvnt);