- /* 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; idx<puschSetup->pusch_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 */
-
- for(idx=0; idx<cellAccessInfo->plmn_IdentityList.list.count; idx++)
- {
- plmnIdInfo = &cellAccessInfo->plmn_IdentityList.list.array[idx]->\
- plmn_IdentityList;
- for(idx1=0; idx1<plmnIdInfo->list.count; idx1++)
- {
- for(idx2=0; idx2<plmnIdInfo->list.array[idx1]->mnc.list.count; idx2++)
- {
- 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));
- }
- 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(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++)
+/*******************************************************************
+ *
+ * @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 = NULLP;
+ DownlinkConfigCommonSIB_t *dlCfg = NULLP;
+ UplinkConfigCommonSIB_t *ulCfg = NULLP;
+
+ /* SSB Position in Burst buffer */
+ ssbPosInBurst = &srvCellCfg->ssb_PositionsInBurst.inOneGroup;
+ DU_FREE(ssbPosInBurst->buf, ssbPosInBurst->size * sizeof(uint8_t));
+
+ /* Free Donwlink config common SIB */
+ dlCfg = &srvCellCfg->downlinkConfigCommon;
+ FreeFreqInfoDlSib(&dlCfg->frequencyInfoDL);
+ FreeBwpDlCommon(&dlCfg->initialDownlinkBWP);
+
+ /* Uplink Config Comm */
+ if(srvCellCfg->uplinkConfigCommon)
+ {
+ ulCfg = srvCellCfg->uplinkConfigCommon;
+ FreeFreqInfoUlSib(&ulCfg->frequencyInfoUL);
+ FreeBwpUlCommon(&ulCfg->initialUplinkBWP);
+ DU_FREE(srvCellCfg->uplinkConfigCommon, sizeof(UplinkConfigCommonSIB_t));
+ }
+
+ /* TDD UL DL Config Comm */
+ DU_FREE(srvCellCfg->tdd_UL_DL_ConfigurationCommon, sizeof(TDD_UL_DL_ConfigCommon_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, arrIdx =0, sibMapInfoIdx=0;
+ CellIdentity_t *cellIdentity = NULLP;
+ SchedulingInfo_t *schedInfo;
+ CellAccessRelatedInfo_t *cellAccessInfo ;
+ struct PLMN_IdentityInfo__plmn_IdentityList *plmnIdInfo;
+
+
+ if(sib1Msg != NULLP)
+ {
+ cellAccessInfo = &sib1Msg->cellAccessRelatedInfo;
+ if(cellAccessInfo->plmn_IdentityList.list.array !=NULLP)