X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_tmr.c;h=1a7fb3f984d27c3f4b6774afb5e537b89731b387;hb=2e3617064e27b8d7bb5ba74319f8c1c99491b8dd;hp=e31c5182a6ab8a023d5a1374b447e9d0122f0aa9;hpb=f73456bd55152c329601f8286ae67fe9875025bc;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_tmr.c b/src/5gnrsch/sch_tmr.c index e31c5182a..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,38 +62,30 @@ 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; - DU_LOG("\nINFO --> SCH : Starting Timer Event [%d] with Wait Time [%d] ms", \ +#ifdef DEBUG_PRINT + DU_LOG("\nDEBUG --> SCH : Starting Timer Event [%d] with Wait Time [%d] ms", \ tmrEvnt, timerValue); +#endif 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); @@ -140,20 +120,16 @@ void schStopTmr(SchCb *gCb, PTR cb, uint8_t tmrType) arg.timers = NULLP; - DU_LOG("\nINFO --> SCH : Stopping Timer Event [%d]", tmrType); +#ifdef DEBUG_PRINT + DU_LOG("\nDEBUG --> SCH : Stopping Timer Event [%d]", tmrType); +#endif 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; } @@ -179,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) -{ - uint8_t percentageOfTotalPrbUsed = 0; - - if(dlTotalPrbUsage->totalPrbAvailForTx) - percentageOfTotalPrbUsed = ((dlTotalPrbUsage->numPrbUsedForTx * 100) / 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) { - uint8_t percentageOfTotalPrbUsed = 0; - - if(ulTotalPrbUsage->totalPrbAvailForTx) - percentageOfTotalPrbUsed = ((ulTotalPrbUsage->numPrbUsedForTx * 100) / 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; } @@ -250,25 +198,22 @@ uint8_t SchProcUlTotalPrbUsageTmrExp(TotalPrbUsage *ulTotalPrbUsage) **/ uint8_t schTmrExpiry(PTR cb, uint8_t tmrEvnt) { - DU_LOG("\nINFO --> SCH : Timer Event [%d] expired", tmrEvnt); - - struct timeval tp; - gettimeofday(&tp, 0); - time_t curtime = tp.tv_sec; - struct tm *t = localtime(&curtime); +#ifdef DEBUG_PRINT + DU_LOG("\nDEBUG --> SCH : Timer Expired. Event [%d]", tmrEvnt); +#endif 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);