[Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-523] KPI reporting per statistics group
[o-du/l2.git] / src / 5gnrsch / sch_ue_mgr.c
index d28babb..d416a07 100644 (file)
@@ -27,6 +27,7 @@
 #include "du_app_mac_inf.h"
 #include "mac_sch_interface.h"
 #include "sch.h"
+#include "sch_tmr.h"
 #include "sch_utils.h"
 #ifdef NR_DRX 
 #include "sch_drx.h"
@@ -321,7 +322,7 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg)
                schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].ulDrxHarqCb);
             }
             /* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */
-            schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
+            schFillDrxUeCb(ueCb->cellCb->numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
             /* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we 
              * recived ueCfg request */
             schAddUeInOndurationList(ueCb->cellCb, ueCb, 0);
@@ -331,7 +332,7 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg)
          {
             /* convert all the drx configuration recived in ms/subms into number
              * of slots and store into the drxUeCb */
-            schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
+            schFillDrxUeCb(ueCb->cellCb->numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
 
             /* Recalculate/Restart timer based on their presence */
             schDrxUeReCfgTimer(ueCb->cellCb, ueCb);
@@ -374,14 +375,14 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg)
       {
          if(dlDataToUlAck)
          {
-            BuildK0K1Table(ueCb->cellCb, &ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.k0K1InfoTbl, false, pdschCfg,\
+            BuildK0K1Table(ueCb->cellCb, &ueCb->k0K1InfoTbl, false, pdschCfg,\
                   ueCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg, dlDataToUlAck->dlDataToUlAckListCount,\
                   dlDataToUlAck->dlDataToUlAckList);
-            ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.k0K1TblPrsnt = true;
+            ueCb->k0K1TblPrsnt = true;
             BuildK2InfoTable(ueCb->cellCb, ueCfg->spCellCfg.servCellCfg.initUlBwp.puschCfg.timeDomRsrcAllocList,\
                   ueCfg->spCellCfg.servCellCfg.initUlBwp.puschCfg.numTimeDomRsrcAlloc,\
-                  NULLP, &ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2InfoTbl);
-            ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2TblPrsnt = true;
+                  NULLP, &ueCb->k2InfoTbl);
+            ueCb->k2TblPrsnt = true;
          }
       }
    }
@@ -488,7 +489,7 @@ uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg)
                schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].ulDrxHarqCb);
             }
             /* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */
-            schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
+            schFillDrxUeCb(ueCb->cellCb->numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
             /* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we 
              * recived ueCfg request */
             schAddUeInOndurationList(ueCb->cellCb, ueCb, 0);
@@ -498,7 +499,7 @@ uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg)
          {
             /* convert all the drx configuration recived in ms/subms into number
              * of slots and store into the drxUeCb */
-            schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
+            schFillDrxUeCb(ueCb->cellCb->numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
 
             /* Recalculate/Restart timer based on their presence */
             schDrxUeReCfgTimer(ueCb->cellCb, ueCb);
@@ -552,14 +553,14 @@ uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg)
       {
          if(dlDataToUlAck)
          {
-            BuildK0K1Table(ueCb->cellCb, &ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.k0K1InfoTbl, false, pdschCfg,\
+            BuildK0K1Table(ueCb->cellCb, &ueCb->k0K1InfoTbl, false, pdschCfg,\
                   ueRecfg->spCellRecfg.servCellRecfg.initDlBwp.pdschCfg, dlDataToUlAck->dlDataToUlAckListCount,\
                   dlDataToUlAck->dlDataToUlAckList);
-            ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.k0K1TblPrsnt = true;
+            ueCb->k0K1TblPrsnt = true;
             BuildK2InfoTable(ueCb->cellCb, ueRecfg->spCellRecfg.servCellRecfg.initUlBwp.puschCfg.timeDomRsrcAllocList,\
                   ueRecfg->spCellRecfg.servCellRecfg.initUlBwp.puschCfg.numTimeDomRsrcAlloc,\
-                  NULLP, &ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2InfoTbl);
-            ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2TblPrsnt = true;
+                  NULLP, &ueCb->k2InfoTbl);
+            ueCb->k2TblPrsnt = true;
          }
       }
    }
@@ -1399,12 +1400,12 @@ void deleteSchUeCb(SchUeCb *ueCb)
 *    Functionality: Fill and send UE delete response to MAC
 *
 * @params[in] Inst inst, SchUeDelete  *ueDelete, SchMacRsp result, 
-*              ErrorCause cause
+*              CauseOfResult  cause
 * @return ROK     - success
 *         RFAILED - failure
 *
 * ****************************************************************/
-void SchSendUeDeleteRspToMac(Inst inst, SchUeDelete  *ueDelete, SchMacRsp result, ErrorCause cause)
+void SchSendUeDeleteRspToMac(Inst inst, SchUeDelete  *ueDelete, SchMacRsp result, CauseOfResult  cause)
 {
     Pst rspPst;
     SchUeDeleteRsp  delRsp;
@@ -1439,9 +1440,9 @@ void SchSendUeDeleteRspToMac(Inst inst, SchUeDelete  *ueDelete, SchMacRsp result
 * ****************************************************************/
 uint8_t SchProcUeDeleteReq(Pst *pst, SchUeDelete  *ueDelete)
 {
-    uint8_t      idx=0, ueId=0, ret=ROK;
-    ErrorCause   result;
-    SchCellCb    *cellCb = NULLP;
+    uint8_t idx=0, ueId=0, ret=ROK;
+    CauseOfResult  cause;
+    SchCellCb *cellCb = NULLP;
     Inst         inst = pst->dstInst - SCH_INST_START;
    
     if(!ueDelete)
@@ -1456,7 +1457,7 @@ uint8_t SchProcUeDeleteReq(Pst *pst, SchUeDelete  *ueDelete)
     if(cellCb->cellId != ueDelete->cellId)
     {
        DU_LOG("\nERROR  -->  SCH : SchProcUeDeleteReq(): cell Id is not available");
-       result =  INVALID_CELLID;
+       cause =  CELLID_INVALID;
     }
     else
     {
@@ -1467,22 +1468,22 @@ uint8_t SchProcUeDeleteReq(Pst *pst, SchUeDelete  *ueDelete)
           cellCb->api->SchUeDeleteReq(&cellCb->ueCb[ueId-1]);
           deleteSchUeCb(&cellCb->ueCb[ueId-1]);
           cellCb->numActvUe--;
-          result = NOT_APPLICABLE;
+          cause = SUCCESSFUL;
        }
        else
        {
           DU_LOG("\nERROR  -->  SCH : SchProcUeDeleteReq(): SchUeCb not found");
-          result =  INVALID_UEID;
+          cause =  UEID_INVALID;
        }
     }
     
-    if(result == NOT_APPLICABLE)
+    if(cause == SUCCESSFUL)
     {
-       SchSendUeDeleteRspToMac(inst, ueDelete, RSP_OK, result);
+       SchSendUeDeleteRspToMac(inst, ueDelete, RSP_OK, cause);
     }
     else
     {
-       SchSendUeDeleteRspToMac(inst, ueDelete, RSP_NOK, result);
+       SchSendUeDeleteRspToMac(inst, ueDelete, RSP_NOK, cause);
        ret = RFAILED;
     }
     return ret;