X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_tmr.c;h=3e24888c4092f31b0965db4dd8e025cb90962d9c;hb=e96cb439cd4a7a6f55e3fab7caed978e38bd62b4;hp=28663d8428cc0fd5f61dad96921ecef85725815a;hpb=bbec4b5e924e6f9e76438412d7704bbd61f23b3a;p=o-du%2Fl2.git diff --git a/src/du_app/du_tmr.c b/src/du_app/du_tmr.c index 28663d842..3e24888c4 100644 --- a/src/du_app/du_tmr.c +++ b/src/du_app/du_tmr.c @@ -52,8 +52,35 @@ bool duChkTmr(PTR cb, int16_t tmrEvnt) DU_LOG("\nERROR --> DU_APP : duChkTmr: Invalid tmr Evnt [%d]", tmrEvnt); return TRUE; } + break; + } + case EVENT_RIC_SERVICE_UPDATE_TMR: + { + if(((RicServiceUpdateTimer*)cb)->timer.tmrEvnt == EVENT_RIC_SERVICE_UPDATE_TMR) + { + DU_LOG("\nERROR --> DU_APP : duChkTmr: Timer already running for event [%d]", tmrEvnt); + return TRUE; + } + break; + } + case EVENT_E2_NODE_CONFIG_UPDATE_TMR: + { + if(((E2NodeConfigUpdateTimer *)cb)->timer.tmrEvnt == EVENT_E2_NODE_CONFIG_UPDATE_TMR) + { + DU_LOG("\nERROR --> DU_APP : duChkTmr: Invalid tmr Evnt [%d]", tmrEvnt); + return TRUE; + } + break; + } + case EVENT_RIC_SUBSCRIPTION_REPORTING_TMR: + { + if(((RicSubscription *)cb)->ricSubsReportTimer.tmrEvnt == EVENT_RIC_SUBSCRIPTION_REPORTING_TMR) + { + DU_LOG("\nERROR --> DU_APP : duChkTmr: Timer already running for event [%d]", tmrEvnt); + return TRUE; + } + break; } - default: { DU_LOG("\nERROR --> DU_APP : duChkTmr: Invalid tmr Evnt [%d]", tmrEvnt); @@ -73,7 +100,7 @@ bool duChkTmr(PTR cb, int16_t tmrEvnt) * @return Void */ -void duStartTmr(PTR cb, int16_t tmrEvnt, uint8_t timerValue) +void duStartTmr(PTR cb, int16_t tmrEvnt, uint32_t timerValue) { CmTmrArg arg; arg.wait = 0; @@ -82,7 +109,7 @@ void duStartTmr(PTR cb, int16_t tmrEvnt, uint8_t timerValue) { case EVENT_E2_SETUP_TMR: { - CmTimer *e2SetupTimer; + CmTimer *e2SetupTimer = NULLP; e2SetupTimer = ((CmTimer *)cb); TMR_CALCUATE_WAIT(arg.wait, timerValue, duCb.duTimersInfo.tmrRes); @@ -90,9 +117,40 @@ void duStartTmr(PTR cb, int16_t tmrEvnt, uint8_t timerValue) arg.max = MAX_E2_SETUP_TMR; break; } + case EVENT_RIC_SERVICE_UPDATE_TMR: + { + RicServiceUpdateTimer *ricServiceUpdateTimer = NULLP; + ricServiceUpdateTimer= ((RicServiceUpdateTimer*)cb); + TMR_CALCUATE_WAIT(arg.wait, timerValue, duCb.duTimersInfo.tmrRes); + + arg.timers = &ricServiceUpdateTimer->timer; + arg.max = MAX_RIC_SERVICE_UPDATE_TMR; + break; + } + case EVENT_E2_NODE_CONFIG_UPDATE_TMR: + { + E2NodeConfigUpdateTimer *cfgUpdateTimer; + cfgUpdateTimer = ((E2NodeConfigUpdateTimer*)cb); + TMR_CALCUATE_WAIT(arg.wait, timerValue, duCb.duTimersInfo.tmrRes); + + arg.timers = &cfgUpdateTimer->timer; + arg.max = MAX_E2_NODE_CONFIG_UPDATE_TMR; + break; + } + case EVENT_RIC_SUBSCRIPTION_REPORTING_TMR: + { + RicSubscription *ricSubscription = NULLP; + ricSubscription = ((RicSubscription*)cb); + TMR_CALCUATE_WAIT(arg.wait, timerValue, duCb.duTimersInfo.tmrRes); + + arg.timers = &ricSubscription->ricSubsReportTimer; + arg.max = MAX_RIC_SUBSCRIPTION_REPORTING_TMR; + break; + } default: { DU_LOG("\nERROR --> DU : duStartTmr: Invalid tmr Evnt [%d]", tmrEvnt); + return; } } @@ -132,6 +190,30 @@ void duTmrExpiry(PTR cb,int16_t tmrEvnt) BuildAndSendE2SetupReq(); break; } + case EVENT_RIC_SERVICE_UPDATE_TMR: + { + RicServiceUpdateTimer *ricServiceUpdateTimer; + + ricServiceUpdateTimer= ((RicServiceUpdateTimer*)cb); + BuildAndSendRicServiceUpdate(ricServiceUpdateTimer->ricService); + break; + } + case EVENT_E2_NODE_CONFIG_UPDATE_TMR: + { + E2NodeConfigUpdateTimer *cfgUpdateTimer; + + cfgUpdateTimer = ((E2NodeConfigUpdateTimer*)cb); + BuildAndSendE2NodeConfigUpdate(&cfgUpdateTimer->configList); + break; + } + case EVENT_RIC_SUBSCRIPTION_REPORTING_TMR: + { + RicSubscription *ricSubscription = NULLP; + + ricSubscription = ((RicSubscription *)cb); + E2apHdlRicSubsReportTmrExp(ricSubscription); + break; + } default: { DU_LOG("\nERROR --> DU : duStartTmr: Invalid tmr Evnt [%d]", tmrEvnt); @@ -142,6 +224,79 @@ void duTmrExpiry(PTR cb,int16_t tmrEvnt) return; } +/** + * @brief Handler to stop timer + * + * @param[in] cb Control block depending on the type of the timer event. + * @param[in] tmrEvnt Timer event to be stopped + * + * @return Void +*/ + +void duStopTmr(PTR cb, uint8_t tmrType) +{ + CmTmrArg arg; + arg.timers = NULLP; + + switch (tmrType) + { + case EVENT_E2_SETUP_TMR: + { + CmTimer *e2SetupTimer = NULLP; + + e2SetupTimer = ((CmTimer *)cb); + arg.timers = e2SetupTimer; + arg.max = MAX_E2_SETUP_TMR; + break; + } + case EVENT_RIC_SERVICE_UPDATE_TMR: + { + RicServiceUpdateTimer *ricServiceUpdateTimer = NULLP; + + ricServiceUpdateTimer= ((RicServiceUpdateTimer*)cb); + arg.timers = &ricServiceUpdateTimer->timer; + arg.max = MAX_RIC_SERVICE_UPDATE_TMR; + break; + } + case EVENT_E2_NODE_CONFIG_UPDATE_TMR: + { + E2NodeConfigUpdateTimer *cfgUpdateTimer; + + cfgUpdateTimer = ((E2NodeConfigUpdateTimer*)cb); + arg.timers = &cfgUpdateTimer->timer; + arg.max = MAX_E2_NODE_CONFIG_UPDATE_TMR; + break; + } + case EVENT_RIC_SUBSCRIPTION_REPORTING_TMR: + { + RicSubscription *ricSubscription = NULLP; + + ricSubscription = ((RicSubscription*)cb); + arg.timers = &ricSubscription->ricSubsReportTimer; + arg.max = MAX_RIC_SUBSCRIPTION_REPORTING_TMR; + break; + } + default: + { + DU_LOG("\nERROR --> RLC : rlcStopTmr: Invalid tmr Evnt[%d]", tmrType); + break; + } + } + + if (tmrType != TMR0) + { + arg.tqCp = &(duCb.duTimersInfo.tmrTqCp); + arg.tq = duCb.duTimersInfo.tmrTq; + arg.cb = cb; + arg.evnt = tmrType; + arg.wait = 0; + arg.tNum = 0; + cmRmvCbTq(&arg); + } + + return; +} + /** * @brief DU instance timer call back function registered with system services. *