X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_cfg.c;h=5b41aacf5c4012ac925d2332f73e245d87f8add0;hb=7fb274708be5434e1573315b106c554d5562ac42;hp=a34434057e55d91a8e0e317ffb62a40bcfa999a5;hpb=834004e09017b5b86cb738be98a7a1be79c0a9b0;p=o-du%2Fl2.git diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index a34434057..5b41aacf5 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -53,10 +53,8 @@ #include "BWP-UplinkCommon.h" #ifdef O1_ENABLE - -#include "Config.h" +#include "ConfigInterface.h" extern StartupConfig g_cfg; - #endif DuCfgParams duCfgParam; @@ -76,6 +74,7 @@ char encBuf[ENC_BUF_MAX_LEN]; 8 UL UL UL UL UL UL UL UL UL UL UL UL UL UL 9 UL UL UL UL UL UL UL UL UL UL UL UL UL UL */ + #ifdef NR_TDD /******************************************************************* * @@ -143,6 +142,8 @@ void FillSlotConfig() /* This function is used to fill up the cell configuration for CL */ uint8_t readMacCfg() { + uint8_t idx; + duCfgParam.macCellCfg.carrierId = CARRIER_IDX; /* Cell configuration */ @@ -153,7 +154,11 @@ uint8_t readMacCfg() /* DL carrier configuration */ duCfgParam.macCellCfg.dlCarrCfg.pres = TRUE; +#ifdef NR_TDD + duCfgParam.macCellCfg.dlCarrCfg.bw = BANDWIDTH_100MHZ; +#else duCfgParam.macCellCfg.dlCarrCfg.bw = BANDWIDTH_20MHZ; +#endif duCfgParam.macCellCfg.dlCarrCfg.freq = NR_DL_ARFCN; duCfgParam.macCellCfg.dlCarrCfg.k0[0] = 1; duCfgParam.macCellCfg.dlCarrCfg.k0[1] = 1; @@ -169,7 +174,11 @@ uint8_t readMacCfg() /* UL Carrier configuration */ duCfgParam.macCellCfg.ulCarrCfg.pres = TRUE; +#ifdef NR_TDD + duCfgParam.macCellCfg.dlCarrCfg.bw = BANDWIDTH_100MHZ; +#else duCfgParam.macCellCfg.ulCarrCfg.bw = BANDWIDTH_20MHZ; +#endif duCfgParam.macCellCfg.ulCarrCfg.freq = NR_UL_ARFCN; duCfgParam.macCellCfg.ulCarrCfg.k0[0] = 1; duCfgParam.macCellCfg.ulCarrCfg.k0[1] = 1; @@ -188,7 +197,11 @@ uint8_t readMacCfg() /* SSB configuration */ duCfgParam.macCellCfg.ssbCfg.ssbPbchPwr = SSB_PBCH_PWR; duCfgParam.macCellCfg.ssbCfg.bchPayloadFlag = BCH_PAYLOAD; - duCfgParam.macCellCfg.ssbCfg.scsCmn = SUBCARRIER_SPACING; +#ifdef NR_TDD + duCfgParam.macCellCfg.ssbCfg.scsCmn = SCS_30KHZ; +#else + duCfgParam.macCellCfg.ssbCfg.scsCmn = SCS_15KHZ; +#endif duCfgParam.macCellCfg.ssbCfg.ssbOffsetPointA = OFFSET_TO_POINT_A; duCfgParam.macCellCfg.ssbCfg.betaPss = BETA_PSS; duCfgParam.macCellCfg.ssbCfg.ssbPeriod = SSB_PRDCTY_MS_20; @@ -257,7 +270,6 @@ uint8_t readMacCfg() DU_ALLOC_SHRABL_BUF(duCfgParam.macCellCfg.sib1Cfg.sib1Pdu,duCfgParam.srvdCellLst[0].duSysInfo.sib1Len); memcpy(duCfgParam.macCellCfg.sib1Cfg.sib1Pdu, duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg, \ duCfgParam.srvdCellLst[0].duSysInfo.sib1Len); - duCfgParam.macCellCfg.sib1Cfg.sib1NewTxPeriod = SIB1_NEW_TX_PERIOD; duCfgParam.macCellCfg.sib1Cfg.sib1RepetitionPeriod = SIB1_REPETITION_PERIOD; duCfgParam.macCellCfg.sib1Cfg.coresetZeroIndex = CORESET_0_INDEX; duCfgParam.macCellCfg.sib1Cfg.searchSpaceZeroIndex = SEARCHSPACE_0_INDEX; @@ -267,7 +279,11 @@ uint8_t readMacCfg() /* fill Intial DL BWP */ duCfgParam.macCellCfg.initialDlBwp.bwp.firstPrb = 0; duCfgParam.macCellCfg.initialDlBwp.bwp.numPrb = TOTAL_PRB_20MHZ_MU0; /* configured to total BW */ - duCfgParam.macCellCfg.initialDlBwp.bwp.scs = SUBCARRIER_SPACING; /* numerology is 0, 15Khz */ +#ifdef NR_TDD + duCfgParam.macCellCfg.initialDlBwp.bwp.scs = SCS_30KHZ; /* numerology is 1, 30Khz */ +#else + duCfgParam.macCellCfg.initialDlBwp.bwp.scs = SCS_15KHZ; /* numerology is 0, 15Khz */ +#endif duCfgParam.macCellCfg.initialDlBwp.bwp.cyclicPrefix = NORMAL_CYCLIC_PREFIX; duCfgParam.macCellCfg.initialDlBwp.pdcchCommon.commonSearchSpace.searchSpaceId = SEARCHSPACE_1_INDEX; duCfgParam.macCellCfg.initialDlBwp.pdcchCommon.commonSearchSpace.coresetId = CORESET_0_INDEX; @@ -286,30 +302,57 @@ uint8_t readMacCfg() candidate.aggLevel8 = 1; duCfgParam.macCellCfg.initialDlBwp.pdcchCommon.commonSearchSpace. candidate.aggLevel16 = 0; - duCfgParam.macCellCfg.initialDlBwp.pdschCommon.k0 = PDSCH_K0; - duCfgParam.macCellCfg.initialDlBwp.pdschCommon.mappingType = + + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.numTimeDomAlloc = 2; + idx = 0; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].k0 = PDSCH_K0_CFG1; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].mappingType = PDSCH_MAPPING_TYPE_A; - duCfgParam.macCellCfg.initialDlBwp.pdschCommon.startSymbol = + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].startSymbol = PDSCH_START_SYMBOL; - duCfgParam.macCellCfg.initialDlBwp.pdschCommon.lengthSymbol = + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].lengthSymbol = PDSCH_LENGTH_SYMBOL; + + idx++; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].k0 = PDSCH_K0_CFG2; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].mappingType = + PDSCH_MAPPING_TYPE_A; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].startSymbol = + PDSCH_START_SYMBOL; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].lengthSymbol = + PDSCH_LENGTH_SYMBOL; + /* ra-searchSpace ID is set to 1 */ duCfgParam.macCellCfg.initialDlBwp.pdcchCommon.raSearchSpaceId = SEARCHSPACE_1_INDEX; /* fill Intial UL BWP */ duCfgParam.macCellCfg.initialUlBwp.bwp.firstPrb = 0; duCfgParam.macCellCfg.initialUlBwp.bwp.numPrb = TOTAL_PRB_20MHZ_MU0; /* configured to total BW */ - duCfgParam.macCellCfg.initialUlBwp.bwp.scs = SUBCARRIER_SPACING; /* numerology is 0, 15Khz */ +#ifdef NR_TDD + duCfgParam.macCellCfg.initialUlBwp.bwp.scs = SCS_30KHZ; /* numerology is 1, 30Khz */ +#else + duCfgParam.macCellCfg.initialUlBwp.bwp.scs = SCS_15KHZ; /* numerology is 0, 15Khz */ +#endif duCfgParam.macCellCfg.initialUlBwp.bwp.cyclicPrefix = NORMAL_CYCLIC_PREFIX; - duCfgParam.macCellCfg.initialUlBwp.puschCommon.k2 = PUSCH_K2; - duCfgParam.macCellCfg.initialUlBwp.puschCommon.mappingType = + duCfgParam.macCellCfg.initialUlBwp.puschCommon.numTimeDomRsrcAlloc = 2; + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[0].k2 = PUSCH_K2_CFG1; + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[0].mappingType = + PUSCH_MAPPING_TYPE_A; + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[0].startSymbol = + PUSCH_START_SYMBOL; + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[0].symbolLength = + PUSCH_LENGTH_SYMBOL; + + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[1].k2 = PUSCH_K2_CFG2; + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[1].mappingType = PUSCH_MAPPING_TYPE_A; - duCfgParam.macCellCfg.initialUlBwp.puschCommon.startSymbol = + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[1].startSymbol = PUSCH_START_SYMBOL; - duCfgParam.macCellCfg.initialUlBwp.puschCommon.lengthSymbol = + duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[1].symbolLength = PUSCH_LENGTH_SYMBOL; duCfgParam.macCellCfg.dmrsTypeAPos = DMRS_TYPE_A_POS; + /* fill PUCCH config common */ duCfgParam.macCellCfg.initialUlBwp.pucchCommon.pucchResourceCommon = PUCCH_RSRC_COMMON; duCfgParam.macCellCfg.initialUlBwp.pucchCommon.pucchGroupHopping = PUCCH_GROUP_HOPPING; @@ -405,11 +448,16 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) TddUlDlCfgCommon tddCfg; /* Configuring DL Config Common for SIB1*/ - srvCellCfgComm->dlCfg.freqBandInd = NR_FREQ_BAND_IND; + srvCellCfgComm->dlCfg.freqBandInd = NR_FREQ_BAND; srvCellCfgComm->dlCfg.offsetToPointA = OFFSET_TO_POINT_A; srvCellCfgComm->dlCfg.dlScsCarrier.scsOffset = SSB_SUBCARRIER_OFFSET; - srvCellCfgComm->dlCfg.dlScsCarrier.scs = SUBCARRIER_SPACING; +#ifdef NR_TDD + srvCellCfgComm->dlCfg.dlScsCarrier.scs = SCS_30KHZ; + srvCellCfgComm->dlCfg.dlScsCarrier.scsBw = BANDWIDTH_100MHZ; +#else + srvCellCfgComm->dlCfg.dlScsCarrier.scs = SCS_15KHZ; srvCellCfgComm->dlCfg.dlScsCarrier.scsBw = BANDWIDTH_20MHZ; +#endif srvCellCfgComm->dlCfg.locAndBw = FREQ_LOC_BW; /* Configuring PDCCH Config Common For SIB1 */ @@ -438,10 +486,17 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) /* Configuring PDSCH Config Common For SIB1 */ pdschCfg.present = BWP_DownlinkCommon__pdsch_ConfigCommon_PR_setup; - pdschCfg.k0 = PDSCH_K0; - pdschCfg.mapType = \ + 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.sliv = calcSliv(PDSCH_START_SYMBOL,PDSCH_LENGTH_SYMBOL); + pdschCfg.timeDomAlloc[1].sliv = calcSliv(PDSCH_START_SYMBOL,PDSCH_LENGTH_SYMBOL); + srvCellCfgComm->dlCfg.pdschCfg = pdschCfg; /* Configuring BCCH Config for SIB1 */ @@ -457,8 +512,13 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) /* Configuring UL Config Common */ srvCellCfgComm->ulCfg.ulScsCarrier.scsOffset = SSB_SUBCARRIER_OFFSET; - srvCellCfgComm->ulCfg.ulScsCarrier.scs = SUBCARRIER_SPACING; +#ifdef NR_TDD + srvCellCfgComm->ulCfg.ulScsCarrier.scs = SCS_30KHZ; + srvCellCfgComm->ulCfg.ulScsCarrier.scsBw = BANDWIDTH_100MHZ; +#else + srvCellCfgComm->ulCfg.ulScsCarrier.scs = SCS_15KHZ; srvCellCfgComm->ulCfg.ulScsCarrier.scsBw = BANDWIDTH_20MHZ; +#endif srvCellCfgComm->ulCfg.pMax = UL_P_MAX; srvCellCfgComm->ulCfg.locAndBw = FREQ_LOC_BW; srvCellCfgComm->ulCfg.timeAlignTimerComm = TimeAlignmentTimer_infinity; @@ -472,7 +532,7 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) 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_sl20; + rachCfg.raRspWindow = RACH_ConfigGeneric__ra_ResponseWindow_sl10; rachCfg.numRaPreamble = NUM_RA_PREAMBLE; rachCfg.ssbPerRachOccPresent = \ RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one; @@ -486,10 +546,14 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) srvCellCfgComm->ulCfg.rachCfg = rachCfg; /* Configuring PUSCH Config Common for SIB1 */ - puschCfg.present = BWP_UplinkCommon__pusch_ConfigCommon_PR_setup; - puschCfg.k2 = PUSCH_K2; - puschCfg.mapType = PUSCH_TimeDomainResourceAllocation__mappingType_typeA; - puschCfg.sliv = calcSliv(PUSCH_START_SYMBOL,PUSCH_LENGTH_SYMBOL); + 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; @@ -590,12 +654,16 @@ uint8_t readCfg() /* Mib Params */ mib.sysFrmNum = SYS_FRAME_NUM; +#ifdef NR_TDD + mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs30or120; +#else mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs15or60; - mib.ssb_SubcarrierOffset = SSB_SC_OFFSET; +#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_barred; + mib.cellBarred = MIB__cellBarred_notBarred; mib.intraFreqReselection = MIB__intraFreqReselection_notAllowed; duCfgParam.mibParams = mib; @@ -753,14 +821,13 @@ uint8_t readCfg() /*gnb DU System Info mib msg*/ BuildMibMsg(); - DU_ALLOC(duCfgParam.srvdCellLst[i].duSysInfo.mibMsg,\ - strlen(encBuf)); + DU_ALLOC(duCfgParam.srvdCellLst[i].duSysInfo.mibMsg, encBufSize); if(!(duCfgParam.srvdCellLst[i].duSysInfo.mibMsg)) { DU_LOG("\nERROR --> DU APP : Memory allocation failure at readCfg"); return RFAILED; } - strcpy((char *)duCfgParam.srvdCellLst[i].duSysInfo.mibMsg, encBuf); + memcpy(duCfgParam.srvdCellLst[i].duSysInfo.mibMsg, encBuf, encBufSize); duCfgParam.srvdCellLst[i].duSysInfo.mibLen = encBufSize; /*gnb DU System Info mib msg*/