Building mib PDU and SSB changes at scheduler
[o-du/l2.git] / src / du_app / du_msg_hdl.c
index 053fcf1..ed91ea4 100644 (file)
@@ -18,6 +18,7 @@
 
 /* This file contains message handling functionality for DU cell management */
 
+#include "du_mgr.h"
 #include "du_sctp.h"
 #include "du_f1ap_msg_hdl.h"
 #include "lsctp.h"
@@ -290,7 +291,7 @@ S16 duProcCfgComplete()
    S16 ret = ROK;
    static U16 cellId = 0;
    U16 idx;
-   for(idx=0; idx< DEFAULT_CELLS; idx++) //TODO: the length of this loop must be determined
+   for(idx=0; idx< DEFAULT_CELLS; idx++)
    {
       DuCellCb *cell;
       DU_ALLOC(cell, sizeof(DuCellCb))
@@ -301,25 +302,34 @@ S16 duProcCfgComplete()
       }
       else
       {
-         U16 nci;
-
+         U32 nci;
+         U8 idx;
+         
+         memset(cell, 0, sizeof(DuCellCb));
          cell->cellId = cellId++;
-         memcpy((void*)&cell->cellInfo, (void*)&duCfgParam.cellCfg[idx],\
-               sizeof(CellCfgParams));
-         cell->cellStatus = OOS;
-         nci = cell->cellInfo.nrEcgi.cellId;
-         ret = cmHashListInsert(&(duCb.cellLst), (PTR)(cell), 
-                     (U8 *)&(nci), (U16) sizeof(nci));
-
-         if(ret != ROK)
-         {
-            DU_LOG("\nDU_APP : HashListInsert into cellLst failed for [%d]", nci);
-            break;
-         }
-         else
+         cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0;
+         cell->cellInfo.nrEcgi.plmn.mcc[1] = PLMN_MCC1;
+         cell->cellInfo.nrEcgi.plmn.mcc[2] = PLMN_MCC2;
+         cell->cellInfo.nrEcgi.plmn.mnc[0] = PLMN_MNC0;
+         cell->cellInfo.nrEcgi.plmn.mnc[1] = PLMN_MNC1;
+         cell->cellInfo.nrEcgi.plmn.mnc[2] = PLMN_MNC2;
+         cell->cellInfo.nrEcgi.cellId = NR_CELL_ID;
+         cell->cellInfo.nrPci = NR_PCI; 
+         cell->cellInfo.fiveGsTac = DU_TAC;
+         for(idx=0; idx<MAX_PLMN; idx++)
          {
-            DU_LOG("\nDU_APP : HashListInsert into cellLst successful for [%d]", nci);
-         }
+            cell->cellInfo.plmn[idx].mcc[0] = PLMN_MCC0;
+            cell->cellInfo.plmn[idx].mcc[1] = PLMN_MCC1;
+            cell->cellInfo.plmn[idx].mcc[2] = PLMN_MCC2;
+            cell->cellInfo.plmn[idx].mnc[0] = PLMN_MNC0;
+            cell->cellInfo.plmn[idx].mnc[1] = PLMN_MNC1;
+            cell->cellInfo.plmn[idx].mnc[2] = PLMN_MNC2;
+                       }
+         cell->cellInfo.maxUe = duCfgParam.maxUe;
+         cell->cellStatus = CELL_OUT_OF_SERVICE;
+         nci = (U16)cell->cellInfo.nrEcgi.cellId;
+         
+         duCb.cfgCellLst[nci-1] = cell;
       }
    }
    if(ret != RFAILED)
@@ -911,39 +921,26 @@ S16 duBindUnbindRlcToMacSap(U8 inst, U8 action)
 
 S16 duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy)
 {
-   switch(ntfy->header.nType)
+   if(f1Params.assocId == ntfy->u.assocChange.assocId)
    {
-      case CM_INET_SCTP_ASSOC_CHANGE:
-         switch(ntfy->u.assocChange.state)
-         {
-            case CM_INET_SCTP_COMM_UP:
-               {
-                  DU_LOG("\nDU_APP : SCTP communication UP");
-                  //Setup F1-C
-                  if(ntfy->u.assocChange.assocId == f1Params.assocId)
-                  {
-                     /* Build and send F1 Setup response */
-                     if(BuildAndSendF1SetupReq() != ROK)
-                     {
-                        RETVALUE(RFAILED);
-                     }
-                  }
-                  //Setup E2
-                  if(ntfy->u.assocChange.assocId == ricParams.assocId)
-                  {
-                     /* Build and send F1 Setup response */
-                     if(BuildAndSendE2SetupReq() != ROK)
-                     {
-                        RETVALUE(RFAILED);
-                     }
-                  }
-
-                  break;
-               }
-         }
-         break;
+      if(BuildAndSendF1SetupReq() != ROK)
+      {
+         return RFAILED;
+      }
    }
-   RETVALUE(ROK);
+   else if(ricParams.assocId == ntfy->u.assocChange.assocId)
+   {
+      if(BuildAndSendE2SetupReq() != ROK)
+      {
+         return RFAILED;
+      }
+   }
+   else
+       {
+      DU_LOG("\nDU_APP : Invalid assocId %d received", ntfy->u.assocChange.assocId);
+               return RFAILED;
+       }
+   return ROK;
 }
 
 /*******************************************************************
@@ -1432,7 +1429,7 @@ S16 duLayerConfigComplete()
       DU_LOG("\nDU_APP : Failed configuring Sctp Params");
       ret = RFAILED;
    }
-       if((ret = duSctpAssocReq(F1_INTERFACE)) != ROK)
+   if((ret = duSctpAssocReq(F1_INTERFACE)) != ROK)
    {
       DU_LOG("\nDU_APP : Failed to send AssocReq F1");
       ret = RFAILED;
@@ -1578,22 +1575,29 @@ S16 duHandleMacCellCfgCfm(MacCellCfgCfm *macCellCfgCfm)
 {
    S16 ret = ROK;
 
-   if(macCellCfgCfm->transId == duCb.duMacCellCfg->transId)
-   {
-      /* free the memory allocated during sending macCellCfg request */
-      DU_FREE(duCb.duMacCellCfg,sizeof(MacCellCfg));
-      duCb.duMacCellCfg = NULLP;
-
-      /* Build and send GNB-DU config update */
-      ret = BuildAndSendDUConfigUpdate();
-   }
-   else
-   {
-      /* transaction ID missmatch */
-      DU_LOG("\n transaction ID mismatch in macCellCfg");
-      ret = RFAILED;
-   }
-
+   if(macCellCfgCfm->rsp == ROK)  
+       {
+               if(macCellCfgCfm->transId == duCb.duMacCellCfg->transId)
+               {
+                       /* free the memory allocated during sending macCellCfg request */
+                       DU_FREE(duCb.duMacCellCfg,sizeof(MacCellCfg));
+                       duCb.duMacCellCfg = NULLP;
+
+                       /* Build and send GNB-DU config update */
+                       ret = BuildAndSendDUConfigUpdate();
+               }
+               else
+               {
+                       /* transaction ID missmatch */
+                       DU_LOG("\n transaction ID mismatch in macCellCfg");
+                       ret = RFAILED;
+               }
+       }
+       else
+       {
+               DU_LOG("\nMac cell cfg failed");
+               ret = RFAILED;
+       }
    return ret;
 }