[Epic-ID: ODUHIGH-538][Issue-ID: ODUHIGH-566] Fixes to read SIB1 configuration from...
[o-du/l2.git] / src / du_app / du_cfg.c
index 28cb036..9f50ac0 100644 (file)
@@ -326,28 +326,6 @@ uint8_t readMacCfg()
    duCfgParam.macCellCfg.cellCfg.initialUlBwp.pucchCommon.pucchResourceCommon = PUCCH_RSRC_COMMON;
    duCfgParam.macCellCfg.cellCfg.initialUlBwp.pucchCommon.pucchGroupHopping = PUCCH_NEITHER_HOPPING;
 
-
-#ifndef O1_ENABLE
-
-   /*Note: Static Configuration, when O1 is not configuring the RRM policy*/
-   RrmPolicyList rrmPolicy;
-   rrmPolicy.id[0] = 1;
-   rrmPolicy.resourceType = PRB;
-   rrmPolicy.rRMMemberNum = 1;
-   memcpy(rrmPolicy.rRMPolicyMemberList[0].mcc,duCfgParam.macCellCfg.cellCfg.plmnInfoList[0].plmn.mcc, 3*sizeof(uint8_t));
-   memcpy(rrmPolicy.rRMPolicyMemberList[0].mnc,duCfgParam.macCellCfg.cellCfg.plmnInfoList[0].plmn.mnc, 3*sizeof(uint8_t));
-   rrmPolicy.rRMPolicyMemberList[0].sst = 1;
-   rrmPolicy.rRMPolicyMemberList[0].sd[0] = 2;
-   rrmPolicy.rRMPolicyMemberList[0].sd[1] = 3;
-   rrmPolicy.rRMPolicyMemberList[0].sd[2] = 4;
-   rrmPolicy.rRMPolicyMaxRatio = 90;
-   rrmPolicy.rRMPolicyMinRatio = 30;
-   rrmPolicy.rRMPolicyDedicatedRatio = 10;
-
-   cpyRrmPolicyInDuCfgParams(&rrmPolicy, 1, &duCfgParam.tempSliceCfg);
-
-#endif
-
    return ROK;
 }
 
@@ -382,176 +360,6 @@ uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol)
    return sliv;
 }
 
