+ /* P-MAX */
+ DU_FREE(frequencyInfoUL->p_Max, sizeof(P_Max_t));
+}/* FreeFreqInfoUlSib */
+
+/*******************************************************************
+ *
+ * @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)
+ {
+ 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));
+ }
+ //TODO PBORLA
+ if(sib1Msg->si_SchedulingInfo->schedulingInfoList.list.array)
+ {
+ for(arrIdx = 0; arrIdx < sib1Msg->si_SchedulingInfo->schedulingInfoList.list.count; arrIdx++)
+ {
+ schedInfo = sib1Msg->si_SchedulingInfo->schedulingInfoList.list.array[arrIdx];
+ if(schedInfo->sib_MappingInfo.list.array)
+ {
+ for(sibMapInfoIdx = 0; sibMapInfoIdx< schedInfo->sib_MappingInfo.list.count; sibMapInfoIdx++)
+ {
+ DU_FREE(schedInfo->sib_MappingInfo.list.array[sibMapInfoIdx]->valueTag, sizeof(long));
+ DU_FREE(schedInfo->sib_MappingInfo.list.array[sibMapInfoIdx], sizeof(SIB_TypeInfo_t));
+ }
+ DU_FREE(schedInfo->sib_MappingInfo.list.array, schedInfo->sib_MappingInfo.list.size)
+ }
+ DU_FREE(sib1Msg->si_SchedulingInfo->schedulingInfoList.list.array[arrIdx], sizeof(struct SchedulingInfo));
+ }
+ DU_FREE(sib1Msg->si_SchedulingInfo->schedulingInfoList.list.array,\
+ sib1Msg->si_SchedulingInfo->schedulingInfoList.list.size);
+ }
+
+ 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; idx2<plmnIdInfo->list.array[idx1]->mnc.list.count; idx2++)
+ {
+ if(plmnIdInfo->list.array[idx1]->mnc.list.array[idx2])
+ {
+ DU_FREE(plmnIdInfo->list.array[idx1]->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; idx1<plmnIdInfo->list.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; idx1<plmnIdInfo->list.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; idx<cellAccessInfo->plmn_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));
+ }