#include "MCC.h"
#include "SIB1.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;
/*******************************************************************
*
* @brief Builds MIB
* RFAILED - failure
*
* ****************************************************************/
-int BuildMib(MIB_t *mib)
+uint8_t BuildMib(MIB_t *mib)
{
mib->systemFrameNumber.size = sizeof(uint8_t);
DU_ALLOC(mib->systemFrameNumber.buf,
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");
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
* 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));
+ }
}
/*******************************************************************
*
* 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;
}
* 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;
* 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));
* RFAILED - failure
*
* ****************************************************************/
-int BuildTac(TrackingAreaCode_t **trackAreaCode)
+uint8_t BuildTac(TrackingAreaCode_t **trackAreaCode)
{
TrackingAreaCode_t *tac;
* 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;
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)
{
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))
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)
/* 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]->\
* 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 */
* 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);
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;
}
* RFAILED - failure
*
* ****************************************************************/
-S16 BuildScsSpecificCarrierListDl
+uint8_t BuildScsSpecificCarrierListDl
(
struct FrequencyInfoDL_SIB__scs_SpecificCarrierList *scsCarrierList
)
* RFAILED - failure
*
* ****************************************************************/
-S16 BuildCommonSerachSpaceList
+uint8_t BuildCommonSerachSpaceList
(
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");
* 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;
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)
{
* 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;
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);
* 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;
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));
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 */
*
* ****************************************************************/
-S16 BuildBcchConfig(BCCH_Config_t *bcchCfg)
+uint8_t BuildBcchConfig(BCCH_Config_t *bcchCfg)
{
BcchCfg duBcchCfg;
* RFAILED - failure
*
* ****************************************************************/
-S16 BuildPcchConfig(PCCH_Config_t *pcchCfg)
+uint8_t BuildPcchConfig(PCCH_Config_t *pcchCfg)
{
PcchCfg duPcchCfg;
*
* ****************************************************************/
-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;
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);
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 */
*
* ****************************************************************/
-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 */
/*******************************************************************
*
* ****************************************************************/
-S16 BuildScsSpecificCarrierListUl
+uint8_t BuildScsSpecificCarrierListUl
(
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)
return RFAILED;
}
*frequencyInfoUL->p_Max = ulCfg.pMax;
-
+ FreqInfoUlret=ROK;
return ROK;
}/* BuildFreqInfoUl */
*
* ****************************************************************/
-S16 BuildRachCfgCommon(struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg)
+uint8_t BuildRachCfgCommon(struct BWP_UplinkCommon__rach_ConfigCommon *rachCfg)
{
RachCfgCommon duRachCfg;
RACH_ConfigCommon_t *setup;
return RFAILED;
}
}
- return ROK;
+ return ROK;
}/* BuildRachCfgCommon */
/*******************************************************************
*
* ****************************************************************/
-S16 BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg)
+uint8_t BuildPuschCfgCommon(struct BWP_UplinkCommon__pusch_ConfigCommon *puschCfg)
{
uint8_t idx;
uint8_t elementCnt;
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);
*
* ****************************************************************/
-S16 BuildPucchCfgCommon( struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg)
+uint8_t BuildPucchCfgCommon( struct BWP_UplinkCommon__pucch_ConfigCommon *pucchCfg)
{
PucchCfgCommon duPucchCfg;
PUCCH_ConfigCommon_t *setup;
*
* ****************************************************************/
-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;
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)
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)
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 */
*
* ****************************************************************/
-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;
*
* ****************************************************************/
-S16 BuildTddUlDlCfgComm(TDD_UL_DL_ConfigCommon_t *tddCfg)
+uint8_t BuildTddUlDlCfgComm(TDD_UL_DL_ConfigCommon_t *tddCfg)
{
TddUlDlCfgCommon duTddCfg;
* 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 */
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));
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)
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;
}
* 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; idx<pdschSetup->pdsch_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; 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 */
+ 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; 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++)
+
+}
+/*******************************************************************
+ *
+ * @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])
+ {
+ if(!frequencyInfoDL->frequencyBandList.list.array[idx]->\
+ freqBandIndicatorNR)
+ {
+ if(!frequencyInfoDL->scs_SpecificCarrierList.list.array)
+ {
+ for(idx1 = 0;idx1<frequencyInfoDL->scs_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 <frequencyInfoDL->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; idx<pdschCfg->choice.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;
+ idx<puschCfg->choice.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++)
{
- 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(!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; idx2<plmnIdInfo->list.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; 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));
}
- 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;
}