X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_cfg.c;h=c8bb7ed1e36af6befd560b80c9a28fa93ef81ff9;hb=a6fdf00681f781fbccf7aa4bf95582f20e3039bb;hp=be006395c07ebbacca29c8c742c620b64985425c;hpb=6178d5e32f0c57e198de80afc23b92c635e4f6df;p=o-du%2Fl2.git diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index be006395c..c8bb7ed1e 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -27,10 +27,10 @@ #include "du_cfg.h" #include "du_mgr.h" #include "du_utils.h" +#include "du_f1ap_conversions.h" #include "OCTET_STRING.h" #include "BIT_STRING.h" #include "odu_common_codec.h" -#include "du_sys_info_hdl.h" #include "MIB.h" #include "SearchSpace.h" #include "SIB-TypeInfo.h" @@ -51,6 +51,8 @@ #include "RACH-ConfigCommon.h" #include "BWP-DownlinkCommon.h" #include "BWP-UplinkCommon.h" +#include "TDD-UL-DL-ConfigCommon.h" +#include "du_sys_info_hdl.h" #ifdef O1_ENABLE #include "CmInterface.h" @@ -121,6 +123,7 @@ void FillSlotConfig() } #endif + /******************************************************************* * @brief Reads the CL Configuration. * @@ -138,8 +141,6 @@ void FillSlotConfig() * * ****************************************************************/ - -/* This function is used to fill up the cell configuration for CL */ uint8_t readMacCfg() { uint8_t idx=0, sliceIdx=0; @@ -148,21 +149,23 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.carrierId = CARRIER_IDX; /* Cell configuration */ - duCfgParam.macCellCfg.cellId = NR_CELL_ID; - duCfgParam.macCellCfg.phyCellId = NR_PCI; duCfgParam.macCellCfg.numerology = NR_NUMEROLOGY; duCfgParam.macCellCfg.dupType = DUPLEX_MODE; /* DL carrier configuration */ duCfgParam.macCellCfg.dlCarrCfg.pres = TRUE; #ifdef O1_ENABLE + duCfgParam.macCellCfg.cellId = cellParams.cellLocalId; + duCfgParam.macCellCfg.phyCellId = cellParams.nRPCI; duCfgParam.macCellCfg.dlCarrCfg.bw = cellParams.bSChannelBwUL; duCfgParam.macCellCfg.dlCarrCfg.freq = cellParams.bSChannelBwDL; #else + duCfgParam.macCellCfg.cellId = NR_CELL_ID; + duCfgParam.macCellCfg.phyCellId = NR_PCI; duCfgParam.macCellCfg.dlCarrCfg.bw = NR_BANDWIDTH; duCfgParam.macCellCfg.dlCarrCfg.freq = NR_DL_ARFCN; - #endif + duCfgParam.macCellCfg.dlCarrCfg.k0[0] = 1; duCfgParam.macCellCfg.dlCarrCfg.k0[1] = 1; duCfgParam.macCellCfg.dlCarrCfg.k0[2] = 1; @@ -177,8 +180,13 @@ uint8_t readMacCfg() /* UL Carrier configuration */ duCfgParam.macCellCfg.ulCarrCfg.pres = TRUE; - duCfgParam.macCellCfg.dlCarrCfg.bw = NR_BANDWIDTH; - duCfgParam.macCellCfg.ulCarrCfg.freq = NR_UL_ARFCN; +#ifdef O1_ENABLE + duCfgParam.macCellCfg.ulCarrCfg.bw = cellParams.bSChannelBwUL; + duCfgParam.macCellCfg.ulCarrCfg.freq = cellParams.bSChannelBwDL; +#else + duCfgParam.macCellCfg.ulCarrCfg.bw = NR_BANDWIDTH; + duCfgParam.macCellCfg.ulCarrCfg.freq = NR_UL_ARFCN; +#endif duCfgParam.macCellCfg.ulCarrCfg.k0[0] = 1; duCfgParam.macCellCfg.ulCarrCfg.k0[1] = 1; duCfgParam.macCellCfg.ulCarrCfg.k0[2] = 1; @@ -199,8 +207,8 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.ssbCfg.ssbOffsetPointA = OFFSET_TO_POINT_A; duCfgParam.macCellCfg.ssbCfg.betaPss = BETA_PSS; #ifdef O1_ENABLE - duCfgParam.macCellCfg.ssbCfg.scsCmn = cellParams.ssbSubCarrierSpacing; - duCfgParam.macCellCfg.ssbCfg.ssbPeriod = cellParams.ssbPeriodicity; + duCfgParam.macCellCfg.ssbCfg.scsCmn = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing); + duCfgParam.macCellCfg.ssbCfg.ssbPeriod = convertScsPeriodicityToEnum(cellParams.ssbPeriodicity); duCfgParam.macCellCfg.ssbCfg.ssbScOffset = cellParams.ssbOffset; #else duCfgParam.macCellCfg.ssbCfg.scsCmn = NR_SCS; @@ -208,7 +216,6 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.ssbCfg.ssbScOffset = SSB_SUBCARRIER_OFFSET; #endif duCfgParam.macCellCfg.ssbCfg.ssbMask[0] = 1; /* only one SSB is transmitted */ - duCfgParam.macCellCfg.ssbCfg.ssbMask[1] = 0; if(BuildMibPdu() != ROK) { DU_LOG("\nERROR --> Failed to build MIB PDU"); @@ -225,7 +232,7 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.prachCfg.pres = TRUE; duCfgParam.macCellCfg.prachCfg.prachCfgIdx = PRACH_CONFIG_IDX; duCfgParam.macCellCfg.prachCfg.prachSeqLen = PRACH_SEQ_LEN; - duCfgParam.macCellCfg.prachCfg.prachSubcSpacing = fetchScsValue(PRACH_SUBCARRIER_SPACING); + duCfgParam.macCellCfg.prachCfg.prachSubcSpacing = convertScsEnumValToScsVal(PRACH_SUBCARRIER_SPACING); duCfgParam.macCellCfg.prachCfg.prachRstSetCfg = PRACH_RESTRICTED_SET_CFG; duCfgParam.macCellCfg.prachCfg.msg1Fdm = NUM_PRACH_FDM; duCfgParam.macCellCfg.prachCfg.msg1FreqStart = PRACH_FREQ_START; @@ -246,7 +253,10 @@ uint8_t readMacCfg() } *(duCfgParam.macCellCfg.prachCfg.fdm[0].unsuedRootSeq) = UNUSED_ROOT_SEQ; } + + duCfgParam.macCellCfg.prachCfg.totalNumRaPreamble = NUM_RA_PREAMBLE; duCfgParam.macCellCfg.prachCfg.ssbPerRach = SSB_PER_RACH; + duCfgParam.macCellCfg.prachCfg.numCbPreamblePerSsb = CB_PREAMBLE_PER_SSB; duCfgParam.macCellCfg.prachCfg.prachMultCarrBand = PRACH_MULT_CARRIER_BAND; duCfgParam.macCellCfg.prachCfg.raContResTmr = RA_CONT_RES_TIMER; duCfgParam.macCellCfg.prachCfg.rsrpThreshSsb = RSRP_THRESHOLD_SSB; @@ -272,12 +282,24 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.sib1Cfg.coresetZeroIndex = CORESET_0_INDEX; duCfgParam.macCellCfg.sib1Cfg.searchSpaceZeroIndex = SEARCHSPACE_0_INDEX; duCfgParam.macCellCfg.sib1Cfg.sib1Mcs = DEFAULT_MCS; - + + duCfgParam.macCellCfg.sib1Cfg.pagingCfg.numPO = duCfgParam.sib1Params.srvCellCfgCommSib.dlCfg.pcchCfg.ns; + if((duCfgParam.sib1Params.srvCellCfgCommSib.dlCfg.pcchCfg.firstPDCCHMontioringType != \ + PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_NOTHING) && (duCfgParam.macCellCfg.sib1Cfg.pagingCfg.numPO != 0)) + { + duCfgParam.macCellCfg.sib1Cfg.pagingCfg.poPresent = TRUE; + memcpy(duCfgParam.macCellCfg.sib1Cfg.pagingCfg.pagingOcc, + duCfgParam.sib1Params.srvCellCfgCommSib.dlCfg.pcchCfg.firstPDCCHMontioringInfo,MAX_PO_PER_PF); + } + else + { + duCfgParam.macCellCfg.sib1Cfg.pagingCfg.poPresent = FALSE; + } /* 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 = NR_SCS; + duCfgParam.macCellCfg.initialDlBwp.bwp.scs = duCfgParam.macCellCfg.ssbCfg.scsCmn; 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; @@ -297,7 +319,7 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.initialDlBwp.pdcchCommon.commonSearchSpace. candidate.aggLevel16 = 0; - duCfgParam.macCellCfg.initialDlBwp.pdschCommon.numTimeDomAlloc = 2; + duCfgParam.macCellCfg.initialDlBwp.pdschCommon.numTimeDomAlloc = NUM_TIME_DOM_RSRC_ALLOC; idx = 0; duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].k0 = PDSCH_K0_CFG1; duCfgParam.macCellCfg.initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].mappingType = @@ -322,7 +344,7 @@ uint8_t readMacCfg() /* 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 = NR_SCS; + duCfgParam.macCellCfg.initialUlBwp.bwp.scs = duCfgParam.macCellCfg.ssbCfg.scsCmn; duCfgParam.macCellCfg.initialUlBwp.bwp.cyclicPrefix = NORMAL_CYCLIC_PREFIX; duCfgParam.macCellCfg.initialUlBwp.puschCommon.numTimeDomRsrcAlloc = 2; duCfgParam.macCellCfg.initialUlBwp.puschCommon.timeDomRsrcAllocList[0].k2 = PUSCH_K2_CFG1; @@ -348,7 +370,7 @@ uint8_t readMacCfg() duCfgParam.macCellCfg.initialUlBwp.pucchCommon.pucchGroupHopping = PUCCH_GROUP_HOPPING; /* Plmn And SNSSAI Configuration */ - memset(&duCfgParam.macCellCfg.plmnInfoList.plmn, &duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.srvdPlmn[0].plmn,\ + memcpy(&duCfgParam.macCellCfg.plmnInfoList.plmn, &duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.srvdPlmn[0].plmn,\ sizeof(Plmn)); taiSliceSuppLst = &duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.srvdPlmn[0].taiSliceSuppLst; duCfgParam.macCellCfg.plmnInfoList.numSupportedSlice = taiSliceSuppLst->numSupportedSlices; @@ -374,6 +396,28 @@ uint8_t readMacCfg() memcpy(duCfgParam.macCellCfg.plmnInfoList.snssai[sliceIdx], taiSliceSuppLst->snssai[sliceIdx], sizeof(Snssai)); } } + +#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.plmnInfoList.plmn.mcc, 3*sizeof(uint8_t)); + memcpy(rrmPolicy.rRMPolicyMemberList[0].mnc,duCfgParam.macCellCfg.plmnInfoList.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; } @@ -464,12 +508,24 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) 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 */ @@ -478,9 +534,7 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) 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.monitorSlotPrdAndOffPresent = SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1; //pdcchCfg.monitorSlotPrdAndOff = \ SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1; pdcchCfg.monitorSymbolsInSlot[0] = 128; @@ -501,32 +555,41 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) 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].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].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; + srvCellCfgComm->dlCfg.bcchCfg.modPrdCoeff = BCCH_Config__modificationPeriodCoeff_n16; /* Configuring PCCH Config for SIB1 */ - pcchCfg.dfltPagingCycle = PagingCycle_rf256; - pcchCfg.nAndPagingFrmOffPresent = PCCH_Config__nAndPagingFrameOffset_PR_oneT; - pcchCfg.numPagingOcc = PCCH_Config__ns_four; + 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; @@ -542,9 +605,8 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) rachCfg.pwrRampingStep = RACH_ConfigGeneric__powerRampingStep_dB2; rachCfg.raRspWindow = RACH_ConfigGeneric__ra_ResponseWindow_sl10; rachCfg.numRaPreamble = NUM_RA_PREAMBLE; - rachCfg.ssbPerRachOccPresent = \ - RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one; - rachCfg.numSsbPerRachOcc = SSB_PER_RACH; + 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; @@ -583,7 +645,7 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) srvCellCfgComm->tddCfg = tddCfg; srvCellCfgComm->ssbPosInBurst = 192; - srvCellCfgComm->ssbPrdServingCell = SSB_PERIODICITY_20MS; + srvCellCfgComm->ssbPrdServingCell = SSB_PERIODICITY; srvCellCfgComm->ssPbchBlockPwr = SSB_PBCH_PWR; return ROK; @@ -616,9 +678,10 @@ uint8_t readCfg() Sib1Params sib1; F1TaiSliceSuppLst *taiSliceSuppLst; - /* TODO Added these below variable for local testing, once we will receive the - * configuration from O1 we can remove these variable */ +#ifndef O1_ENABLE + /* Note: Added these below variable for local testing*/ Snssai snssai[NUM_OF_SUPPORTED_SLICE] = {{1,{2,3,4}},{5,{6,7,8}}}; +#endif #ifdef O1_ENABLE if( getStartupConfig(&g_cfg) != ROK ) @@ -689,15 +752,16 @@ uint8_t readCfg() sib1.plmn.mcc[2] = PLMN_MCC2; sib1.plmn.mnc[0] = PLMN_MNC0; sib1.plmn.mnc[1] = PLMN_MNC1; - sib1.tac = DU_TAC; sib1.ranac = DU_RANAC; #ifdef O1_ENABLE - sib1.cellIdentity = cellParams.cellLocalId; + sib1.tac = cellParams.nRTAC; + sib1.cellIdentity = CELL_IDENTITY * cellParams.cellLocalId; DU_LOG("\n*********DEBUG --> DU_APP: readCfg(): OAM CellLocalId=%d", \ sib1.cellIdentity); #else - sib1.cellIdentity = CELL_IDENTITY; + sib1.tac = DU_TAC; + sib1.cellIdentity = CELL_IDENTITY * NR_CELL_ID; #endif sib1.cellResvdForOpUse = PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved; sib1.connEstFailCnt = ConnEstFailureControl__connEstFailCount_n3; @@ -736,18 +800,12 @@ uint8_t readCfg() memset(&duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn, 0,\ sizeof(Plmn)); #ifdef O1_ENABLE - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[0] = -cellParams.plmnList[srvdPlmnIdx].mcc[0]; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[1] = -cellParams.plmnList[srvdPlmnIdx].mcc[1]; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[2] = -cellParams.plmnList[srvdPlmnIdx].mcc[2]; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mnc[0] = -cellParams.plmnList[srvdPlmnIdx].mnc[0]; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mnc[1] = -cellParams.plmnList[srvdPlmnIdx].mnc[1]; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mnc[2] = -cellParams.plmnList[srvdPlmnIdx].mnc[2]; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[0] = cellParams.plmnList[srvdPlmnIdx].mcc[0]; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[1] = cellParams.plmnList[srvdPlmnIdx].mcc[1]; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[2] = cellParams.plmnList[srvdPlmnIdx].mcc[2]; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mnc[0] = cellParams.plmnList[srvdPlmnIdx].mnc[0]; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mnc[1] = cellParams.plmnList[srvdPlmnIdx].mnc[1]; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mnc[2] = cellParams.plmnList[srvdPlmnIdx].mnc[2]; #else duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[0] = PLMN_MCC0; duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.cellInfo.srvdPlmn[srvdPlmnIdx].plmn.mcc[1] = PLMN_MCC1; @@ -801,51 +859,61 @@ cellParams.plmnList[srvdPlmnIdx].mnc[2]; return RFAILED; } #ifdef O1_ENABLE - memcpy(taiSliceSuppLst->snssai[sliceIdx]->sd, cellParams.plmnList[sliceIdx].sd, \ -SD_SIZE*sizeof(uint8_t)); - taiSliceSuppLst->snssai[sliceIdx]->sst = cellParams.plmnList[sliceIdx].sst; + memcpy(taiSliceSuppLst->snssai[sliceIdx]->sd, cellParams.plmnList[sliceIdx].sd, \ + SD_SIZE*sizeof(uint8_t)); + taiSliceSuppLst->snssai[sliceIdx]->sst = cellParams.plmnList[sliceIdx].sst; #else memcpy(taiSliceSuppLst->snssai[sliceIdx], &snssai[sliceIdx], sizeof(Snssai)); #endif - } + } } - /* NR Mode info */ -#ifdef O1_ENABLE - /* TAC and EPSTAC */ - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.epsTac = cellParams.nRTAC; //to check and fill - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.tac = cellParams.nRTAC; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn = -cellParams.arfcnUL; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.sulInfo.sulArfcn = -cellParams.arfcnSUL; -#else - /* TAC and EPSTAC */ - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.epsTac = DU_TAC; //to check and fill - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.tac = DU_TAC; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn = NR_UL_ARFCN; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.sulInfo.sulArfcn = SUL_ARFCN; -#endif - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.sulInfo.sulTxBw.nrScs = SCS_15; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.sulInfo.sulTxBw.nrb = NRB_106; -#if 0 /* NR Mode info */ - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.nrArfcn = NR_ARFCN; +#ifdef NR_TDD + /* NR TDD Mode info */ +#ifdef O1_ENABLE + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.nrArfcn = cellParams.arfcnUL; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulArfcn = cellParams.arfcnSUL; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulTxBw.nrScs = convertScsPeriodicityToEnum(cellParams.ssbPeriodicity); +#else + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.nrArfcn = NR_UL_ARFCN; duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulArfcn = SUL_ARFCN; - duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulTxBw.nrScs = SCS_15; + duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulTxBw.nrScs = SSB_PRDCTY_MS_20; +#endif duCfgParam.srvdCellLst[srvdCellIdx].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulTxBw.nrb = NRB_106; for(freqBandIdx=0; freqBandIdx