[Epic-ID: ODUHIGH-464][Task-ID: ODUHIGH-478] WG8 Alignment | The First
[o-du/l2.git] / src / du_app / du_mgr_main.c
index 3b1e36b..21312b5 100644 (file)
@@ -33,8 +33,7 @@
 #ifdef O1_ENABLE
 
 #include "O1Interface.h"
-#include "ConfigInterface.h"
-
+#include "CmInterface.h"
 #endif
 
 uint8_t rlcUlActvTsk (Pst *, Buffer *);
@@ -53,6 +52,10 @@ uint8_t phyStubActvInit(Ent, Inst, Region, Reason);
 /* Global variable */
 DuCfgParams duCfgParam;
 
+#ifdef O1_ENABLE
+extern NRCellDU cellParams;
+#endif
+
 /*******************************************************************
  *
  * @brief Initializes DU APP
@@ -97,7 +100,7 @@ uint8_t duAppInit(SSTskId sysTskId)
  *
  * @details
  *
- *    Function : updateRrmPolicy 
+ *    Function : setRrmPolicy 
  *
  *    Functionality:
  *       - update Rrm Policy at DU and process the slice cfg request
@@ -107,12 +110,48 @@ uint8_t duAppInit(SSTskId sysTskId)
  *         false    - failure
  *
  * ****************************************************************/
-uint8_t updateRrmPolicy(RrmPolicy rrmPolicy[], uint8_t policyNum, \
-           uint8_t memberList)
+
+uint8_t setRrmPolicy(RrmPolicyList rrmPolicy[], uint8_t policyNum)
 {
-    DuCellCb *cellCb = NULLP;
+   DU_LOG("\nINFO   -->  DU_APP : DU APP RRM number of policy %d,", \
+         policyNum);
+   for(uint8_t i=0; i<policyNum ; i++)
+   {
+      DU_LOG("\nINFO   -->  DU_APP : DU APP  id = %s",rrmPolicy[i].id);
+      DU_LOG("\nINFO   -->  DU_APP : DU APP  resourceType = %d", \
+               rrmPolicy[i].resourceType);
+      DU_LOG("\nINFO   -->  DU_APP : DU APP  rRMPolicyMaxRatio = %d", \
+               rrmPolicy[i].rRMPolicyMaxRatio);
+      DU_LOG("\nINFO   -->  DU_APP : DU APP  rRMPolicyMinRatio = %d", \
+               rrmPolicy[i].rRMPolicyMinRatio);
+      DU_LOG("\nINFO   -->  DU_APP : DU APP  rRMPolicyDedicatedRatio = %d", \
+               rrmPolicy[i].rRMPolicyDedicatedRatio);
+      DU_LOG("\nINFO   -->  DU_APP : DU APP  rRMMemberNum = %d", \
+               rrmPolicy[i].rRMMemberNum);
+      for(uint8_t j=0; j<rrmPolicy[i].rRMMemberNum ; j++)
+      {
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  mcc = %d%d%d", \
+                 rrmPolicy[i].rRMPolicyMemberList[j].mcc[0], \
+                rrmPolicy[i].rRMPolicyMemberList[j].mcc[1], \
+                rrmPolicy[i].rRMPolicyMemberList[j].mcc[2]);
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  mnc = %d%d%d", \
+                  rrmPolicy[i].rRMPolicyMemberList[j].mnc[0], \
+                  rrmPolicy[i].rRMPolicyMemberList[j].mnc[1], \
+                  rrmPolicy[i].rRMPolicyMemberList[j].mnc[2]);
+
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  sd = %d%d%d", \
+                  rrmPolicy[i].rRMPolicyMemberList[j].sd[0], \
+                  rrmPolicy[i].rRMPolicyMemberList[j].sd[1], \
+                  rrmPolicy[i].rRMPolicyMemberList[j].sd[2]);
+
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  sst = %d\n", \
+                  rrmPolicy[i].rRMPolicyMemberList[j].sst);
+      }
+
+   }
+   DuCellCb *cellCb = NULLP;
 
-    cpyRrmPolicyInDuCfgParams(rrmPolicy, policyNum, memberList, &duCfgParam.tempSliceCfg);
+    cpyRrmPolicyInDuCfgParams(rrmPolicy, policyNum, &duCfgParam.tempSliceCfg);
     cellCb = duCb.actvCellLst[0];
 
     if(cellCb)
@@ -126,11 +165,12 @@ uint8_t updateRrmPolicy(RrmPolicy rrmPolicy[], uint8_t policyNum, \
            }
            else 
            {
-              BuildAndSendSliceReCfgReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\
+              BuildAndSendSliceRecfgReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\
               duCfgParam.tempSliceCfg.totalSliceCount);
            }
        }
     }
