From: barveankit Date: Thu, 16 Dec 2021 13:15:17 +0000 (+0530) Subject: [Jira Id - ODUHIGH-400] Modified F1Setup and Gnb-Du Config Msg wrt TDD and Remove... X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=o-du%2Fl2.git;a=commitdiff_plain;h=f1832987a80e584b5b4d821d3d4cec54ba2c4677 [Jira Id - ODUHIGH-400] Modified F1Setup and Gnb-Du Config Msg wrt TDD and Remove trigger of F1 Reset Msg from Cu Stub Signed-off-by: barveankit Change-Id: Ie1c52737d8679b7fc7e57961292daa9af71a13dc Signed-off-by: barveankit --- diff --git a/src/5gnrsch/sch_rach.c b/src/5gnrsch/sch_rach.c index 2e0527c7c..562ebe2d0 100644 --- a/src/5gnrsch/sch_rach.c +++ b/src/5gnrsch/sch_rach.c @@ -109,7 +109,7 @@ bool schCheckPrachOcc(SchCellCb *cell, SlotTimingInfo prachOccasionTimingInfo) uint8_t schCalcPrachNumRb(SchCellCb *cell) { uint8_t tableIdx = 0; - uint16_t puschScs = fetchScsValue(cell->cellCfg.schInitialUlBwp.bwp.scs); + uint16_t puschScs = convertScsEnumValToScsVal(cell->cellCfg.schInitialUlBwp.bwp.scs); for(tableIdx=0; tableIdx < MAX_RACH_NUM_RB_IDX; tableIdx++) { diff --git a/src/cm/common_def.c b/src/cm/common_def.c index b29351e5d..897360df4 100644 --- a/src/cm/common_def.c +++ b/src/cm/common_def.c @@ -155,7 +155,7 @@ uint8_t buildPlmnId(Plmn plmn, uint8_t *buf) * * @details * - * Function : fetchScsValue + * Function : convertScsEnumValToScsVal * * Functionality: * Function to map Sub carrier spacing enum value to value in kHz @@ -164,7 +164,7 @@ uint8_t buildPlmnId(Plmn plmn, uint8_t *buf) * @return sub-carrier spacing value in kHz * * ****************************************************************/ -uint16_t fetchScsValue(uint8_t scsEnumValue) +uint16_t convertScsEnumValToScsVal(uint8_t scsEnumValue) { switch(scsEnumValue) { @@ -179,6 +179,87 @@ uint16_t fetchScsValue(uint8_t scsEnumValue) } } +/******************************************************************* + * @brief convert scs offset value into the enum value received from O1 + * + * @details + * + * Function : convertScsValToScsEnum + * + * Functionality: + * - convert scs periodicity value + * + * @params[in] uint32_t num + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ + +uint8_t convertScsValToScsEnum(uint32_t num) +{ + switch(num) + { + case 15: + return SCS_15KHZ; + + case 30: + return SCS_30KHZ; + + case 60: + return SCS_60KHZ; + + case 120: + return SCS_120KHZ; + + case 240: + return SCS_240KHZ; + + default: + return SCS_15KHZ; + } +} + +/******************************************************************* + * @brief convert scs periodicity value into the enum value received from O1 + * + * @details + * + * Function : convertScsPeriodicityToEnum + * + * Functionality: + * - convert scs periodicity value + * + * @params[in] uint32_t num + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t convertScsPeriodicityToEnum(uint32_t num) +{ + switch(num) + { + case 5: + return SCS_5MS; + + case 10: + return SCS_10MS; + + case 20: + return SCS_20MS; + + case 40: + return SCS_40MS; + + case 80: + return SCS_80MS; + + case 160: + return SCS_160MS; + + default: + return SCS_5MS; + } +} /******************************************************************* * * @brief SGetSBuf with debug logs diff --git a/src/cm/common_def.h b/src/cm/common_def.h index 550c72066..2346187d9 100644 --- a/src/cm/common_def.h +++ b/src/cm/common_def.h @@ -254,6 +254,16 @@ typedef enum SCS_240KHZ }SCS; +typedef enum +{ + SCS_5MS, + SCS_10MS, + SCS_20MS, + SCS_40MS, + SCS_80MS, + SCS_160MS +}ScsPeriodicity; + typedef enum { CELL_UP, @@ -309,7 +319,7 @@ uint64_t gDlDataRcvdCnt; /* Number of DL data received at EGTP */ void fillCoresetFeqDomAllocMap(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain); void oduCpyFixBufToMsg(uint8_t *fixBuf, Buffer *mBuf, uint16_t len); uint8_t buildPlmnId(Plmn plmn, uint8_t *buf); -uint16_t fetchScsValue(uint8_t scsEnumValue); +uint16_t convertScsEnumValToScsVal(uint8_t scsEnumValue); uint8_t SGetSBufNewForDebug(char *file, char *func, char *line, Region region, Pool pool, Data **ptr, Size size); uint8_t SPutSBufNewForDebug(char *file, char *func, char *line, Region region, Pool pool, Data *ptr, Size size); diff --git a/src/cu_stub/cu_f1ap_msg_hdl.c b/src/cu_stub/cu_f1ap_msg_hdl.c index 2174601c9..b4cc5c106 100644 --- a/src/cu_stub/cu_f1ap_msg_hdl.c +++ b/src/cu_stub/cu_f1ap_msg_hdl.c @@ -1894,7 +1894,7 @@ uint8_t BuildNrcgi(NRCGI_t *nrcgi) uint8_t ret; uint8_t unused_bits = 4; uint8_t byteSize = 5; - uint8_t val = 1; + uint8_t val = 16; /* Allocate Buffer Memory */ nrcgi->pLMN_Identity.size = 3 * sizeof(uint8_t); CU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size); @@ -1914,16 +1914,7 @@ uint8_t BuildNrcgi(NRCGI_t *nrcgi) { return RFAILED; } -#if 0 - ret = fillBitString(&nrcgi->nRCellIdentity, unused, byteSize, val); - if(ret != ROK) - { - return RFAILED; - } -#endif - memset(nrcgi->nRCellIdentity.buf, 0, nrcgi->nRCellIdentity.size); - nrcgi->nRCellIdentity.buf[0] |= val; - nrcgi->nRCellIdentity.bits_unused = unused_bits; + fillBitString(&nrcgi->nRCellIdentity, unused_bits, byteSize, val); return ROK; } @@ -8577,6 +8568,9 @@ uint8_t procGnbDuUpdate(F1AP_PDU_t *f1apMsg) DU_LOG("ERROR --> F1AP : Failed to build and send DUUpdateAck"); return RFAILED; } +#if 0 + /* We don't require F1 Reset message in Cell Up and Broadcast Procedure flow, So that's why + * commented this trigger for now */ if(cellToBeDelete == false) { @@ -8587,7 +8581,8 @@ uint8_t procGnbDuUpdate(F1AP_PDU_t *f1apMsg) return RFAILED; } } - else +#endif + if(cellToBeDelete == true) { for(ueIdx = 0; ueIdx < MAX_NUM_UE; ueIdx++) { diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index 3ddf9004d..5576e9555 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -121,6 +121,7 @@ void FillSlotConfig() } #endif + /******************************************************************* * @brief Reads the CL Configuration. * @@ -138,8 +139,6 @@ void FillSlotConfig() * * ****************************************************************/ - -/* This function is used to fill up the cell configuration for CL */ uint8_t readMacCfg() { uint8_t idx=0, sliceIdx=0; @@ -206,8 +205,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; @@ -232,7 +231,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; @@ -476,7 +475,7 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) srvCellCfgComm->dlCfg.offsetToPointA = OFFSET_TO_POINT_A; #ifdef O1_ENABLE srvCellCfgComm->dlCfg.dlScsCarrier.scsOffset = cellParams.ssbOffset; - srvCellCfgComm->dlCfg.dlScsCarrier.scs = cellParams.ssbSubCarrierSpacing; + srvCellCfgComm->dlCfg.dlScsCarrier.scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing); srvCellCfgComm->dlCfg.dlScsCarrier.scsBw = cellParams.bSChannelBwUL; #else srvCellCfgComm->dlCfg.dlScsCarrier.scsOffset = SSB_SUBCARRIER_OFFSET; @@ -539,7 +538,7 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm) /* Configuring UL Config Common */ #ifdef O1_ENABLE srvCellCfgComm->ulCfg.ulScsCarrier.scsOffset = cellParams.ssbOffset; - srvCellCfgComm->ulCfg.ulScsCarrier.scs = cellParams.ssbSubCarrierSpacing; + srvCellCfgComm->ulCfg.ulScsCarrier.scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing); srvCellCfgComm->ulCfg.ulScsCarrier.scsBw = cellParams.bSChannelBwUL; #else srvCellCfgComm->ulCfg.ulScsCarrier.scsOffset = SSB_SUBCARRIER_OFFSET; @@ -816,49 +815,61 @@ uint8_t readCfg() 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; freqBandIdxfiveGS_TAC->buf[2] = duCfgParam.srvdCellLst[0].duCellInfo.tac; return ROK; } + +/******************************************************************* + * + * @brief fill nr frequency information + * + * @details + * + * Function : fillNrTddInfo + * + * Functionality: fill nr frequency information + * + * @params[in] NRFreqInfo_t freqInfo + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t fillNrTddInfo(TDD_Info_t *tddInfo) +{ + uint8_t elementCnt = 1, freqBandListIdx = 0, supportedBandIdx = 0; + NRFreqInfo_t *freqInfo = NULLP; + + if(tddInfo == NULLP) + { + DU_LOG("\nERROR --> DU APP : Null pointer received at fillNrTddInfo"); + return RFAILED; + } + + freqInfo = &tddInfo->nRFreqInfo; + freqInfo->nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.nrArfcn; + + freqInfo->freqBandListNr.list.count = elementCnt; + freqInfo->freqBandListNr.list.size = freqInfo->freqBandListNr.list.count * sizeof(FreqBandNrItem_t *); + DU_ALLOC(freqInfo->freqBandListNr.list.array, freqInfo->freqBandListNr.list.size ); + if(!freqInfo->freqBandListNr.list.array) + { + DU_LOG("\nERROR --> DU APP : Memory allocation failed at fillNrTddInfo"); + return RFAILED; + } + + for(freqBandListIdx = 0; freqBandListIdxfreqBandListNr.list.count; freqBandListIdx++) + { + DU_ALLOC(freqInfo->freqBandListNr.list.array[freqBandListIdx], sizeof(FreqBandNrItem_t )); + if(!freqInfo->freqBandListNr.list.array[freqBandListIdx]) + { + DU_LOG("\nERROR --> DU APP : Memory allocation failed at fillNrTddInfo"); + return RFAILED; + } + + freqInfo->freqBandListNr.list.array[freqBandListIdx]->freqBandIndicatorNr = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.tdd.nrFreqInfo.freqBand[0].nrFreqBand; + freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.count = elementCnt; + freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.size = freqInfo->freqBandListNr.list.array[freqBandListIdx]->\ + supportedSULBandList.list.count * sizeof(SupportedSULFreqBandItem_t*); + + DU_ALLOC(freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array,\ + freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.size); + if(!freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array) + { + DU_LOG("\nERROR --> DU APP : Memory allocation failed at fillNrTddInfo"); + return RFAILED; + } + + for(supportedBandIdx = 0; supportedBandIdxfreqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.count; supportedBandIdx++) + { + DU_ALLOC(freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array[supportedBandIdx],\ + sizeof(SupportedSULFreqBandItem_t)); + if(!freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array[supportedBandIdx]) + { + DU_LOG("\nERROR --> DU APP : Memory allocation failed at fillNrTddInfo"); + return RFAILED; + } + + freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array[supportedBandIdx]->freqBandIndicatorNr =\ + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.freqBand[0].sulBand[0]; + } + } + + tddInfo->transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulTxBw.nrScs; + tddInfo->transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.tdd.nrFreqInfo.sulInfo.sulTxBw.nrb; + + return ROK; +} + /******************************************************************* * * @brief Builds NR Mode @@ -948,38 +1033,63 @@ uint8_t BuildNrMode(NR_Mode_Info_t *mode) { uint8_t BuildDLNRInforet=0; uint8_t BuildULNRInforet=0; - /* FDD Mode */ + +#ifdef NR_TDD + mode->present = NR_Mode_Info_PR_tDD; +#else mode->present = NR_Mode_Info_PR_fDD; +#endif + if(mode->present == NR_Mode_Info_PR_fDD) { DU_ALLOC(mode->choice.fDD,sizeof(FDD_Info_t)); if(mode->choice.fDD == NULLP) { - return RFAILED; + DU_LOG("\nERROR --> Memory allocation failed in BuildNrMode"); + return RFAILED; } BuildULNRInforet = BuildULNRInfo(&mode->choice.fDD->uL_NRFreqInfo); if(BuildULNRInforet != ROK) { - return RFAILED; + DU_LOG("\nERROR --> Failed to build UlNrFreqInfo"); + return RFAILED; } BuildDLNRInforet = BuildDLNRInfo(&mode->choice.fDD->dL_NRFreqInfo); if(BuildDLNRInforet != ROK) { - return RFAILED; + DU_LOG("\nERROR --> Failed to build DlNrFreqInfo"); + return RFAILED; + } + mode->choice.fDD->uL_Transmission_Bandwidth.nRSCS = \ + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrScs; + mode->choice.fDD->uL_Transmission_Bandwidth.nRNRB = \ + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrb; + mode->choice.fDD->dL_Transmission_Bandwidth.nRSCS = \ + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrScs; + mode->choice.fDD->dL_Transmission_Bandwidth.nRNRB = \ + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrb; + } + else if(mode->present == NR_Mode_Info_PR_tDD) + { + DU_ALLOC(mode->choice.tDD,sizeof(TDD_Info_t)); + if(mode->choice.tDD == NULLP) + { + DU_LOG("\nERROR --> Memory allocation failed in BuildNrMode"); + return RFAILED; + } + + if(fillNrTddInfo(mode->choice.tDD) != ROK) + { + DU_LOG("\nERROR --> Failed to fill Nr TDD information"); + return RFAILED; } + } - mode->choice.fDD->uL_Transmission_Bandwidth.nRSCS = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrScs; - mode->choice.fDD->uL_Transmission_Bandwidth.nRNRB = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrb; - mode->choice.fDD->dL_Transmission_Bandwidth.nRSCS = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrScs; - mode->choice.fDD->dL_Transmission_Bandwidth.nRNRB = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrb; + return ROK; } /******************************************************************* @@ -1443,6 +1553,90 @@ void FreeRrcVer(RRC_Version_t *rrcVer) DU_FREE(rrcVer->latest_RRC_Version.buf,rrcVer->latest_RRC_Version.size); } } + +/******************************************************************* + * + * @brief Deallocating memory of TDD NrFreqInfo + * + * @details + * + * Function : freeTddNrFreqInfo + * + * Functionality: freeTddNrFreqInfo + * + * @params[in] F1AP_PDU_t *f1apDuCfg + * + * @return ROK - void + * + * ****************************************************************/ +void freeTddNrFreqInfo(NRFreqInfo_t *freqInfo) +{ + uint8_t freqBandListIdx = 0, supportedBandIdx = 0; + + if(freqInfo->freqBandListNr.list.array) + { + for(freqBandListIdx = 0; freqBandListIdxfreqBandListNr.list.count; freqBandListIdx++) + { + if(freqInfo->freqBandListNr.list.array[freqBandListIdx]) + { + if(freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array) + { + for(supportedBandIdx = 0; supportedBandIdxfreqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.count; supportedBandIdx++) + { + DU_FREE(freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array[supportedBandIdx],\ + sizeof(SupportedSULFreqBandItem_t)); + } + DU_FREE(freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.array,\ + freqInfo->freqBandListNr.list.array[freqBandListIdx]->supportedSULBandList.list.size); + + } + DU_FREE(freqInfo->freqBandListNr.list.array[freqBandListIdx], sizeof(FreqBandNrItem_t )); + } + } + DU_FREE(freqInfo->freqBandListNr.list.array, freqInfo->freqBandListNr.list.size ); + } +} + +/******************************************************************* + * + * @brief Deallocating memory allocated for Nr fdd frequencey mode + * + * @details + * + * Function : freeFddNrFreqInfo + * + * Functionality:Free memory allocated for Nr fdd frequencey mode + * + * @params[in] + * + * @return ROK - void + * + * ****************************************************************/ +void freeFddNrFreqInfo(FDD_Info_t *fDD) +{ + uint8_t arrIdx =0; + + if(fDD != NULLP) + { + if(fDD->uL_NRFreqInfo.freqBandListNr.list.array != NULLP) + { + DU_FREE(fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array[arrIdx], sizeof(FreqBandNrItem_t)); + DU_FREE(fDD->uL_NRFreqInfo.freqBandListNr.list.array, \ + fDD->uL_NRFreqInfo.freqBandListNr.list.size); + } + + if(fDD->dL_NRFreqInfo.freqBandListNr.list.array != NULLP) + { + DU_FREE(fDD->dL_NRFreqInfo.freqBandListNr.list.\ + array[arrIdx], sizeof(FreqBandNrItem_t)); + DU_FREE(fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ + fDD->dL_NRFreqInfo.freqBandListNr.list.size); + } + DU_FREE(fDD,sizeof(FDD_Info_t)); + } +} + /******************************************************************* * * @brief deallocating the memory of function BuildAndSendF1SetupReq() @@ -1500,71 +1694,62 @@ void FreeServedCellList( GNB_DU_Served_Cells_List_t *duServedCell) if(servedPlmnItem->iE_Extensions->list.array[0] != NULLP) { if(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.\ - SliceSupportList.list.array != NULLP) + SliceSupportList.list.array != NULLP) { for(sliceIdx =0; sliceIdxiE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.count; sliceIdx++) + extensionValue.choice.SliceSupportList.list.count; sliceIdx++) { if(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.\ - SliceSupportList.list.array[sliceIdx] != NULLP) + SliceSupportList.list.array[sliceIdx] != NULLP) { sliceSupportItem = servedPlmnItem->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceIdx]; + extensionValue.choice.SliceSupportList.list.array[sliceIdx]; DU_FREE(sliceSupportItem->sNSSAI.sST.buf, sizeof(uint8_t)); if(sliceSupportItem->sNSSAI.sD != NULLP) { DU_FREE(sliceSupportItem->sNSSAI.sD->buf,\ - sliceSupportItem->sNSSAI.sD->size); + sliceSupportItem->sNSSAI.sD->size); DU_FREE(sliceSupportItem->sNSSAI.sD, sizeof(OCTET_STRING_t)); } DU_FREE(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.\ - choice.SliceSupportList.list.array[sliceIdx], sizeof(SliceSupportItem_t)); + choice.SliceSupportList.list.array[sliceIdx], sizeof(SliceSupportItem_t)); } } DU_FREE(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.\ - SliceSupportList.list.array, servedPlmnItem->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.size); + SliceSupportList.list.array, servedPlmnItem->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.size); } DU_FREE(servedPlmnItem->iE_Extensions->list.array[0],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); + sizeof(ServedPLMNs_ItemExtIEs_t)); } DU_FREE(servedPlmnItem->iE_Extensions->list.array,\ - extensionCnt*sizeof(ServedPLMNs_ItemExtIEs_t*)); + extensionCnt*sizeof(ServedPLMNs_ItemExtIEs_t*)); } DU_FREE(servedPlmnItem->iE_Extensions, sizeof(ProtocolExtensionContainer_4624P3_t)); } DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnIdx],\ - sizeof(ServedPLMNs_Item_t)); + sizeof(ServedPLMNs_Item_t)); } DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array,\ - sizeof(ServedPLMNs_Item_t *)); + sizeof(ServedPLMNs_Item_t *)); } - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD != NULLP) + if(srvCellItem->served_Cell_Information.nR_Mode_Info.present == NR_Mode_Info_PR_fDD) { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array != NULLP) - { - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.array,sizeof(FreqBandNrItem_t*)); - } - - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array) + freeFddNrFreqInfo(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD); + } + else + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.tDD != NULLP) { - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array,sizeof(FreqBandNrItem_t *)); + freeTddNrFreqInfo(&srvCellItem->served_Cell_Information.nR_Mode_Info.choice.tDD->nRFreqInfo); + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.tDD, sizeof(TDD_Info_t)); } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD, sizeof(FDD_Info_t)); } - + DU_FREE(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf,\ srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); @@ -1931,27 +2116,19 @@ void freeCellsToModifyItem(Served_Cells_To_Modify_Item_t *modifyItem) DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ modifyItem->served_Cell_Information.servedPLMNs.list.size); } - - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD != NULLP) + + if(modifyItem->served_Cell_Information.nR_Mode_Info.present == NR_Mode_Info_PR_fDD) { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array != NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array[arrIdx], sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array, \ - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.size); - } - - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array != NULLP) + freeFddNrFreqInfo(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD); + } + else + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.tDD) { - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.\ - array[arrIdx], sizeof(FreqBandNrItem_t)); - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); + freeTddNrFreqInfo(&modifyItem->served_Cell_Information.nR_Mode_Info.choice.tDD->nRFreqInfo); + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.tDD, sizeof(TDD_Info_t)); } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,sizeof(FDD_Info_t)); } - DU_FREE(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf,\ modifyItem->served_Cell_Information.measurementTimingConfiguration.size); } @@ -2221,64 +2398,70 @@ uint8_t fillServedPlmns(ServedPLMNs_List_t *servedPlmn) * * Functionality: Fills Nr Fdd Info required in ServCellInfo IE * - * @params[in] Pointer to NR_Mode_Info_t * + * @params[in] FDD_Info_t *fDD * * @return ROK - success * RFAILED - failure * *****************************************************************/ -uint8_t fillNrFddInfo(NR_Mode_Info_t *nrFdd) +uint8_t fillNrFddInfo(FDD_Info_t *fDD) { - nrFdd->choice.fDD->uL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.\ + fDD->uL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.\ f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn; - nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.count = 1; - nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t*); - DU_ALLOC(nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array, nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.size); - if(nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array == NULLP) + fDD->uL_NRFreqInfo.freqBandListNr.list.count = 1; + fDD->uL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t*); + DU_ALLOC(fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array, fDD->uL_NRFreqInfo.freqBandListNr.list.size); + if(fDD->uL_NRFreqInfo.freqBandListNr.list.array == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillNrFddInfo"); return RFAILED; } - DU_ALLOC(nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array[0], \ + + DU_ALLOC(fDD->uL_NRFreqInfo.freqBandListNr.list.array[0], \ sizeof(FreqBandNrItem_t)); - if(nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) + if(fDD->uL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillNrFddInfo"); return RFAILED; } - nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array[0]->freqBandIndicatorNr = \ + + fDD->uL_NRFreqInfo.freqBandListNr.list.array[0]->freqBandIndicatorNr = \ duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ freqBand[0].nrFreqBand; - nrFdd->choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; - nrFdd->choice.fDD->dL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; + fDD->dL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.\ dlNrFreqInfo.nrArfcn; - nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.count = 1; - nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); - DU_ALLOC(nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,nrFdd->\ - choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); - if(nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array == NULLP) + fDD->dL_NRFreqInfo.freqBandListNr.list.count = 1; + fDD->dL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); + DU_ALLOC(fDD->dL_NRFreqInfo.freqBandListNr.list.array, fDD->dL_NRFreqInfo.freqBandListNr.list.size); + if(fDD->dL_NRFreqInfo.freqBandListNr.list.array == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillNrFddInfo"); return RFAILED; } - DU_ALLOC(nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array[0],\ - sizeof(FreqBandNrItem_t)); - if(nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) + + DU_ALLOC(fDD->dL_NRFreqInfo.freqBandListNr.list.array[0], sizeof(FreqBandNrItem_t)); + if(fDD->dL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillNrFddInfo"); return RFAILED; } - nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array[0]->freqBandIndicatorNr = \ + + fDD->dL_NRFreqInfo.freqBandListNr.list.array[0]->freqBandIndicatorNr = \ duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ freqBand[0].nrFreqBand; - nrFdd->choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; + fDD->dL_NRFreqInfo.freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; /*Transmission Bandwidth*/ - nrFdd->choice.fDD->uL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ + fDD->uL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ f1Mode.mode.fdd.ulTxBw.nrScs; - nrFdd->choice.fDD->uL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ + fDD->uL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ f1Mode.mode.fdd.ulTxBw.nrb; - nrFdd->choice.fDD->dL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ + fDD->dL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ f1Mode.mode.fdd.dlTxBw.nrScs; - nrFdd->choice.fDD->dL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ + fDD->dL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ f1Mode.mode.fdd.dlTxBw.nrb; return ROK; @@ -2303,7 +2486,7 @@ uint8_t fillNrFddInfo(NR_Mode_Info_t *nrFdd) uint8_t fillServedCellInfo(Served_Cell_Information_t *srvCellInfo) { - uint8_t tmp, ieIdx, ieListCnt; + uint8_t ieIdx, ieListCnt; /*nRCGI*/ srvCellInfo->nRCGI.pLMN_Identity.size =3*sizeof(uint8_t); @@ -2311,6 +2494,7 @@ uint8_t fillServedCellInfo(Served_Cell_Information_t *srvCellInfo) srvCellInfo->nRCGI.pLMN_Identity.size); if(srvCellInfo->nRCGI.pLMN_Identity.buf == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillServedCellInfo"); return RFAILED; } buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ @@ -2319,17 +2503,12 @@ uint8_t fillServedCellInfo(Served_Cell_Information_t *srvCellInfo) DU_ALLOC(srvCellInfo->nRCGI.nRCellIdentity.buf,\ srvCellInfo->nRCGI.nRCellIdentity.size); if(srvCellInfo->nRCGI.nRCellIdentity.buf == NULLP) - { + { + DU_LOG("\nERROR --> Memory allocation failed in fillServedCellInfo"); return RFAILED; } - for (tmp = 0 ; tmp < srvCellInfo->\ - nRCGI.nRCellIdentity.size-1 ; tmp++) - { - srvCellInfo->nRCGI.nRCellIdentity.buf[tmp] = 0; - } - srvCellInfo->nRCGI.nRCellIdentity.buf[4] = duCfgParam.sib1Params.cellIdentity; - srvCellInfo->nRCGI.nRCellIdentity.bits_unused =4; - + + fillBitString(&srvCellInfo->nRCGI.nRCellIdentity, ODU_VALUE_FOUR, ODU_VALUE_FIVE, duCfgParam.sib1Params.cellIdentity); /*nRPCI*/ srvCellInfo->nRPCI = duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; @@ -2337,36 +2516,55 @@ uint8_t fillServedCellInfo(Served_Cell_Information_t *srvCellInfo) ieListCnt = 1; srvCellInfo->servedPLMNs.list.count = ieListCnt; srvCellInfo->servedPLMNs.list.size = ieListCnt*sizeof(ServedPLMNs_Item_t *); - DU_ALLOC(srvCellInfo->servedPLMNs.list.array,\ - srvCellInfo->servedPLMNs.list.size); + DU_ALLOC(srvCellInfo->servedPLMNs.list.array, srvCellInfo->servedPLMNs.list.size); if(srvCellInfo->servedPLMNs.list.array == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillServedCellInfo"); return RFAILED; } for(ieIdx=0; ieIdx < ieListCnt; ieIdx++) { - DU_ALLOC(srvCellInfo->servedPLMNs.list.array[ieIdx],\ - sizeof(ServedPLMNs_Item_t)); + DU_ALLOC(srvCellInfo->servedPLMNs.list.array[ieIdx], sizeof(ServedPLMNs_Item_t)); if(srvCellInfo->servedPLMNs.list.array[ieIdx]== NULLP) { - return RFAILED; + DU_LOG("\nERROR --> Memory allocation failed in fillServedCellInfo"); + return RFAILED; } } if(fillServedPlmns(&srvCellInfo->servedPLMNs)) { + DU_LOG("\nERROR --> Failed to fill Served Plmn info"); return RFAILED; } +#ifndef NR_TDD /*nR Mode Info with FDD*/ srvCellInfo->nR_Mode_Info.present = NR_Mode_Info_PR_fDD; - DU_ALLOC(srvCellInfo->nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); + DU_ALLOC(srvCellInfo->nR_Mode_Info.choice.fDD, sizeof(FDD_Info_t)); if(srvCellInfo->nR_Mode_Info.choice.fDD == NULLP) { + DU_LOG("\nERROR --> Memory allocation failed in fillServedCellInfo"); + return RFAILED; + } + if(fillNrFddInfo(srvCellInfo->nR_Mode_Info.choice.fDD)) + { + DU_LOG("\nERROR --> Failed to fill the Nr FDD information"); + return RFAILED; + } +#else + srvCellInfo->nR_Mode_Info.present = NR_Mode_Info_PR_tDD; + DU_ALLOC(srvCellInfo->nR_Mode_Info.choice.tDD, sizeof(TDD_Info_t)); + if(srvCellInfo->nR_Mode_Info.choice.tDD == NULLP) + { + DU_LOG("\nERROR --> Memory allocation failed in fillServedCellInfo"); return RFAILED; } - if(fillNrFddInfo(&srvCellInfo->nR_Mode_Info)) + if(fillNrTddInfo(srvCellInfo->nR_Mode_Info.choice.tDD) != ROK) + { + DU_LOG("\nERROR --> Failed to fill the Nr TDD information"); return RFAILED; + } +#endif /*Measurement timing Config*/ srvCellInfo->measurementTimingConfiguration.size = sizeof(uint8_t); @@ -2401,8 +2599,6 @@ uint8_t fillServedCellInfo(Served_Cell_Information_t *srvCellInfo) uint8_t fillServCellToModItem(Served_Cells_To_Modify_Item_t *modifyItem) { - uint8_t ieIdx; - /*pLMN_Identity*/ modifyItem->oldNRCGI.pLMN_Identity.size = 3*sizeof(uint8_t); DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf,modifyItem->oldNRCGI.pLMN_Identity.size); @@ -2421,12 +2617,7 @@ uint8_t fillServCellToModItem(Served_Cells_To_Modify_Item_t *modifyItem) { return RFAILED; } - for(ieIdx = 0; ieIdx < modifyItem->oldNRCGI.nRCellIdentity.size-1; ieIdx++) - { - modifyItem->oldNRCGI.nRCellIdentity.buf[ieIdx] = 0; - } - modifyItem->oldNRCGI.nRCellIdentity.buf[4] = duCfgParam.sib1Params.cellIdentity; - modifyItem->oldNRCGI.nRCellIdentity.bits_unused = 4; + fillBitString(&modifyItem->oldNRCGI.nRCellIdentity, ODU_VALUE_FOUR, ODU_VALUE_FIVE, duCfgParam.sib1Params.cellIdentity); if(fillServedCellInfo(&modifyItem->served_Cell_Information)) return RFAILED; @@ -2501,7 +2692,6 @@ uint8_t buildServCellToModList(Served_Cells_To_Modify_List_t *cellsToModify) *****************************************************************/ uint8_t fillCellToDeleteItem(struct Served_Cells_To_Delete_ItemIEs *deleteItemIe) { - uint8_t arrIdx; Served_Cells_To_Delete_Item_t *deleteItem=NULLP; deleteItemIe->id = ProtocolIE_ID_id_Served_Cells_To_Delete_Item; @@ -2530,12 +2720,7 @@ uint8_t fillCellToDeleteItem(struct Served_Cells_To_Delete_ItemIEs *deleteItemIe DU_LOG("ERROR --> F1AP: fillCellToDeleteItem(): Failed to allocate the memory"); return RFAILED; } - for(arrIdx = 0; arrIdx < deleteItem->oldNRCGI.nRCellIdentity.size-1; arrIdx++) - { - deleteItem->oldNRCGI.nRCellIdentity.buf[arrIdx] = 0; - } - deleteItem->oldNRCGI.nRCellIdentity.buf[4] = duCfgParam.sib1Params.cellIdentity; - deleteItem->oldNRCGI.nRCellIdentity.bits_unused = 4; + fillBitString(&deleteItem->oldNRCGI.nRCellIdentity, ODU_VALUE_FOUR, ODU_VALUE_FIVE, duCfgParam.sib1Params.cellIdentity); return ROK; } /*******************************************************************