-
-/*******************************************************************
- *
- * @brief Configures serving cell config common in sib1
- *
- * @details
- *
- *    Function : fillServCellCfgCommSib
- *
- *    Functionality:
- *       - fills Serving cell config common for SIB1
- *
- * @params[in] SrvCellCfgCommSib pointer
- * @return ROK     - success
- *         RFAILED - failure
- * 
- ** ****************************************************************/
-uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm)
-{
-   PdcchCfgCommon   pdcchCfg;
-   PdschCfgCommon   pdschCfg;
-   PcchCfg          pcchCfg;
-   RachCfgCommon    rachCfg;
-   PuschCfgCommon   puschCfg;
-   PucchCfgCommon   pucchCfg;
-   TddUlDlCfgCommon   tddCfg;
-
-#ifdef O1_ENABLE
-   srvCellCfgComm->scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing);
-#else
-   srvCellCfgComm->scs = NR_SCS;
-#endif
-
-   /* Configuring DL Config Common for SIB1*/
-   srvCellCfgComm->dlCfg.freqBandInd = NR_FREQ_BAND; 
-   srvCellCfgComm->dlCfg.offsetToPointA = OFFSET_TO_POINT_A;
-#ifdef O1_ENABLE
-   srvCellCfgComm->dlCfg.dlScsCarrier.scsOffset =  cellParams.ssbOffset;
-   srvCellCfgComm->dlCfg.dlScsCarrier.scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing);
-   srvCellCfgComm->dlCfg.dlScsCarrier.scsBw =  cellParams.bSChannelBwUL;
-#else
-   srvCellCfgComm->dlCfg.dlScsCarrier.scsOffset = SSB_SUBCARRIER_OFFSET;
-   srvCellCfgComm->dlCfg.dlScsCarrier.scs = NR_SCS;
-   srvCellCfgComm->dlCfg.dlScsCarrier.scsBw = NR_BANDWIDTH;
-#endif   
-   srvCellCfgComm->dlCfg.locAndBw = FREQ_LOC_BW;
-
-   /* Configuring PDCCH Config Common For SIB1 */
-   pdcchCfg.present = BWP_DownlinkCommon__pdcch_ConfigCommon_PR_setup;
-   pdcchCfg.ctrlRsrcSetZero = CORESET_0_INDEX;
-   pdcchCfg.searchSpcZero = SEARCHSPACE_0_INDEX;
-   pdcchCfg.searchSpcId = PDCCH_SEARCH_SPACE_ID;
-   pdcchCfg.ctrlRsrcSetId = PDCCH_CTRL_RSRC_SET_ID;
-   pdcchCfg.monitorSlotPrdAndOffPresent = SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
-   //pdcchCfg.monitorSlotPrdAndOff = \
-   SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
-   pdcchCfg.monitorSymbolsInSlot[0] = 128;
-   pdcchCfg.monitorSymbolsInSlot[1] = 0;
-   pdcchCfg.numCandAggLvl1 = SearchSpace__nrofCandidates__aggregationLevel1_n8;
-   pdcchCfg.numCandAggLvl2 = SearchSpace__nrofCandidates__aggregationLevel2_n4;
-   pdcchCfg.numCandAggLvl4 = SearchSpace__nrofCandidates__aggregationLevel4_n2;
-   pdcchCfg.numCandAggLvl8 = SearchSpace__nrofCandidates__aggregationLevel8_n1;
-   pdcchCfg.numCandAggLvl16 = SearchSpace__nrofCandidates__aggregationLevel16_n0;
-   pdcchCfg.searchSpcType = SearchSpace__searchSpaceType_PR_common;
-   pdcchCfg.commSrchSpcDciFrmt = PDCCH_SERACH_SPACE_DCI_FORMAT;
-   pdcchCfg.searchSpcSib1 = PDCCH_SEARCH_SPACE_ID_SIB1;
-   pdcchCfg.pagingSearchSpc = PDCCH_SEARCH_SPACE_ID_PAGING;
-   pdcchCfg.raSearchSpc = PDCCH_SEARCH_SPACE_ID_PAGING;
-   srvCellCfgComm->dlCfg.pdcchCfg = pdcchCfg;
-
-   /* Configuring PDSCH Config Common For SIB1 */
-   pdschCfg.present = BWP_DownlinkCommon__pdsch_ConfigCommon_PR_setup;
-   pdschCfg.numTimeDomRsrcAlloc = 2;
-   pdschCfg.timeDomAlloc[0].k0 = PDSCH_K0_CFG1;
-   pdschCfg.timeDomAlloc[0].mapType = PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
-   pdschCfg.timeDomAlloc[0].sliv = calcSliv(PDSCH_START_SYMBOL,PDSCH_LENGTH_SYMBOL);
-
-   pdschCfg.timeDomAlloc[1].k0 = PDSCH_K0_CFG2;
-   pdschCfg.timeDomAlloc[1].mapType = PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
-   pdschCfg.timeDomAlloc[1].sliv = calcSliv(PDSCH_START_SYMBOL,PDSCH_LENGTH_SYMBOL);
-
-   srvCellCfgComm->dlCfg.pdschCfg = pdschCfg;
-
-   /* Configuring BCCH Config for SIB1 */
-   srvCellCfgComm->dlCfg.bcchCfg.modPrdCoeff = BCCH_Config__modificationPeriodCoeff_n16;
-
-   /* Configuring PCCH Config for SIB1 */
-   pcchCfg.dfltPagingCycle = convertPagingCycleEnumToValue(PagingCycle_rf256);
-   pcchCfg.nAndPagingFrmOffsetType = PCCH_Config__nAndPagingFrameOffset_PR_oneT;
-   pcchCfg.pageFrameOffset = 0;
-   pcchCfg.ns = convertNsEnumToValue(PCCH_Config__ns_one);
-   pcchCfg.firstPDCCHMontioringType = PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS30KHZoneT_SCS15KHZhalfT;
-   memset(pcchCfg.firstPDCCHMontioringInfo, 0, sizeof(uint16_t));
-   pcchCfg.firstPDCCHMontioringInfo[0] = 44;
-   
-   srvCellCfgComm->dlCfg.pcchCfg = pcchCfg;
-
-
-   /* Configuring UL Config Common */
-#ifdef O1_ENABLE
-   srvCellCfgComm->ulCfg.ulScsCarrier.scsOffset =  cellParams.ssbOffset;
-   srvCellCfgComm->ulCfg.ulScsCarrier.scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing);
-   srvCellCfgComm->ulCfg.ulScsCarrier.scsBw = cellParams.bSChannelBwUL; 
-#else
-   srvCellCfgComm->ulCfg.ulScsCarrier.scsOffset = SSB_SUBCARRIER_OFFSET;
-   srvCellCfgComm->ulCfg.ulScsCarrier.scs = NR_SCS;
-   srvCellCfgComm->ulCfg.ulScsCarrier.scsBw = NR_BANDWIDTH;
-#endif   
-   srvCellCfgComm->ulCfg.freqBandInd = NR_FREQ_BAND;
-   srvCellCfgComm->ulCfg.pMax = UL_P_MAX;
-   srvCellCfgComm->ulCfg.locAndBw = FREQ_LOC_BW;
-   srvCellCfgComm->ulCfg.timeAlignTimerComm = TimeAlignmentTimer_infinity;
-
-   /* Configuring RACH Config Common for SIB1 */
-   rachCfg.present = BWP_UplinkCommon__rach_ConfigCommon_PR_setup;
-   rachCfg.prachCfgIdx = PRACH_CONFIG_IDX;
-   rachCfg.msg1Fdm = RACH_ConfigGeneric__msg1_FDM_one;
-   rachCfg.msg1FreqStart = PRACH_FREQ_START;
-   rachCfg.zeroCorrZoneCfg = ZERO_CORRELATION_ZONE_CFG;
-   rachCfg.preambleRcvdTgtPwr = PRACH_PREAMBLE_RCVD_TGT_PWR;
-   rachCfg.preambleTransMax = RACH_ConfigGeneric__preambleTransMax_n200;
-   rachCfg.pwrRampingStep = RACH_ConfigGeneric__powerRampingStep_dB2;
-   rachCfg.raRspWindow = RACH_ConfigGeneric__ra_ResponseWindow_sl10;
-   rachCfg.numRaPreamble = NUM_RA_PREAMBLE;
-   rachCfg.numSsbPerRachOcc = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one;
-   rachCfg.numCbPreamblePerSsb = CB_PREAMBLE_PER_SSB;
-   rachCfg.contResTimer = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf64;
-   rachCfg.rsrpThreshSsb = RSRP_THRESHOLD_SSB;
-   rachCfg.rootSeqIdxPresent = RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139;
-   rachCfg.rootSeqIdx = ROOT_SEQ_IDX;
-   rachCfg.msg1Scs = PRACH_SUBCARRIER_SPACING ;
-   rachCfg.restrictedSetCfg = PRACH_RESTRICTED_SET_CFG;
-   srvCellCfgComm->ulCfg.rachCfg = rachCfg;
-
-   /* Configuring PUSCH Config Common for SIB1 */
-   puschCfg.puschCfgPresent = BWP_UplinkCommon__pusch_ConfigCommon_PR_setup;
-   puschCfg.numTimeDomRsrcAlloc = 2;
-   puschCfg.timeDomAllocList[0].k2 = PUSCH_K2_CFG1;
-   puschCfg.timeDomAllocList[0].mapType = PUSCH_TimeDomainResourceAllocation__mappingType_typeA;
-   puschCfg.timeDomAllocList[0].sliv = calcSliv(PUSCH_START_SYMBOL,PUSCH_LENGTH_SYMBOL);
-   puschCfg.timeDomAllocList[1].k2 = PUSCH_K2_CFG2;
-   puschCfg.timeDomAllocList[1].mapType = PUSCH_TimeDomainResourceAllocation__mappingType_typeA;
-   puschCfg.timeDomAllocList[1].sliv = calcSliv(PUSCH_START_SYMBOL,PUSCH_LENGTH_SYMBOL);
-   puschCfg.msg3DeltaPreamble = PUSCH_MSG3_DELTA_PREAMBLE;
-   puschCfg.p0NominalWithGrant = PUSCH_P0_NOMINAL_WITH_GRANT;
-   srvCellCfgComm->ulCfg.puschCfg = puschCfg;
-
-   /* Configuring PUCCH Config Common for SIB1 */
-   pucchCfg.present = BWP_UplinkCommon__pucch_ConfigCommon_PR_setup;
-   pucchCfg.rsrcComm = PUCCH_RSRC_COMMON;
-   pucchCfg.grpHop = PUCCH_ConfigCommon__pucch_GroupHopping_neither;
-   pucchCfg.p0Nominal = PUCCH_P0_NOMINAL;
-   srvCellCfgComm->ulCfg.pucchCfg = pucchCfg;
-
-   /* Configuring TDD UL DL config common */
-   tddCfg.refScs = SubcarrierSpacing_kHz30;
-   tddCfg.txPrd = TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5;
-   tddCfg.numDlSlots = NUM_DL_SLOTS;
-   tddCfg.numDlSymbols = NUM_DL_SYMBOLS;
-   tddCfg.numUlSlots = NUM_UL_SLOTS;
-   tddCfg.numUlSymbols = NUM_UL_SYMBOLS;
-   srvCellCfgComm->tddCfg = tddCfg;
-
-   srvCellCfgComm->ssbPosInBurst = 192;
-   srvCellCfgComm->ssbPrdServingCell = SSB_PERIODICITY;
-   srvCellCfgComm->ssPbchBlockPwr = SSB_PBCH_PWR;
-
-   return ROK;
-}
-
 /*******************************************************************
  *
  * @brief Configures the DU Parameters
@@ -647,53 +455,6 @@ uint8_t readCfg()
    memset(duCb.e2apDb.e2TransInfo.e2InitTransaction, 0, MAX_NUM_TRANSACTION * sizeof(E2TransInfo));
    memset(duCb.e2apDb.e2TransInfo.ricInitTransaction, 0, MAX_NUM_TRANSACTION * sizeof(E2TransInfo));
    
-   /* Mib Params */
-   mib.sysFrmNum = SYS_FRAME_NUM;
-#ifdef NR_TDD
-   mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs30or120;
-#else
-   mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs15or60;
-#endif
-   mib.ssb_SubcarrierOffset = SSB_SC_OFFSET; //Kssb
-   mib.dmrs_TypeA_Position = MIB__dmrs_TypeA_Position_pos2;
-   mib.controlResourceSetZero = CORESET_0_INDEX;
-   mib.searchSpaceZero = SEARCHSPACE_0_INDEX;
-   mib.cellBarred = MIB__cellBarred_notBarred;
-   mib.intraFreqReselection = MIB__intraFreqReselection_notAllowed;
-   duCfgParam.mibParams = mib;
-
-   /* SIB1 Params */
-   memset(&sib1.plmn, 0, sizeof(Plmn));
-   sib1.plmn.mcc[0] = PLMN_MCC0;
-   sib1.plmn.mcc[1] = PLMN_MCC1;
-   sib1.plmn.mcc[2] = PLMN_MCC2;
-   sib1.plmn.mnc[0] = PLMN_MNC0;
-   sib1.plmn.mnc[1] = PLMN_MNC1;
-   sib1.ranac = DU_RANAC;
-
-#ifdef O1_ENABLE
-   sib1.tac =  cellParams.nRTAC;
-   sib1.cellIdentity =  CELL_IDENTITY *  cellParams.cellLocalId;
-   DU_LOG("\nDEBUG --> DU_APP: readCfg(): OAM CellLocalId=%d", \
-              sib1.cellIdentity);
-#else
-   sib1.tac = DU_TAC;
-   sib1.cellIdentity = CELL_IDENTITY * NR_CELL_ID;
-#endif
-   sib1.cellResvdForOpUse = PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved;
-   sib1.connEstFailCnt = ConnEstFailureControl__connEstFailCount_n3;
-   sib1.connEstFailOffValidity = ConnEstFailureControl__connEstFailOffsetValidity_s900;
-   sib1.connEstFailOffset = 15;
-   sib1.siSchedInfo.winLen = SI_SchedulingInfo__si_WindowLength_s5;
-   sib1.siSchedInfo.broadcastSta = SchedulingInfo__si_BroadcastStatus_broadcasting;
-   sib1.siSchedInfo.preiodicity = SchedulingInfo__si_Periodicity_rf8;
-   sib1.siSchedInfo.sibType = SIB_TypeInfo__type_sibType2;
-   sib1.siSchedInfo.sibValTag = SIB1_VALUE_TAG;
-
-   fillServCellCfgCommSib(&sib1.srvCellCfgCommSib);
-
-   duCfgParam.sib1Params = sib1;
-
    for(srvdCellIdx=0; srvdCellIdx<DEFAULT_CELLS; srvdCellIdx++)
    { 
       memset(&duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.nrCgi.plmn, 0, sizeof(Plmn));
@@ -1131,7 +892,6 @@ uint8_t parseEgtpParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, F1EgtpParams
    return ROK;
 }
 