+   return ROK;
 }
 
 /*******************************************************************
@@ -157,6 +197,76 @@ bool bringCellUp(uint16_t cellId)
    return true;
 }
 
+/*******************************************************************
+ *
+ * @brief configure cell parameters
+ *
+ * @details
+ *
+ *    Function : configurecell
+ *
+ *    Functionality:
+ *       - configure cell parameters
+ *
+ * @params[in] Cell Id
+ * @return true     - success
+ *         false    - failure
+ *
+ * ****************************************************************/
+
+uint8_t setCellParam()
+{
+   //Read all the configs from smo edit-config into cellParams
+   DU_LOG("\nO1 configurecell du_app enterd");
+   DU_LOG("\nDU_APP configurecell cellLocalId value:%d",cellParams.cellLocalId);
+   DU_LOG("\nDU_APP configurecell operationalState value:%d", \
+             cellParams.operationalState);
+   DU_LOG("\nDU_APP configurecell administrativeState value:%d", \
+             cellParams.administrativeState);
+   DU_LOG("\nDU_APP configurecell cellState value:%d",cellParams.cellState);
+   DU_LOG("\nDU_APP configurecell nRPCI value:%d",cellParams.nRPCI);
+   DU_LOG("\nDU_APP configurecell nRTAC value:%d",cellParams.nRTAC);
+   DU_LOG("\nDU_APP configurecell arfcnDL value:%d",cellParams.arfcnDL);
+   DU_LOG("\nDU_APP configurecell arfcnUL value:%d",cellParams.arfcnUL);
+   DU_LOG("\nDU_APP configurecell arfcnSUL value:%d",cellParams.arfcnSUL);
+   DU_LOG("\nDU_APP configurecell ssbFrequency value:%d",cellParams.ssbFrequency);
+   DU_LOG("\nDU_APP configurecell ssbPeriodicity value:%d", \
+             cellParams.ssbPeriodicity);
+   DU_LOG("\nDU_APP configurecell ssbSubCarrierSpacing value:%d", \
+             cellParams.ssbSubCarrierSpacing);
+   DU_LOG("\nDU_APP configurecell ssbOffset value:%d",cellParams.ssbOffset);
+   DU_LOG("\nDU_APP configurecell ssbDuration value:%d",cellParams.ssbDuration);
+   DU_LOG("\nDU_APP configurecell bSChannelBwUL value:%d", \
+            cellParams.bSChannelBwUL);
+   DU_LOG("\nDU_APP configurecell bSChannelBwDL value:%d", \
+            cellParams.bSChannelBwDL);
+   DU_LOG("\nDU_APP configurecell bSChannelBwSUL value:%d", \
+            cellParams.bSChannelBwSUL);
+   for (int i=0 ; i<MAX_SUPPORTED_PLMN; i++)
+   {
+
+       DU_LOG("\nINFO   -->  DU_APP : DU APP  mcellParams.plmnList[%d].mcc = %d%d%d", i,\
+                 cellParams.plmnList[i].mcc[0], \
+                cellParams.plmnList[i].mcc[1], \
+                cellParams.plmnList[i].mcc[2]);
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  cellParams.plmnList[%d].mnc = %d%d%d", i,\
+                  cellParams.plmnList[i].mnc[0], \
+                  cellParams.plmnList[i].mnc[1], \
+                  cellParams.plmnList[i].mnc[2]);
+
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  cellParams.plmnList[%d].sd = %d%d%d", i,\
+                  cellParams.plmnList[i].sd[0], \
+                  cellParams.plmnList[i].sd[1], \
+                  cellParams.plmnList[i].sd[2]);
+
+         DU_LOG("\nINFO   -->  DU_APP : DU APP  cellParams.plmnList[%d].sst = %d\n", i,\
+                  cellParams.plmnList[i].sst);
+
+   }
+
+   duReadCfg();
+   return ROK;
+}
 /*******************************************************************
  *
  * @brief Bring the cell Down
@@ -438,7 +548,7 @@ uint8_t commonInit()
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for DU APP failed");
       return RFAILED;
    }
-   //ODU_SET_THREAD_AFFINITY(&du_app_stsk, SS_AFFINITY_MODE_EXCL, 16, 0);
+   ODU_SET_THREAD_AFFINITY(&du_app_stsk, SS_AFFINITY_MODE_EXCL, 16, 0);
 
    /* system task for EGTP */
    if(ODU_CREATE_TASK(PRIOR0, &egtp_stsk) != ROK)
