X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_sys_info_hdl.c;h=f2c6a9697c7914ed20b4176566ed8ce050a5f205;hb=45d134510deb6902b870b4a0fb574b6075fba601;hp=c3c979553ef9b43cbbb2786efef49371370f0407;hpb=80a4fa9d0aede180472530cab6efa6acc925424b;p=o-du%2Fl2.git diff --git a/src/du_app/du_sys_info_hdl.c b/src/du_app/du_sys_info_hdl.c index c3c979553..f2c6a9697 100644 --- a/src/du_app/du_sys_info_hdl.c +++ b/src/du_app/du_sys_info_hdl.c @@ -17,9 +17,15 @@ *******************************************************************************/ /* This file contains ASN codec for MIB and SIB1 msgs */ - +#include "common_def.h" +#include "lrg.h" +#include "lkw.x" +#include "lrg.x" +#include "legtp.h" +#include "du_app_mac_inf.h" +#include "du_cfg.h" #include "du_mgr.h" -#include "du_log.h" +#include "du_utils.h" #include "BCCH-BCH-Message.h" #include "MIB.h" #include "PLMN-IdentityInfo.h" @@ -48,11 +54,17 @@ #include "ServingCellConfigCommonSIB.h" #include "MCC.h" #include "SIB1.h" +#include "odu_common_codec.h" #include "du_sys_info_hdl.h" -extern char encBuf[ENC_BUF_MAX_LEN]; - -extern DuCfgParams duCfgParam; +void FreeSib1Msg(SIB1_t *sib1Msg); +uint8_t FreqInfoUlret = RFAILED; +uint8_t RachCfgCommonret = RFAILED; +uint8_t PuschCfgCommonret = RFAILED; +uint8_t UlCfgCommSibret = RFAILED; +uint8_t FreqInfoDlret = RFAILED; +uint8_t DlCfgCommSibret = RFAILED; +uint8_t CommonSerachSpaceListret = RFAILED; /******************************************************************* * @@ -68,7 +80,7 @@ extern DuCfgParams duCfgParam; * RFAILED - failure * * ****************************************************************/ -int BuildMib(MIB_t *mib) +uint8_t BuildMib(MIB_t *mib) { mib->systemFrameNumber.size = sizeof(uint8_t); DU_ALLOC(mib->systemFrameNumber.buf, @@ -97,7 +109,7 @@ int BuildMib(MIB_t *mib) mib->intraFreqReselection = duCfgParam.mibParams.intraFreqReselection; mib->spare.size = sizeof(uint8_t); - DU_ALLOC(mib->spare.buf,sizeof(uint8_t)); + DU_ALLOC(mib->spare.buf, mib->spare.size); if(!mib->spare.buf) { DU_LOG("DU APP: MIB msg memory allocation failure"); @@ -107,6 +119,42 @@ int BuildMib(MIB_t *mib) mib->spare.bits_unused = ODU_VALUE_SEVEN; return ROK; } +/******************************************************************* + * + * @brief Free MIB PDU for broadcast + * + * @details + * + * Function : FreeMibPdu + * + * Functionality: Deallocating MIB PDU for system broadcast + * + * @param[in]: BCCH_BCH_Message_t *bcchMsg + * + * @return void + * + * ****************************************************************/ + void FreeMibPdu(BCCH_BCH_Message_t *bcchMsg) + { + if(!bcchMsg) + { + if(!bcchMsg->message.choice.mib) + { + if(!(bcchMsg->message.choice.mib->systemFrameNumber.buf)) + { + if(!bcchMsg->message.choice.mib->spare.buf) + { + DU_FREE(bcchMsg->message.choice.mib->spare.buf,\ + bcchMsg->message.choice.mib->spare.size); + } + DU_FREE(bcchMsg->message.choice.mib->systemFrameNumber.buf, + bcchMsg->message.choice.mib->systemFrameNumber.size); + } + DU_FREE(bcchMsg->message.choice.mib, sizeof(MIB_t)); + } + DU_FREE(bcchMsg, sizeof(BCCH_BCH_Message_t)); + } + } /******************************************************************* * * @brief Builds MIB PDU for broadcast @@ -121,58 +169,95 @@ int BuildMib(MIB_t *mib) * RFAILED - failure * * ****************************************************************/ -int BuildMibPdu() +uint8_t BuildMibPdu() { - BCCH_BCH_Message_t *bcchMsg; + uint8_t BuildMibret; + uint8_t ret = RFAILED; + BCCH_BCH_Message_t *bcchMsg; asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_ALLOC(bcchMsg, sizeof(BCCH_BCH_Message_t)); - if(!bcchMsg) - { - DU_LOG("\nMemory allocation failure in BuildMibPdu"); - return RFAILED; - } - - bcchMsg->message.present = BCCH_BCH_MessageType_PR_mib; - DU_ALLOC(bcchMsg->message.choice.mib, sizeof(MIB_t)); - if(!bcchMsg->message.choice.mib) - { - DU_LOG("\nMemory allocation failure in BuildMibPdu"); - return RFAILED; - } - BuildMib(bcchMsg->message.choice.mib); - xer_fprint(stdout, &asn_DEF_BCCH_BCH_Message, bcchMsg); - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_BCCH_BCH_Message, 0, - bcchMsg, PrepFinalEncBuf, encBuf); - printf("\nencbufSize:%d\n", encBufSize); - if(encRetVal.encoded == -1) - { - DU_LOG("\nDU APP: Could not encode BCCH BCH Message Type structure(at %s)\n", - encRetVal.failed_type?\ - encRetVal.failed_type->name - :"unknown"); - return RFAILED; - } - - /* Print encoded buffer */ - for(int i=0; i< encBufSize; i++) + while(1) { - printf("%x\t",encBuf[i]); - } - printf("\n"); - + DU_ALLOC(bcchMsg, sizeof(BCCH_BCH_Message_t)); + if(!bcchMsg) + { + DU_LOG("\nMemory allocation failure in BuildMibPdu"); + break; + } + + bcchMsg->message.present = BCCH_BCH_MessageType_PR_mib; + DU_ALLOC(bcchMsg->message.choice.mib, sizeof(MIB_t)); + if(!bcchMsg->message.choice.mib) + { + DU_LOG("\nMemory allocation failure in BuildMibPdu"); + break; + } + BuildMibret = BuildMib(bcchMsg->message.choice.mib); + if(BuildMibret != ROK) + { + break; + } + xer_fprint(stdout, &asn_DEF_BCCH_BCH_Message, bcchMsg); + cmMemset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_BCCH_BCH_Message, 0, + bcchMsg, PrepFinalEncBuf, encBuf); + printf("\nencbufSize:%d\n", encBufSize); + if(encRetVal.encoded == -1) + { + DU_LOG("\nDU APP: Could not encode BCCH BCH Message Type structure(at %s)\n", + encRetVal.failed_type?\ + encRetVal.failed_type->name + :"unknown"); + break; + } + + /* Print encoded buffer */ + for(int i=0; i< encBufSize; i++) + { + printf("%x\t",encBuf[i]); + } + printf("\n"); + + ret = ROK; + break; + } /* Free allocated memory */ - DU_FREE(bcchMsg->message.choice.mib->systemFrameNumber.buf, - bcchMsg->message.choice.mib->systemFrameNumber.size); - DU_FREE(bcchMsg->message.choice.mib->spare.buf, - bcchMsg->message.choice.mib->spare.size); - DU_FREE(bcchMsg->message.choice.mib, sizeof(MIB_t)); - DU_FREE(bcchMsg, sizeof(BCCH_BCH_MessageType_t)); + FreeMibPdu(bcchMsg); - return ROK; + return ret; +} + /******************************************************************* + * + * @brief free MIB message in Served Cell Info + * + * @details + * + * Function : FreeMibMsg + * + * Functionality: deallocating MIB message in Served Cell Info + * + * @param[in] MIB_t *mibMsg + * + * @return void + * + * + * ****************************************************************/ +void FreeMibMsg( MIB_t *mibMsg) +{ + if(!mibMsg) + { + if(!(mibMsg->systemFrameNumber.buf)) + { + if(!mibMsg->spare.buf) + { + DU_FREE(mibMsg->spare.buf, mibMsg->spare.size); + } + DU_FREE(mibMsg->systemFrameNumber.buf, + mibMsg->systemFrameNumber.size); + } + DU_FREE(mibMsg, sizeof(MIB_t)); + } } /******************************************************************* * @@ -188,48 +273,55 @@ int BuildMibPdu() * RFAILED - failure * * ****************************************************************/ -int BuildMibMsg() +uint8_t BuildMibMsg() { MIB_t *mibMsg; asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_ALLOC(mibMsg, sizeof(MIB_t)); - if(!mibMsg) + uint8_t ret = RFAILED; + uint8_t BuildMibret; + while(1) { - DU_LOG("DU APP: MIB msg memory allocation failure"); - return RFAILED; - } - BuildMib(mibMsg); - - xer_fprint(stdout, &asn_DEF_MIB, mibMsg); - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_MIB, 0, + DU_ALLOC(mibMsg, sizeof(MIB_t)); + if(!mibMsg) + { + DU_LOG("DU APP: MIB msg memory allocation failure"); + break; + } + BuildMibret = BuildMib(mibMsg); + if(BuildMibret != ROK) + { + break; + } + xer_fprint(stdout, &asn_DEF_MIB, mibMsg); + cmMemset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_MIB, 0, mibMsg, PrepFinalEncBuf, encBuf); - printf("\nencbufSize:%d\n", encBufSize); - if(encRetVal.encoded == -1) - { - DU_LOG("\nDU APP: Could not encode MIB structure(at %s)\n", - encRetVal.failed_type?\ - encRetVal.failed_type->name - :"unknown"); - return RFAILED; - } - - /* Print encoded buffer */ - for(int i=0; i< encBufSize; i++) - { - printf("%x\t",encBuf[i]); - } - printf("\n"); - - /* Free allocated memory */ - DU_FREE(mibMsg->systemFrameNumber.buf, - mibMsg->systemFrameNumber.size); - DU_FREE(mibMsg->spare.buf, mibMsg->spare.size); - DU_FREE(mibMsg, sizeof(MIB_t)); + printf("\nencbufSize:%d\n", encBufSize); + if(encRetVal.encoded == -1) + { + DU_LOG("\nDU APP: Could not encode MIB structure(at %s)\n", + encRetVal.failed_type?\ + encRetVal.failed_type->name + :"unknown"); + break; + } + + /* Print encoded buffer */ + for(int i=0; i< encBufSize; i++) + { + printf("%x\t",encBuf[i]); + } + printf("\n"); + + /* Free allocated memory */ + ret = ROK; + break; + } - return ROK; + FreeMibMsg(mibMsg); + + return ret; } @@ -248,7 +340,7 @@ int BuildMibMsg() * RFAILED - failure * * ****************************************************************/ -int BuildCellIdentity(CellIdentity_t *cellIdentity) +uint8_t BuildCellIdentity(CellIdentity_t *cellIdentity) { cellIdentity->size = ODU_VALUE_FIVE*sizeof(uint8_t); cellIdentity->bits_unused = ODU_VALUE_FOUR; @@ -278,7 +370,7 @@ int BuildCellIdentity(CellIdentity_t *cellIdentity) * RFAILED - failure * * ****************************************************************/ -int BuildRanac(RAN_AreaCode_t **ranAreaCode) +uint8_t BuildRanac(RAN_AreaCode_t **ranAreaCode) { RAN_AreaCode_t *ranac; DU_ALLOC(ranac, sizeof(RAN_AreaCode_t)); @@ -306,7 +398,7 @@ int BuildRanac(RAN_AreaCode_t **ranAreaCode) * RFAILED - failure * * ****************************************************************/ -int BuildTac(TrackingAreaCode_t **trackAreaCode) +uint8_t BuildTac(TrackingAreaCode_t **trackAreaCode) { TrackingAreaCode_t *tac; @@ -347,13 +439,16 @@ int BuildTac(TrackingAreaCode_t **trackAreaCode) * RFAILED - failure * * ****************************************************************/ -int BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) +uint8_t BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) { - U8 idx, idx1, idx2; - U8 elementCnt; + uint8_t idx; + uint8_t idx1; + uint8_t idx2; + uint8_t elementCnt; TrackingAreaCode_t **tac; RAN_AreaCode_t **ranac; CellIdentity_t *cellIdentity; + uint8_t ret; struct PLMN_IdentityInfo__plmn_IdentityList *plmnIdInfo; @@ -383,7 +478,7 @@ int BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) plmnIdInfo = &cellAccessInfo->plmn_IdentityList.list.array[idx]->\ plmn_IdentityList; plmnIdInfo->list.count = elementCnt; - plmnIdInfo->list.size = elementCnt * sizeof(PLMN_IdentitY_t); + plmnIdInfo->list.size = elementCnt * sizeof(PLMN_IdentitY_t *); DU_ALLOC(plmnIdInfo->list.array, plmnIdInfo->list.size); if(!plmnIdInfo->list.array) { @@ -413,7 +508,7 @@ int BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) elementCnt = ODU_VALUE_THREE; plmnIdInfo->list.array[idx1]->mcc->list.count = elementCnt; plmnIdInfo->list.array[idx1]->mcc->list.size =\ - elementCnt * sizeof(MCC_MNC_Digit_t); + elementCnt * sizeof(MCC_MNC_Digit_t *); DU_ALLOC(plmnIdInfo->list.array[idx1]->mcc->list.array, plmnIdInfo->list.array[idx1]->mcc->list.size) if(!(plmnIdInfo->list.array[idx1]->mcc->list.array)) @@ -436,7 +531,7 @@ int BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) idx2 = 0; plmnIdInfo->list.array[idx1]->mnc.list.count = elementCnt; plmnIdInfo->list.array[idx1]->mnc.list.size =\ - elementCnt * sizeof(MCC_MNC_Digit_t); + elementCnt * sizeof(MCC_MNC_Digit_t *); DU_ALLOC(plmnIdInfo->list.array[idx1]->mnc.list.array, plmnIdInfo->list.array[idx1]->mnc.list.size); if(!plmnIdInfo->list.array[idx1]->mnc.list.array) @@ -459,16 +554,28 @@ int BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) /* Tracking Area Code */ tac = &cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode; - BuildTac(tac); + ret = BuildTac(tac); + if(ret != ROK) + { + return RFAILED; + } /* RANAC */ ranac = &cellAccessInfo->plmn_IdentityList.list.array[idx]->ranac; - BuildRanac(ranac); + ret=BuildRanac(ranac); + if(ret != ROK) + { + return RFAILED; + } /* CellIdentity */ cellIdentity =\ &cellAccessInfo->plmn_IdentityList.list.array[idx]->cellIdentity; - BuildCellIdentity(cellIdentity); + ret=BuildCellIdentity(cellIdentity); + if(ret != ROK) + { + return RFAILED; + } /* cellReservedForOperatorUse */ cellAccessInfo->plmn_IdentityList.list.array[idx]->\ @@ -495,7 +602,7 @@ int BuildPlmnList(CellAccessRelatedInfo_t *cellAccessInfo) * RFAILED - failure * * ****************************************************************/ -S16 BuildSibMapInfoList(SIB_Mapping_t *sibMapInfo) +uint8_t BuildSibMapInfoList(SIB_Mapping_t *sibMapInfo) { uint8_t itr; /* List iterator */ uint8_t elementCnt; /* Number of elements in list */ @@ -551,11 +658,12 @@ S16 BuildSibMapInfoList(SIB_Mapping_t *sibMapInfo) * RFAILED - failure * * ****************************************************************/ -S16 BuildSiSchedInfoList(struct SI_SchedulingInfo__schedulingInfoList *si_SchedulingInfoList) +uint8_t BuildSiSchedInfoList(struct SI_SchedulingInfo__schedulingInfoList *si_SchedulingInfoList) { uint8_t itr; /* List iterator */ uint8_t elementCnt; /* Number of elements in list */ - SchedulingInfo_t *schedInfo; /* Scheduling info */ + uint8_t ret; + SchedulingInfo_t *schedInfo; /* Scheduling info */ /* SI scheduling info list */ DU_ALLOC(si_SchedulingInfoList->list.array, si_SchedulingInfoList->list.size); @@ -583,9 +691,13 @@ S16 BuildSiSchedInfoList(struct SI_SchedulingInfo__schedulingInfoList *si_Schedu elementCnt = ODU_VALUE_ONE; schedInfo->sib_MappingInfo.list.count = elementCnt; - schedInfo->sib_MappingInfo.list.size = elementCnt * sizeof(SIB_TypeInfo_t); + schedInfo->sib_MappingInfo.list.size = elementCnt * sizeof(SIB_TypeInfo_t *); - BuildSibMapInfoList(&schedInfo->sib_MappingInfo); + ret = BuildSibMapInfoList(&schedInfo->sib_MappingInfo); + if(ret != ROK) + { + return RFAILED; + } return ROK; } @@ -606,7 +718,7 @@ S16 BuildSiSchedInfoList(struct SI_SchedulingInfo__schedulingInfoList *si_Schedu * RFAILED - failure * * ****************************************************************/ -S16 BuildScsSpecificCarrierListDl +uint8_t BuildScsSpecificCarrierListDl ( struct FrequencyInfoDL_SIB__scs_SpecificCarrierList *scsCarrierList ) @@ -657,7 +769,7 @@ struct FrequencyInfoDL_SIB__scs_SpecificCarrierList *scsCarrierList * RFAILED - failure * * ****************************************************************/ -S16 BuildCommonSerachSpaceList +uint8_t BuildCommonSerachSpaceList ( struct PDCCH_ConfigCommon__commonSearchSpaceList *searchSpclist ) @@ -802,9 +914,9 @@ struct PDCCH_ConfigCommon__commonSearchSpaceList *searchSpclist DU_LOG("\nDU APP : Common search space list memory alloc failed"); return RFAILED; } - searchSpace->monitoringSymbolsWithinSlot->size = 2; + searchSpace->monitoringSymbolsWithinSlot->size = 2*sizeof(uint8_t); DU_ALLOC(searchSpace->monitoringSymbolsWithinSlot->buf, \ - searchSpace->monitoringSymbolsWithinSlot->size * sizeof(uint8_t)); + searchSpace->monitoringSymbolsWithinSlot->size ); if(!searchSpace->monitoringSymbolsWithinSlot->buf) { DU_LOG("\nDU APP : Common search space list memory alloc failed"); @@ -896,8 +1008,9 @@ struct PDCCH_ConfigCommon__commonSearchSpaceList *searchSpclist * RFAILED - failure * * ****************************************************************/ -S16 BuildPdcchCfgCommon(struct BWP_DownlinkCommon__pdcch_ConfigCommon *pdcchCfg) +uint8_t BuildPdcchCfgCommon(struct BWP_DownlinkCommon__pdcch_ConfigCommon *pdcchCfg) { + uint8_t ret; uint8_t elementCnt; PdcchCfgCommon duPdcchCfg; PDCCH_ConfigCommon_t *pdcchSetup; @@ -958,10 +1071,15 @@ S16 BuildPdcchCfgCommon(struct BWP_DownlinkCommon__pdcch_ConfigCommon *pdcchCfg) elementCnt = ODU_VALUE_ONE; pdcchSetup->commonSearchSpaceList->list.count = elementCnt; pdcchSetup->commonSearchSpaceList->list.size = \ - elementCnt * sizeof(SearchSpace_t); - BuildCommonSerachSpaceList(pdcchSetup->commonSearchSpaceList); - - /* Search Space for SIB1 */ + elementCnt * sizeof(SearchSpace_t *); + ret = BuildCommonSerachSpaceList(pdcchSetup->commonSearchSpaceList); + if(ret != ROK) + { + return RFAILED; + } + CommonSerachSpaceListret=ROK; + + /* Search Space for SIB1 */ DU_ALLOC(pdcchSetup->searchSpaceSIB1, sizeof(SearchSpaceId_t)); if(!pdcchSetup->searchSpaceSIB1) { @@ -1016,7 +1134,7 @@ S16 BuildPdcchCfgCommon(struct BWP_DownlinkCommon__pdcch_ConfigCommon *pdcchCfg) * RFAILED - failure * * ****************************************************************/ -S16 BuildPdschCfgCommon(struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg) +uint8_t BuildPdschCfgCommon(struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg) { uint8_t idx; uint8_t elementCnt; @@ -1061,7 +1179,7 @@ S16 BuildPdschCfgCommon(struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg) elementCnt = ODU_VALUE_ONE; pdschSetup->pdsch_TimeDomainAllocationList->list.count = elementCnt; pdschSetup->pdsch_TimeDomainAllocationList->list.size = \ - elementCnt * sizeof(PDSCH_TimeDomainResourceAllocation_t); + elementCnt * sizeof(PDSCH_TimeDomainResourceAllocation_t *); DU_ALLOC(pdschSetup->pdsch_TimeDomainAllocationList->list.array,\ pdschSetup->pdsch_TimeDomainAllocationList->list.size); @@ -1095,7 +1213,7 @@ S16 BuildPdschCfgCommon(struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg) *timeDomRsrcAllocInfo->k0 = duPdschCfg.k0; timeDomRsrcAllocInfo->mappingType = duPdschCfg.mapType; - timeDomRsrcAllocInfo->startSymbolAndLength = duPdschCfg.startSymbAndLen; + timeDomRsrcAllocInfo->startSymbolAndLength = duPdschCfg.sliv; break; } @@ -1125,8 +1243,9 @@ S16 BuildPdschCfgCommon(struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg) * RFAILED - failure * * ****************************************************************/ -S16 BuildBwpDlCommon(BWP_DownlinkCommon_t *bwp) +uint8_t BuildBwpDlCommon(BWP_DownlinkCommon_t *bwp) { + uint8_t ret; DlCfgCommon duDlCfg; duDlCfg = duCfgParam.sib1Params.srvCellCfgCommSib.dlCfg; @@ -1142,8 +1261,11 @@ S16 BuildBwpDlCommon(BWP_DownlinkCommon_t *bwp) DU_LOG("\nDU APP : DL BWP memory allocation failed"); return RFAILED; } - BuildPdcchCfgCommon(bwp->pdcch_ConfigCommon); - + ret=BuildPdcchCfgCommon(bwp->pdcch_ConfigCommon); + if(ret != ROK) + { + return RFAILED; + } /* PDSCH Config Common */ DU_ALLOC(bwp->pdsch_ConfigCommon, \ sizeof(struct BWP_DownlinkCommon__pdsch_ConfigCommon)); @@ -1152,8 +1274,11 @@ S16 BuildBwpDlCommon(BWP_DownlinkCommon_t *bwp) DU_LOG("\nDU APP : DL BWP memory allocation failed"); return RFAILED; } - BuildPdschCfgCommon(bwp->pdsch_ConfigCommon); - + ret=BuildPdschCfgCommon(bwp->pdsch_ConfigCommon); + if(ret != ROK) + { + return RFAILED; + } return ROK; } /* BuildBwpDlCommon */ @@ -1174,7 +1299,7 @@ S16 BuildBwpDlCommon(BWP_DownlinkCommon_t *bwp) * * ****************************************************************/ -S16 BuildBcchConfig(BCCH_Config_t *bcchCfg) +uint8_t BuildBcchConfig(BCCH_Config_t *bcchCfg) { BcchCfg duBcchCfg; @@ -1201,7 +1326,7 @@ S16 BuildBcchConfig(BCCH_Config_t *bcchCfg) * RFAILED - failure * * ****************************************************************/ -S16 BuildPcchConfig(PCCH_Config_t *pcchCfg) +uint8_t BuildPcchConfig(PCCH_Config_t *pcchCfg) { PcchCfg duPcchCfg; @@ -1268,9 +1393,10 @@ S16 BuildPcchConfig(PCCH_Config_t *pcchCfg) * * ****************************************************************/ -S16 BuildFreqInfoDl(FrequencyInfoDL_SIB_t *frequencyInfoDL) +uint8_t BuildFreqInfoDl(FrequencyInfoDL_SIB_t *frequencyInfoDL) { - uint8_t idx; + uint8_t ret; + uint8_t idx; uint8_t elementCnt; DlCfgCommon dlCfg; NR_MultiBandInfo_t *multiBandInfo; @@ -1281,7 +1407,7 @@ S16 BuildFreqInfoDl(FrequencyInfoDL_SIB_t *frequencyInfoDL) elementCnt = ODU_VALUE_ONE; frequencyInfoDL->frequencyBandList.list.count = elementCnt; frequencyInfoDL->frequencyBandList.list.size = \ - elementCnt * sizeof(NR_MultiBandInfo_t); + elementCnt * sizeof(NR_MultiBandInfo_t *); DU_ALLOC(frequencyInfoDL->frequencyBandList.list.array, \ frequencyInfoDL->frequencyBandList.list.size); @@ -1321,9 +1447,13 @@ S16 BuildFreqInfoDl(FrequencyInfoDL_SIB_t *frequencyInfoDL) elementCnt = ODU_VALUE_ONE; frequencyInfoDL->scs_SpecificCarrierList.list.count = elementCnt; frequencyInfoDL->scs_SpecificCarrierList.list.size = \ - elementCnt * sizeof(SCS_SpecificCarrier_t); - BuildScsSpecificCarrierListDl(&frequencyInfoDL->scs_SpecificCarrierList); + elementCnt * sizeof(SCS_SpecificCarrier_t *); + ret= BuildScsSpecificCarrierListDl(&frequencyInfoDL->scs_SpecificCarrierList); + if(ret != ROK) + { + return RFAILED; + } return ROK; }/* BuildFreqInfoDl */ @@ -1344,21 +1474,35 @@ S16 BuildFreqInfoDl(FrequencyInfoDL_SIB_t *frequencyInfoDL) * * ****************************************************************/ -S16 BuildDlCfgCommSib(DownlinkConfigCommonSIB_t *dlCfg) +uint8_t BuildDlCfgCommSib(DownlinkConfigCommonSIB_t *dlCfg) { /* DL frequency info */ - BuildFreqInfoDl(&dlCfg->frequencyInfoDL); - + uint8_t ret; + ret = BuildFreqInfoDl(&dlCfg->frequencyInfoDL); + if(ret != ROK) + { + return RFAILED; + } + FreqInfoDlret=ROK; /* BWP Downlink Common */ - BuildBwpDlCommon(&dlCfg->initialDownlinkBWP); - + ret = BuildBwpDlCommon(&dlCfg->initialDownlinkBWP); + if(ret != ROK) + { + return RFAILED; + } /* BCCH Config */ - BuildBcchConfig(&dlCfg->bcch_Config); - + ret = BuildBcchConfig(&dlCfg->bcch_Config); + if(ret != ROK) + { + return RFAILED; + } /* PCCH Config */ - BuildPcchConfig(&dlCfg->pcch_Config); - - return ROK; + ret = BuildPcchConfig(&dlCfg->pcch_Config); + if(ret != ROK) + { + return RFAILED; + } + return ROK; } /* BuildDlCfgCommSib */ /******************************************************************* @@ -1378,7 +1522,7 @@ S16 BuildDlCfgCommSib(DownlinkConfigCommonSIB_t *dlCfg) * * ****************************************************************/ -S16 BuildScsSpecificCarrierListUl +uint8_t BuildScsSpecificCarrierListUl ( struct FrequencyInfoUL_SIB__scs_SpecificCarrierList *scsCarrierList ) @@ -1429,20 +1573,23 @@ struct FrequencyInfoUL_SIB__scs_SpecificCarrierList *scsCarrierList * * ****************************************************************/ -S16 BuildFreqInfoUl(FrequencyInfoUL_SIB_t *frequencyInfoUL) +uint8_t BuildFreqInfoUl(FrequencyInfoUL_SIB_t *frequencyInfoUL) { - uint8_t elementCnt; + uint8_t elementCnt; UlCfgCommon ulCfg; - + uint8_t ret; ulCfg = duCfgParam.sib1Params.srvCellCfgCommSib.ulCfg; /* Subcarrier Spacing specifc carrier */ elementCnt = ODU_VALUE_ONE; frequencyInfoUL->scs_SpecificCarrierList.list.count = elementCnt; frequencyInfoUL->scs_SpecificCarrierList.list.size = \ - elementCnt * sizeof(SCS_SpecificCarrier_t); - BuildScsSpecificCarrierListUl(&frequencyInfoUL->scs_SpecificCarrierList); - + elementCnt * sizeof(SCS_SpecificCarrier_t *); + ret=BuildScsSpecificCarrierListUl(&frequencyInfoUL->scs_SpecificCarrierList); + if(ret != ROK) + { + return RFAILED; + } /* P-MAX */ DU_ALLOC(frequencyInfoUL->p_Max, sizeof(P_Max_t)); if(!frequencyInfoUL->p_Max) @@ -1451,7 +1598,7 @@ S16 BuildFreqInfoUl(FrequencyInfoUL_SIB_t *frequencyInfoUL) return RFAILED; } *frequencyInfoUL->p_Max = ulCfg.pMax; - + FreqInfoUlret=ROK; return ROK; }/* BuildFreqInfoUl */ @@ -1472,7 +1619,7 @@ S16 BuildFreqInfoUl(FrequencyInfoUL_SIB_t *frequencyInfoUL) * * ****************************************************************/ -S16 BuildRachCfgCommon(struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg) +uint8_t BuildRachCfgCommon(struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg) { RachCfgCommon duRachCfg; RACH_ConfigCommon_t *setup; @@ -1644,7 +1791,7 @@ S16 BuildRachCfgCommon(struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg) return RFAILED; } } - return ROK; + return ROK; }/* BuildRachCfgCommon */ /******************************************************************* @@ -1664,7 +1811,7 @@ S16 BuildRachCfgCommon(struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg) * * ****************************************************************/ -S16 BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg) +uint8_t BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg) { uint8_t idx; uint8_t elementCnt; @@ -1708,7 +1855,7 @@ S16 BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg) elementCnt = ODU_VALUE_ONE; setup->pusch_TimeDomainAllocationList->list.count = elementCnt; setup->pusch_TimeDomainAllocationList->list.size = \ - elementCnt * sizeof(PUSCH_TimeDomainResourceAllocation_t); + elementCnt * sizeof(PUSCH_TimeDomainResourceAllocation_t *); DU_ALLOC(setup->pusch_TimeDomainAllocationList->list.array, \ setup->pusch_TimeDomainAllocationList->list.size); @@ -1742,7 +1889,7 @@ S16 BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg) *timeDomRsrcAllocInfo->k2 = duPuschCfg.k2; timeDomRsrcAllocInfo->mappingType = duPuschCfg.mapType; - timeDomRsrcAllocInfo->startSymbolAndLength = duPuschCfg.startSymbAndLen; + timeDomRsrcAllocInfo->startSymbolAndLength = duPuschCfg.sliv; /* Msg3 Delta Preamble */ DU_ALLOC(setup->msg3_DeltaPreamble, sizeof(long)); @@ -1791,7 +1938,7 @@ S16 BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg) * * ****************************************************************/ -S16 BuildPucchCfgCommon( struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg) +uint8_t BuildPucchCfgCommon( struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg) { PucchCfgCommon duPucchCfg; PUCCH_ConfigCommon_t *setup; @@ -1870,9 +2017,10 @@ S16 BuildPucchCfgCommon( struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg) * * ****************************************************************/ -S16 BuildBwpUlCommon(BWP_UplinkCommon_t *bwp) +uint8_t BuildBwpUlCommon(BWP_UplinkCommon_t *bwp) { - UlCfgCommon duUlCfg; + uint8_t ret; + UlCfgCommon duUlCfg; duUlCfg = duCfgParam.sib1Params.srvCellCfgCommSib.ulCfg; @@ -1887,9 +2035,14 @@ S16 BuildBwpUlCommon(BWP_UplinkCommon_t *bwp) DU_LOG("\nDU APP : UL BWP memory allocation failed"); return RFAILED; } - BuildRachCfgCommon(bwp->rach_ConfigCommon); - - /* PUSCH Config Common */ + ret = BuildRachCfgCommon(bwp->rach_ConfigCommon); + if(ret != ROK) + { + return RFAILED; + } + RachCfgCommonret=ROK; + + /* PUSCH Config Common */ DU_ALLOC(bwp->pusch_ConfigCommon,\ sizeof(struct BWP_UplinkCommon__pusch_ConfigCommon)); if(!bwp->pusch_ConfigCommon) @@ -1897,9 +2050,14 @@ S16 BuildBwpUlCommon(BWP_UplinkCommon_t *bwp) DU_LOG("\nDU APP : UL BWP memory allocation failed"); return RFAILED; } - BuildPuschCfgCommon(bwp->pusch_ConfigCommon); - - /* PUCCH Config Common */ + ret = BuildPuschCfgCommon(bwp->pusch_ConfigCommon); + if(ret != ROK) + { + return RFAILED; + } + PuschCfgCommonret = ROK; + + /* PUCCH Config Common */ DU_ALLOC(bwp->pucch_ConfigCommon,\ sizeof(struct BWP_UplinkCommon__pucch_ConfigCommon)); if(!bwp->pucch_ConfigCommon) @@ -1907,8 +2065,11 @@ S16 BuildBwpUlCommon(BWP_UplinkCommon_t *bwp) DU_LOG("\nDU APP : UL BWP memory allocation failed"); return RFAILED; } - BuildPucchCfgCommon(bwp->pucch_ConfigCommon); - + ret = BuildPucchCfgCommon(bwp->pucch_ConfigCommon); + if(ret != ROK) + { + return RFAILED; + } return ROK; }/* BuildBwpUlCommon */ @@ -1929,14 +2090,21 @@ S16 BuildBwpUlCommon(BWP_UplinkCommon_t *bwp) * * ****************************************************************/ -S16 BuildUlCfgCommSib(UplinkConfigCommonSIB_t *ulCfg) +uint8_t BuildUlCfgCommSib(UplinkConfigCommonSIB_t *ulCfg) { - /* UL frequency info */ - BuildFreqInfoUl(&ulCfg->frequencyInfoUL); - + uint8_t ret; + /* UL frequency info */ + ret = BuildFreqInfoUl(&ulCfg->frequencyInfoUL); + if(ret != ROK) + { + return RFAILED; + } /* BWP Uplink Common */ - BuildBwpUlCommon(&ulCfg->initialUplinkBWP); - + ret = BuildBwpUlCommon(&ulCfg->initialUplinkBWP); + if(ret != ROK) + { + return RFAILED; + } /* Time Alignment timer */ ulCfg->timeAlignmentTimerCommon = \ duCfgParam.sib1Params.srvCellCfgCommSib.ulCfg.timeAlignTimerComm; @@ -1961,7 +2129,7 @@ S16 BuildUlCfgCommSib(UplinkConfigCommonSIB_t *ulCfg) * * ****************************************************************/ -S16 BuildTddUlDlCfgComm(TDD_UL_DL_ConfigCommon_t *tddCfg) +uint8_t BuildTddUlDlCfgComm(TDD_UL_DL_ConfigCommon_t *tddCfg) { TddUlDlCfgCommon duTddCfg; @@ -1997,11 +2165,11 @@ S16 BuildTddUlDlCfgComm(TDD_UL_DL_ConfigCommon_t *tddCfg) * RFAILED - failure * * ****************************************************************/ -S16 BuildServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) +uint8_t BuildServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) { SrvCellCfgCommSib duSrvCellCfg; BIT_STRING_t *ssbPosInBurst; - + uint8_t ret; duSrvCellCfg = duCfgParam.sib1Params.srvCellCfgCommSib; /* SSB Position in Burst */ @@ -2016,11 +2184,43 @@ S16 BuildServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) ssbPosInBurst->buf[0] = duSrvCellCfg.ssbPosInBurst; ssbPosInBurst->bits_unused = 0; - srvCellCfg->ssb_PeriodicityServingCell = duSrvCellCfg.ssbPrdServingCell; + switch(duSrvCellCfg.ssbPrdServingCell) + { + case SSB_PERIODICITY_5MS: + srvCellCfg->ssb_PeriodicityServingCell = \ + ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms5; + break; + case SSB_PERIODICITY_10MS: + srvCellCfg->ssb_PeriodicityServingCell = \ + ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms10; + break; + case SSB_PERIODICITY_20MS: + srvCellCfg->ssb_PeriodicityServingCell = \ + ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms20; + break; + case SSB_PERIODICITY_40MS: + srvCellCfg->ssb_PeriodicityServingCell = \ + ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms40; + break; + case SSB_PERIODICITY_80MS: + srvCellCfg->ssb_PeriodicityServingCell = \ + ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms80; + break; + case SSB_PERIODICITY_160MS: + srvCellCfg->ssb_PeriodicityServingCell = \ + ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms160; + break; + } + srvCellCfg->ss_PBCH_BlockPower = duSrvCellCfg.ssPbchBlockPwr; /* Downlink config common */ - BuildDlCfgCommSib(&srvCellCfg->downlinkConfigCommon); + ret = BuildDlCfgCommSib(&srvCellCfg->downlinkConfigCommon); + if(ret != ROK) + { + return RFAILED; + } + DlCfgCommSibret = ROK; /* Uplink Config Comm */ DU_ALLOC(srvCellCfg->uplinkConfigCommon, sizeof(UplinkConfigCommonSIB_t)); @@ -2029,8 +2229,13 @@ S16 BuildServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) DU_LOG("\nDU APP : Serving cell config common memory allocation failure"); return RFAILED; } - BuildUlCfgCommSib(srvCellCfg->uplinkConfigCommon); - + ret = BuildUlCfgCommSib(srvCellCfg->uplinkConfigCommon); + if(ret != ROK) + { + return RFAILED; + } + UlCfgCommSibret=ROK; + /* TDD UL DL Config Comm */ DU_ALLOC(srvCellCfg->tdd_UL_DL_ConfigurationCommon, sizeof(TDD_UL_DL_ConfigCommon_t)); if(!srvCellCfg->tdd_UL_DL_ConfigurationCommon) @@ -2038,8 +2243,11 @@ S16 BuildServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) DU_LOG("\nDU APP : Serving cell config common memory allocation failure"); return RFAILED; } - BuildTddUlDlCfgComm(srvCellCfg->tdd_UL_DL_ConfigurationCommon); - + ret = BuildTddUlDlCfgComm(srvCellCfg->tdd_UL_DL_ConfigurationCommon); + if(ret != ROK) + { + return RFAILED; + } return ROK; } @@ -2057,333 +2265,802 @@ S16 BuildServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) * RFAILED - failure * * ****************************************************************/ -int BuildSib1Msg() +uint8_t BuildSib1Msg() { SIB1_t *sib1Msg; CellAccessRelatedInfo_t *cellAccessInfo; - U8 elementCnt; - U8 idx, idx1, idx2; - asn_enc_rval_t encRetVal; - TrackingAreaCode_t *tac; - RAN_AreaCode_t *ranac; - CellIdentity_t *cellIdentity; - SIB_Mapping_t *sibMapInfo; - ServingCellConfigCommonSIB_t *srvCellCfg; - DownlinkConfigCommonSIB_t *dlCfg; - UplinkConfigCommonSIB_t *ulCfg; - FrequencyInfoDL_SIB_t *frequencyInfoDL; - FrequencyInfoUL_SIB_t *frequencyInfoUL; - BWP_DownlinkCommon_t *bwpDl; - BWP_UplinkCommon_t *bwpUl; - PDCCH_ConfigCommon_t *pdcchSetup; - SearchSpace_t *pdcchSearchSpace; - PDSCH_ConfigCommon_t *pdschSetup; - RACH_ConfigCommon_t *rachSetup; - PUSCH_ConfigCommon_t *puschSetup; - PUCCH_ConfigCommon_t *pucchSetup; - struct PLMN_IdentityInfo__plmn_IdentityList *plmnIdInfo; - struct SI_SchedulingInfo__schedulingInfoList *si_SchedulingInfoList; - struct BWP_DownlinkCommon__pdcch_ConfigCommon *pdcchCfg; - struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg; - struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg; - struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg; - struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg; - struct FrequencyInfoDL_SIB__scs_SpecificCarrierList *scsCarrierList; - struct FrequencyInfoUL_SIB__scs_SpecificCarrierList *scsCarrierListUl; - struct PDCCH_ConfigCommon__commonSearchSpaceList *pdcchSearchSpclist; - + uint8_t elementCnt; + uint8_t ret1; + asn_enc_rval_t encRetVal; + uint8_t ret = RFAILED; - DU_ALLOC(sib1Msg, sizeof(SIB1_t)); - if(!sib1Msg) - { - DU_LOG("DU APP: SIB1 msg memory allocation failure"); - return RFAILED; - } + do + { + DU_ALLOC(sib1Msg, sizeof(SIB1_t)); + if(!sib1Msg) + { + DU_LOG("DU APP: SIB1 msg memory allocation failure"); + break; + } - elementCnt = ODU_VALUE_ONE; - - /* PLMN list */ - cellAccessInfo = &sib1Msg->cellAccessRelatedInfo; - cellAccessInfo->plmn_IdentityList.list.count = - elementCnt; - cellAccessInfo->plmn_IdentityList.list.size - = elementCnt * sizeof(PLMN_IdentityInfo_t); - - BuildPlmnList(cellAccessInfo); - - /* Connection Establish Failure Control */ - DU_ALLOC(sib1Msg->connEstFailureControl, sizeof(ConnEstFailureControl_t)); - if(!sib1Msg->connEstFailureControl) - { - DU_LOG("DU APP: sib1Msg->connEstFailureControl memory allocation failure"); - return RFAILED; - } - sib1Msg->connEstFailureControl->connEstFailCount =\ - duCfgParam.sib1Params.connEstFailCnt; - sib1Msg->connEstFailureControl->connEstFailOffsetValidity =\ - duCfgParam.sib1Params.connEstFailOffValidity; - - /* SI Scheduling Info */ - DU_ALLOC(sib1Msg->si_SchedulingInfo, sizeof(SI_SchedulingInfo_t)); - if(!sib1Msg->si_SchedulingInfo) - { - DU_LOG("DU APP: sib1Msg->si_SchedulingInfo memory allocation failure"); - return RFAILED; - } - elementCnt = ODU_VALUE_ONE; - sib1Msg->si_SchedulingInfo->schedulingInfoList.list.count = elementCnt; - sib1Msg->si_SchedulingInfo->schedulingInfoList.list.size = elementCnt * sizeof(struct SchedulingInfo); - BuildSiSchedInfoList(&sib1Msg->si_SchedulingInfo->schedulingInfoList); - sib1Msg->si_SchedulingInfo->si_WindowLength = duCfgParam.sib1Params.siSchedInfo.winLen; - - /* Serving Cell Config Common */ - DU_ALLOC(sib1Msg->servingCellConfigCommon, sizeof(ServingCellConfigCommonSIB_t)); - if(!sib1Msg->servingCellConfigCommon) - { - DU_LOG("DU APP: sib1Msg->servingCellConfigCommon memory allocation failure"); - return RFAILED; - } - BuildServCellCfgCommonSib(sib1Msg->servingCellConfigCommon); - - - xer_fprint(stdout, &asn_DEF_SIB1, sib1Msg); - - /* Encode the F1SetupRequest type as APER */ - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_SIB1, 0, sib1Msg, PrepFinalEncBuf,\ + elementCnt = ODU_VALUE_ONE; + + /* PLMN list */ + cellAccessInfo = &sib1Msg->cellAccessRelatedInfo; + cellAccessInfo->plmn_IdentityList.list.count = + elementCnt; + cellAccessInfo->plmn_IdentityList.list.size + = elementCnt * sizeof(PLMN_IdentityInfo_t *); + + ret1 = BuildPlmnList(cellAccessInfo); + if(ret1 != ROK) + { + break; + } + /* Connection Establish Failure Control */ + DU_ALLOC(sib1Msg->connEstFailureControl, sizeof(ConnEstFailureControl_t)); + if(!sib1Msg->connEstFailureControl) + { + DU_LOG("DU APP: sib1Msg->connEstFailureControl memory allocation failure"); + break; + } + sib1Msg->connEstFailureControl->connEstFailCount =\ + duCfgParam.sib1Params.connEstFailCnt; + sib1Msg->connEstFailureControl->connEstFailOffsetValidity =\ + duCfgParam.sib1Params.connEstFailOffValidity; + + /* SI Scheduling Info */ + DU_ALLOC(sib1Msg->si_SchedulingInfo, sizeof(SI_SchedulingInfo_t)); + if(!sib1Msg->si_SchedulingInfo) + { + DU_LOG("DU APP: sib1Msg->si_SchedulingInfo memory allocation failure"); + break; + } + elementCnt = ODU_VALUE_ONE; + sib1Msg->si_SchedulingInfo->schedulingInfoList.list.count = elementCnt; + sib1Msg->si_SchedulingInfo->schedulingInfoList.list.size = elementCnt * + sizeof(struct SchedulingInfo *); + ret1 = BuildSiSchedInfoList(&sib1Msg->si_SchedulingInfo->schedulingInfoList); + if(ret1 != ROK) + { + break; + } + sib1Msg->si_SchedulingInfo->si_WindowLength = duCfgParam.sib1Params.siSchedInfo.winLen; + + /* Serving Cell Config Common */ + DU_ALLOC(sib1Msg->servingCellConfigCommon, sizeof(ServingCellConfigCommonSIB_t)); + if(!sib1Msg->servingCellConfigCommon) + { + DU_LOG("DU APP: sib1Msg->servingCellConfigCommon memory allocation failure"); + break; + } + ret1 = BuildServCellCfgCommonSib(sib1Msg->servingCellConfigCommon); + if(ret1 != ROK) + { + break; + } + + xer_fprint(stdout, &asn_DEF_SIB1, sib1Msg); + + /* Encode the F1SetupRequest type as APER */ + cmMemset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_SIB1, 0, sib1Msg, PrepFinalEncBuf,\ encBuf); - printf("\nencbufSize: %d\n", encBufSize); - if(encRetVal.encoded == -1) - { - DU_LOG("\nDU APP : Could not encode SIB1 structure (at %s)\n",\ + printf("\nencbufSize: %d\n", encBufSize); + if(encRetVal.encoded == -1) + { + DU_LOG("\nDU APP : Could not encode SIB1 structure (at %s)\n",\ encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; - } - for(int i=0; i< encBufSize; i++) - { - printf("%x\t",encBuf[i]); - } - printf("\n"); - - /* Free allocated memeory */ - - /* Free serving cell config common */ - srvCellCfg = sib1Msg->servingCellConfigCommon; - - /* Free downling config common */ - dlCfg = &srvCellCfg->downlinkConfigCommon; - - /* Free DL frequency info */ - frequencyInfoDL = &dlCfg->frequencyInfoDL; - - for(idx = 0; idx < frequencyInfoDL->frequencyBandList.list.count; idx++) - { - DU_FREE(frequencyInfoDL->frequencyBandList.list.array[idx]->\ - freqBandIndicatorNR, sizeof(FreqBandIndicatorNR_t)); - DU_FREE(frequencyInfoDL->frequencyBandList.list.array[idx],\ - sizeof(NR_MultiBandInfo_t)); - } - DU_FREE(frequencyInfoDL->frequencyBandList.list.array, \ - frequencyInfoDL->frequencyBandList.list.size); - - scsCarrierList = &frequencyInfoDL->scs_SpecificCarrierList; - for(idx = 0; idx < scsCarrierList->list.count; idx++) - { - DU_FREE(scsCarrierList->list.array[idx], sizeof(SCS_SpecificCarrier_t)); - } - DU_FREE(scsCarrierList->list.array, scsCarrierList->list.size); - - /* Free BWP DL common */ - bwpDl = &dlCfg->initialDownlinkBWP; - - /* Free PDCCH config common */ - pdcchCfg = bwpDl->pdcch_ConfigCommon; - pdcchSetup = pdcchCfg->choice.setup; - - DU_FREE(pdcchSetup->controlResourceSetZero, sizeof(ControlResourceSetZero_t)); - DU_FREE(pdcchSetup->searchSpaceZero, sizeof(SearchSpaceZero_t)); - - pdcchSearchSpclist = pdcchSetup->commonSearchSpaceList; - for(idx = 0; idx < pdcchSearchSpclist->list.count; idx++) - { - pdcchSearchSpace = pdcchSearchSpclist->list.array[idx]; - - DU_FREE(pdcchSearchSpace->controlResourceSetId, \ - sizeof(ControlResourceSetId_t)); - DU_FREE(pdcchSearchSpace->monitoringSlotPeriodicityAndOffset,\ - sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset)); - DU_FREE(pdcchSearchSpace->monitoringSymbolsWithinSlot->buf, \ - pdcchSearchSpace->monitoringSymbolsWithinSlot->size * sizeof(uint8_t)); - DU_FREE(pdcchSearchSpace->monitoringSymbolsWithinSlot,\ - sizeof(BIT_STRING_t)); - DU_FREE(pdcchSearchSpace->nrofCandidates,\ - sizeof(struct SearchSpace__nrofCandidates)); - DU_FREE(pdcchSearchSpace->searchSpaceType->choice.common->\ - dci_Format0_0_AndFormat1_0, sizeof(struct \ - SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0)); - DU_FREE(pdcchSearchSpace->searchSpaceType->choice.common,\ - sizeof(struct SearchSpace__searchSpaceType__common)); - DU_FREE(pdcchSearchSpace->searchSpaceType,\ - sizeof( struct SearchSpace__searchSpaceType)); - - DU_FREE(pdcchSearchSpclist->list.array[idx], sizeof(SearchSpace_t)); - } - DU_FREE(pdcchSearchSpclist->list.array, pdcchSearchSpclist->list.size); - - DU_FREE(pdcchSetup->commonSearchSpaceList,\ - sizeof(struct PDCCH_ConfigCommon__commonSearchSpaceList)); - DU_FREE(pdcchSetup->searchSpaceSIB1, sizeof(SearchSpaceId_t)); - DU_FREE(pdcchSetup->pagingSearchSpace, sizeof(SearchSpaceId_t)); - DU_FREE(pdcchSetup->ra_SearchSpace, sizeof(SearchSpaceId_t)); - - DU_FREE(pdcchCfg->choice.setup, sizeof(PDCCH_ConfigCommon_t)); - DU_FREE(bwpDl->pdcch_ConfigCommon, \ - sizeof(struct BWP_DownlinkCommon__pdcch_ConfigCommon)); - - /* Free PDSCH Config Common */ - pdschCfg = bwpDl->pdsch_ConfigCommon; - pdschSetup = pdschCfg->choice.setup; - - for(idx=0; idxpdsch_TimeDomainAllocationList->list.count; idx++) - { - DU_FREE(pdschSetup->pdsch_TimeDomainAllocationList->list.array[idx]->k0, \ - sizeof(long)); - DU_FREE(pdschSetup->pdsch_TimeDomainAllocationList->list.array[idx],\ - sizeof(PDSCH_TimeDomainResourceAllocation_t)); - } - DU_FREE(pdschSetup->pdsch_TimeDomainAllocationList->list.array,\ - pdschSetup->pdsch_TimeDomainAllocationList->list.size); - DU_FREE(pdschSetup->pdsch_TimeDomainAllocationList, \ - sizeof(PDSCH_TimeDomainResourceAllocationList_t)); - DU_FREE(pdschCfg->choice.setup, sizeof(PDSCH_ConfigCommon_t)); - DU_FREE(bwpDl->pdsch_ConfigCommon, \ - sizeof(struct BWP_DownlinkCommon__pdsch_ConfigCommon)); - - /* Free Uplink Config Common */ - ulCfg = srvCellCfg->uplinkConfigCommon; - - /* Free UL Frequency Info */ - frequencyInfoUL = &ulCfg->frequencyInfoUL; - scsCarrierListUl = &frequencyInfoUL->scs_SpecificCarrierList; - for(idx = 0; idx < scsCarrierListUl->list.count; idx++) - { - DU_FREE(scsCarrierListUl->list.array[idx], sizeof(SCS_SpecificCarrier_t)); - } - DU_FREE(scsCarrierListUl->list.array, scsCarrierList->list.size); - DU_FREE(frequencyInfoUL->p_Max, sizeof(P_Max_t)); - - /* Free BWP Uplink common */ - bwpUl = &ulCfg->initialUplinkBWP; - - /* Free RACH config Common */ - rachCfg = bwpUl->rach_ConfigCommon; - rachSetup = rachCfg->choice.setup; - DU_FREE(rachSetup->totalNumberOfRA_Preambles, sizeof(long)); - DU_FREE(rachSetup->ssb_perRACH_OccasionAndCB_PreamblesPerSSB,\ - sizeof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB)); - DU_FREE(rachSetup->rsrp_ThresholdSSB, sizeof(RSRP_Range_t)); - DU_FREE(rachSetup->msg1_SubcarrierSpacing, sizeof(SubcarrierSpacing_t)); - DU_FREE(rachCfg->choice.setup, sizeof(RACH_ConfigCommon_t)); - DU_FREE(bwpUl->rach_ConfigCommon, \ - sizeof(struct BWP_UplinkCommon__rach_ConfigCommon)); - - /* Free PUSCH Config Common */ - puschCfg = bwpUl->pusch_ConfigCommon; - puschSetup = puschCfg->choice.setup; - for(idx=0; idxpusch_TimeDomainAllocationList->list.count; idx++) - { - DU_FREE(puschSetup->pusch_TimeDomainAllocationList->list.array[idx]->k2,\ - sizeof(long)); - DU_FREE(puschSetup->pusch_TimeDomainAllocationList->list.array[idx],\ - sizeof(PUSCH_TimeDomainResourceAllocation_t)); - } - DU_FREE(puschSetup->pusch_TimeDomainAllocationList->list.array, \ - puschSetup->pusch_TimeDomainAllocationList->list.size); - DU_FREE(puschSetup->pusch_TimeDomainAllocationList,\ - sizeof(PUSCH_TimeDomainResourceAllocationList_t)); - DU_FREE(puschSetup->msg3_DeltaPreamble, sizeof(long)); - DU_FREE(puschSetup->p0_NominalWithGrant, sizeof(long)); - DU_FREE(puschCfg->choice.setup, sizeof(PUSCH_ConfigCommon_t)); - DU_FREE(bwpUl->pusch_ConfigCommon,\ - sizeof(struct BWP_UplinkCommon__pusch_ConfigCommon)); - - - /* Free PUCCH Config Common */ - pucchCfg = bwpUl->pucch_ConfigCommon; - pucchSetup = pucchCfg->choice.setup; - DU_FREE(pucchSetup->pucch_ResourceCommon, sizeof(long)); - DU_FREE(pucchSetup->p0_nominal, sizeof(long)); - DU_FREE(pucchCfg->choice.setup, sizeof(PUCCH_ConfigCommon_t)); - DU_FREE(bwpUl->pucch_ConfigCommon,\ - sizeof(struct BWP_UplinkCommon__pucch_ConfigCommon)); - - DU_FREE(srvCellCfg->uplinkConfigCommon, sizeof(UplinkConfigCommonSIB_t)); - - DU_FREE(srvCellCfg->ssb_PositionsInBurst.inOneGroup.buf, \ - srvCellCfg->ssb_PositionsInBurst.inOneGroup.size * sizeof(uint8_t)); - DU_FREE(sib1Msg->servingCellConfigCommon, sizeof(ServingCellConfigCommonSIB_t)); - - /* Free PLMN List */ + break; + } + for(int i=0; i< encBufSize; i++) + { + printf("%x\t",encBuf[i]); + } + printf("\n"); + + ret = ROK; + break; + }while(1); + + FreeSib1Msg(sib1Msg); + + return ret; - for(idx=0; idxplmn_IdentityList.list.count; idx++) - { - plmnIdInfo = &cellAccessInfo->plmn_IdentityList.list.array[idx]->\ - plmn_IdentityList; - for(idx1=0; idx1list.count; idx1++) - { - for(idx2=0; idx2list.array[idx1]->mnc.list.count; idx2++) + +} +/******************************************************************* + * + * @brief : deallocating the memory of BuildSib1Msg + * + * @details + * + * Function : FreeFreqInfoDl + * + * Functionality: Freeing memory of BuildFreqInfoDl + * + * @params[in] : FrequencyInfoDL_SIB_t *frequencyInfoDL + * @return : void + * + *******************************************************************/ +void FreeFreqInfoDl(FrequencyInfoDL_SIB_t *frequencyInfoDL) +{ + uint8_t idx=0; + uint8_t idx1=0; + + /* Free DL frequency info */ + if(!frequencyInfoDL->frequencyBandList.list.array) + { + /*Free Frequency band indicator */ + if(!frequencyInfoDL->frequencyBandList.list.array[idx]) { - DU_FREE(plmnIdInfo->list.array[idx1]->mcc->list.array[idx2], - sizeof(MCC_MNC_Digit_t)); - DU_FREE(plmnIdInfo->list.array[idx1]->mnc.list.array[idx2], - sizeof(MCC_MNC_Digit_t)); + if(!frequencyInfoDL->frequencyBandList.list.array[idx]->\ + freqBandIndicatorNR) + { + if(!frequencyInfoDL->scs_SpecificCarrierList.list.array) + { + for(idx1 = 0;idx1scs_SpecificCarrierList.list.count;idx1++) + { + if(!frequencyInfoDL->scs_SpecificCarrierList.list.array[idx1]) + { + DU_FREE(frequencyInfoDL->scs_SpecificCarrierList.list.\ + array[idx1], sizeof(SCS_SpecificCarrier_t)); + } + } + DU_FREE(frequencyInfoDL->scs_SpecificCarrierList.list.array, + frequencyInfoDL->scs_SpecificCarrierList.list.size); + } + DU_FREE(frequencyInfoDL->frequencyBandList.list.\ + array[idx]->freqBandIndicatorNR, sizeof(FreqBandIndicatorNR_t)); + } + } + for(idx = 0; idx frequencyBandList.list.count; idx++) + { + if(!frequencyInfoDL->frequencyBandList.list.array[idx]) + { + DU_FREE(frequencyInfoDL->frequencyBandList.list.array[idx],\ + sizeof(NR_MultiBandInfo_t)); + } + } + DU_FREE(frequencyInfoDL->frequencyBandList.list.array,\ + frequencyInfoDL->frequencyBandList.list.size); + } +} +/******************************************************************* + * + * @brief : deallocating the memory of BuildSib1Msg + * + * @details + * + * Function : FreeCommonSerachSpaceList + * + * Functionality: deallocating the memory of BuildCommonSerachSpaceList + * + * @params[in] :struct PDCCH_ConfigCommon__commonSearchSpaceList *searchSpclist + * @return : void + * + *******************************************************************/ +void FreeCommonSerachSpaceList( struct PDCCH_ConfigCommon__commonSearchSpaceList +*searchSpclist) +{ + uint8_t idx=0; + SearchSpace_t *searchSpace= NULLP; + + if(!searchSpclist->list.array) + { + if( searchSpclist->list.array[idx] != NULLP) + { + searchSpace= searchSpclist->list.array[idx]; + if(!searchSpace->controlResourceSetId) + { + if(!searchSpace->monitoringSlotPeriodicityAndOffset) + { + if(!searchSpace->monitoringSymbolsWithinSlot) + { + if(!searchSpace->monitoringSymbolsWithinSlot->buf) + { + if(!searchSpace->nrofCandidates) + { + if(!searchSpace->searchSpaceType) + { + switch(searchSpace->searchSpaceType->present) + { + case SearchSpace__searchSpaceType_PR_NOTHING: + break; + case SearchSpace__searchSpaceType_PR_common: + { + if(!searchSpace->searchSpaceType->choice.common) + { + if(!searchSpace->searchSpaceType->choice.\ + common->dci_Format0_0_AndFormat1_0) + { + DU_FREE(searchSpace->searchSpaceType->choice.\ + common->dci_Format0_0_AndFormat1_0,sizeof(struct\ + SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0)); + } + DU_FREE(searchSpace->searchSpaceType->choice.common,\ + sizeof(struct SearchSpace__searchSpaceType__common)); + } + break; + } + case SearchSpace__searchSpaceType_PR_ue_Specific: + break; + default: + break; + } + DU_FREE(searchSpace->searchSpaceType,\ + sizeof( struct SearchSpace__searchSpaceType)); + } + DU_FREE(searchSpace->nrofCandidates,\ + sizeof(struct SearchSpace__nrofCandidates)); + } + DU_FREE(searchSpace->monitoringSymbolsWithinSlot->buf,\ + searchSpace->monitoringSymbolsWithinSlot->size); + } + DU_FREE(searchSpace->monitoringSymbolsWithinSlot,\ + sizeof(BIT_STRING_t)); + } + DU_FREE(searchSpace->monitoringSlotPeriodicityAndOffset,\ + sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset)); + } + DU_FREE(searchSpace->controlResourceSetId,sizeof(ControlResourceSetId_t)); + } + } + for(idx = 0; idx < searchSpclist->list.count; idx++) + { + if(!searchSpclist->list.array[idx]) + { + DU_FREE(searchSpclist->list.array[idx], sizeof(SearchSpace_t)); + } + } + DU_FREE(searchSpclist->list.array, searchSpclist->list.size) + } +} +/******************************************************************* + * + * @brief : deallocating the memory of BuildSib1Msg + * + * @details + * + * Function : FreeBwpDlCommon + * + * Functionality :Deallocating memory of BuildBwpDlCommon + * + * @params[in] : BWP_DownlinkCommon_t *bwp + * + * @return : void + * + *******************************************************************/ +void FreeBwpDlCommon(BWP_DownlinkCommon_t *bwp) +{ + uint8_t idx =0; + struct BWP_DownlinkCommon__pdsch_ConfigCommon *pdschCfg=bwp->pdsch_ConfigCommon; + struct BWP_DownlinkCommon__pdcch_ConfigCommon *pdcchCfg=bwp->pdcch_ConfigCommon; + pdcchCfg->present=duCfgParam.sib1Params.srvCellCfgCommSib.dlCfg.pdcchCfg.present; + pdschCfg->present=duCfgParam.sib1Params.srvCellCfgCommSib.dlCfg.pdschCfg.present; + + if(!bwp->pdcch_ConfigCommon) + { + if(!bwp->pdsch_ConfigCommon) + { + switch( pdschCfg->present) + { + case BWP_DownlinkCommon__pdsch_ConfigCommon_PR_NOTHING: + { + //TODO + break; + } + case BWP_DownlinkCommon__pdsch_ConfigCommon_PR_release: + { + //TODO + break; + } + case BWP_DownlinkCommon__pdsch_ConfigCommon_PR_setup: + { + if(!pdschCfg->choice.setup) + { + if(!pdschCfg->choice.setup->pdsch_TimeDomainAllocationList) + { + if(!pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array) + { + if(pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array[idx]!= NULLP) + { + if(!pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array[idx]->k0) + { + DU_FREE(pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array[idx]->k0,\ + sizeof(long)); + } + } + for(idx=0; idxchoice.setup->pdsch_TimeDomainAllocationList->list.count ; idx++) + { + if(pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array[idx]!= + NULLP) + { + DU_FREE(pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array[idx],\ + sizeof(PDSCH_TimeDomainResourceAllocation_t)); + } + } + DU_FREE(pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.array,\ + pdschCfg->choice.setup->pdsch_TimeDomainAllocationList->list.size); + } + DU_FREE(pdschCfg->choice.setup->pdsch_TimeDomainAllocationList,\ + sizeof(PDSCH_TimeDomainResourceAllocationList_t)); + } + DU_FREE(pdschCfg->choice.setup, + sizeof(PDSCH_ConfigCommon_t)); + } + } + default: + break; + } + DU_FREE(bwp->pdsch_ConfigCommon,\ + sizeof(struct BWP_DownlinkCommon__pdsch_ConfigCommon)); + } + + switch(pdcchCfg->present) + { + case BWP_DownlinkCommon__pdcch_ConfigCommon_PR_NOTHING: + { + //TODO + break; + } + case BWP_DownlinkCommon__pdcch_ConfigCommon_PR_release: + { + //TODO + break; + } + case BWP_DownlinkCommon__pdcch_ConfigCommon_PR_setup: + { + if(!pdcchCfg->choice.setup) + { + /* Control Resource Set Zero */ + if(! pdcchCfg->choice.setup->controlResourceSetZero) + { + /* Search space zero */ + if(! pdcchCfg->choice.setup->searchSpaceZero) + { + /* Common Search Space List */ + if(! pdcchCfg->choice.setup->commonSearchSpaceList) + { + if(CommonSerachSpaceListret==ROK) + { + if(!pdcchCfg->choice.setup->searchSpaceSIB1) + { + if(!pdcchCfg->choice.setup->pagingSearchSpace) + { + if(!pdcchCfg->choice.setup->ra_SearchSpace) + { + DU_FREE(pdcchCfg->choice.setup->ra_SearchSpace, + sizeof(SearchSpaceId_t)); + } + DU_FREE( pdcchCfg->choice.setup->pagingSearchSpace, + sizeof(SearchSpaceId_t)); + } + DU_FREE( pdcchCfg->choice.setup->searchSpaceSIB1, + sizeof(SearchSpaceId_t)); + } + } + + FreeCommonSerachSpaceList(pdcchCfg->choice.setup->commonSearchSpaceList); + + DU_FREE( pdcchCfg->choice.setup->commonSearchSpaceList,\ + sizeof(struct + PDCCH_ConfigCommon__commonSearchSpaceList)); + } + DU_FREE( pdcchCfg->choice.setup->searchSpaceZero, + sizeof(SearchSpaceZero_t)); + } + DU_FREE( pdcchCfg->choice.setup->controlResourceSetZero, + sizeof(ControlResourceSetZero_t)); + } + DU_FREE(pdcchCfg->choice.setup, + sizeof(PDCCH_ConfigCommon_t)); + } + break; + } + default: + break; + } + DU_FREE(bwp->pdcch_ConfigCommon,sizeof(struct BWP_DownlinkCommon__pdcch_ConfigCommon)); + } +} +/******************************************************************* + * + * @brief deallocating the memory of BuildSib1Msg + * + * @details + * + * Function: FreeUlCfgCommSib + * + * Functionality deallocating the memory of BuildUlCfgCommSib + * + * @params[in] : UplinkConfigCommonSIB_t *ulCfg + * + * @return : void + * + *******************************************************************/ +void FreeUlCfgCommSib(UplinkConfigCommonSIB_t *ulCfg) +{ + uint8_t idx=0; + RACH_ConfigCommon_t *setup; + BWP_UplinkCommon_t *bwp=&ulCfg->initialUplinkBWP; + struct FrequencyInfoUL_SIB__scs_SpecificCarrierList *scsCarrierList; + struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg; + struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg; + struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg; + puschCfg=ulCfg->initialUplinkBWP.pusch_ConfigCommon; + rachCfg =bwp->rach_ConfigCommon; + scsCarrierList = &ulCfg->frequencyInfoUL.scs_SpecificCarrierList; + + if(!scsCarrierList->list.array) + { + if(!ulCfg->frequencyInfoUL.p_Max) + { + if(FreqInfoUlret == ROK) + { + if(!bwp->rach_ConfigCommon) + { + if(RachCfgCommonret== ROK) + { + if(!bwp->pusch_ConfigCommon) + { + + if(PuschCfgCommonret==ROK) + { + if(!bwp->pucch_ConfigCommon) + { + pucchCfg=bwp->pucch_ConfigCommon; + switch(pucchCfg->present) + { + case BWP_UplinkCommon__pucch_ConfigCommon_PR_NOTHING: + break; + case BWP_UplinkCommon__pucch_ConfigCommon_PR_release: + break; + case BWP_UplinkCommon__pucch_ConfigCommon_PR_setup: + { + if(!pucchCfg->choice.setup) + { + + if(!pucchCfg->choice.setup->pucch_ResourceCommon) + { + if(!pucchCfg->choice.setup->p0_nominal) + { + DU_FREE(pucchCfg->choice.setup->p0_nominal, + sizeof(long)); + } + DU_FREE(pucchCfg->choice.setup->pucch_ResourceCommon, + sizeof(long)); + } + DU_FREE(pucchCfg->choice.setup, + sizeof(PUCCH_ConfigCommon_t)); + } + } + default: + break; + } + DU_FREE(bwp->pucch_ConfigCommon,\ + sizeof(struct + BWP_UplinkCommon__pucch_ConfigCommon)); + } + } + switch(puschCfg->present) + { + case BWP_UplinkCommon__pusch_ConfigCommon_PR_NOTHING: + break; + case BWP_UplinkCommon__pusch_ConfigCommon_PR_release: + break; + case BWP_UplinkCommon__pusch_ConfigCommon_PR_setup: + { + if(!puschCfg->choice.setup) + { + + if(! puschCfg->choice.setup->pusch_TimeDomainAllocationList) + { + if(! puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.array) + { + if(!puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.array[idx]) + { + if(!puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.array[idx]->k2) + { + if(! puschCfg->choice.setup->msg3_DeltaPreamble) + { + if(!puschCfg->choice.setup->p0_NominalWithGrant) + { + DU_FREE(puschCfg->choice.setup->p0_NominalWithGrant, + sizeof(long)); + } + DU_FREE(puschCfg->choice.setup->msg3_DeltaPreamble, + sizeof(long)); + } + DU_FREE(puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.\ + array[idx]->k2, sizeof(long)); + } + } + for(idx=0; + idxchoice.setup->pusch_TimeDomainAllocationList->list.count; + idx++) + { + if(!puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.array[idx]) + { + DU_FREE(puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.array[idx],\ + sizeof(PUSCH_TimeDomainResourceAllocation_t)); + } + } + DU_FREE(puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.array,\ + puschCfg->choice.setup->pusch_TimeDomainAllocationList->list.size); + } + DU_FREE(puschCfg->choice.setup->pusch_TimeDomainAllocationList,\ + sizeof(PUSCH_TimeDomainResourceAllocationList_t)); + } + DU_FREE(puschCfg->choice.setup, + sizeof(PUSCH_ConfigCommon_t)); + } + } + default : + break; + } + + DU_FREE(bwp->pusch_ConfigCommon,\ + sizeof(struct BWP_UplinkCommon__pusch_ConfigCommon)); + } + } + switch(rachCfg->present) + { + case BWP_UplinkCommon__rach_ConfigCommon_PR_NOTHING: + break; + case BWP_UplinkCommon__rach_ConfigCommon_PR_release: + break; + case BWP_UplinkCommon__rach_ConfigCommon_PR_setup: + { + if(!rachCfg->choice.setup) + { + setup = rachCfg->choice.setup; + if(!setup->totalNumberOfRA_Preambles) + { + if(!setup->ssb_perRACH_OccasionAndCB_PreamblesPerSSB) + { + if(!setup->rsrp_ThresholdSSB) + { + if(!setup->msg1_SubcarrierSpacing) + { + DU_FREE(setup->msg1_SubcarrierSpacing, + sizeof(SubcarrierSpacing_t)); + } + DU_FREE(setup->rsrp_ThresholdSSB, + sizeof(RSRP_Range_t)); + } + DU_FREE(setup->ssb_perRACH_OccasionAndCB_PreamblesPerSSB,\ + sizeof(struct + RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB)); + } + DU_FREE(setup->totalNumberOfRA_Preambles, + sizeof(long)); + } + + DU_FREE(rachCfg->choice.setup, + sizeof(RACH_ConfigCommon_t)); + } + } + default: + break; + } + DU_FREE(bwp->rach_ConfigCommon,\ + sizeof(struct BWP_UplinkCommon__rach_ConfigCommon)); + } + } + DU_FREE(ulCfg->frequencyInfoUL.p_Max, sizeof(P_Max_t)); + } + for(idx = 0; idx < scsCarrierList->list.count; idx++) + { + if(!scsCarrierList->list.array[idx]) + { + DU_FREE(scsCarrierList->list.array[idx], + sizeof(SCS_SpecificCarrier_t)); + } } - DU_FREE(plmnIdInfo->list.array[idx1]->mcc->list.array, - plmnIdInfo->list.array[idx1]->mcc->list.size); - DU_FREE(plmnIdInfo->list.array[idx1]->mnc.list.array, - plmnIdInfo->list.array[idx1]->mnc.list.size); - DU_FREE(plmnIdInfo->list.array[idx1]->mcc, - sizeof(MCC_t)); - DU_FREE(plmnIdInfo->list.array[idx1], - sizeof(PLMN_IdentitY_t)); - } - DU_FREE(cellAccessInfo->plmn_IdentityList.list.array[idx], - sizeof(PLMN_IdentityInfo_t)); - cellIdentity =\ - &cellAccessInfo->plmn_IdentityList.list.array[idx]->cellIdentity; - DU_FREE(cellIdentity->buf, cellIdentity->size); - - ranac = cellAccessInfo->plmn_IdentityList.list.array[idx]->ranac; - DU_FREE(ranac, sizeof(RAN_AreaCode_t)); - - tac = cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode; - DU_FREE(tac->buf, tac->size); - DU_FREE(tac, sizeof(TrackingAreaCode_t)); + DU_FREE(scsCarrierList->list.array, scsCarrierList->list.size); + } +} +/******************************************************************* + * + * @brief : Deallocating memory of SIB1 message + * + * @details + * + * Function : FreeServCellCfgCommonSib + * + * Functionality: Deallocating memory of BuildServCellCfgCommonSib + * + * @params[in] : ServingCellConfigCommonSIB_t *srvCellCfg + * @return : void + * + *******************************************************************/ +void FreeServCellCfgCommonSib(ServingCellConfigCommonSIB_t *srvCellCfg) +{ + BIT_STRING_t *ssbPosInBurst; + ssbPosInBurst = &srvCellCfg->ssb_PositionsInBurst.inOneGroup; + DownlinkConfigCommonSIB_t *dlCfg=&srvCellCfg->downlinkConfigCommon; + + if(!ssbPosInBurst->buf) + { + /* Free DL frequency info */ + if(FreqInfoDlret == ROK) + { + if(DlCfgCommSibret == ROK) + { + /* Uplink Config Comm */ + if(!srvCellCfg->uplinkConfigCommon) + { + if(UlCfgCommSibret==ROK) + { + /* TDD UL DL Config Comm */ + if(!srvCellCfg->tdd_UL_DL_ConfigurationCommon) + { + DU_FREE(srvCellCfg->tdd_UL_DL_ConfigurationCommon, + sizeof(TDD_UL_DL_ConfigCommon_t)); + } + } + FreeUlCfgCommSib(srvCellCfg->uplinkConfigCommon); + DU_FREE(srvCellCfg->uplinkConfigCommon, + sizeof(UplinkConfigCommonSIB_t)); + } + } + FreeBwpDlCommon(&dlCfg->initialDownlinkBWP); + } + FreeFreqInfoDl(&dlCfg->frequencyInfoDL); + DU_FREE(ssbPosInBurst->buf, ssbPosInBurst->size * sizeof(uint8_t)); + } +} +/******************************************************************* + * + * @brief : Deallcating memory of the function BuildSib1Msg + * + * @details + * + * Function : FreeSib1Msg + * + * Functionality: Deallcating memory of the function BuildSib1Msg + * + * @params[in] ServingCellConfigCommonSIB_t pointer + * @return void + * + *******************************************************************/ +void FreeSib1Msg(SIB1_t *sib1Msg) +{ + uint8_t idx=0; + uint8_t idx1=0; + uint8_t idx2=0; + CellIdentity_t *cellIdentity = NULLP; + CellAccessRelatedInfo_t *cellAccessInfo ; + struct PLMN_IdentityInfo__plmn_IdentityList *plmnIdInfo; + + + if(sib1Msg != NULLP) + { + cellAccessInfo = &sib1Msg->cellAccessRelatedInfo; + if(cellAccessInfo->plmn_IdentityList.list.array !=NULLP) + { + if(cellAccessInfo->plmn_IdentityList.list.array[idx]!=NULLP) + { + plmnIdInfo = + &cellAccessInfo->plmn_IdentityList.list.array[idx]->plmn_IdentityList; + + if(plmnIdInfo->list.array !=NULLP) + { + if(!plmnIdInfo->list.array[idx]) + { + if(!plmnIdInfo->list.array[idx]->mcc) + { + if(!(plmnIdInfo->list.array[idx]->mcc->list.array)) + { + if(!plmnIdInfo->list.array[idx]->mnc.list.array) + { + /*Free Tracking Area Code */ + if(!cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode) + { + /*Free RANAC */ + if(!cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode->buf) + { + /* Free CellIdentity */ + if(!cellAccessInfo->plmn_IdentityList.list.array[idx]->ranac) + { + cellIdentity + =&cellAccessInfo->plmn_IdentityList.\ + list.array[idx]->cellIdentity; + if(!cellIdentity->buf) + { + /*Free Connection Establish Failure Control */ + if(!sib1Msg->connEstFailureControl) + { + /*Free Serving Cell Config Common */ + if(!sib1Msg->si_SchedulingInfo) + { + /* Free Serving Cell Config Common* */ + if(!sib1Msg->servingCellConfigCommon) + { + /*Free BuildServCellCfgCommonSib*/ + FreeServCellCfgCommonSib(\ + sib1Msg->servingCellConfigCommon); + + DU_FREE(sib1Msg->servingCellConfigCommon, + sizeof(ServingCellConfigCommonSIB_t)); + } + + DU_FREE(sib1Msg->si_SchedulingInfo, + sizeof(SI_SchedulingInfo_t)); + } + + DU_FREE(sib1Msg->connEstFailureControl, + sizeof(ConnEstFailureControl_t)); + } + DU_FREE(cellIdentity->buf,cellIdentity->size); + + } + DU_FREE(cellAccessInfo->plmn_IdentityList.list.array[idx]->ranac, sizeof(RAN_AreaCode_t)); + + } + DU_FREE(cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode->buf,\ + cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode->size); + + } + DU_FREE(cellAccessInfo->plmn_IdentityList.list.array[idx]->trackingAreaCode\ + , sizeof(TrackingAreaCode_t)); + } + + for(idx2=0; idx2list.array[idx1]->mnc.list.count; idx2++) + { + if(!plmnIdInfo->list.array[idx2]->mnc.list.array[idx2]) + { + DU_FREE(plmnIdInfo->list.array[idx2]->mnc.list.array[idx2], + sizeof(MCC_MNC_Digit_t)); + } + } + DU_FREE(plmnIdInfo->list.array[idx]->mnc.list.array, + plmnIdInfo->list.array[idx1]->mnc.list.size); + } + + for(idx1=0; idx1list.array[idx]->mcc->list.count; idx1++) + { + if(plmnIdInfo->list.array[idx]->mcc->list.array[idx1]!=NULLP) + { + DU_FREE(plmnIdInfo->list.array[idx]->mcc->list.array[idx1],\ + sizeof(MCC_MNC_Digit_t)); + } + + } + DU_FREE(plmnIdInfo->list.array[idx]->mcc->list.array,\ + plmnIdInfo->list.array[idx]->mcc->list.size) + } + DU_FREE(plmnIdInfo->list.array[idx]->mcc,sizeof(MCC_t)); + } + } + for(idx1=0; idx1list.count; idx1++) + { + if(!(plmnIdInfo->list.array[idx1])) + { + DU_FREE(plmnIdInfo->list.array[idx1], + sizeof(PLMN_IdentitY_t)); + } + } + DU_FREE(plmnIdInfo->list.array, plmnIdInfo->list.size); + } + } + for(idx=0; idxplmn_IdentityList.list.count; idx++) + { + if(cellAccessInfo->plmn_IdentityList.list.array[idx]!=NULLP) + { + DU_FREE(cellAccessInfo->plmn_IdentityList.list.array[idx], + sizeof(PLMN_IdentityInfo_t)); + } + } + DU_FREE(cellAccessInfo->plmn_IdentityList.list.array, + cellAccessInfo->plmn_IdentityList.list.size); + } + DU_FREE(sib1Msg, sizeof(SIB1_t)); } - DU_FREE(cellAccessInfo->plmn_IdentityList.list.array, - cellAccessInfo->plmn_IdentityList.list.size); - - si_SchedulingInfoList = &sib1Msg->si_SchedulingInfo->schedulingInfoList; - for(idx = 0; idx < si_SchedulingInfoList->list.count; idx++) - { - sibMapInfo = &si_SchedulingInfoList->list.array[idx]->sib_MappingInfo; - for(idx1 = 0; idx1 < sibMapInfo->list.count; idx1++) - { - DU_FREE(sibMapInfo->list.array[idx1]->valueTag, sizeof(long)); - DU_FREE(sibMapInfo->list.array[idx1], sizeof(SIB_TypeInfo_t)); - } - DU_FREE(sibMapInfo->list.array, sibMapInfo->list.size); - DU_FREE(si_SchedulingInfoList->list.array[idx], sizeof(struct SchedulingInfo)); - } - DU_FREE(si_SchedulingInfoList->list.array, si_SchedulingInfoList->list.size); - DU_FREE(sib1Msg->si_SchedulingInfo, sizeof(SI_SchedulingInfo_t)); - DU_FREE(sib1Msg->connEstFailureControl, sizeof(ConnEstFailureControl_t)); - - DU_FREE(sib1Msg, sizeof(SIB1_t)); - return ROK; }