-#ifdef XML_BASED_CONFIG
 /*******************************************************************
  *
  * @brief Fill MIB configuration 
@@ -1224,17 +984,17 @@ uint8_t parsePlmn(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, Plmn *plmn)
          child = cur->xmlChildrenNode;
          while (child != NULL)
          {
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"plmn_MCC0")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PLMN_MCC0")) && (child->ns == ns))
             {
                plmn->mcc[0] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
             }
 
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"plmn_MCC1")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PLMN_MCC1")) && (child->ns == ns))
             {
                plmn->mcc[1] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
             }
 
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"plmn_MCC2")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PLMN_MCC2")) && (child->ns == ns))
             {
                plmn->mcc[2] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
             }
@@ -1248,17 +1008,17 @@ uint8_t parsePlmn(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, Plmn *plmn)
          child = cur->xmlChildrenNode;
          while (child != NULL)
          {
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"plmn_MNC0")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PLMN_MNC0")) && (child->ns == ns))
             {
                plmn->mnc[0] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));  
             }
 
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"plmn_MNC1")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PLMN_MNC1")) && (child->ns == ns))
             {
                plmn->mnc[1] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
             }
 
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"plmn_MNC2")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PLMN_MNC2")) && (child->ns == ns))
             {
                plmn->mnc[2] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
             }
@@ -1365,6 +1125,7 @@ uint8_t parseSnssai(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, Snssai *snssai)
    return ROK;
 }
 
+#ifdef XML_BASED_CONFIG
 /*******************************************************************
  *
  * @brief Fill Supported Slice List
@@ -3767,6 +3528,7 @@ uint8_t parseMacCellCfg(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,MacCellCfg *m
    }
    return ROK;
 }
+#endif
 
 /*******************************************************************
  *
@@ -3872,22 +3634,13 @@ uint8_t parsePuschCfgCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,PuschCfgC
          child = cur->xmlChildrenNode;
          while (child != NULL)
          {
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"LIST")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PUSCH_TIME_DOM_RSRC_ALLOC")) && (child->ns == ns))
             {
-               rsrcNode = child->xmlChildrenNode;
-               while (rsrcNode != NULL)
+               if(parsePuschCmnTimeDomRsrcAlloc(doc, ns, child, &puschCfgCmn->timeDomAllocList[rsrcIdx]) != ROK)
                {
-                  if ((!xmlStrcmp(rsrcNode->name, (const xmlChar *)"PUSCH_TIME_DOM_RSRC_ALLOC")) \
-                     && (rsrcNode->ns == ns))
-                  {
-                     if(parsePuschCmnTimeDomRsrcAlloc(doc, ns, rsrcNode, &puschCfgCmn->timeDomAllocList[rsrcIdx]) != ROK)
-                     {
-                        return RFAILED;
-                     }
-                     rsrcIdx++;
-                  }
-                  rsrcNode = rsrcNode->next;
+                  return RFAILED;
                }
+               rsrcIdx++;
             }
             child = child->next;
          }
@@ -4092,9 +3845,15 @@ uint8_t parseRachCfgCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, RachCfgCo
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t parseScsSpecCarrier(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,ScsSpecCarrier *scsSpecCrr)
+uint8_t parseScsSpecCarrier(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ScsSpecCarrier *scsSpecCrr)
 {
    memset(scsSpecCrr, 0, sizeof(ScsSpecCarrier));
+
+#ifdef O1_ENABLE
+   scsSpecCrr->scsOffset = cellParams.ssbOffset;
+   scsSpecCrr->scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing);
+   scsSpecCrr->scsBw = cellParams.bSChannelBwUL;
+#else
    cur = cur -> xmlChildrenNode;
    while(cur != NULL)
    {
@@ -4114,6 +3873,7 @@ uint8_t parseScsSpecCarrier(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,ScsSpecCa
       }
       cur = cur -> next;
    }
+#endif   
    return ROK;
 }
 
@@ -4285,17 +4045,17 @@ uint8_t parsePcchCfg(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,PcchCfg *pcchCfg
    cur = cur -> xmlChildrenNode;
    while(cur != NULL)
    {
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"DFLT_PAGING_CYCLE")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"DEFAULT_PAGING_CYCLE")) && (cur->ns == ns))
       {
          pcchCfg->dfltPagingCycle = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NAND_PAGING_FRM_OFFSET")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NAND_PAGING_FRAME_OFFSET")) && (cur->ns == ns))
       {
          pcchCfg->nAndPagingFrmOffsetType = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"PAGE_FRM_OFFSET")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"PAGE_FRAME_OFFSET")) && (cur->ns == ns))
       {
          pcchCfg->pageFrameOffset = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
@@ -4310,25 +4070,17 @@ uint8_t parsePcchCfg(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,PcchCfg *pcchCfg
          pcchCfg->firstPDCCHMontioringType = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"LIST")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"FIRST_PDCCH_LIST")) && (cur->ns == ns))
       {
          child = cur->xmlChildrenNode;
-         while(child != NULL)
+         while (child != NULL)
          {
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"FIRST_PDCCH_LIST")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"FIRST_PDCCH_MONITORING_INFO")) && (child->ns == ns))
             {
-               firstPdcchNode = child->xmlChildrenNode;
-               while (firstPdcchNode != NULL)
-               {
-                  if ((!xmlStrcmp(firstPdcchNode->name, (const xmlChar *)"FIRST_PDCCH_MONITORING_INFO")) && (firstPdcchNode->ns == ns))
-                  {
-                     pcchCfg->firstPDCCHMontioringInfo[idx] = atoi((char *)xmlNodeListGetString(doc, firstPdcchNode->xmlChildrenNode, 1));
-                     idx++;
-                  }
-                  firstPdcchNode = firstPdcchNode->next;
-               }
+               pcchCfg->firstPDCCHMontioringInfo[idx] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
+               idx++;
             }
-            child = child -> next;
+            child = child->next;
          }
       }
       cur = cur -> next;
@@ -4411,7 +4163,6 @@ uint8_t parsePdschCfgCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,PdschCfgC
 {
    uint8_t     idx = 0;
    xmlNodePtr  child = NULLP; 
-   xmlNodePtr  listChild = NULLP; 
 
    memset(pdschCfgCmn, 0, sizeof(PdschCfgCommon));
    cur = cur -> xmlChildrenNode;
@@ -4432,21 +4183,13 @@ uint8_t parsePdschCfgCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,PdschCfgC
          child = cur->xmlChildrenNode;
          while (child != NULL)
          {
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"LIST")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"PDSCH_TIME_DOM_RSRC_ALLOC")) && (child->ns == ns))
             {
-               listChild = child->xmlChildrenNode;
-               while (listChild != NULL)
+               if(parsePdschTimeDomRsrcAlloc(doc, ns, child, &pdschCfgCmn->timeDomAlloc[idx]) != ROK)
                {
-                  if ((!xmlStrcmp(listChild->name, (const xmlChar *)"PDSCH_TIME_DOM_RSRC_ALLOC")) && (listChild->ns == ns))
-                  {
-                     if(parsePdschTimeDomRsrcAlloc(doc, ns, listChild, &pdschCfgCmn->timeDomAlloc[idx]) != ROK)
-                     {
-                        return RFAILED;
-                     }
-                     idx++;
-                  }
-                  listChild = listChild->next;
+                  return RFAILED;
                }
+               idx++;
             }
             child = child->next;
          }
@@ -4511,7 +4254,6 @@ uint8_t parsePdcchConfigCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, Pdcch
 {
    uint8_t idx = 0;
    xmlNodePtr child = NULLP;
-   xmlNodePtr listChild = NULLP;
 
    memset(pdccgCfgCmn, 0, sizeof( PdcchCfgCommon));
    cur = cur -> xmlChildrenNode;
@@ -4542,64 +4284,56 @@ uint8_t parsePdcchConfigCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, Pdcch
          pdccgCfgCmn->ctrlRsrcSetId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MONITOR_SLOT_PRD_OFFPRESENT")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MONITOR_SLOT_PERIOD_OFFSET_PRESENT")) && (cur->ns == ns))
       {
          pdccgCfgCmn->monitorSlotPrdAndOffPresent = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"LIST")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MONITOR_LIST")) && (cur->ns == ns))
       {
          child = cur->xmlChildrenNode;
          while (child)
          {
-            if ((!xmlStrcmp(child->name, (const xmlChar *)"MONITOR_LIST")) && (child->ns == ns))
+            if ((!xmlStrcmp(child->name, (const xmlChar *)"MONITOR_SYMBOL_IN_SLOT")) && (child->ns == ns))
             {
-               listChild = child->xmlChildrenNode;
-               while (listChild != NULL)
-               {
-                  if ((!xmlStrcmp(listChild->name, (const xmlChar *)"MONITOR_SYMBOL_INSLOT")) && (listChild->ns == ns))
-                  {
-                     pdccgCfgCmn->monitorSymbolsInSlot[idx] = atoi((char *)xmlNodeListGetString(doc, listChild->xmlChildrenNode, 1));
-                     idx++;
-                  }
-                  listChild = listChild->next;
-               }
+               pdccgCfgCmn->monitorSymbolsInSlot[idx] = atoi((char *)xmlNodeListGetString(doc, child->xmlChildrenNode, 1));
+               idx++;
             }
             child = child->next;
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUMC_AGG_LVL1")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_CANDIDATE_AGG_LVL_1")) && (cur->ns == ns))
       {
          pdccgCfgCmn->numCandAggLvl1 = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUMC_AGG_LVL2")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_CANDIDATE_AGG_LVL_2")) && (cur->ns == ns))
       {
          pdccgCfgCmn->numCandAggLvl2 = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUMC_AGG_LVL4")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_CANDIDATE_AGG_LVL_4")) && (cur->ns == ns))
       {
          pdccgCfgCmn->numCandAggLvl4 = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUMC_AGG_LVL8")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_CANDIDATE_AGG_LVL_8")) && (cur->ns == ns))
       {
          pdccgCfgCmn->numCandAggLvl8 = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUMC_AGG_LVL16")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_CANDIDATE_AGG_LVL_16")) && (cur->ns == ns))
       {
          pdccgCfgCmn->numCandAggLvl16 = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SEARCH_SPC_TYPE")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SEARCH_SPACE_TYPE")) && (cur->ns == ns))
       {
          pdccgCfgCmn->searchSpcType = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"PDCCH_SERACH_SPACE_DCI_FORMAT")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"PDCCH_SEARCH_SPACE_DCI_FORMAT")) && (cur->ns == ns))
       {
          pdccgCfgCmn->commSrchSpcDciFrmt = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
@@ -4614,7 +4348,7 @@ uint8_t parsePdcchConfigCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, Pdcch
          pdccgCfgCmn->pagingSearchSpc = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"RA_PDCCH_SEARCH_SPACE_ID_PAGING")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"PDCCH_SEARCH_SPACE_ID_RA")) && (cur->ns == ns))
       {
          pdccgCfgCmn->raSearchSpc = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
@@ -4702,7 +4436,6 @@ uint8_t parseDlCfgCommon(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,DlCfgCommon
             return RFAILED;
          }
       }
-
       cur = cur -> next;
    }
    return ROK;
@@ -4731,11 +4464,14 @@ uint8_t parseSrvCellCfgCmnSib(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,SrvCell
    cur = cur -> xmlChildrenNode;
    while(cur != NULL)
    {
+#ifdef O1_ENABLE
+      srvCellCfgCmnSib->scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing);
+#else
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"NR_SCS")) && (cur->ns == ns))
       {
          srvCellCfgCmnSib->scs = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
-
+#endif
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"SSB_POS_INBURST")) && (cur->ns == ns))
       {
          srvCellCfgCmnSib->ssbPosInBurst = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
@@ -4809,7 +4545,7 @@ uint8_t parseSiSchedInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,SiSchedInfo
          siSchedInfo->winLen = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"BROADCAST_STA")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"BROADCAST_STATUS")) && (cur->ns == ns))
       {
          siSchedInfo->broadcastSta = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
@@ -4824,7 +4560,7 @@ uint8_t parseSiSchedInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,SiSchedInfo
          siSchedInfo->sibType = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SIB1_VAL_TAG")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SIB1_VALUE_TAG")) && (cur->ns == ns))
       {
          siSchedInfo->sibValTag = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
@@ -4858,6 +4594,22 @@ uint8_t parseSib1Params(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,Sib1Params *s
    cur = cur -> xmlChildrenNode;
    while(cur != NULL)
    {
+#ifdef O1_ENABLE
+   sib1Params-> tac = cellParams.nRTAC;
+   sib1Params->cellIdentity = CELL_IDENTITY *  cellParams.cellLocalId;
+   DU_LOG("\nDEBUG --> DU_APP: readCfg(): OAM CellLocalId=%d", sib1Params->cellIdentity);
+#else
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"TAC")) && (cur->ns == ns))
+      {
+         sib1Params-> tac = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"CELL_IDENTITY")) && (cur->ns == ns))
+      {
+         sib1Params->cellIdentity = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+      }
+#endif
+
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"PLMN")) && (cur->ns == ns))
       {
          if(parsePlmn(doc, ns, cur, &sib1Params->plmn) != ROK)
@@ -4866,21 +4618,11 @@ uint8_t parseSib1Params(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,Sib1Params *s
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"TAC")) && (cur->ns == ns))
-      {
-         sib1Params-> tac = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-      }
-
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"RANAC")) && (cur->ns == ns))
       {
          sib1Params->ranac = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"CELL_IDENTITY")) && (cur->ns == ns))
-      {
-         sib1Params->cellIdentity = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-      }
-
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"CELL_RESVD_OPUSE")) && (cur->ns == ns))
       {
          sib1Params->cellResvdForOpUse = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
@@ -4909,7 +4651,7 @@ uint8_t parseSib1Params(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,Sib1Params *s
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SRV_CELLCFG_COM_SIB")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SRV_CELL_CFG_COM_SIB")) && (cur->ns == ns))
       {
          if(parseSrvCellCfgCmnSib(doc, ns, cur, &sib1Params->srvCellCfgCommSib) != ROK)
          {
@@ -4922,6 +4664,7 @@ uint8_t parseSib1Params(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,Sib1Params *s
    return ROK;
 }
 
+#ifndef O1_ENABLE
 /*******************************************************************
  *
  * @brief Fill RRM Policy List
@@ -5011,7 +4754,6 @@ uint8_t parseRrmPolicyRatio(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, RrmPolic
    return ROK;
 }
 
-/*******************************************************************
 /*******************************************************************
  *
  * @brief Fill MAC Slice RRM Policy
@@ -5043,12 +4785,12 @@ uint8_t parseMacSliceRrmPolicy(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, MacSl
          rrmPolicy->resourceType = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_RRC_POLICY_MEM")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_RRM_POLICY_MEMBER")) && (cur->ns == ns))
       {
          rrmPolicy->numOfRrmPolicyMem = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"RRM_POLICY_MUM_LIST")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"RRM_POLICY_MEMBER_LIST")) && (cur->ns == ns))
       {
          DU_ALLOC_SHRABL_BUF(rrmPolicy->rRMPolicyMemberList,\
                rrmPolicy->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*));
@@ -5113,7 +4855,7 @@ uint8_t parseMacSliceCfgReq(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,MacSliceC
    cur = cur -> xmlChildrenNode;
    while(cur != NULL)
    {
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_RRC_POLICY")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"NUM_RRM_POLICY")) && (cur->ns == ns))
       {
          macSliceCfgReq->numOfRrmPolicy = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
@@ -5556,7 +5298,6 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
          duCfgParam.egtpParams.maxTunnelId = duCfgParam.maxNumDrb * duCfgParam.maxSupportedUes; 
       }
 
-#ifdef XML_BASED_CONFIG
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"MIB_PARAMS")) && (cur->ns == ns))
       {
          if(parseMibParams(doc, ns, cur, &duCfgParam.mibParams) != ROK)
@@ -5565,30 +5306,33 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_DU_SRVD_CELL_INFO")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SIB1_PARAMS")) && (cur->ns == ns))
       {
-         if(parseF1DuServedCellInfo(doc, ns, cur, &duCfgParam.srvdCellLst[0]) != ROK)
+         if(parseSib1Params(doc, ns, cur, &duCfgParam.sib1Params) != ROK)
          {
             return RFAILED;
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAC_CELL_CFG")) && (cur->ns == ns))
+#ifdef XML_BASED_CONFIG
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_DU_SRVD_CELL_INFO")) && (cur->ns == ns))
       {
-         if(parseMacCellCfg(doc, ns, cur, &duCfgParam.macCellCfg) != ROK)
+         if(parseF1DuServedCellInfo(doc, ns, cur, &duCfgParam.srvdCellLst[0]) != ROK)
          {
             return RFAILED;
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SIB1_PARAMS")) && (cur->ns == ns))
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAC_CELL_CFG")) && (cur->ns == ns))
       {
-         if(parseSib1Params(doc, ns, cur, &duCfgParam.sib1Params) != ROK)
+         if(parseMacCellCfg(doc, ns, cur, &duCfgParam.macCellCfg) != ROK)
          {
             return RFAILED;
          }
       }
+#endif      
 
+#ifndef O1_ENABLE
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"SLICE_CFG")) && (cur->ns == ns))
       {
          if(parseMacSliceCfgReq(doc, ns, cur, &duCfgParam.tempSliceCfg) != ROK)
@@ -6376,7 +6120,7 @@ void printDuConfig()
    for(policyIdx = 0; policyIdx < macSliceCfg->numOfRrmPolicy; policyIdx++)
    {
       rrmPolicy = macSliceCfg->listOfRrmPolicy[policyIdx];
-      DU_LOG("RRM Policy [%d]", policyIdx);
+      DU_LOG("RRM Policy [%d]\n", policyIdx);
       DU_LOG("\tResource Type %d\n", rrmPolicy->resourceType);
 
       rrmPolicyRatio = &rrmPolicy ->policyRatio;
@@ -6388,7 +6132,7 @@ void printDuConfig()
       for(memIdx = 0; memIdx < rrmPolicy->numOfRrmPolicyMem; memIdx++)
       {
          rrmPolicyMemberList = rrmPolicy->rRMPolicyMemberList[memIdx];
-         DU_LOG("\tRRM Policy Member [%d]", memIdx);
+         DU_LOG("\tRRM Policy Member [%d]\n", memIdx);
          DU_LOG("\t\tPLMN : mcc[0] %d\n", rrmPolicyMemberList->plmn.mcc[0]);
          DU_LOG("\t\tPLMN : mcc[1] %d\n", rrmPolicyMemberList->plmn.mcc[1]);
          DU_LOG("\t\tPLMN : mcc[2] %d\n", rrmPolicyMemberList->plmn.mcc[2]);