@@ -446,7 +556,7 @@ uint8_t commonInit()
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for EGTP failed");
       return RFAILED;
    }
-   //ODU_SET_THREAD_AFFINITY(&egtp_stsk, SS_AFFINITY_MODE_EXCL, 17, 0);
+   ODU_SET_THREAD_AFFINITY(&egtp_stsk, SS_AFFINITY_MODE_EXCL, 27, 0);
 
    /* system task for RLC_DL and MAC */
    if(ODU_CREATE_TASK(PRIOR0, &rlc_mac_cl_stsk) != ROK)
@@ -456,7 +566,7 @@ uint8_t commonInit()
    }
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-   //ODU_SET_THREAD_AFFINITY(&rlc_mac_cl_stsk, SS_AFFINITY_MODE_EXCL, 18, 0);
+   ODU_SET_THREAD_AFFINITY(&rlc_mac_cl_stsk, SS_AFFINITY_MODE_EXCL, 18, 0);
 
    /* system task for RLC UL */
    if(ODU_CREATE_TASK(PRIOR1, &rlc_ul_stsk) != ROK)
@@ -464,7 +574,7 @@ uint8_t commonInit()
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for RLC UL failed");
       return RFAILED;
    }
-   //ODU_SET_THREAD_AFFINITY(&rlc_ul_stsk, SS_AFFINITY_MODE_EXCL, 19, 0);
+   ODU_SET_THREAD_AFFINITY(&rlc_ul_stsk, SS_AFFINITY_MODE_EXCL, 22, 0);
 
    /* system task for SCTP receiver thread */
    if(ODU_CREATE_TASK(PRIOR0, &sctp_stsk) != ROK)
@@ -472,7 +582,7 @@ uint8_t commonInit()
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for SCTP failed");
       return RFAILED;
    }
-   //ODU_SET_THREAD_AFFINITY(&sctp_stsk, SS_AFFINITY_MODE_EXCL, 20, 0);
+   ODU_SET_THREAD_AFFINITY(&sctp_stsk, SS_AFFINITY_MODE_EXCL, 25, 0);
 
    /* system task for lower-mac receiver thread */
    if(ODU_CREATE_TASK(PRIOR0, &lwr_mac_stsk) != ROK)
@@ -480,7 +590,7 @@ uint8_t commonInit()
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for Lower MAC failed");
       return RFAILED;
    }
-   //ODU_SET_THREAD_AFFINITY(&lwr_mac_stsk, SS_AFFINITY_MODE_EXCL, 21, 0);
+   ODU_SET_THREAD_AFFINITY(&lwr_mac_stsk, SS_AFFINITY_MODE_EXCL, 21, 0);
 
 #ifndef INTEL_WLS_MEM
    /* system task for phy stub's slot indication generator thread */
@@ -537,6 +647,7 @@ uint8_t commonInit()
    }
 #endif
 
+
    return ROK;
 }
 
@@ -592,7 +703,6 @@ void init_log()
 uint8_t tst(void)
 {
    init_log();
-
 #ifdef O1_ENABLE
    if(start_O1_module() != ROK)
       return RFAILED;
@@ -604,7 +714,9 @@ uint8_t tst(void)
    } 
 
    //Read all the configs from du_utils.c into duCfgParams
+#ifndef O1_ENABLE
    duReadCfg();
+#endif
 
 #ifdef O1_ENABLE
    //Send VES PNF registration message to SMO