From 559b1bf564a661c9c3edfc9a953183b072bb2f13 Mon Sep 17 00:00:00 2001 From: Balaji Shankaran Date: Tue, 29 Sep 2020 14:35:52 +0530 Subject: [PATCH] [JIRA ID]:[ODUHIGH-241]:Implemented f1 reset request and f1 reset acknowledgement Change-Id: I072d0ac15eb4b5e7fe360ddc4f743a098aad7124 Signed-off-by: Balaji Shankaran Signed-off-by: sphoorthi Signed-off-by: balajihands Signed-off-by: sphoorthi --- src/cu_stub/cu_f1ap_msg_hdl.c | 1294 +++++---- src/du_app/du_cell_mgr.c | 30 +- src/du_app/du_f1ap_msg_hdl.c | 6219 ++++++++++++++++++++++------------------- 3 files changed, 4137 insertions(+), 3406 deletions(-) diff --git a/src/cu_stub/cu_f1ap_msg_hdl.c b/src/cu_stub/cu_f1ap_msg_hdl.c index 99f5c4225..33c6081dd 100644 --- a/src/cu_stub/cu_f1ap_msg_hdl.c +++ b/src/cu_stub/cu_f1ap_msg_hdl.c @@ -70,26 +70,26 @@ S16 SendF1APMsg(Region region, Pool pool) DU_LOG("\nF1AP : Failed to allocate memory"); return RFAILED; } - + return ROK; } /* SendF1APMsg */ /******************************************************************* -* -* @brief Builds NRCell ID -* -* @details -* -* Function : BuildNrCellId -* -* Functionality: Building the NR Cell ID -* -* @params[in] BIT_STRING_t *nrcell -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ - + * + * @brief Builds NRCell ID + * + * @details + * + * Function : BuildNrCellId + * + * Functionality: Building the NR Cell ID + * + * @params[in] BIT_STRING_t *nrcell + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ + S16 BuildNrCellId(BIT_STRING_t *nrcell) { U8 tmp; @@ -123,15 +123,15 @@ S16 BuildNrCellId(BIT_STRING_t *nrcell) * ****************************************************************/ S16 BuildAndSendF1SetupRsp() { - U8 idx,idy; + U8 idx,ieIdx; U8 elementCnt,cellCnt; F1AP_PDU_t *f1apMsg = NULL; F1SetupResponse_t *f1SetupRsp; GNB_CU_Name_t *cuName; Cells_to_be_Activated_List_t *cellToActivate; - RRC_Version_t *rrcVer; - asn_enc_rval_t encRetVal; - DU_LOG("\nF1AP : Building F1 Setup Response\n"); + RRC_Version_t *rrcVer; + asn_enc_rval_t encRetVal; + DU_LOG("\nF1AP : Building F1 Setup Response\n"); /* Allocate the memory for F1SetupRequest_t */ CU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); @@ -153,7 +153,7 @@ S16 BuildAndSendF1SetupRsp() f1apMsg->choice.successfulOutcome->procedureCode = ProcedureCode_id_F1Setup; f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; f1apMsg->choice.successfulOutcome->value.present = \ - SuccessfulOutcome__value_PR_F1SetupResponse; + SuccessfulOutcome__value_PR_F1SetupResponse; f1SetupRsp = &f1apMsg->choice.successfulOutcome->value.choice.F1SetupResponse; elementCnt = 4; @@ -161,7 +161,7 @@ S16 BuildAndSendF1SetupRsp() f1SetupRsp->protocolIEs.list.size = elementCnt*sizeof(F1SetupResponseIEs_t *); CU_ALLOC(f1SetupRsp->protocolIEs.list.array, \ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); if(f1SetupRsp->protocolIEs.list.array == NULLP) { DU_LOG("\nF1AP : Memory allocation for F1ResponseIEs failed"); @@ -173,15 +173,15 @@ S16 BuildAndSendF1SetupRsp() for(idx=0; idxprotocolIEs.list.array[idx], \ - sizeof(F1SetupResponseIEs_t)); + sizeof(F1SetupResponseIEs_t)); if(f1SetupRsp->protocolIEs.list.array[idx] == NULLP) { - CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); - CU_FREE(f1apMsg->choice.successfulOutcome, \ - sizeof(SuccessfulOutcome_t)); - CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); - return RFAILED; + CU_FREE(f1SetupRsp->protocolIEs.list.array,\ + elementCnt * sizeof(F1SetupResponseIEs_t *)); + CU_FREE(f1apMsg->choice.successfulOutcome, \ + sizeof(SuccessfulOutcome_t)); + CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + return RFAILED; } } @@ -190,153 +190,152 @@ S16 BuildAndSendF1SetupRsp() f1SetupRsp->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_TransactionID; f1SetupRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; f1SetupRsp->protocolIEs.list.array[idx]->value.present = \ - F1SetupResponseIEs__value_PR_TransactionID; + F1SetupResponseIEs__value_PR_TransactionID; f1SetupRsp->protocolIEs.list.array[idx]->value.choice.TransactionID =\ - TRANS_ID; + TRANS_ID; /*CU Name*/ idx++; f1SetupRsp->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_gNB_CU_Name; f1SetupRsp->protocolIEs.list.array[idx]->criticality = Criticality_ignore; f1SetupRsp->protocolIEs.list.array[idx]->value.present = \ - F1SetupResponseIEs__value_PR_GNB_CU_Name; + F1SetupResponseIEs__value_PR_GNB_CU_Name; cuName = &f1SetupRsp->protocolIEs.list.array[idx]->value.choice.GNB_CU_Name; cuName->size = sizeof(cuCfgParams.cuName); CU_ALLOC(cuName->buf, sizeof(cuName->size)); if(cuName->buf == NULLP) + { + for(ieIdx=0; ieIdxprotocolIEs.list.array[idy],\ - sizeof(F1SetupResponseIEs_t)); - } - CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); - CU_FREE(f1apMsg->choice.successfulOutcome,\ - sizeof(SuccessfulOutcome_t)); - CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); - return RFAILED; + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx],\ + sizeof(F1SetupResponseIEs_t)); } + CU_FREE(f1SetupRsp->protocolIEs.list.array,\ + elementCnt * sizeof(F1SetupResponseIEs_t *)); + CU_FREE(f1apMsg->choice.successfulOutcome,\ + sizeof(SuccessfulOutcome_t)); + CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + return RFAILED; + } strcpy((char*)cuName->buf, (char*)cuCfgParams.cuName); - + /*Cells to be activated list*/ idx++; f1SetupRsp->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_Cells_to_be_Activated_List ; + ProtocolIE_ID_id_Cells_to_be_Activated_List ; f1SetupRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; f1SetupRsp->protocolIEs.list.array[idx]->value.present = \ - F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List; + F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List; cellToActivate = &f1SetupRsp->protocolIEs.list.array[idx]->value.choice.\ - Cells_to_be_Activated_List; + Cells_to_be_Activated_List; cellCnt=1; cellToActivate->list.count = cellCnt; cellToActivate->list.size = \ - cellCnt*sizeof(struct Cells_to_be_Activated_List_ItemIEs *); + cellCnt*sizeof(struct Cells_to_be_Activated_List_ItemIEs *); CU_ALLOC(cellToActivate->list.array,\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); + sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); if(cellToActivate->list.array == NULLP) { CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy],\ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx],\ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; } - for(idy=0; idylist.array[idy],\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs )); - if(cellToActivate->list.array[idy] == NULLP) + CU_ALLOC(cellToActivate->list.array[ieIdx],sizeof(struct Cells_to_be_Activated_List_ItemIEs )); + if(cellToActivate->list.array[ieIdx] == NULLP) { - CU_FREE(cellToActivate->list.array,\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); - CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); - } - CU_FREE(f1SetupRsp->protocolIEs.list.array, \ - elementCnt * sizeof(F1SetupResponseIEs_t *)); - CU_FREE(f1apMsg->choice.successfulOutcome, \ - sizeof(SuccessfulOutcome_t)); - CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); - return RFAILED; + CU_FREE(cellToActivate->list.array,\ + sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); + CU_FREE(cuName->buf, sizeof(cuName->size)); + for(ieIdx=0; ieIdxprotocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); + } + CU_FREE(f1SetupRsp->protocolIEs.list.array, \ + elementCnt * sizeof(F1SetupResponseIEs_t *)); + CU_FREE(f1apMsg->choice.successfulOutcome, \ + sizeof(SuccessfulOutcome_t)); + CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + return RFAILED; } } cellToActivate->list.array[0]->id = \ - ProtocolIE_ID_id_Cells_to_be_Activated_List_Item; + ProtocolIE_ID_id_Cells_to_be_Activated_List_Item; cellToActivate->list.array[0]->criticality = Criticality_ignore; cellToActivate->list.array[0]->value.present = \ - Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item; + Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item; cellToActivate->list.array[0]->value.choice.Cells_to_be_Activated_List_Item.\ nRCGI.pLMN_Identity.size = 3*sizeof(uint8_t); CU_ALLOC(cellToActivate->list.array[0]->\ - value.choice.Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(uint8_t)); + value.choice.Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity.buf,\ + 3*sizeof(uint8_t)); if(cellToActivate->list.array[0]->value.choice.\ - Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity.buf == NULLP) + Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity.buf == NULLP) { - for(idy=0; idylist.array[idy],\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs )); + CU_FREE(cellToActivate->list.array[ieIdx],\ + sizeof(struct Cells_to_be_Activated_List_ItemIEs )); } CU_FREE(cellToActivate->list.array,\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); + sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array, \ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, \ - sizeof(SuccessfulOutcome_t)); + sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; } - buildPlmnId(cuCfgParams.plmn , &cellToActivate->list.array[0]->value.choice.\ - Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity); + buildPlmnId(cuCfgParams.plmn , &cellToActivate->list.array[0]->value.choice.\ + Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity); cellToActivate->list.array[0]->value.choice.Cells_to_be_Activated_List_Item.\ nRCGI.nRCellIdentity.size = 5; CU_ALLOC(cellToActivate->list.array[0]->value.choice.\ - Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf,\ - 5*sizeof(uint8_t)); + Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf,\ + 5*sizeof(uint8_t)); if(cellToActivate->list.array[0]->value.choice.\ - Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf == NULLP) + Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf == NULLP) { CU_FREE(cellToActivate->list.array[0]->\ - value.choice.Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity.buf,\ - 3*sizeof(uint8_t)); - for(idy=0; idylist.array[idy],\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs )); + CU_FREE(cellToActivate->list.array[ieIdx],\ + sizeof(struct Cells_to_be_Activated_List_ItemIEs )); } CU_FREE(cellToActivate->list.array,\ - sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); + sizeof(struct Cells_to_be_Activated_List_ItemIEs *)); CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array, \ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, \ - sizeof(SuccessfulOutcome_t)); + sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; } @@ -344,10 +343,10 @@ S16 BuildAndSendF1SetupRsp() /* RRC Version */ idx++; f1SetupRsp->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_GNB_CU_RRC_Version; + ProtocolIE_ID_id_GNB_CU_RRC_Version; f1SetupRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; f1SetupRsp->protocolIEs.list.array[idx]->value.present = \ - F1SetupResponseIEs__value_PR_RRC_Version; + F1SetupResponseIEs__value_PR_RRC_Version; rrcVer = &f1SetupRsp->protocolIEs.list.array[idx]->value.choice.RRC_Version; rrcVer->latest_RRC_Version.size = RRC_SIZE; @@ -355,19 +354,19 @@ S16 BuildAndSendF1SetupRsp() if(rrcVer->latest_RRC_Version.buf == NULLP) { CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; } - /* Need to check RRC Version */ + /* Need to check RRC Version */ rrcVer->latest_RRC_Version.buf[0] = cuCfgParams.rrcVersion.rrcVer; rrcVer->latest_RRC_Version.bits_unused = 5; //TODO: pick from cuCfgParam. If not present, add it CU_ALLOC(rrcVer->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P81_t)); @@ -375,13 +374,13 @@ S16 BuildAndSendF1SetupRsp() { CU_FREE(rrcVer->latest_RRC_Version.buf, sizeof(U8)); CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; @@ -389,73 +388,73 @@ S16 BuildAndSendF1SetupRsp() rrcVer->iE_Extensions->list.count = 1; rrcVer->iE_Extensions->list.size = sizeof(struct RRC_Version_ExtIEs *); CU_ALLOC(rrcVer->iE_Extensions->list.array,\ - sizeof(struct RRC_Version_ExtIEs *)); + sizeof(struct RRC_Version_ExtIEs *)); if(rrcVer->iE_Extensions->list.array == NULLP) { CU_FREE(rrcVer->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P81_t)); + sizeof(ProtocolExtensionContainer_4624P81_t)); CU_FREE(rrcVer->latest_RRC_Version.buf, sizeof(U8)); CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; } CU_ALLOC(rrcVer->iE_Extensions->list.array[0],\ - sizeof(struct RRC_Version_ExtIEs)); + sizeof(struct RRC_Version_ExtIEs)); if(rrcVer->iE_Extensions->list.array[0] == NULLP) { CU_FREE(rrcVer->iE_Extensions->list.array,\ - sizeof(struct RRC_Version_ExtIEs *)); + sizeof(struct RRC_Version_ExtIEs *)); CU_FREE(rrcVer->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P81_t)); + sizeof(ProtocolExtensionContainer_4624P81_t)); CU_FREE(rrcVer->latest_RRC_Version.buf, sizeof(U8)); CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; } rrcVer->iE_Extensions->list.array[0]->id = \ - ProtocolIE_ID_id_latest_RRC_Version_Enhanced; + ProtocolIE_ID_id_latest_RRC_Version_Enhanced; rrcVer->iE_Extensions->list.array[0]->criticality = Criticality_reject; rrcVer->iE_Extensions->list.array[0]->extensionValue.present = \ - RRC_Version_ExtIEs__extensionValue_PR_Latest_RRC_Version_Enhanced; + RRC_Version_ExtIEs__extensionValue_PR_Latest_RRC_Version_Enhanced; rrcVer->iE_Extensions->list.array[0]->extensionValue.choice.\ Latest_RRC_Version_Enhanced.size = 3*sizeof(U8); CU_ALLOC(rrcVer->iE_Extensions->list.\ - array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.buf,\ - 3*sizeof(U8)); + array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.buf,\ + 3*sizeof(U8)); if(rrcVer->iE_Extensions->list.\ - array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.buf == NULLP) + array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.buf == NULLP) { CU_FREE(rrcVer->iE_Extensions->list.array[0],\ - sizeof(struct RRC_Version_ExtIEs)); + sizeof(struct RRC_Version_ExtIEs)); CU_FREE(rrcVer->iE_Extensions->list.array,\ - sizeof(struct RRC_Version_ExtIEs *)); + sizeof(struct RRC_Version_ExtIEs *)); CU_FREE(rrcVer->iE_Extensions,\ - sizeof(ProtocolExtensionContainer_4624P81_t)); + sizeof(ProtocolExtensionContainer_4624P81_t)); CU_FREE(rrcVer->latest_RRC_Version.buf, sizeof(U8)); CU_FREE(cuName->buf, sizeof(cuName->size)); - for(idy=0; idyprotocolIEs.list.array[idy], \ - sizeof(F1SetupResponseIEs_t)); + CU_FREE(f1SetupRsp->protocolIEs.list.array[ieIdx], \ + sizeof(F1SetupResponseIEs_t)); } CU_FREE(f1SetupRsp->protocolIEs.list.array,\ - elementCnt * sizeof(F1SetupResponseIEs_t *)); + elementCnt * sizeof(F1SetupResponseIEs_t *)); CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); return RFAILED; @@ -488,24 +487,24 @@ S16 BuildAndSendF1SetupRsp() /* Check encode results */ if(encRetVal.encoded == ENCODE_FAIL) { - DU_LOG("\nF1AP : Could not encode F1SetupResponse structure (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; + DU_LOG("\nF1AP : Could not encode F1SetupResponse structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + return RFAILED; } else { - DU_LOG("\nF1AP : Created APER encoded buffer for F1SetupResponse\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } + DU_LOG("\nF1AP : Created APER encoded buffer for F1SetupResponse\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } } /* Sending msg */ if(SendF1APMsg(CU_APP_MEM_REG, CU_POOL) != ROK) { - DU_LOG("\nF1AP : Sending F1 Setup Response failed"); - return RFAILED; + DU_LOG("\nF1AP : Sending F1 Setup Response failed"); + return RFAILED; } return ROK; @@ -582,10 +581,10 @@ S16 BuildAndSendDUUpdateAck() CU_ALLOC(gNBDuCfgAck->protocolIEs.list.array[idx], sizeof(GNBDUConfigurationUpdateAcknowledgeIEs_t)); if(gNBDuCfgAck->protocolIEs.list.array[idx] == NULLP) { - CU_FREE(gNBDuCfgAck->protocolIEs.list.array, elementCnt * sizeof(GNBDUConfigurationUpdateAcknowledgeIEs_t *)); - CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); - CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); - return RFAILED; + CU_FREE(gNBDuCfgAck->protocolIEs.list.array, elementCnt * sizeof(GNBDUConfigurationUpdateAcknowledgeIEs_t *)); + CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); + CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + return RFAILED; } } @@ -597,7 +596,7 @@ S16 BuildAndSendDUUpdateAck() gNBDuCfgAck->protocolIEs.list.array[idx]->value.choice.TransactionID = TRANS_ID; xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - + /* Encode the F1SetupRequest type as UPER */ cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); encBufSize = 0; @@ -620,10 +619,10 @@ S16 BuildAndSendDUUpdateAck() } else { - DU_LOG("\nF1AP : Created APER encoded buffer for DuConfigUpdateAcknowledge\n"); + DU_LOG("\nF1AP : Created APER encoded buffer for DuConfigUpdateAcknowledge\n"); for(int i=0; i< encBufSize; i++) { - printf("%x",encBuf[i]); + printf("%x",encBuf[i]); } } @@ -637,6 +636,173 @@ S16 BuildAndSendDUUpdateAck() return ROK; }/* End of BuildAndSendDUUpdateAck*/ +/******************************************************************* +* +* @brief deallocating the memory of F1reset msg +* +* @details +* +* Function : FreeF1ResetReq +* +* Functionality : +* - freeing memory of F1reset request msg +* +* @params[in] +* @return void +* +* +* ****************************************************************/ +void FreeF1ResetReq(F1AP_PDU_t *f1apMsg) +{ + uint8_t idx = 0; + Reset_t *f1ResetMsg = NULLP; + + if(f1apMsg) + { + if(f1apMsg->choice.initiatingMessage) + { + f1ResetMsg = &f1apMsg->choice.initiatingMessage->value.choice.Reset; + if(f1ResetMsg->protocolIEs.list.array) + { + for(idx=0 ;idx < f1ResetMsg->protocolIEs.list.count ; idx++) + { + if(f1ResetMsg->protocolIEs.list.array[idx]) + { + CU_FREE(f1ResetMsg->protocolIEs.list.array[idx],sizeof(ResetIEs_t)); + } + } + CU_FREE(f1ResetMsg->protocolIEs.list.array,f1ResetMsg->protocolIEs.list.size); + } + CU_FREE(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); + } + CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + } +} +/******************************************************************* +* +* @brief build ansld ans send f1reset msg +* +* @details +* +* Function : BuildAndSendF1ResetReq +* +* Functionality: build and send f1reset msg +* +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t BuildAndSendF1ResetReq() +{ + uint8_t elementCnt=0; + uint8_t idx=0; + uint8_t ret= RFAILED; + Reset_t *f1ResetMsg = NULLP; + F1AP_PDU_t *f1apMsg = NULLP; + asn_enc_rval_t encRetVal; + DU_LOG("\nF1AP : Building F1 Reset request \n"); + do + { + CU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for the BuildAndSendF1ResetReq's F1AP-PDU failed"); + break; + } + f1apMsg->present = F1AP_PDU_PR_initiatingMessage; + CU_ALLOC(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); + if(f1apMsg->choice.initiatingMessage == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for BuildAndSendF1ResetReq failed"); + break; + } + f1apMsg->choice.initiatingMessage->procedureCode = ProcedureCode_id_Reset; + f1apMsg->choice.initiatingMessage->criticality = Criticality_reject; + f1apMsg->choice.initiatingMessage->value.present = InitiatingMessage__value_PR_Reset; + + f1ResetMsg = &f1apMsg->choice.initiatingMessage->value.choice.Reset; + + elementCnt = 3; + f1ResetMsg->protocolIEs.list.count = elementCnt; + f1ResetMsg->protocolIEs.list.size = elementCnt * sizeof(ResetIEs_t *); + + /* Initialize the F1Reset members */ + CU_ALLOC(f1ResetMsg->protocolIEs.list.array,f1ResetMsg->protocolIEs.list.size); + if(f1ResetMsg->protocolIEs.list.array == NULLP) + { + DU_LOG("\nF1AP : Memory allocation failed for BuildAndSendF1ResetReq"); + break; + } + for(idx=0; idxprotocolIEs.list.array[idx],sizeof(ResetIEs_t)); + if(f1ResetMsg->protocolIEs.list.array[idx] == NULLP) + { + DU_LOG("\nF1AP : Memory allocation failed for BuildAndSendF1ResetReq msg array"); + break; + } + } + + /*TransactionID*/ + idx=0; + f1ResetMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_TransactionID; + f1ResetMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; + f1ResetMsg->protocolIEs.list.array[idx]->value.present = ResetIEs__value_PR_TransactionID; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.TransactionID = 1; + + /*Cause*/ + idx++; + f1ResetMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_Cause; + f1ResetMsg->protocolIEs.list.array[idx]->criticality = Criticality_ignore; + f1ResetMsg->protocolIEs.list.array[idx]->value.present = ResetIEs__value_PR_Cause; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.Cause.present = Cause_PR_radioNetwork; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.Cause.choice.radioNetwork = CauseRadioNetwork_action_desirable_for_radio_reasons; + + /*Reset Type*/ + idx++; + f1ResetMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_ResetType; + f1ResetMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; + f1ResetMsg->protocolIEs.list.array[idx]->value.present = ResetIEs__value_PR_ResetType; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.ResetType.present = ResetType_PR_f1_Interface; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.ResetType.choice.f1_Interface = ResetAll_reset_all; + + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + + /* Encode the F1SetupRequest type as APER */ + memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ + encBuf); + + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG("\nF1AP : Could not encode F1Reset structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\nF1AP : Created APER encoded buffer for F1Reset\n"); + for(idx=0; idx< encBufSize; idx++) + { + printf("%x",encBuf[idx]); + } + } + + if(SendF1APMsg(CU_APP_MEM_REG, CU_POOL) != ROK) + { + DU_LOG("\nF1AP : Sending F1 Reset request failed"); + break; + } + + ret = ROK; + break; + }while(true); + + FreeF1ResetReq(f1apMsg); + return ret; + } /******************************************************************* * @@ -664,28 +830,28 @@ uint8_t fillRadioBearerConfig(SRB_ToAddModList_t *bearerCfg) elementCnt = 1; bearerCfg->list.count = elementCnt; bearerCfg->list.size =\ - elementCnt * sizeof(SRB_ToAddMod_t *); + elementCnt * sizeof(SRB_ToAddMod_t *); CU_ALLOC(bearerCfg->list.array, bearerCfg->list.size); if(bearerCfg->list.array != NULLP) { - for(idx = 0; idx < elementCnt; idx++) - { - CU_ALLOC(bearerCfg->list.array[idx], sizeof(SRB_ToAddMod_t)); - if(bearerCfg->list.array[idx] == NULLP) - { - for(ied = 0; ied < idx; ied++) - { - CU_FREE(bearerCfg->list.array[idx], sizeof(SRB_ToAddMod_t)); - } - CU_FREE(bearerCfg->list.array, bearerCfg->list.size); - return RFAILED; - } - } + for(idx = 0; idx < elementCnt; idx++) + { + CU_ALLOC(bearerCfg->list.array[idx], sizeof(SRB_ToAddMod_t)); + if(bearerCfg->list.array[idx] == NULLP) + { + for(ied = 0; ied < idx; ied++) + { + CU_FREE(bearerCfg->list.array[idx], sizeof(SRB_ToAddMod_t)); + } + CU_FREE(bearerCfg->list.array, bearerCfg->list.size); + return RFAILED; + } + } + } + else + { + return RFAILED; } - else - { - return RFAILED; - } idx = 0; bearerCfg->list.array[idx]->srb_Identity = SRB1; } @@ -713,23 +879,23 @@ uint8_t fillMasterCellGroup(OCTET_STRING_t *masterCellGroup) { uint8_t ret = ROK; masterCellGroup->buf = NULLP; - if(f1apMsgDb.duToCuContainer.buf) - { + if(f1apMsgDb.duToCuContainer.buf) + { masterCellGroup->size = f1apMsgDb.duToCuContainer.size; CU_ALLOC(masterCellGroup->buf, masterCellGroup->size); if(masterCellGroup->buf != NULLP) { - memcpy(masterCellGroup->buf, f1apMsgDb.duToCuContainer.buf,\ - masterCellGroup->size); + memcpy(masterCellGroup->buf, f1apMsgDb.duToCuContainer.buf,\ + masterCellGroup->size); + } + else + { + ret = RFAILED; } - else - { - ret = RFAILED; - } - } - else - { - ret = RFAILED; + } + else + { + ret = RFAILED; } return ret; } @@ -757,19 +923,19 @@ uint8_t fillRRCSetupIE(RRCSetup_IEs_t *rrcSetupIE) if(rrcSetupIE) { CU_ALLOC(rrcSetupIE->radioBearerConfig.srb_ToAddModList, sizeof(SRB_ToAddModList_t)); - if(rrcSetupIE->radioBearerConfig.srb_ToAddModList != NULLP) - { - ret = fillRadioBearerConfig(rrcSetupIE->radioBearerConfig.srb_ToAddModList); - } + if(rrcSetupIE->radioBearerConfig.srb_ToAddModList != NULLP) + { + ret = fillRadioBearerConfig(rrcSetupIE->radioBearerConfig.srb_ToAddModList); + } if(!ret) { - ret = fillMasterCellGroup(&rrcSetupIE->masterCellGroup); + ret = fillMasterCellGroup(&rrcSetupIE->masterCellGroup); + } + else + { + CU_FREE(rrcSetupIE->radioBearerConfig.srb_ToAddModList, sizeof(SRB_ToAddModList_t)); + ret = RFAILED; } - else - { - CU_FREE(rrcSetupIE->radioBearerConfig.srb_ToAddModList, sizeof(SRB_ToAddModList_t)); - ret = RFAILED; - } } return ret; } @@ -794,7 +960,7 @@ uint8_t fillRRCSetupIE(RRCSetup_IEs_t *rrcSetupIE) uint8_t BuildDLRRCContainer(RRCContainer_t *rrcContainer) { uint8_t ret = ROK; - uint16_t idx2; + uint16_t idx2; DL_CCCH_Message_t dl_CCCH_Msg; asn_enc_rval_t encRetVal; @@ -805,83 +971,83 @@ uint8_t BuildDLRRCContainer(RRCContainer_t *rrcContainer) CU_ALLOC(dl_CCCH_Msg.message.choice.c1 , sizeof(DL_CCCH_MessageType_t)); if(dl_CCCH_Msg.message.choice.c1 != NULLP) { - dl_CCCH_Msg.message.choice.c1->present = DL_CCCH_MessageType__c1_PR_rrcSetup; - CU_ALLOC(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup, sizeof(RRCSetup_t)); - if(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup != NULLP) - { - dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->rrc_TransactionIdentifier = 0; - dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->criticalExtensions.\ - present = RRCSetup__criticalExtensions_PR_rrcSetup; - /* Fill RRC Setup IE */ - CU_ALLOC(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->\ - criticalExtensions.choice.rrcSetup, sizeof(RRCSetup_IEs_t)); - if(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->\ - criticalExtensions.choice.rrcSetup != NULLP) - { - ret = fillRRCSetupIE(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->\ - criticalExtensions.choice.rrcSetup); - - if(!ret) - { - /* encode DL-CCCH message into RRC Container */ - xer_fprint(stdout, &asn_DEF_DL_CCCH_MessageType, &dl_CCCH_Msg); - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_DL_CCCH_MessageType, 0, &dl_CCCH_Msg, PrepFinalEncBuf, encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode RRCContainer (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; - } - else - { - DU_LOG("\n F1AP : Created APER encoded buffer for RRCContainer\n"); - for(int i = 0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - rrcContainer->size = encBufSize; - CU_ALLOC(rrcContainer->buf, rrcContainer->size); - if(rrcContainer->buf != NULLP) - { - memset(rrcContainer->buf, 0, encBufSize); - for(idx2 = 0; idx2 < encBufSize; idx2++) - { - rrcContainer->buf[idx2] = encBuf[idx2]; - } - } - } - } - else - { - ret = RFAILED; - } - } - else - { - DU_LOG("\nF1AP: Memory Alloc failed for RRC Setup Msg"); - ret = RFAILED; - } - } - else + dl_CCCH_Msg.message.choice.c1->present = DL_CCCH_MessageType__c1_PR_rrcSetup; + CU_ALLOC(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup, sizeof(RRCSetup_t)); + if(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup != NULLP) + { + dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->rrc_TransactionIdentifier = 0; + dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->criticalExtensions.\ + present = RRCSetup__criticalExtensions_PR_rrcSetup; + /* Fill RRC Setup IE */ + CU_ALLOC(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->\ + criticalExtensions.choice.rrcSetup, sizeof(RRCSetup_IEs_t)); + if(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->\ + criticalExtensions.choice.rrcSetup != NULLP) + { + ret = fillRRCSetupIE(dl_CCCH_Msg.message.choice.c1->choice.rrcSetup->\ + criticalExtensions.choice.rrcSetup); + + if(!ret) + { + /* encode DL-CCCH message into RRC Container */ + xer_fprint(stdout, &asn_DEF_DL_CCCH_MessageType, &dl_CCCH_Msg); + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_DL_CCCH_MessageType, 0, &dl_CCCH_Msg, PrepFinalEncBuf, encBuf); + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode RRCContainer (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + return RFAILED; + } + else + { + DU_LOG("\n F1AP : Created APER encoded buffer for RRCContainer\n"); + for(int i = 0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + rrcContainer->size = encBufSize; + CU_ALLOC(rrcContainer->buf, rrcContainer->size); + if(rrcContainer->buf != NULLP) + { + memset(rrcContainer->buf, 0, encBufSize); + for(idx2 = 0; idx2 < encBufSize; idx2++) { - DU_LOG("\nF1AP: Memory Alloc failed for RRC Msg"); - ret = RFAILED; + rrcContainer->buf[idx2] = encBuf[idx2]; } + } + } + } + else + { + ret = RFAILED; + } + } + else + { + DU_LOG("\nF1AP: Memory Alloc failed for RRC Setup Msg"); + ret = RFAILED; + } + } + else + { + DU_LOG("\nF1AP: Memory Alloc failed for RRC Msg"); + ret = RFAILED; + } } - else - { - DU_LOG("\nF1AP: Memory Alloc failed for DL Ccch Msg choice"); - ret = RFAILED; - } - } - else - { - DU_LOG("\nF1AP: Memory Alloc failed for DlCcch Msg"); + else + { + DU_LOG("\nF1AP: Memory Alloc failed for DL Ccch Msg choice"); + ret = RFAILED; + } + } + else + { + DU_LOG("\nF1AP: Memory Alloc failed for DlCcch Msg"); ret = RFAILED; - } + } return ret; } @@ -907,6 +1073,7 @@ S16 BuildAndSendDLRRCMessageTransfer() uint8_t elementCnt = 0; uint8_t ieId; uint8_t idx; + uint16_t idx2; F1AP_PDU_t *f1apMsg = NULLP; DLRRCMessageTransfer_t *dlRRCMsg = NULLP; asn_enc_rval_t encRetVal; /* Encoder return value */ @@ -922,7 +1089,7 @@ S16 BuildAndSendDLRRCMessageTransfer() f1apMsg->present = F1AP_PDU_PR_initiatingMessage; CU_ALLOC(f1apMsg->choice.initiatingMessage, - sizeof(InitiatingMessage_t)); + sizeof(InitiatingMessage_t)); if(f1apMsg->choice.initiatingMessage == NULLP) { DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); @@ -954,17 +1121,17 @@ S16 BuildAndSendDLRRCMessageTransfer() CU_ALLOC(dlRRCMsg->protocolIEs.list.array[idx], sizeof(DLRRCMessageTransferIEs_t)); if(dlRRCMsg->protocolIEs.list.array[idx] == NULLP) { - for(ieId=0; ieIdprotocolIEs.list.array[ieId],\ - sizeof(DLRRCMessageTransferIEs_t)); - } - CU_FREE(dlRRCMsg->protocolIEs.list.array,\ - dlRRCMsg->protocolIEs.list.size); - CU_FREE(f1apMsg->choice.initiatingMessage,\ - sizeof(InitiatingMessage_t)); - CU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; + for(ieId=0; ieIdprotocolIEs.list.array[ieId],\ + sizeof(DLRRCMessageTransferIEs_t)); + } + CU_FREE(dlRRCMsg->protocolIEs.list.array,\ + dlRRCMsg->protocolIEs.list.size); + CU_FREE(f1apMsg->choice.initiatingMessage,\ + sizeof(InitiatingMessage_t)); + CU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); + return RFAILED; } } @@ -973,64 +1140,64 @@ S16 BuildAndSendDLRRCMessageTransfer() dlRRCMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; dlRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; dlRRCMsg->protocolIEs.list.array[idx]->value.present = \ - DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID; + DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID; dlRRCMsg->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; - + /* GNB DU UE F1AP ID */ idx++; dlRRCMsg->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; + ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; dlRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; dlRRCMsg->protocolIEs.list.array[idx]->value.present = \ - DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; + DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; dlRRCMsg->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; - + /* SRBID */ idx++; dlRRCMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_SRBID; dlRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; dlRRCMsg->protocolIEs.list.array[idx]->value.present = \ - DLRRCMessageTransferIEs__value_PR_SRBID; + DLRRCMessageTransferIEs__value_PR_SRBID; dlRRCMsg->protocolIEs.list.array[idx]->value.choice.SRBID = SRB1; - + /* RRCContainer */ idx++; dlRRCMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_RRCContainer; dlRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; dlRRCMsg->protocolIEs.list.array[idx]->value.present = \ - DLRRCMessageTransferIEs__value_PR_RRCContainer; - BuildDLRRCContainer(&dlRRCMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer); - + DLRRCMessageTransferIEs__value_PR_RRCContainer; + BuildDLRRCContainer(&dlRRCMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer); + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - + /* Encode the F1SetupRequest type as APER */ cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); encBufSize = 0; encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ - encBuf); + encBuf); /* Encode results */ if(encRetVal.encoded == ENCODE_FAIL) { - DU_LOG( "\n F1AP : Could not encode DL RRC Message Transfer structure (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; + DU_LOG( "\n F1AP : Could not encode DL RRC Message Transfer structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + return RFAILED; } else { - DU_LOG("\n F1AP : Created APER encoded buffer for DL RRC Message transfer\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } + DU_LOG("\n F1AP : Created APER encoded buffer for DL RRC Message transfer\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } } - + /* Sending msg */ if(SendF1APMsg(CU_APP_MEM_REG,CU_POOL) != ROK) { - DU_LOG("\n F1AP : Sending DL RRC Message Transfer Failed"); - return RFAILED; + DU_LOG("\n F1AP : Sending DL RRC Message Transfer Failed"); + return RFAILED; } - + return ROK; }/* End of BuildAndSendDLRRCMessageTransfer */ @@ -1053,131 +1220,131 @@ S16 BuildAndSendDLRRCMessageTransfer() * ****************************************************************/ S16 BuildAndSendUESetRsp() { - S16 ret; - U8 elementCnt; - U8 cellCnt; - U8 ieId; - U8 idx; - U8 drbCnt; - U8 drbId; - F1AP_PDU_t *f1apMsg = NULL; + S16 ret; + U8 elementCnt; + U8 cellCnt; + U8 ieId; + U8 idx; + U8 drbCnt; + U8 drbId; + F1AP_PDU_t *f1apMsg = NULL; UEContextSetupResponse_t *ueSetRsp; - asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_LOG("\n F1AP : Building UE Context Setup Response\n"); - - CU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); - if(f1apMsg == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - return RFAILED; - } - - f1apMsg->present = F1AP_PDU_PR_successfulOutcome; - CU_ALLOC(f1apMsg->choice.successfulOutcome, - sizeof(SuccessfulOutcome_t)); - if(f1apMsg->choice.successfulOutcome == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - CU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - - f1apMsg->choice.successfulOutcome->procedureCode = \ - ProcedureCode_id_UEContextSetup; - f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; - f1apMsg->choice.successfulOutcome->value.present = \ - SuccessfulOutcome__value_PR_UEContextSetupResponse; - ueSetRsp = - &f1apMsg->choice.successfulOutcome->value.choice.UEContextSetupResponse; - elementCnt = 2; - ueSetRsp->protocolIEs.list.count = elementCnt; - ueSetRsp->protocolIEs.list.size = \ - elementCnt * sizeof(UEContextSetupResponse_t *); - - /* Initialize the UESetup members */ - CU_ALLOC(ueSetRsp->protocolIEs.list.array, \ - ueSetRsp->protocolIEs.list.size); - if(ueSetRsp->protocolIEs.list.array == NULLP) - { - DU_LOG(" F1AP : Memory allocation for UE Setup Response failed"); - CU_FREE(f1apMsg->choice.successfulOutcome, - sizeof(SuccessfulOutcome_t)); - CU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); - return RFAILED; - } - - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(UEContextSetupResponseIEs_t)); - if(ueSetRsp->protocolIEs.list.array[idx] == NULLP) - { - for(ieId=0; ieIdprotocolIEs.list.array[ieId],\ - sizeof(UEContextSetupResponseIEs_t)); - } - CU_FREE(ueSetRsp->protocolIEs.list.array,\ - ueSetRsp->protocolIEs.list.size); - CU_FREE(f1apMsg->choice.successfulOutcome,\ - sizeof(SuccessfulOutcome_t)); - CU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); - return RFAILED; - } - } - - idx = 0; - - /*GNB CU UE F1AP ID*/ - ueSetRsp->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetRsp->protocolIEs.list.array[idx]->value.present = \ - UEContextSetupResponseIEs__value_PR_GNB_CU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; - - /*GNB DU UE F1AP ID*/ - idx++; - ueSetRsp->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetRsp->protocolIEs.list.array[idx]->value.present = \ - UEContextSetupResponseIEs__value_PR_GNB_DU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; - - - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - - /* Encode the F1SetupRequest type as APER */ - cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ - encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode UE Context Setup Request structure (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - return RFAILED; - } - else - { - DU_LOG("\n F1AP : Created APER encoded buffer for UE Context Setup Request\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } + asn_enc_rval_t encRetVal; /* Encoder return value */ + + DU_LOG("\n F1AP : Building UE Context Setup Response\n"); + + CU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + return RFAILED; + } + + f1apMsg->present = F1AP_PDU_PR_successfulOutcome; + CU_ALLOC(f1apMsg->choice.successfulOutcome, + sizeof(SuccessfulOutcome_t)); + if(f1apMsg->choice.successfulOutcome == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + CU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); + return RFAILED; + } + + f1apMsg->choice.successfulOutcome->procedureCode = \ + ProcedureCode_id_UEContextSetup; + f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; + f1apMsg->choice.successfulOutcome->value.present = \ + SuccessfulOutcome__value_PR_UEContextSetupResponse; + ueSetRsp = + &f1apMsg->choice.successfulOutcome->value.choice.UEContextSetupResponse; + elementCnt = 2; + ueSetRsp->protocolIEs.list.count = elementCnt; + ueSetRsp->protocolIEs.list.size = \ + elementCnt * sizeof(UEContextSetupResponse_t *); + + /* Initialize the UESetup members */ + CU_ALLOC(ueSetRsp->protocolIEs.list.array, \ + ueSetRsp->protocolIEs.list.size); + if(ueSetRsp->protocolIEs.list.array == NULLP) + { + DU_LOG(" F1AP : Memory allocation for UE Setup Response failed"); + CU_FREE(f1apMsg->choice.successfulOutcome, + sizeof(SuccessfulOutcome_t)); + CU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); + return RFAILED; + } + + for(idx=0; idxprotocolIEs.list.array[idx],\ + sizeof(UEContextSetupResponseIEs_t)); + if(ueSetRsp->protocolIEs.list.array[idx] == NULLP) + { + for(ieId=0; ieIdprotocolIEs.list.array[ieId],\ + sizeof(UEContextSetupResponseIEs_t)); + } + CU_FREE(ueSetRsp->protocolIEs.list.array,\ + ueSetRsp->protocolIEs.list.size); + CU_FREE(f1apMsg->choice.successfulOutcome,\ + sizeof(SuccessfulOutcome_t)); + CU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); + return RFAILED; + } + } + + idx = 0; + + /*GNB CU UE F1AP ID*/ + ueSetRsp->protocolIEs.list.array[idx]->id = \ + ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetRsp->protocolIEs.list.array[idx]->value.present = \ + UEContextSetupResponseIEs__value_PR_GNB_CU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; + + /*GNB DU UE F1AP ID*/ + idx++; + ueSetRsp->protocolIEs.list.array[idx]->id = \ + ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetRsp->protocolIEs.list.array[idx]->value.present = \ + UEContextSetupResponseIEs__value_PR_GNB_DU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; + - /* Sending msg */ - if(SendF1APMsg(CU_APP_MEM_REG,CU_POOL) != ROK) - { - DU_LOG("\n F1AP : Sending UE Context Setup Request Failed"); - return RFAILED; - } + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - return ROK; + /* Encode the F1SetupRequest type as APER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ + encBuf); + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode UE Context Setup Request structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + return RFAILED; + } + else + { + DU_LOG("\n F1AP : Created APER encoded buffer for UE Context Setup Request\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + + /* Sending msg */ + if(SendF1APMsg(CU_APP_MEM_REG,CU_POOL) != ROK) + { + DU_LOG("\n F1AP : Sending UE Context Setup Request Failed"); + return RFAILED; + } + + return ROK; }/* End of BuildAndSendUESetRsp */ uint8_t procInitULRRCMsg(F1AP_PDU_t *f1apMsg) @@ -1193,46 +1360,47 @@ uint8_t procInitULRRCMsg(F1AP_PDU_t *f1apMsg) { switch(initULRRCMsg->protocolIEs.list.array[idx]->id) { - case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID: - break; - case ProtocolIE_ID_id_NRCGI: - break; - case ProtocolIE_ID_id_C_RNTI: - break; - case ProtocolIE_ID_id_RRCContainer: - break; - case ProtocolIE_ID_id_DUtoCURRCContainer: - { - if((initULRRCMsg->protocolIEs.list.array[idx]->value.choice\ - .DUtoCURRCContainer.size > 0) && (initULRRCMsg->protocolIEs\ - .list.array[idx]->value.choice.DUtoCURRCContainer.buf != NULLP)) - { - DU_LOG("\n Received Du to Cu RRC Container "); - f1apMsgDb.duToCuContainer.size = initULRRCMsg->protocolIEs\ - .list.array[idx]->value.choice.DUtoCURRCContainer.size; - CU_ALLOC(f1apMsgDb.duToCuContainer.buf, \ - f1apMsgDb.duToCuContainer.size); - if(f1apMsgDb.duToCuContainer.buf != NULLP) - { - memcpy(f1apMsgDb.duToCuContainer.buf, initULRRCMsg->protocolIEs\ - .list.array[idx]->value.choice.DUtoCURRCContainer.buf, f1apMsgDb\ - .duToCuContainer.size); - } - } - else - { - DU_LOG("\n Failed to receive Du to Cu RRC Container "); - ret = RFAILED; - } - break; - } - default: - DU_LOG("\n Invalid Event %ld", initULRRCMsg->protocolIEs.list.array[idx]->id); - break; + case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID: + break; + case ProtocolIE_ID_id_NRCGI: + break; + case ProtocolIE_ID_id_C_RNTI: + break; + case ProtocolIE_ID_id_RRCContainer: + break; + case ProtocolIE_ID_id_DUtoCURRCContainer: + { + if((initULRRCMsg->protocolIEs.list.array[idx]->value.choice\ + .DUtoCURRCContainer.size > 0) && (initULRRCMsg->protocolIEs\ + .list.array[idx]->value.choice.DUtoCURRCContainer.buf != NULLP)) + { + DU_LOG("\n Received Du to Cu RRC Container "); + f1apMsgDb.duToCuContainer.size = initULRRCMsg->protocolIEs\ + .list.array[idx]->value.choice.DUtoCURRCContainer.size; + CU_ALLOC(f1apMsgDb.duToCuContainer.buf, \ + f1apMsgDb.duToCuContainer.size); + if(f1apMsgDb.duToCuContainer.buf != NULLP) + { + memcpy(f1apMsgDb.duToCuContainer.buf, initULRRCMsg->protocolIEs\ + .list.array[idx]->value.choice.DUtoCURRCContainer.buf, f1apMsgDb\ + .duToCuContainer.size); + } + } + else + { + DU_LOG("\n Failed to receive Du to Cu RRC Container "); + ret = RFAILED; + } + break; + } + default: + DU_LOG("\n Invalid Event %ld", initULRRCMsg->protocolIEs.list.array[idx]->id); + break; } } - if(!ret) - ret = BuildAndSendDLRRCMessageTransfer(); + if(!ret) + ret = BuildAndSendDLRRCMessageTransfer(); + return ret; } @@ -2115,7 +2283,7 @@ uint8_t BuildAndSendUESetReq(uint8_t cuUeF1apId, uint8_t duUeF1apId, \ memset(&encRetVal, 0, sizeof(asn_enc_rval_t)); uint8_t ret= RFAILED; uint8_t ret1; - while(1) + while(true) { DU_LOG("\n F1AP : Building UE Context Setup Request\n"); @@ -2377,6 +2545,160 @@ uint8_t procUlRrcMsg(F1AP_PDU_t *f1apMsg) ret = BuildAndSendUESetReq(cuUeF1apId, duUeF1apId, rrcContLen, rrcContainer); return ret; } +/**************************************************************** + * @brief Build And Send F1ResetAck + * + * @details + * + * Function : FreeF1ResetAck + * + * Functionality: + * - Build And Send F1ResetRSP + * + * @params[in] + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +void FreeF1ResetAck(F1AP_PDU_t *f1apMsg) +{ + uint8_t idx; + ResetAcknowledge_t *f1ResetAck; + + if(f1apMsg) + { + if(f1apMsg->choice.successfulOutcome) + { + f1ResetAck= &f1apMsg->choice.successfulOutcome->value.choice.ResetAcknowledge; + + if(f1ResetAck->protocolIEs.list.array) + { + for(idx=0; idxprotocolIEs.list.count ; idx++) + { + if(f1ResetAck->protocolIEs.list.array[idx]) + { + CU_FREE(f1ResetAck->protocolIEs.list.array[idx], sizeof(ResetAcknowledgeIEs_t)); + } + } + CU_FREE(f1ResetAck->protocolIEs.list.array, f1ResetAck->protocolIEs.list.size ); + } + CU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); + } + CU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + } +} +/**************************************************************** +* @brief Build And Send F1ResetAck +* +* @details +* +* Function : BuildAndSendF1ResetAck +* +* Functionality: +* - Build And Send F1ResetRSP +* +* @params[in] +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ + +uint8_t BuildAndSendF1ResetAck() +{ + uint8_t idx = 0; + uint8_t elementCnt = 0; + uint8_t ret = RFAILED; + F1AP_PDU_t *f1apMsg = NULL; + ResetAcknowledge_t *f1ResetAck = NULLP; + asn_enc_rval_t encRetVal; + DU_LOG("\nF1AP : Building F1 Reset Acknowledgment \n"); + + do{ + /* Allocate the memory for F1ResetRequest_t */ + CU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apMsg->present = F1AP_PDU_PR_successfulOutcome; + + CU_ALLOC(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); + if(f1apMsg->choice.successfulOutcome == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apMsg->choice.successfulOutcome->procedureCode = ProcedureCode_id_Reset; + f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; + f1apMsg->choice.successfulOutcome->value.present = SuccessfulOutcome__value_PR_ResetAcknowledge; + f1ResetAck = &f1apMsg->choice.successfulOutcome->value.choice.ResetAcknowledge; + + elementCnt = 1; + + f1ResetAck->protocolIEs.list.count = elementCnt; + f1ResetAck->protocolIEs.list.size = elementCnt*sizeof(ResetAcknowledgeIEs_t *); + + CU_ALLOC(f1ResetAck->protocolIEs.list.array, f1ResetAck->protocolIEs.list.size ); + if(f1ResetAck->protocolIEs.list.array == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1ResetAckIEs failed"); + break; + } + + for(idx=0; idxprotocolIEs.list.array[idx], sizeof(ResetAcknowledgeIEs_t)); + if(f1ResetAck->protocolIEs.list.array[idx] == NULLP) + { + break; + } + } + /*TransactionID*/ + idx = 0; + f1ResetAck->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_TransactionID; + f1ResetAck->protocolIEs.list.array[idx]->criticality = Criticality_reject; + f1ResetAck->protocolIEs.list.array[idx]->value.present = ResetAcknowledgeIEs__value_PR_TransactionID; + f1ResetAck->protocolIEs.list.array[idx]->value.choice.TransactionID = TRANS_ID; + + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + + /* Encode the F1SetupRequest type as UPER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf, encBuf); + + /* Check encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG("\nF1AP : Could not encode F1ResetAck structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\nF1AP : Created APER encoded buffer for F1ResetAck \n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + /* Sending msg */ + if(SendF1APMsg(CU_APP_MEM_REG, CU_POOL) != ROK) + { + DU_LOG("\nF1AP : Sending F1 Reset Response failed"); + break; + } + + ret = ROK; + break; + }while(true); + + FreeF1ResetAck(f1apMsg); + return ret; +} /******************************************************************* * * @brief Handles received F1AP message and sends back response @@ -2403,10 +2725,10 @@ void F1APMsgHdlr(Buffer *mBuf) F1AP_PDU_t *f1apMsg = NULLP; asn_dec_rval_t rval; /* Decoder return value */ F1AP_PDU_t f1apasnmsg ; - + DU_LOG("\nF1AP : Received F1AP message buffer"); ODU_PRINT_MSG(mBuf, 0,0); - + /* Copy mBuf into char array to decode it */ ODU_FIND_MSG_LEN(mBuf, &recvBufLen); CU_ALLOC(recvBuf, (Size)recvBufLen); @@ -2431,10 +2753,10 @@ void F1APMsgHdlr(Buffer *mBuf) /* Decoding flat buffer into F1AP messsage */ f1apMsg = &f1apasnmsg; memset(f1apMsg, 0, sizeof(F1AP_PDU_t)); - + rval = aper_decode(0, &asn_DEF_F1AP_PDU, (void **)&f1apMsg, recvBuf, recvBufLen, 0, 0); CU_FREE(recvBuf, (Size)recvBufLen); - + if(rval.code == RC_FAIL || rval.code == RC_WMORE) { DU_LOG("\nF1AP : ASN decode failed"); @@ -2449,7 +2771,14 @@ void F1APMsgHdlr(Buffer *mBuf) { switch(f1apMsg->choice.initiatingMessage->value.present) { - case InitiatingMessage__value_PR_F1SetupRequest: + case InitiatingMessage__value_PR_Reset: + { + DU_LOG("\nF1AP : F1 reset request received "); + BuildAndSendF1ResetAck(); + break; + } + + case InitiatingMessage__value_PR_F1SetupRequest: { DU_LOG("\nF1AP : F1 setup request received"); BuildAndSendF1SetupRsp(); @@ -2460,6 +2789,8 @@ void F1APMsgHdlr(Buffer *mBuf) { DU_LOG("\nF1AP : GNB-DU config update received"); BuildAndSendDUUpdateAck(); + DU_LOG("\nF1AP : Sending F1 reset request"); + BuildAndSendF1ResetReq(); break; } case InitiatingMessage__value_PR_InitialULRRCMessageTransfer: @@ -2481,11 +2812,28 @@ void F1APMsgHdlr(Buffer *mBuf) }/* End of switch(initiatingMessage) */ break; } - + + case F1AP_PDU_PR_successfulOutcome: + { + switch(f1apMsg->choice.successfulOutcome->value.present) + { + case SuccessfulOutcome__value_PR_ResetAcknowledge: + { + DU_LOG("\nF1Reset Acknowledgement is received successfully "); + break; + } + }/* End of switch(successfulOutcome) */ + break; + } + default: + { + DU_LOG("\nF1AP : Invalid type of f1apMsg->present [%d]",f1apMsg->present); + return; + } }/* End of switch(f1apMsg->present) */ - + } /* End of F1APMsgHdlr */ - + /********************************************************************** End of file **********************************************************************/ diff --git a/src/du_app/du_cell_mgr.c b/src/du_app/du_cell_mgr.c index 65dce4b30..0a49c0d46 100644 --- a/src/du_app/du_cell_mgr.c +++ b/src/du_app/du_cell_mgr.c @@ -117,7 +117,7 @@ uint8_t procCellsToBeActivated(Cells_to_be_Activated_List_t cellsToActivate) * Functionality: Processes F1 Setup Response sent by CU * * @params[in] F1AP_PDU_t ASN decoded F1AP message -* @return ROK - success +* @return ROK - success * RFAILED - failure * * ****************************************************************/ @@ -185,34 +185,6 @@ uint8_t procF1SetupRsp(F1AP_PDU_t *f1apMsg) return ret; } -/******************************************************************* - * - * @brief Processes GNB DU config update ack - * - * @details - * - * Function : procGNBDUCfgUpdAck - * - * Functionality: Processes GNB DU config update ack - * - * @params[in] F1AP_PDU_t ASN decoded F1AP message - * @return ROK - success - * RFAILED - failure - * - * ****************************************************************/ -uint8_t procGNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg) -{ - DU_LOG("\nF1AP : GNB-DU config update acknowledgment received"); -/* TODO :Check the deallocation */ -#if 0 - DU_FREE(gNBDuCfgAck->protocolIEs.list.array,(Size)elementCnt * sizeof(GNBDUConfigurationUpdateAcknowledgeIEs_t)); - DU_FREE(f1apMsg->choice.successfulOutcome,(Size)sizeof(SuccessfulOutcome_t)); - DU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); -#endif - return ROK; -} - - /********************************************************************** End of file **********************************************************************/ diff --git a/src/du_app/du_f1ap_msg_hdl.c b/src/du_app/du_f1ap_msg_hdl.c index ac1fdb869..1ebe77379 100644 --- a/src/du_app/du_f1ap_msg_hdl.c +++ b/src/du_app/du_f1ap_msg_hdl.c @@ -102,27 +102,27 @@ uint8_t BuildULNRInfo(NRFreqInfo_t *ulnrfreq) { uint8_t idx=0; ulnrfreq->nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.\ - fdd.ulNrFreqInfo.nrArfcn; + fdd.ulNrFreqInfo.nrArfcn; ulnrfreq->freqBandListNr.list.count = 1; ulnrfreq->freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); - DU_ALLOC(ulnrfreq->freqBandListNr.list.array,ulnrfreq->freqBandListNr.list.size); + DU_ALLOC(ulnrfreq->freqBandListNr.list.array,ulnrfreq->freqBandListNr.list.size); if(ulnrfreq->freqBandListNr.list.array == NULLP) { - return RFAILED; + return RFAILED; } for(idx=0;idxfreqBandListNr.list.count;idx++) { - DU_ALLOC(ulnrfreq->freqBandListNr.list.array[idx],sizeof(FreqBandNrItem_t)); - if(ulnrfreq->freqBandListNr.list.array[idx] == NULLP) + DU_ALLOC(ulnrfreq->freqBandListNr.list.array[idx],sizeof(FreqBandNrItem_t)); + if(ulnrfreq->freqBandListNr.list.array[idx] == NULLP) { - return RFAILED; - } + return RFAILED; + } } ulnrfreq->freqBandListNr.list.array[0]->freqBandIndicatorNr = \ - duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ - freqBand[0].nrFreqBand; + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ + freqBand[0].nrFreqBand; ulnrfreq->freqBandListNr.list.array[0]->supportedSULBandList.list.count = SUL_BAND_COUNT; - return ROK; + return ROK; } /******************************************************************* * @@ -142,29 +142,29 @@ uint8_t BuildULNRInfo(NRFreqInfo_t *ulnrfreq) uint8_t BuildDLNRInfo(NRFreqInfo_t *dlnrfreq) { uint8_t idx=0; - dlnrfreq->nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.\ - fdd.dlNrFreqInfo.nrArfcn; + dlnrfreq->nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.\ + fdd.dlNrFreqInfo.nrArfcn; dlnrfreq->freqBandListNr.list.count = 1; dlnrfreq->freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); DU_ALLOC(dlnrfreq->freqBandListNr.list.array,dlnrfreq->freqBandListNr.list.size); if(dlnrfreq->freqBandListNr.list.array == NULLP) { return RFAILED; - } + } for(idx=0;idx< dlnrfreq->freqBandListNr.list.count;idx++) - { - DU_ALLOC(dlnrfreq->freqBandListNr.list.array[idx],sizeof(FreqBandNrItem_t)); + { + DU_ALLOC(dlnrfreq->freqBandListNr.list.array[idx],sizeof(FreqBandNrItem_t)); if(dlnrfreq->freqBandListNr.list.array[idx] == NULLP) { - return RFAILED; - } + return RFAILED; + } } dlnrfreq->freqBandListNr.list.array[0]->freqBandIndicatorNr = \ - duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ - freqBand[0].nrFreqBand; + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ + freqBand[0].nrFreqBand; dlnrfreq->freqBandListNr.list.array[0]->supportedSULBandList.list.count = SUL_BAND_COUNT; - - return ROK; + + return ROK; } /******************************************************************* @@ -192,14 +192,14 @@ uint8_t BuildNrcgi(NRCGI_t *nrcgi) nrcgi->pLMN_Identity.size = PLMN_SIZE * sizeof(uint8_t); DU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size); if(nrcgi->pLMN_Identity.buf == NULLP) - { - return RFAILED; + { + return RFAILED; } - ret = buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &nrcgi->pLMN_Identity); // Building PLMN function - if(ret != ROK) + ret = buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ + &nrcgi->pLMN_Identity); // Building PLMN function + if(ret != ROK) { - return RFAILED; + return RFAILED; } /*nrCellIdentity*/ //ret = BuildNrCellId(&nrcgi->nRCellIdentity); @@ -207,12 +207,12 @@ uint8_t BuildNrcgi(NRCGI_t *nrcgi) DU_ALLOC(nrcgi->nRCellIdentity.buf, nrcgi->nRCellIdentity.size); if(nrcgi->nRCellIdentity.buf == NULLP) { - return RFAILED; + return RFAILED; } ret = fillBitString(&nrcgi->nRCellIdentity, unused, byteSize, val); if(ret != ROK) { - return RFAILED; + return RFAILED; } return ROK; } @@ -236,14 +236,14 @@ uint8_t BuildFiveGSTac(Served_Cell_Information_t *servcell) DU_ALLOC(servcell->fiveGS_TAC,sizeof(FiveGS_TAC_t)); if(servcell->fiveGS_TAC == NULLP) { - return RFAILED; + return RFAILED; } servcell->fiveGS_TAC->size = 3 * sizeof(uint8_t); DU_ALLOC(servcell->fiveGS_TAC->buf,\ - sizeof(servcell->fiveGS_TAC->size)); + sizeof(servcell->fiveGS_TAC->size)); if(servcell->fiveGS_TAC->buf == NULLP) { - return RFAILED; + return RFAILED; } servcell->fiveGS_TAC->buf[0] = 0; servcell->fiveGS_TAC->buf[1] = 0; @@ -268,40 +268,40 @@ uint8_t BuildFiveGSTac(Served_Cell_Information_t *servcell) uint8_t BuildNrMode(NR_Mode_Info_t *mode) { uint8_t BuildDLNRInforet=0; - uint8_t BuildULNRInforet=0; + uint8_t BuildULNRInforet=0; /* FDD Mode */ - mode->present = NR_Mode_Info_PR_fDD; + mode->present = NR_Mode_Info_PR_fDD; if(mode->present == NR_Mode_Info_PR_fDD) { DU_ALLOC(mode->choice.fDD,sizeof(FDD_Info_t)); if(mode->choice.fDD == NULLP) { - return RFAILED; + return RFAILED; } BuildULNRInforet = BuildULNRInfo(&mode->choice.fDD->uL_NRFreqInfo); if(BuildULNRInforet != ROK) { - return RFAILED; - } - BuildDLNRInforet = BuildDLNRInfo(&mode->choice.fDD->dL_NRFreqInfo); + return RFAILED; + } + BuildDLNRInforet = BuildDLNRInfo(&mode->choice.fDD->dL_NRFreqInfo); if(BuildDLNRInforet != ROK) { - return RFAILED; + return RFAILED; } - } + } mode->choice.fDD->uL_Transmission_Bandwidth.nRSCS = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrScs; + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrScs; mode->choice.fDD->uL_Transmission_Bandwidth.nRNRB = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrb; + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrb; mode->choice.fDD->dL_Transmission_Bandwidth.nRSCS = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrScs; + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrScs; mode->choice.fDD->dL_Transmission_Bandwidth.nRNRB = \ - duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrb; - return ROK; + duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrb; + return ROK; } /******************************************************************* * @@ -328,88 +328,88 @@ uint8_t BuildExtensions(ProtocolExtensionContainer_4624P3_t **ieExtend) DU_ALLOC(*ieExtend,sizeof(ProtocolExtensionContainer_4624P3_t)); if((*ieExtend) == NULLP) { - return RFAILED; + return RFAILED; } (*ieExtend)->list.count = extensionCnt; (*ieExtend)->list.size = \ - extensionCnt * sizeof(ServedPLMNs_ItemExtIEs_t *); + extensionCnt * sizeof(ServedPLMNs_ItemExtIEs_t *); DU_ALLOC((*ieExtend)->list.array,(*ieExtend)->list.size); if((*ieExtend)->list.array == NULLP) { - return RFAILED; + return RFAILED; } for(plmnidx=0;plmnidxlist.array[plmnidx],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); + sizeof(ServedPLMNs_ItemExtIEs_t)); if((*ieExtend)->list.array[plmnidx] == NULLP) { - return RFAILED; - } + return RFAILED; + } } idx = 0; (*ieExtend)->list.array[idx]->id = ProtocolIE_ID_id_TAISliceSupportList; (*ieExtend)->list.array[idx]->criticality = Criticality_ignore; (*ieExtend)->list.array[idx]->extensionValue.present = \ - ServedPLMNs_ItemExtIEs__extensionValue_PR_SliceSupportList; + ServedPLMNs_ItemExtIEs__extensionValue_PR_SliceSupportList; (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ list.count = 1; (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.size = sizeof(SliceSupportItem_t *); - DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array,sizeof(SliceSupportItem_t *)); - if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array == NULLP) - { - return RFAILED; - } - DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId],sizeof(SliceSupportItem_t)); - if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId] == NULLP) - { - return RFAILED; - } + list.size = sizeof(SliceSupportItem_t *); + DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array,sizeof(SliceSupportItem_t *)); + if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array == NULLP) + { + return RFAILED; + } + DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[sliceId],sizeof(SliceSupportItem_t)); + if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[sliceId] == NULLP) + { + return RFAILED; + } (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sST.size = sizeof(uint8_t); - DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList\ - .list.array[sliceId]->sNSSAI.sST.buf,(*ieExtend)->list.array[idx]->\ - extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sST.size); + list.array[sliceId]->sNSSAI.sST.size = sizeof(uint8_t); + DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList\ + .list.array[sliceId]->sNSSAI.sST.buf,(*ieExtend)->list.array[idx]->\ + extensionValue.choice.SliceSupportList.\ + list.array[sliceId]->sNSSAI.sST.size); if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList\ - .list.array[sliceId]->sNSSAI.sST.buf == NULLP) + .list.array[sliceId]->sNSSAI.sST.buf == NULLP) { - return RFAILED; + return RFAILED; } - (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sST.buf[0] = 3; + (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[sliceId]->sNSSAI.sST.buf[0] = 3; DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD,sizeof(OCTET_STRING_t)); + list.array[sliceId]->sNSSAI.sD,sizeof(OCTET_STRING_t)); if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD == NULLP) + list.array[sliceId]->sNSSAI.sD == NULLP) { - return RFAILED; + return RFAILED; } (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD->size = 3*sizeof(uint8_t); + list.array[sliceId]->sNSSAI.sD->size = 3*sizeof(uint8_t); DU_ALLOC((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD->buf,(*ieExtend)->list.array[idx]->extensionValue.choice.\ - SliceSupportList.list.array[sliceId]->sNSSAI.sD->size); + list.array[sliceId]->sNSSAI.sD->buf,(*ieExtend)->list.array[idx]->extensionValue.choice.\ + SliceSupportList.list.array[sliceId]->sNSSAI.sD->size); if((*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD->buf == NULLP) + list.array[sliceId]->sNSSAI.sD->buf == NULLP) { - return RFAILED; - } + return RFAILED; + } sdId = 0; (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD->buf[sdId] = 3; - sdId++; + list.array[sliceId]->sNSSAI.sD->buf[sdId] = 3; + sdId++; (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD->buf[sdId] = 6; - sdId++; + list.array[sliceId]->sNSSAI.sD->buf[sdId] = 6; + sdId++; (*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD->buf[sdId] = 9; - return ROK; + list.array[sliceId]->sNSSAI.sD->buf[sdId] = 9; + return ROK; } /******************************************************************* * @@ -430,37 +430,37 @@ uint8_t BuildServedPlmn(ServedPLMNs_List_t *srvplmn) { uint8_t plmnidx; uint8_t servPlmnCnt=1; - uint8_t buildPlmnIdret=0; - uint8_t BuildExtensionsret=0; + uint8_t buildPlmnIdret=0; + uint8_t BuildExtensionsret=0; srvplmn->list.count = servPlmnCnt; srvplmn->list.size = \ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *); - DU_ALLOC(srvplmn->list.array,srvplmn->list.size); + servPlmnCnt*sizeof(ServedPLMNs_Item_t *); + DU_ALLOC(srvplmn->list.array,srvplmn->list.size); if(srvplmn->list.array == NULLP) { - return RFAILED; + return RFAILED; } for(plmnidx=0; plmnidxlist.array[plmnidx],\ - sizeof(ServedPLMNs_Item_t)); + sizeof(ServedPLMNs_Item_t)); if(srvplmn->list.array[plmnidx] == NULLP) { - return RFAILED; + return RFAILED; } } - srvplmn->list.array[0]->pLMN_Identity.size = PLMN_SIZE * sizeof(uint8_t); + srvplmn->list.array[0]->pLMN_Identity.size = PLMN_SIZE * sizeof(uint8_t); DU_ALLOC(srvplmn->list.array[0]->pLMN_Identity.buf, srvplmn->list.array[0]->pLMN_Identity.size); buildPlmnIdret = buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &srvplmn->list.array[0]->pLMN_Identity); + &srvplmn->list.array[0]->pLMN_Identity); if(buildPlmnIdret!= ROK) { - return RFAILED; + return RFAILED; } BuildExtensionsret = BuildExtensions(&srvplmn->list.array[0]->iE_Extensions); if(BuildExtensionsret!= ROK) { - return RFAILED; + return RFAILED; } return ROK; } @@ -484,7 +484,7 @@ uint8_t BuildServedCellList(GNB_DU_Served_Cells_List_t *duServedCell) { uint8_t BuildNrcgiret=0; uint8_t BuildFiveGSTacret=0; - uint8_t BuildServedPlmnret=0; + uint8_t BuildServedPlmnret=0; uint8_t BuildNrModeret=0; uint8_t idx; uint8_t plmnidx; @@ -492,104 +492,104 @@ uint8_t BuildServedCellList(GNB_DU_Served_Cells_List_t *duServedCell) GNB_DU_Served_Cells_Item_t *srvCellItem; duServedCell->list.size = plmnCnt * sizeof(GNB_DU_Served_Cells_ItemIEs_t *); duServedCell->list.count = plmnCnt; - + DU_ALLOC(duServedCell->list.array, duServedCell->list.size); if(duServedCell->list.array == NULLP) { - return RFAILED; + return RFAILED; } for(plmnidx=0; plmnidxlist.array[plmnidx],\ - sizeof(GNB_DU_Served_Cells_ItemIEs_t)); + sizeof(GNB_DU_Served_Cells_ItemIEs_t)); if(duServedCell->list.array[plmnidx] == NULLP) { - return RFAILED; + return RFAILED; } } idx = 0; duServedCell->list.array[idx]->id = ProtocolIE_ID_id_GNB_DU_Served_Cells_Item; duServedCell->list.array[idx]->criticality = Criticality_reject; duServedCell->list.array[idx]->value.present = \ - GNB_DU_Served_Cells_ItemIEs__value_PR_GNB_DU_Served_Cells_Item; + GNB_DU_Served_Cells_ItemIEs__value_PR_GNB_DU_Served_Cells_Item; srvCellItem = \ - &duServedCell->list.array[idx]->value.choice.GNB_DU_Served_Cells_Item; + &duServedCell->list.array[idx]->value.choice.GNB_DU_Served_Cells_Item; /*nRCGI*/ BuildNrcgiret = BuildNrcgi(&srvCellItem->served_Cell_Information.nRCGI); if(BuildNrcgiret != ROK) { - return RFAILED; + return RFAILED; } - /*nRPCI*/ + /*nRPCI*/ srvCellItem->served_Cell_Information.nRPCI = \ - duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; + duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; /*fiveGS_TAC*/ BuildFiveGSTacret = BuildFiveGSTac(&srvCellItem->served_Cell_Information); if(BuildFiveGSTacret != ROK) { - return RFAILED; + return RFAILED; } /*Served PLMNs*/ BuildServedPlmnret = BuildServedPlmn(&srvCellItem->served_Cell_Information.servedPLMNs); if(BuildServedPlmnret !=ROK) { - return RFAILED; + return RFAILED; } /*nR Mode Info with FDD*/ BuildNrModeret = BuildNrMode(&srvCellItem->served_Cell_Information.nR_Mode_Info); if(BuildNrModeret != ROK) { - return RFAILED; + return RFAILED; } /*Measurement timing Config*/ srvCellItem->served_Cell_Information.measurementTimingConfiguration.\ size = sizeof(uint8_t); DU_ALLOC(srvCellItem->served_Cell_Information.\ - measurementTimingConfiguration.buf,srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); + measurementTimingConfiguration.buf,srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); if(srvCellItem->served_Cell_Information.\ - measurementTimingConfiguration.buf == NULLP) + measurementTimingConfiguration.buf == NULLP) { - return RFAILED; + return RFAILED; } srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf[0] = \ - duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg; + duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg; /* GNB DU System Information */ DU_ALLOC(srvCellItem->gNB_DU_System_Information, - sizeof(GNB_DU_System_Information_t)); + sizeof(GNB_DU_System_Information_t)); if(!srvCellItem->gNB_DU_System_Information) { - return RFAILED; + return RFAILED; } /* MIB */ srvCellItem->gNB_DU_System_Information->mIB_message.size =\ - strlen(( char *)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg); + strlen(( char *)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg); DU_ALLOC(srvCellItem->gNB_DU_System_Information->mIB_message.buf, - srvCellItem->gNB_DU_System_Information->mIB_message.size); + srvCellItem->gNB_DU_System_Information->mIB_message.size); if(!srvCellItem->gNB_DU_System_Information->mIB_message.buf) { - return RFAILED; + return RFAILED; } strcpy((char *)srvCellItem->gNB_DU_System_Information->mIB_message.buf, - (char *)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg); + (char *)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg); - /* SIB1 */ + /* SIB1 */ srvCellItem->gNB_DU_System_Information->sIB1_message.size =\ - duCfgParam.srvdCellLst[0].duSysInfo.sib1Len; + duCfgParam.srvdCellLst[0].duSysInfo.sib1Len; DU_ALLOC(srvCellItem->gNB_DU_System_Information->sIB1_message.buf, - srvCellItem->gNB_DU_System_Information->sIB1_message.size); + srvCellItem->gNB_DU_System_Information->sIB1_message.size); if(!srvCellItem->gNB_DU_System_Information->sIB1_message.buf) { - return RFAILED; + return RFAILED; } for(int x=0; xgNB_DU_System_Information->sIB1_message.size; x++) { - srvCellItem->gNB_DU_System_Information->sIB1_message.buf[x]=\ - duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg[x]; + srvCellItem->gNB_DU_System_Information->sIB1_message.buf[x]=\ + duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg[x]; } - return ROK; + return ROK; } /******************************************************************* * @@ -614,71 +614,71 @@ uint8_t BuildRrcVer(RRC_Version_t *rrcVer) DU_ALLOC(rrcVer->latest_RRC_Version.buf,sizeof(uint8_t)); if(rrcVer->latest_RRC_Version.buf == NULLP) { - return RFAILED; + return RFAILED; } rrcVer->latest_RRC_Version.buf[0] = 0; rrcVer->latest_RRC_Version.bits_unused = 5; DU_ALLOC(rrcVer->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P81_t)); if(rrcVer->iE_Extensions == NULLP) { - return RFAILED; + return RFAILED; } rrcVer->iE_Extensions->list.count = 1; rrcVer->iE_Extensions->list.size = sizeof(RRC_Version_ExtIEs_t *); DU_ALLOC(rrcVer->iE_Extensions->list.array,rrcVer->iE_Extensions->list.size); if(rrcVer->iE_Extensions->list.array == NULLP) { - return RFAILED; + return RFAILED; } rrcExt = 0; DU_ALLOC(rrcVer->iE_Extensions->list.array[0],\ - sizeof(RRC_Version_ExtIEs_t)); + sizeof(RRC_Version_ExtIEs_t)); if(rrcVer->iE_Extensions->list.array[0] == NULLP) { - return RFAILED; + return RFAILED; } rrcVer->iE_Extensions->list.array[rrcExt]->id = \ - ProtocolIE_ID_id_latest_RRC_Version_Enhanced; + ProtocolIE_ID_id_latest_RRC_Version_Enhanced; rrcVer->iE_Extensions->list.array[rrcExt]->criticality = Criticality_reject; rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.present =\ - RRC_Version_ExtIEs__extensionValue_PR_Latest_RRC_Version_Enhanced; + RRC_Version_ExtIEs__extensionValue_PR_Latest_RRC_Version_Enhanced; rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice\ - .Latest_RRC_Version_Enhanced.size = 3*sizeof(uint8_t); + .Latest_RRC_Version_Enhanced.size = 3*sizeof(uint8_t); DU_ALLOC(rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice\ - .Latest_RRC_Version_Enhanced.buf,rrcVer->iE_Extensions->list.\ - array[rrcExt]->extensionValue.choice.Latest_RRC_Version_Enhanced.size); + .Latest_RRC_Version_Enhanced.buf,rrcVer->iE_Extensions->list.\ + array[rrcExt]->extensionValue.choice.Latest_RRC_Version_Enhanced.size); if(rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice\ - .Latest_RRC_Version_Enhanced.buf == NULLP) + .Latest_RRC_Version_Enhanced.buf == NULLP) { - return RFAILED; + return RFAILED; } rrcLatest = 0; rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice.\ - Latest_RRC_Version_Enhanced.buf[rrcLatest] = 15; + Latest_RRC_Version_Enhanced.buf[rrcLatest] = 15; rrcLatest++; rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice.\ - Latest_RRC_Version_Enhanced.buf[rrcLatest] = 5; + Latest_RRC_Version_Enhanced.buf[rrcLatest] = 5; rrcLatest++; rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice.\ - Latest_RRC_Version_Enhanced.buf[rrcLatest] = 0; + Latest_RRC_Version_Enhanced.buf[rrcLatest] = 0; return ROK; } /******************************************************************* -* -* @brief Sends F1 msg over SCTP -* -* @details -* -* Function : SendF1APMsg -* -* Functionality: Sends F1 msg over SCTP -* -* @params[in] Region region -* Pool pool -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Sends F1 msg over SCTP + * + * @details + * + * Function : SendF1APMsg + * + * Functionality: Sends F1 msg over SCTP + * + * @params[in] Region region + * Pool pool + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t SendF1APMsg(Region region, Pool pool) { Buffer *mBuf; @@ -687,20 +687,20 @@ uint8_t SendF1APMsg(Region region, Pool pool) { if(ODU_ADD_POST_MSG_MULT((Data *)encBuf, encBufSize, mBuf) == ROK) { - ODU_PRINT_MSG(mBuf, 0,0); - - if(sctpSend(mBuf, F1_INTERFACE) != ROK) - { - DU_LOG("\nF1AP : SCTP Send failed"); - ODU_PUT_MSG_BUF(mBuf); - return RFAILED; - } + ODU_PRINT_MSG(mBuf, 0,0); + + if(sctpSend(mBuf, F1_INTERFACE) != ROK) + { + DU_LOG("\nF1AP : SCTP Send failed"); + ODU_PUT_MSG_BUF(mBuf); + return RFAILED; + } } else { - DU_LOG("\nF1AP : ODU_ADD_POST_MSG_MULT failed"); - ODU_PUT_MSG_BUF(mBuf); - return RFAILED; + DU_LOG("\nF1AP : ODU_ADD_POST_MSG_MULT failed"); + ODU_PUT_MSG_BUF(mBuf); + return RFAILED; } ODU_PUT_MSG_BUF(mBuf); } @@ -713,218 +713,218 @@ uint8_t SendF1APMsg(Region region, Pool pool) } /* SendF1APMsg */ /******************************************************************* -* -* @brief deallocating the memory of function BuildAndSendF1SetupReq() -* -* @details -* -* Function : FreeRrcVer -* -* Functionality: deallocating the memory of function BuildRrcVer -* -* @params[in] RRC_Version_t *rrcVer -* -* @return void -* -*****************************************************************/ + * + * @brief deallocating the memory of function BuildAndSendF1SetupReq() + * + * @details + * + * Function : FreeRrcVer + * + * Functionality: deallocating the memory of function BuildRrcVer + * + * @params[in] RRC_Version_t *rrcVer + * + * @return void + * + *****************************************************************/ void FreeRrcVer(RRC_Version_t *rrcVer) { if(rrcVer->latest_RRC_Version.buf != NULLP) - { - if(rrcVer->iE_Extensions != NULLP) - { - if(rrcVer->iE_Extensions->list.array != NULLP) - { - if(rrcVer->iE_Extensions->list.array[0] != NULLP) - { - if(rrcVer->iE_Extensions->list.array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.buf - != NULLP) - { - DU_FREE(rrcVer->iE_Extensions->list.array[0]->extensionValue.choice\ - .Latest_RRC_Version_Enhanced.buf,rrcVer->iE_Extensions->list.\ - array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.size); - } - DU_FREE(rrcVer->iE_Extensions->list.array[0],sizeof(RRC_Version_ExtIEs_t)); - } - DU_FREE(rrcVer->iE_Extensions->list.array,sizeof(RRC_Version_ExtIEs_t*)); - } - DU_FREE(rrcVer->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P81_t)); - } - DU_FREE(rrcVer->latest_RRC_Version.buf,rrcVer->latest_RRC_Version.size); - } + { + if(rrcVer->iE_Extensions != NULLP) + { + if(rrcVer->iE_Extensions->list.array != NULLP) + { + if(rrcVer->iE_Extensions->list.array[0] != NULLP) + { + if(rrcVer->iE_Extensions->list.array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.buf + != NULLP) + { + DU_FREE(rrcVer->iE_Extensions->list.array[0]->extensionValue.choice\ + .Latest_RRC_Version_Enhanced.buf,rrcVer->iE_Extensions->list.\ + array[0]->extensionValue.choice.Latest_RRC_Version_Enhanced.size); + } + DU_FREE(rrcVer->iE_Extensions->list.array[0],sizeof(RRC_Version_ExtIEs_t)); + } + DU_FREE(rrcVer->iE_Extensions->list.array,sizeof(RRC_Version_ExtIEs_t*)); + } + DU_FREE(rrcVer->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P81_t)); + } + DU_FREE(rrcVer->latest_RRC_Version.buf,rrcVer->latest_RRC_Version.size); + } } /******************************************************************* -* -* @brief deallocating the memory of function BuildAndSendF1SetupReq() -* -* @details -* -* Function : FreeServedCellList -* -* Functionality: deallocating the memory of function BuildServedCellList + * + * @brief deallocating the memory of function BuildAndSendF1SetupReq() + * + * @details + * + * Function : FreeServedCellList + * + * Functionality: deallocating the memory of function BuildServedCellList -* -* @params[in] GNB_DU_Served_Cells_List_t *duServedCell -* -* @return void -* -* ****************************************************************/ + * + * @params[in] GNB_DU_Served_Cells_List_t *duServedCell + * + * @return void + * + * ****************************************************************/ void FreeServedCellList( GNB_DU_Served_Cells_List_t *duServedCell) { uint8_t plmnCnt=1; uint8_t servId=0; - uint8_t sliceId=0; - uint8_t ieId=0; - uint8_t extensionCnt=1; - uint8_t plmnidx=0; + uint8_t sliceId=0; + uint8_t ieId=0; + uint8_t extensionCnt=1; + uint8_t plmnidx=0; GNB_DU_Served_Cells_Item_t *srvCellItem= &duServedCell->list.array[0]->value.choice.GNB_DU_Served_Cells_Item; if(duServedCell->list.array!=NULLP) { - if(duServedCell->list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf !=NULLP) - { - if(srvCellItem->served_Cell_Information.fiveGS_TAC!=NULLP) - { - if(srvCellItem->served_Cell_Information.fiveGS_TAC->buf!=NULLP) + if(duServedCell->list.array[0]!=NULLP) + { + if(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf!=NULLP) + { + if(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf !=NULLP) + { + if(srvCellItem->served_Cell_Information.fiveGS_TAC!=NULLP) + { + if(srvCellItem->served_Cell_Information.fiveGS_TAC->buf!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[0]!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->pLMN_Identity.buf!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array[sliceId]!= NULLP) { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->pLMN_Identity.buf!=NULLP) + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sST.buf!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->\ + list.array[0]->extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD->buf!=NULLP) + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD!=NULLP) + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array!=NULLP) + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array[0]!=NULLP) + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array) + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0]!=NULLP) { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId]!= NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sST.buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->\ - list.array[0]->extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD->buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf!=NULLP) - { - if(!srvCellItem->gNB_DU_System_Information) - { - if(srvCellItem->gNB_DU_System_Information->mIB_message.buf!=NULLP) - { - if(srvCellItem->gNB_DU_System_Information->sIB1_message.buf!=NULLP) - { - DU_FREE(srvCellItem->gNB_DU_System_Information->sIB1_message.buf,\ - srvCellItem->gNB_DU_System_Information->sIB1_message.size); - DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg,\ - srvCellItem->gNB_DU_System_Information->sIB1_message.size); - } - DU_FREE(srvCellItem->gNB_DU_System_Information->mIB_message.buf,\ - srvCellItem->gNB_DU_System_Information->mIB_message.size); - DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.mibMsg,\ - strlen((char*)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg)); - } - DU_FREE(srvCellItem->gNB_DU_System_Information,sizeof(GNB_DU_System_Information_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf,\ - srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array,sizeof(FreqBandNrItem_t *)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ - list.array[0],sizeof(FreqBandNrItem_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ - list.array,sizeof(FreqBandNrItem_t*)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD,sizeof(FDD_Info_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ - iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->\ - sNSSAI.sD->buf,srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions-> - list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD->size); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ - iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ - iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->\ - sNSSAI.sST.buf,sizeof(uint8_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId],sizeof(SliceSupportItem_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array,sizeof(SliceSupportItem_t*)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->iE_Extensions->list.array[plmnidx],sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->iE_Extensions->list.array,\ - extensionCnt*sizeof(ServedPLMNs_ItemExtIEs_t*)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->pLMN_Identity.buf,srvCellItem->served_Cell_Information.\ - servedPLMNs.list.array[servId]->pLMN_Identity.size - * sizeof(uint8_t)); + if(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf!=NULLP) + { + if(!srvCellItem->gNB_DU_System_Information) + { + if(srvCellItem->gNB_DU_System_Information->mIB_message.buf!=NULLP) + { + if(srvCellItem->gNB_DU_System_Information->sIB1_message.buf!=NULLP) + { + DU_FREE(srvCellItem->gNB_DU_System_Information->sIB1_message.buf,\ + srvCellItem->gNB_DU_System_Information->sIB1_message.size); + DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg,\ + srvCellItem->gNB_DU_System_Information->sIB1_message.size); + } + DU_FREE(srvCellItem->gNB_DU_System_Information->mIB_message.buf,\ + srvCellItem->gNB_DU_System_Information->mIB_message.size); + DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.mibMsg,\ + strlen((char*)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg)); + } + DU_FREE(srvCellItem->gNB_DU_System_Information,sizeof(GNB_DU_System_Information_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf,\ + srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); + } + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnidx],\ - sizeof(ServedPLMNs_Item_t *)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array,\ - sizeof(ServedPLMNs_Item_t *)); - } - DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC->buf,\ - sizeof(srvCellItem->served_Cell_Information.fiveGS_TAC->size)); + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array,sizeof(FreqBandNrItem_t *)); + } + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ + list.array[0],sizeof(FreqBandNrItem_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ + list.array,sizeof(FreqBandNrItem_t*)); + } + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD,sizeof(FDD_Info_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ + iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->\ + sNSSAI.sD->buf,srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions-> + list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD->size); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ + iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.\ + list.array[sliceId]->sNSSAI.sD,sizeof(OCTET_STRING_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ + iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->\ + sNSSAI.sST.buf,sizeof(uint8_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array[sliceId],sizeof(SliceSupportItem_t)); } - DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC,sizeof(FiveGS_TAC_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.size * - sizeof(uint8_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.size * - sizeof(uint8_t)); + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ + extensionValue.choice.SliceSupportList.list.array,sizeof(SliceSupportItem_t*)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ + array[servId]->iE_Extensions->list.array[plmnidx],sizeof(ServedPLMNs_ItemExtIEs_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ + array[servId]->iE_Extensions->list.array,\ + extensionCnt*sizeof(ServedPLMNs_ItemExtIEs_t*)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ + array[servId]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ + array[servId]->pLMN_Identity.buf,srvCellItem->served_Cell_Information.\ + servedPLMNs.list.array[servId]->pLMN_Identity.size + * sizeof(uint8_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnidx],\ + sizeof(ServedPLMNs_Item_t *)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array,\ + sizeof(ServedPLMNs_Item_t *)); + } + DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC->buf,\ + sizeof(srvCellItem->served_Cell_Information.fiveGS_TAC->size)); } - DU_FREE(duServedCell->list.array[plmnidx],sizeof(GNB_DU_Served_Cells_ItemIEs_t)); - } - DU_FREE(duServedCell->list.array,plmnCnt*sizeof(GNB_DU_Served_Cells_ItemIEs_t*)); - } + DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC,sizeof(FiveGS_TAC_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.size * + sizeof(uint8_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.size * + sizeof(uint8_t)); + } + DU_FREE(duServedCell->list.array[plmnidx],sizeof(GNB_DU_Served_Cells_ItemIEs_t)); + } + DU_FREE(duServedCell->list.array,plmnCnt*sizeof(GNB_DU_Served_Cells_ItemIEs_t*)); + } } /******************************************************************* * @@ -943,55 +943,55 @@ void FreeServedCellList( GNB_DU_Served_Cells_List_t *duServedCell) * ****************************************************************/ void FreeF1SetupReq(F1AP_PDU_t *f1apMsg) { - uint8_t idx =0; - uint8_t idx1=1; - F1SetupRequest_t *f1SetupReq=NULLP; - - - if(f1apMsg != NULLP) - { - if(f1apMsg->choice.initiatingMessage != NULLP) - { - f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest; - if(f1SetupReq->protocolIEs.list.array != NULLP) - { - if(f1SetupReq->protocolIEs.list.array[idx1]!=NULLP) - { - if(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf != NULLP) - { - idx1++; - if(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_Name.buf != NULLP) - { - idx1=4; - if(ServedCellListreturn == ROK) - { - FreeRrcVer(&f1SetupReq->protocolIEs.list.array[idx1]->value.choice.RRC_Version); - } - idx1--; - FreeServedCellList(&f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_Served_Cells_List); - idx1--; - DU_FREE(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_Name.buf, - strlen((char *)duCfgParam.duName)); - } - idx1--; - DU_FREE(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf,\ - f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size); - } - } - for(idx=0; idxprotocolIEs.list.count; idx++) - { - if(f1SetupReq->protocolIEs.list.array[idx]!=NULLP) - { - DU_FREE(f1SetupReq->protocolIEs.list.array[idx],sizeof(F1SetupRequestIEs_t)); - } - } - DU_FREE(f1SetupReq->protocolIEs.list.array,\ - f1SetupReq->protocolIEs.list.size); - } - DU_FREE(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); - } - DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); - } + uint8_t idx =0; + uint8_t idx1=1; + F1SetupRequest_t *f1SetupReq=NULLP; + + + if(f1apMsg != NULLP) + { + if(f1apMsg->choice.initiatingMessage != NULLP) + { + f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest; + if(f1SetupReq->protocolIEs.list.array != NULLP) + { + if(f1SetupReq->protocolIEs.list.array[idx1]!=NULLP) + { + if(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf != NULLP) + { + idx1++; + if(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_Name.buf != NULLP) + { + idx1=4; + if(ServedCellListreturn == ROK) + { + FreeRrcVer(&f1SetupReq->protocolIEs.list.array[idx1]->value.choice.RRC_Version); + } + idx1--; + FreeServedCellList(&f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_Served_Cells_List); + idx1--; + DU_FREE(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_Name.buf, + strlen((char *)duCfgParam.duName)); + } + idx1--; + DU_FREE(f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf,\ + f1SetupReq->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size); + } + } + for(idx=0; idxprotocolIEs.list.count; idx++) + { + if(f1SetupReq->protocolIEs.list.array[idx]!=NULLP) + { + DU_FREE(f1SetupReq->protocolIEs.list.array[idx],sizeof(F1SetupRequestIEs_t)); + } + } + DU_FREE(f1SetupReq->protocolIEs.list.array,\ + f1SetupReq->protocolIEs.list.size); + } + DU_FREE(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + } } /******************************************************************* @@ -1011,35 +1011,35 @@ void FreeF1SetupReq(F1AP_PDU_t *f1apMsg) uint8_t BuildAndSendF1SetupReq() { uint8_t idx=0; - uint8_t idx2=0; - uint8_t i=0; + uint8_t idx2=0; + uint8_t i=0; uint8_t elementCnt=0; F1AP_PDU_t *f1apMsg = NULLP; F1SetupRequest_t *f1SetupReq=NULLP; GNB_DU_Served_Cells_List_t *duServedCell=NULLP; RRC_Version_t *rrcVer=NULLP; asn_enc_rval_t encRetVal; /* Encoder return value */ - uint8_t ret= RFAILED; - uint8_t BuildRrcVerreturn=0; - + uint8_t ret= RFAILED; + uint8_t BuildRrcVerreturn=0; + DU_LOG("\nF1AP : Building F1 Setup Request\n"); do { DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); if(f1apMsg == NULLP) { - break; + break; } f1apMsg->present = F1AP_PDU_PR_initiatingMessage; DU_ALLOC(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); if(f1apMsg->choice.initiatingMessage == NULLP) { - break; + break; } f1apMsg->choice.initiatingMessage->procedureCode = ProcedureCode_id_F1Setup; f1apMsg->choice.initiatingMessage->criticality = Criticality_reject; f1apMsg->choice.initiatingMessage->value.present = \ - InitiatingMessage__value_PR_F1SetupRequest; + InitiatingMessage__value_PR_F1SetupRequest; f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest; @@ -1052,16 +1052,16 @@ uint8_t BuildAndSendF1SetupReq() DU_ALLOC(f1SetupReq->protocolIEs.list.array,f1SetupReq->protocolIEs.list.size); if(f1SetupReq->protocolIEs.list.array == NULLP) { - break; + break; } for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(F1SetupRequestIEs_t)); - if(f1SetupReq->protocolIEs.list.array[idx] == NULLP) - { - break; - } + DU_ALLOC(f1SetupReq->protocolIEs.list.array[idx],\ + sizeof(F1SetupRequestIEs_t)); + if(f1SetupReq->protocolIEs.list.array[idx] == NULLP) + { + break; + } } idx2 = 0; @@ -1069,78 +1069,78 @@ uint8_t BuildAndSendF1SetupReq() f1SetupReq->protocolIEs.list.array[idx2]->id = ProtocolIE_ID_id_TransactionID; f1SetupReq->protocolIEs.list.array[idx2]->criticality = Criticality_reject; f1SetupReq->protocolIEs.list.array[idx2]->value.present =\ - F1SetupRequestIEs__value_PR_TransactionID; + F1SetupRequestIEs__value_PR_TransactionID; f1SetupReq->protocolIEs.list.array[idx2]->value.choice.TransactionID = \ - TRANS_ID; + TRANS_ID; /*DU ID*/ idx2++; f1SetupReq->protocolIEs.list.array[idx2]->id = ProtocolIE_ID_id_gNB_DU_ID; f1SetupReq->protocolIEs.list.array[idx2]->criticality = Criticality_reject; f1SetupReq->protocolIEs.list.array[idx2]->value.present = \ - F1SetupRequestIEs__value_PR_GNB_DU_ID; + F1SetupRequestIEs__value_PR_GNB_DU_ID; f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_ID.size =\ - sizeof(uint8_t); + sizeof(uint8_t); DU_ALLOC(f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_ID.buf,\ - f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_ID.size); + f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_ID.size); if(f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_ID.buf == \ - NULLP) + NULLP) { - break; + break; } - + f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_ID.buf[0] =\ - duCfgParam.duId; + duCfgParam.duId; /*DU Name*/ if(duCfgParam.duName != NULL) { - idx2++; - f1SetupReq->protocolIEs.list.array[idx2]->id = ProtocolIE_ID_id_gNB_DU_Name ; - f1SetupReq->protocolIEs.list.array[idx2]->criticality = Criticality_ignore; - f1SetupReq->protocolIEs.list.array[idx2]->value.present = F1SetupRequestIEs__value_PR_GNB_DU_Name; - f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_Name.size =\ - strlen((char *)duCfgParam.duName); - DU_ALLOC(f1SetupReq->protocolIEs.list.array[idx2]->value.choice.\ - GNB_DU_Name.buf, strlen((char *)duCfgParam.duName)); - if(f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_Name.\ - buf == NULLP) - { - break; - } - strcpy((char*)f1SetupReq->protocolIEs.list.array[idx2]->value.\ - choice.GNB_DU_Name.buf, - (char*)&duCfgParam.duName); - - } - - /*Served Cell list */ + idx2++; + f1SetupReq->protocolIEs.list.array[idx2]->id = ProtocolIE_ID_id_gNB_DU_Name ; + f1SetupReq->protocolIEs.list.array[idx2]->criticality = Criticality_ignore; + f1SetupReq->protocolIEs.list.array[idx2]->value.present = F1SetupRequestIEs__value_PR_GNB_DU_Name; + f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_Name.size =\ + strlen((char *)duCfgParam.duName); + DU_ALLOC(f1SetupReq->protocolIEs.list.array[idx2]->value.choice.\ + GNB_DU_Name.buf, strlen((char *)duCfgParam.duName)); + if(f1SetupReq->protocolIEs.list.array[idx2]->value.choice.GNB_DU_Name.\ + buf == NULLP) + { + break; + } + strcpy((char*)f1SetupReq->protocolIEs.list.array[idx2]->value.\ + choice.GNB_DU_Name.buf, + (char*)&duCfgParam.duName); + + } + + /*Served Cell list */ idx2++; f1SetupReq->protocolIEs.list.array[idx2]->id = \ - ProtocolIE_ID_id_gNB_DU_Served_Cells_List; + ProtocolIE_ID_id_gNB_DU_Served_Cells_List; f1SetupReq->protocolIEs.list.array[idx2]->criticality = Criticality_reject; f1SetupReq->protocolIEs.list.array[idx2]->value.present = \ - F1SetupRequestIEs__value_PR_GNB_DU_Served_Cells_List; + F1SetupRequestIEs__value_PR_GNB_DU_Served_Cells_List; duServedCell = &f1SetupReq->protocolIEs.list.\ - array[idx2]->value.choice.GNB_DU_Served_Cells_List; + array[idx2]->value.choice.GNB_DU_Served_Cells_List; ServedCellListreturn = BuildServedCellList(duServedCell); if(ServedCellListreturn != ROK) { - break; + break; } /*RRC Version*/ idx2++; f1SetupReq->protocolIEs.list.array[idx2]->id = \ - ProtocolIE_ID_id_GNB_DU_RRC_Version ; + ProtocolIE_ID_id_GNB_DU_RRC_Version ; f1SetupReq->protocolIEs.list.array[idx2]->criticality = Criticality_reject; f1SetupReq->protocolIEs.list.array[idx2]->value.present = \ - F1SetupRequestIEs__value_PR_RRC_Version; + F1SetupRequestIEs__value_PR_RRC_Version; rrcVer = &f1SetupReq->protocolIEs.list.array[idx2]->value.choice.RRC_Version; BuildRrcVerreturn = BuildRrcVer(rrcVer); if(BuildRrcVerreturn != ROK) { - break; + break; } xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); @@ -1148,38 +1148,38 @@ uint8_t BuildAndSendF1SetupReq() memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); encBufSize = 0; encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ - encBuf); + encBuf); /* Encode results */ if(encRetVal.encoded == ENCODE_FAIL) { - DU_LOG("\nF1AP : Could not encode F1SetupRequest structure (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - break; + DU_LOG("\nF1AP : Could not encode F1SetupRequest structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; } else { - DU_LOG("\nF1AP : Created APER encoded buffer for F1SetupRequest\n"); - for(i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } + DU_LOG("\nF1AP : Created APER encoded buffer for F1SetupRequest\n"); + for(i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } } /* Sending msg */ if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) - { - DU_LOG("\nF1AP : Sending F1 Setup request failed"); - break; + { + DU_LOG("\nF1AP : Sending F1 Setup request failed"); + break; } - ret=ROK; + ret=ROK; break; }while(true); - FreeF1SetupReq(f1apMsg); - - return ret; + FreeF1SetupReq(f1apMsg); + + return ret; }/* End of BuildAndSendF1SetupReq */ /******************************************************************* @@ -1203,14 +1203,14 @@ uint8_t BuildAndSendF1SetupReq() uint8_t BuildAndSendDUConfigUpdate() { uint8_t idx; - uint8_t idy; - uint8_t idx1; - uint8_t idy1; - uint8_t idy2; + uint8_t idy; + uint8_t idx1; + uint8_t idy1; + uint8_t idy2; uint8_t elementCnt; - uint8_t modifyCnt; - uint8_t servPlmnCnt; - uint8_t extensionCnt; + uint8_t modifyCnt; + uint8_t servPlmnCnt; + uint8_t extensionCnt; asn_enc_rval_t encRetVal; /* Encoder return value */ F1AP_PDU_t *f1apDuCfg = NULL; GNBDUConfigurationUpdate_t *duCfgUpdate; @@ -1219,688 +1219,688 @@ uint8_t BuildAndSendDUConfigUpdate() uint8_t ret= RFAILED; uint8_t i; - while(true) - { - DU_LOG("\nF1AP : Building DU config update\n"); - /* Allocate the memory for F1DuCfg */ - DU_ALLOC(f1apDuCfg, sizeof(F1AP_PDU_t)); - if(f1apDuCfg == NULLP) - { - DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); - break; - } - - f1apDuCfg->present = F1AP_PDU_PR_initiatingMessage; - DU_ALLOC(f1apDuCfg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); - if(f1apDuCfg->choice.initiatingMessage == NULLP) - { - DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); - break; - } - - f1apDuCfg->choice.initiatingMessage->procedureCode = \ - ProcedureCode_id_gNBDUConfigurationUpdate; - f1apDuCfg->choice.initiatingMessage->criticality = Criticality_reject; - f1apDuCfg->choice.initiatingMessage->value.present = \ - InitiatingMessage__value_PR_GNBDUConfigurationUpdate; - duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->value.\ - choice.GNBDUConfigurationUpdate; - elementCnt = 3; - duCfgUpdate->protocolIEs.list.count = elementCnt; - duCfgUpdate->protocolIEs.list.size = \ - elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t*); - - /* Initialize the F1Setup members */ - DU_ALLOC(duCfgUpdate->protocolIEs.list.array,duCfgUpdate->protocolIEs.list.size); - if(duCfgUpdate->protocolIEs.list.array == NULLP) - { - DU_LOG("F1AP : Memory allocation for F1RequestIEs failed"); - break; - } - for(idx=0;idxprotocolIEs.list.array[idx],sizeof(GNBDUConfigurationUpdateIEs_t)); - if(duCfgUpdate->protocolIEs.list.array[idx] == NULLP) - { - break; - } - } - - /*TransactionID*/ - idx1 = 0; - duCfgUpdate->protocolIEs.list.array[idx1]->id=ProtocolIE_ID_id_TransactionID; - duCfgUpdate->protocolIEs.list.array[idx1]->criticality= Criticality_reject; - duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ - GNBDUConfigurationUpdateIEs__value_PR_TransactionID; - duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.TransactionID = \ - TRANS_ID; - - /*Served Cell to Modify */ - idx1++; - duCfgUpdate->protocolIEs.list.array[idx1]->id = \ - ProtocolIE_ID_id_Served_Cells_To_Modify_List; - duCfgUpdate->protocolIEs.list.array[idx1]->criticality =Criticality_reject; - duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ - GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Modify_List; - cellsToModify = &duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.\ - Served_Cells_To_Modify_List; - modifyCnt = 1; - cellsToModify->list.count = modifyCnt; - cellsToModify->list.size = \ - modifyCnt*sizeof(Served_Cells_To_Modify_ItemIEs_t *); - DU_ALLOC(cellsToModify->list.array,cellsToModify->list.size); - if(cellsToModify->list.array == NULLP) - { - break; - } - for(idy=0; idylist.array[idy],sizeof(\ - Served_Cells_To_Modify_ItemIEs_t)); - if(cellsToModify->list.array[idy] == NULLP) - { - break; - } - } - cellsToModify->list.array[0]->id = \ - ProtocolIE_ID_id_Served_Cells_To_Modify_Item; - cellsToModify->list.array[0]->criticality = Criticality_reject; - cellsToModify->list.array[0]->value.present =\ - Served_Cells_To_Modify_ItemIEs__value_PR_Served_Cells_To_Modify_Item; - modifyItem=&cellsToModify->list.array[0]->value.choice.\ - Served_Cells_To_Modify_Item; - - /*pLMN_Identity*/ - modifyItem->oldNRCGI.pLMN_Identity.size = 3*sizeof(uint8_t); - DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf,modifyItem->oldNRCGI.pLMN_Identity.size); - if(modifyItem->oldNRCGI.pLMN_Identity.buf == NULLP) - { - break; - } - buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &modifyItem->oldNRCGI.pLMN_Identity); - - /*nRCellIdentity*/ - modifyItem->oldNRCGI.nRCellIdentity.size = 5*sizeof(uint8_t); - DU_ALLOC(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size); - if(modifyItem->oldNRCGI.nRCellIdentity.buf == NULLP) - { - break; - } - for (int tmp = 0;tmp < modifyItem->oldNRCGI.nRCellIdentity.size-1;tmp++) - { - modifyItem->oldNRCGI.nRCellIdentity.buf[tmp] = 0; - } - modifyItem->oldNRCGI.nRCellIdentity.buf[4] = 16; - modifyItem->oldNRCGI.nRCellIdentity.bits_unused = 4; - /*pLMN_Identity*/ - /*nRCGI*/ - modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size =3*sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); - if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf == NULLP) - { - break; - } - buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ - &modifyItem->served_Cell_Information.nRCGI.pLMN_Identity); - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size =5*sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); - if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf == NULLP) - { - break; - } - for (int tmp = 0 ; tmp < modifyItem->served_Cell_Information.\ - nRCGI.nRCellIdentity.size-1 ; tmp++) - { - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[tmp] = 0; - } - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[4] = 16; - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.bits_unused =4; - /*nRPCI*/ - modifyItem->served_Cell_Information.nRPCI = \ - duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; - /*servedPLMNs*/ - servPlmnCnt = 1; - modifyItem->served_Cell_Information.servedPLMNs.list.count = servPlmnCnt; - modifyItem->served_Cell_Information.servedPLMNs.list.size = \ - servPlmnCnt*sizeof(ServedPLMNs_Item_t *); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - modifyItem->served_Cell_Information.servedPLMNs.list.size); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array == NULLP) - { - break; - } - for(idy1=0;idy1served_Cell_Information.servedPLMNs.list.array[idy1],\ - sizeof(ServedPLMNs_Item_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idy1]== NULLP) - { - break; - } - } - modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.size = 3*sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf,modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.size); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->pLMN_Identity.buf == NULLP) - { - break; - } - buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.plmn[0],\ - &modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->pLMN_Identity); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions == NULLP) - { - break; - } - extensionCnt=1; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.count = extensionCnt; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.size = extensionCnt *sizeof(ServedPLMNs_ItemExtIEs_t *); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.size); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array == NULLP) - { - break; - } - for(idy2=0;idy2served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy2],\ - sizeof(ServedPLMNs_ItemExtIEs_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[0]->iE_Extensions->list.array[idy2] == NULLP) - { - break; - } - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->id =ProtocolIE_ID_id_TAISliceSupportList; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->criticality = Criticality_ignore; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.present = \ - ServedPLMNs_ItemExtIEs__extensionValue_PR_SliceSupportList; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.count = 1; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.size = sizeof(SliceSupportItem_t *); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.size); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array == NULLP) - { - break; - } - - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0],sizeof( SliceSupportItem_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0] == NULLP) - { - break; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.size = sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.array[0]->sNSSAI.sST.size); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf == NULLP) - { - break; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sST.buf[0] = 3; - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD == NULLP) - { - break; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->size = 3*sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->size); - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf == NULLP) - { - break; - } - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf[0] = 3; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf[1] = 6; - modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ - iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ - list.array[0]->sNSSAI.sD->buf[2] = 9; - - /*nR Mode Info with FDD*/ - modifyItem->served_Cell_Information.nR_Mode_Info.present = \ - NR_Mode_Info_PR_fDD; - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ - sizeof(FDD_Info_t)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD == NULLP) - { - break; - } - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.count = 1; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t*); - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array, modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.size); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.array == NULLP) - { - break; - } - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_NRFreqInfo.freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD-> - uL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) - { - break; - } - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array[0]->freqBandIndicatorNr = \ - duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ - freqBand[0].nrFreqBand; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.\ - dlNrFreqInfo.nrArfcn; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.count = 1; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array,modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array == NULLP) - { - break; - } - DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array[0],\ - sizeof(FreqBandNrItem_t)); - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) - { - break; - } - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0]->freqBandIndicatorNr = \ - duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ - freqBand[0].nrFreqBand; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; - - /*Transmission Bandwidth*/ - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrScs; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - uL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.ulTxBw.nrb; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrScs; - modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ - dL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ - f1Mode.mode.fdd.dlTxBw.nrb; - /*Measurement timing Config*/ - modifyItem->served_Cell_Information.measurementTimingConfiguration.size = \ - sizeof(uint8_t); - DU_ALLOC(modifyItem->served_Cell_Information.measurementTimingConfiguration.\ - buf,modifyItem->served_Cell_Information.measurementTimingConfiguration.size); - if(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf == NULLP) - { - break; - } - modifyItem->served_Cell_Information.measurementTimingConfiguration.\ - buf[0] = duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg; - - // NOTE :GNB DU SYS INFO:MIB AND SIB1 INFORMATION TO BE BUILT AND FILLED HERE - /*GNB DU ID */ - idx1++; - duCfgUpdate->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_gNB_DU_ID; - duCfgUpdate->protocolIEs.list.array[idx1]->criticality = Criticality_reject; - duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ - GNBDUConfigurationUpdateIEs__value_PR_GNB_DU_ID; - duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size = \ - sizeof(uint8_t); - DU_ALLOC(duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf,\ - duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size); - if(duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf == NULLP) - { - break; - } - duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf[0] = \ - duCfgParam.duId; - - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apDuCfg); - - /* Encode the DU Config Update type as APER */ - memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apDuCfg, PrepFinalEncBuf, encBuf); - - /* Checking encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG("F1AP : Could not encode DUConfigUpdate structure (at %s)\n",encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - break; - } - else - { - DU_LOG("\nF1AP : Created APER encoded buffer for DUConfigUpdate\n"); - for(i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) - { - DU_LOG("\nF1AP : Sending GND-DU Config Update failed"); - break; - } - - ret = ROK; - break; + while(true) + { + DU_LOG("\nF1AP : Building DU config update\n"); + /* Allocate the memory for F1DuCfg */ + DU_ALLOC(f1apDuCfg, sizeof(F1AP_PDU_t)); + if(f1apDuCfg == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apDuCfg->present = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apDuCfg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + if(f1apDuCfg->choice.initiatingMessage == NULLP) + { + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apDuCfg->choice.initiatingMessage->procedureCode = \ + ProcedureCode_id_gNBDUConfigurationUpdate; + f1apDuCfg->choice.initiatingMessage->criticality = Criticality_reject; + f1apDuCfg->choice.initiatingMessage->value.present = \ + InitiatingMessage__value_PR_GNBDUConfigurationUpdate; + duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->value.\ + choice.GNBDUConfigurationUpdate; + elementCnt = 3; + duCfgUpdate->protocolIEs.list.count = elementCnt; + duCfgUpdate->protocolIEs.list.size = \ + elementCnt * sizeof(GNBDUConfigurationUpdateIEs_t*); + + /* Initialize the F1Setup members */ + DU_ALLOC(duCfgUpdate->protocolIEs.list.array,duCfgUpdate->protocolIEs.list.size); + if(duCfgUpdate->protocolIEs.list.array == NULLP) + { + DU_LOG("F1AP : Memory allocation for F1RequestIEs failed"); + break; + } + for(idx=0;idxprotocolIEs.list.array[idx],sizeof(GNBDUConfigurationUpdateIEs_t)); + if(duCfgUpdate->protocolIEs.list.array[idx] == NULLP) + { + break; } - FreeDUConfigUpdate(f1apDuCfg); - - return ret; -} - /******************************************************************* - * - * @brief Deallocating memory of BuildAndSendDUConfigUpdate - * - * @details - * - * Function : FreeDUConfigUpdate - * - * Functionality: Deallocating memory of variables allocated in - * BuildAndSendDUConfigUpdate function - * - * @params[in] F1AP_PDU_t *f1apDuCfg - * - * @return ROK - void + } + + /*TransactionID*/ + idx1 = 0; + duCfgUpdate->protocolIEs.list.array[idx1]->id=ProtocolIE_ID_id_TransactionID; + duCfgUpdate->protocolIEs.list.array[idx1]->criticality= Criticality_reject; + duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ + GNBDUConfigurationUpdateIEs__value_PR_TransactionID; + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.TransactionID = \ + TRANS_ID; + + /*Served Cell to Modify */ + idx1++; + duCfgUpdate->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_Served_Cells_To_Modify_List; + duCfgUpdate->protocolIEs.list.array[idx1]->criticality =Criticality_reject; + duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ + GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Modify_List; + cellsToModify = &duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.\ + Served_Cells_To_Modify_List; + modifyCnt = 1; + cellsToModify->list.count = modifyCnt; + cellsToModify->list.size = \ + modifyCnt*sizeof(Served_Cells_To_Modify_ItemIEs_t *); + DU_ALLOC(cellsToModify->list.array,cellsToModify->list.size); + if(cellsToModify->list.array == NULLP) + { + break; + } + for(idy=0; idylist.array[idy],sizeof(\ + Served_Cells_To_Modify_ItemIEs_t)); + if(cellsToModify->list.array[idy] == NULLP) + { + break; + } + } + cellsToModify->list.array[0]->id = \ + ProtocolIE_ID_id_Served_Cells_To_Modify_Item; + cellsToModify->list.array[0]->criticality = Criticality_reject; + cellsToModify->list.array[0]->value.present =\ + Served_Cells_To_Modify_ItemIEs__value_PR_Served_Cells_To_Modify_Item; + modifyItem=&cellsToModify->list.array[0]->value.choice.\ + Served_Cells_To_Modify_Item; + + /*pLMN_Identity*/ + modifyItem->oldNRCGI.pLMN_Identity.size = 3*sizeof(uint8_t); + DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf,modifyItem->oldNRCGI.pLMN_Identity.size); + if(modifyItem->oldNRCGI.pLMN_Identity.buf == NULLP) + { + break; + } + buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ + &modifyItem->oldNRCGI.pLMN_Identity); + + /*nRCellIdentity*/ + modifyItem->oldNRCGI.nRCellIdentity.size = 5*sizeof(uint8_t); + DU_ALLOC(modifyItem->oldNRCGI.nRCellIdentity.buf,\ + modifyItem->oldNRCGI.nRCellIdentity.size); + if(modifyItem->oldNRCGI.nRCellIdentity.buf == NULLP) + { + break; + } + for (int tmp = 0;tmp < modifyItem->oldNRCGI.nRCellIdentity.size-1;tmp++) + { + modifyItem->oldNRCGI.nRCellIdentity.buf[tmp] = 0; + } + modifyItem->oldNRCGI.nRCellIdentity.buf[4] = 16; + modifyItem->oldNRCGI.nRCellIdentity.bits_unused = 4; + /*pLMN_Identity*/ + /*nRCGI*/ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size =3*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); + if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf == NULLP) + { + break; + } + buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrCgi.plmn,\ + &modifyItem->served_Cell_Information.nRCGI.pLMN_Identity); + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size =5*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); + if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf == NULLP) + { + break; + } + for (int tmp = 0 ; tmp < modifyItem->served_Cell_Information.\ + nRCGI.nRCellIdentity.size-1 ; tmp++) + { + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[tmp] = 0; + } + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf[4] = 16; + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.bits_unused =4; + /*nRPCI*/ + modifyItem->served_Cell_Information.nRPCI = \ + duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.nrPci; + /*servedPLMNs*/ + servPlmnCnt = 1; + modifyItem->served_Cell_Information.servedPLMNs.list.count = servPlmnCnt; + modifyItem->served_Cell_Information.servedPLMNs.list.size = \ + servPlmnCnt*sizeof(ServedPLMNs_Item_t *); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array == NULLP) + { + break; + } + for(idy1=0;idy1served_Cell_Information.servedPLMNs.list.array[idy1],\ + sizeof(ServedPLMNs_Item_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idy1]== NULLP) + { + break; + } + } + modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.size = 3*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.buf,modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->pLMN_Identity.buf == NULLP) + { + break; + } + buildPlmnId(duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.plmn[0],\ + &modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->pLMN_Identity); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions == NULLP) + { + break; + } + extensionCnt=1; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.count = extensionCnt; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.size = extensionCnt *sizeof(ServedPLMNs_ItemExtIEs_t *); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array == NULLP) + { + break; + } + for(idy2=0;idy2served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array[idy2],\ + sizeof(ServedPLMNs_ItemExtIEs_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[0]->iE_Extensions->list.array[idy2] == NULLP) + { + break; + } + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->id =ProtocolIE_ID_id_TAISliceSupportList; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->criticality = Criticality_ignore; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.present = \ + ServedPLMNs_ItemExtIEs__extensionValue_PR_SliceSupportList; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.count = 1; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.size = sizeof(SliceSupportItem_t *); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array == NULLP) + { + break; + } + + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0],sizeof( SliceSupportItem_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0] == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.size = sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.array[0]->sNSSAI.sST.size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sST.buf[0] = 3; + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD,sizeof(OCTET_STRING_t)); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->size = 3*sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf,modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->size); + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf == NULLP) + { + break; + } + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf[0] = 3; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf[1] = 6; + modifyItem->served_Cell_Information.servedPLMNs.list.array[0]->\ + iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[0]->sNSSAI.sD->buf[2] = 9; + + /*nR Mode Info with FDD*/ + modifyItem->served_Cell_Information.nR_Mode_Info.present = \ + NR_Mode_Info_PR_fDD; + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,\ + sizeof(FDD_Info_t)); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD == NULLP) + { + break; + } + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulNrFreqInfo.nrArfcn; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.count = 1; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.size = sizeof(FreqBandNrItem_t*); + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array, modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.size); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array == NULLP) + { + break; + } + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_NRFreqInfo.freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD-> + uL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) + { + break; + } + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array[0]->freqBandIndicatorNr = \ + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\ + freqBand[0].nrFreqBand; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.\ + dlNrFreqInfo.nrArfcn; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.count = 1; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.size = sizeof(FreqBandNrItem_t *); + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_NRFreqInfo.freqBandListNr.list.array,modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_NRFreqInfo.freqBandListNr.list.array == NULLP) + { + break; + } + DU_ALLOC(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_NRFreqInfo.freqBandListNr.list.array[0],\ + sizeof(FreqBandNrItem_t)); + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_NRFreqInfo.freqBandListNr.list.array[0] == NULLP) + { + break; + } + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0]->freqBandIndicatorNr = \ + duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\ + freqBand[0].nrFreqBand; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0]->supportedSULBandList.list.count=0; + + /*Transmission Bandwidth*/ + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrScs; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + uL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.ulTxBw.nrb; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_Transmission_Bandwidth.nRSCS = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrScs; + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->\ + dL_Transmission_Bandwidth.nRNRB = duCfgParam.srvdCellLst[0].duCellInfo.\ + f1Mode.mode.fdd.dlTxBw.nrb; + /*Measurement timing Config*/ + modifyItem->served_Cell_Information.measurementTimingConfiguration.size = \ + sizeof(uint8_t); + DU_ALLOC(modifyItem->served_Cell_Information.measurementTimingConfiguration.\ + buf,modifyItem->served_Cell_Information.measurementTimingConfiguration.size); + if(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf == NULLP) + { + break; + } + modifyItem->served_Cell_Information.measurementTimingConfiguration.\ + buf[0] = duCfgParam.srvdCellLst[0].duCellInfo.measTimeCfg; + + // NOTE :GNB DU SYS INFO:MIB AND SIB1 INFORMATION TO BE BUILT AND FILLED HERE + /*GNB DU ID */ + idx1++; + duCfgUpdate->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_gNB_DU_ID; + duCfgUpdate->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + duCfgUpdate->protocolIEs.list.array[idx1]->value.present = \ + GNBDUConfigurationUpdateIEs__value_PR_GNB_DU_ID; + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size = \ + sizeof(uint8_t); + DU_ALLOC(duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf,\ + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.size); + if(duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf == NULLP) + { + break; + } + duCfgUpdate->protocolIEs.list.array[idx1]->value.choice.GNB_DU_ID.buf[0] = \ + duCfgParam.duId; + + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apDuCfg); + + /* Encode the DU Config Update type as APER */ + memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apDuCfg, PrepFinalEncBuf, encBuf); + + /* Checking encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG("F1AP : Could not encode DUConfigUpdate structure (at %s)\n",encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\nF1AP : Created APER encoded buffer for DUConfigUpdate\n"); + for(i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) + { + DU_LOG("\nF1AP : Sending GND-DU Config Update failed"); + break; + } + + ret = ROK; + break; + } + FreeDUConfigUpdate(f1apDuCfg); + + return ret; +} +/******************************************************************* + * + * @brief Deallocating memory of BuildAndSendDUConfigUpdate + * + * @details + * + * Function : FreeDUConfigUpdate + * + * Functionality: Deallocating memory of variables allocated in + * BuildAndSendDUConfigUpdate function + * + * @params[in] F1AP_PDU_t *f1apDuCfg + * + * @return ROK - void * * ****************************************************************/ void FreeDUConfigUpdate(F1AP_PDU_t *f1apDuCfg) { uint8_t i; - uint8_t idx; + uint8_t idx; GNBDUConfigurationUpdate_t *duCfgUpdate; Served_Cells_To_Modify_List_t *cellsToModify; Served_Cells_To_Modify_Item_t *modifyItem; idx=0; i=1; if(f1apDuCfg != NULLP) - { - if(f1apDuCfg->choice.initiatingMessage != NULLP) - { - duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->\ - value.choice.GNBDUConfigurationUpdate; - if(duCfgUpdate->protocolIEs.list.array != NULLP) - { - if(duCfgUpdate->protocolIEs.list.array[i] != NULLP) - { - cellsToModify = &duCfgUpdate->protocolIEs.list.array[i]->\ - value.choice.Served_Cells_To_Modify_List; - if(cellsToModify->list.array != NULLP) - { - if(cellsToModify->list.array[idx] != NULLP) - { - modifyItem=&cellsToModify->list.array[idx]->value.choice.\ - Served_Cells_To_Modify_Item; - if(modifyItem->oldNRCGI.pLMN_Identity.buf != NULLP) - { - if(modifyItem->oldNRCGI.nRCellIdentity.buf != NULLP) - { - if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf != NULLP) - { - if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf - != NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array\ - != NULLP) - { - if(!modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->pLMN_Identity.buf != NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions!= NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions->list.array != NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions->list.array[idx]) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array !=NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx]!=NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx]->sNSSAI.sST.buf!=NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx]->sNSSAI.sD != NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx]->sNSSAI.sD->buf!=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD - !=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.array!=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.array[idx]!=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->dL_NRFreqInfo.freqBandListNr.list.array !=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->dL_NRFreqInfo.freqBandListNr.list.\ - array[idx]!= NULLP) - { - if(modifyItem->served_Cell_Information.\ - measurementTimingConfiguration.buf !=NULLP) - { - idx=2; - if(duCfgUpdate->protocolIEs.list.array[idx]->value.\ - choice.GNB_DU_ID.buf!=NULLP) - { - DU_FREE(duCfgUpdate->protocolIEs.list.\ - array[idx]->value.choice.GNB_DU_ID.buf,\ - duCfgUpdate->protocolIEs.list.array[idx]->\ - value.choice.GNB_DU_ID.size); - } - idx=0; - DU_FREE(modifyItem->served_Cell_Information.\ - measurementTimingConfiguration.\ - buf,modifyItem->served_Cell_Information.\ - measurementTimingConfiguration.size); - } - DU_FREE(modifyItem->served_Cell_Information.\ - nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.\ - list.array[idx],sizeof(FreqBandNrItem_t)); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info\ - .choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ - modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array[idx],sizeof(FreqBandNrItem_t)); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.size); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD,sizeof(FDD_Info_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions->list.array[idx]->extensionValue.choice.\ - SliceSupportList.\ - list.array[idx]->sNSSAI.sD->buf,modifyItem->served_Cell_Information.\ - servedPLMNs.list.array[idx]->iE_Extensions->list.array[idx]->\ - extensionValue.choice.SliceSupportList.list.array[idx]->\ - sNSSAI.sD->size); - - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.\ - servedPLMNs.\ - list.array[idx]->iE_Extensions->list.array[idx]->extensionValue.choice.\ - SliceSupportList.list.array[idx]->sNSSAI.sST.size); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array[idx],sizeof(SliceSupportItem_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ - list.array,\ - modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ - iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.list.size); - } - } - for(i=0;iserved_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions->list.count;i++) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions->list.array[i],\ - sizeof(ServedPLMNs_ItemExtIEs_t )); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions->list.array,modifyItem->served_Cell_Information.servedPLMNs. - list.array[idx]->iE_Extensions->list.size); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[idx]->pLMN_Identity.buf, - modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->pLMN_Identity.size); - } - } - for(i=0;iserved_Cell_Information.servedPLMNs.list.count;i++) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[i] - != NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[i],\ - sizeof(ServedPLMNs_Item_t)); - } - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - modifyItem->served_Cell_Information.servedPLMNs.list.size); - } - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); - } - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); - } - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size); - } - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,\ - modifyItem->oldNRCGI.pLMN_Identity.size); - } - } - for(i=0; ilist.count ;i++) + { + if(f1apDuCfg->choice.initiatingMessage != NULLP) + { + duCfgUpdate = &f1apDuCfg->choice.initiatingMessage->\ + value.choice.GNBDUConfigurationUpdate; + if(duCfgUpdate->protocolIEs.list.array != NULLP) + { + if(duCfgUpdate->protocolIEs.list.array[i] != NULLP) + { + cellsToModify = &duCfgUpdate->protocolIEs.list.array[i]->\ + value.choice.Served_Cells_To_Modify_List; + if(cellsToModify->list.array != NULLP) + { + if(cellsToModify->list.array[idx] != NULLP) + { + modifyItem=&cellsToModify->list.array[idx]->value.choice.\ + Served_Cells_To_Modify_Item; + if(modifyItem->oldNRCGI.pLMN_Identity.buf != NULLP) + { + if(modifyItem->oldNRCGI.nRCellIdentity.buf != NULLP) + { + if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf != NULLP) + { + if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf + != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array\ + != NULLP) + { + if(!modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->pLMN_Identity.buf != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions!= NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions->list.array != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions->list.array[idx]) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array !=NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx]!=NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx]->sNSSAI.sST.buf!=NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx]->sNSSAI.sD != NULLP) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx]->sNSSAI.sD->buf!=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD + !=NULLP) { - if(cellsToModify->list.array[i] != NULLP) + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array!=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.array[idx]!=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->dL_NRFreqInfo.freqBandListNr.list.array !=NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->dL_NRFreqInfo.freqBandListNr.list.\ + array[idx]!= NULLP) + { + if(modifyItem->served_Cell_Information.\ + measurementTimingConfiguration.buf !=NULLP) { - DU_FREE(cellsToModify->list.array[i],\ - sizeof(Served_Cells_To_Modify_ItemIEs_t)); - } + idx=2; + if(duCfgUpdate->protocolIEs.list.array[idx]->value.\ + choice.GNB_DU_ID.buf!=NULLP) + { + DU_FREE(duCfgUpdate->protocolIEs.list.\ + array[idx]->value.choice.GNB_DU_ID.buf,\ + duCfgUpdate->protocolIEs.list.array[idx]->\ + value.choice.GNB_DU_ID.size); + } + idx=0; + DU_FREE(modifyItem->served_Cell_Information.\ + measurementTimingConfiguration.\ + buf,modifyItem->served_Cell_Information.\ + measurementTimingConfiguration.size); + } + DU_FREE(modifyItem->served_Cell_Information.\ + nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.\ + list.array[idx],sizeof(FreqBandNrItem_t)); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info\ + .choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ + modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array[idx],sizeof(FreqBandNrItem_t)); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ + choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array,modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD->uL_NRFreqInfo.freqBandListNr.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ + fDD,sizeof(FDD_Info_t)); } - DU_FREE(cellsToModify->list.array,cellsToModify->list.size); - } - } - for(i=0;iprotocolIEs.list.count;i++) - { - if(duCfgUpdate->protocolIEs.list.array[i] !=NULLP) - { - DU_FREE(duCfgUpdate->protocolIEs.list.array[i],\ - sizeof(GNBDUConfigurationUpdateIEs_t)); - } - } - DU_FREE(duCfgUpdate->protocolIEs.list.array,duCfgUpdate->protocolIEs.list.size); - } - DU_FREE(f1apDuCfg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions->list.array[idx]->extensionValue.choice.\ + SliceSupportList.\ + list.array[idx]->sNSSAI.sD->buf,modifyItem->served_Cell_Information.\ + servedPLMNs.list.array[idx]->iE_Extensions->list.array[idx]->\ + extensionValue.choice.SliceSupportList.list.array[idx]->\ + sNSSAI.sD->size); + + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx]->sNSSAI.sD,sizeof(OCTET_STRING_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.\ + servedPLMNs.\ + list.array[idx]->iE_Extensions->list.array[idx]->extensionValue.choice.\ + SliceSupportList.list.array[idx]->sNSSAI.sST.size); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array[idx],sizeof(SliceSupportItem_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.\ + list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->\ + iE_Extensions->list.array[idx]->extensionValue.choice.SliceSupportList.list.size); + } + } + for(i=0;iserved_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions->list.count;i++) + { + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions->list.array[i],\ + sizeof(ServedPLMNs_ItemExtIEs_t )); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions->list.array,modifyItem->served_Cell_Information.servedPLMNs. + list.array[idx]->iE_Extensions->list.size); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ + array[idx]->pLMN_Identity.buf, + modifyItem->served_Cell_Information.servedPLMNs.list.array[idx]->pLMN_Identity.size); + } + } + for(i=0;iserved_Cell_Information.servedPLMNs.list.count;i++) + { + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[i] + != NULLP) + { + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[i],\ + sizeof(ServedPLMNs_Item_t)); + } + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); + } + DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); + } + DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ + modifyItem->oldNRCGI.nRCellIdentity.size); + } + DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,\ + modifyItem->oldNRCGI.pLMN_Identity.size); + } + } + for(i=0; ilist.count ;i++) + { + if(cellsToModify->list.array[i] != NULLP) + { + DU_FREE(cellsToModify->list.array[i],\ + sizeof(Served_Cells_To_Modify_ItemIEs_t)); + } } - DU_FREE(f1apDuCfg, (Size)sizeof(F1AP_PDU_t)); - } + DU_FREE(cellsToModify->list.array,cellsToModify->list.size); + } + } + for(i=0;iprotocolIEs.list.count;i++) + { + if(duCfgUpdate->protocolIEs.list.array[i] !=NULLP) + { + DU_FREE(duCfgUpdate->protocolIEs.list.array[i],\ + sizeof(GNBDUConfigurationUpdateIEs_t)); + } + } + DU_FREE(duCfgUpdate->protocolIEs.list.array,duCfgUpdate->protocolIEs.list.size); + } + DU_FREE(f1apDuCfg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apDuCfg, (Size)sizeof(F1AP_PDU_t)); + } } - /******************************************************************* +/******************************************************************* * * @brief free the ULRRCMessageTransfer * @@ -1918,35 +1918,35 @@ void FreeDUConfigUpdate(F1AP_PDU_t *f1apDuCfg) ******************************************************************/ void FreeULRRCMessageTransfer( F1AP_PDU_t *f1apMsg) { - uint8_t idx1; - ULRRCMessageTransfer_t *ulRRCMsg; - - if(f1apMsg != NULLP) - { - if(f1apMsg->choice.initiatingMessage != NULLP) - { - ulRRCMsg = &f1apMsg->choice.initiatingMessage->value.choice.ULRRCMessageTransfer; - if(ulRRCMsg->protocolIEs.list.array != NULLP) - { - for(idx1=0;idx1protocolIEs.list.count;idx1++) - { - if(ulRRCMsg->protocolIEs.list.array[idx1] != NULLP) - { - if(ulRRCMsg->protocolIEs.list.array[idx1]->value.present == - ULRRCMessageTransferIEs__value_PR_RRCContainer) - { - DU_FREE(ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, - ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size); - } - DU_FREE(ulRRCMsg->protocolIEs.list.array[idx1],sizeof(ULRRCMessageTransferIEs_t)); - } - } - DU_FREE(ulRRCMsg->protocolIEs.list.array,ulRRCMsg->protocolIEs.list.size ); - } - DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); - } - DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); + uint8_t idx1; + ULRRCMessageTransfer_t *ulRRCMsg; + + if(f1apMsg != NULLP) + { + if(f1apMsg->choice.initiatingMessage != NULLP) + { + ulRRCMsg = &f1apMsg->choice.initiatingMessage->value.choice.ULRRCMessageTransfer; + if(ulRRCMsg->protocolIEs.list.array != NULLP) + { + for(idx1=0;idx1protocolIEs.list.count;idx1++) + { + if(ulRRCMsg->protocolIEs.list.array[idx1] != NULLP) + { + if(ulRRCMsg->protocolIEs.list.array[idx1]->value.present == + ULRRCMessageTransferIEs__value_PR_RRCContainer) + { + DU_FREE(ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, + ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size); + } + DU_FREE(ulRRCMsg->protocolIEs.list.array[idx1],sizeof(ULRRCMessageTransferIEs_t)); + } + } + DU_FREE(ulRRCMsg->protocolIEs.list.array,ulRRCMsg->protocolIEs.list.size ); + } + DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); } + DU_FREE(f1apMsg,sizeof(F1AP_PDU_t)); + } } /******************************************************************* * @@ -1966,7 +1966,7 @@ void FreeULRRCMessageTransfer( F1AP_PDU_t *f1apMsg) * * ****************************************************************/ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ - uint16_t msgLen, uint8_t *rrcMsg) + uint16_t msgLen, uint8_t *rrcMsg) { uint8_t elementCnt; uint8_t idx1; @@ -1996,13 +1996,13 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ f1apMsg->choice.initiatingMessage->procedureCode = ProcedureCode_id_ULRRCMessageTransfer; f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; f1apMsg->choice.initiatingMessage->value.present = \ - InitiatingMessage__value_PR_ULRRCMessageTransfer; + InitiatingMessage__value_PR_ULRRCMessageTransfer; ulRRCMsg = &f1apMsg->choice.initiatingMessage->value.choice.ULRRCMessageTransfer; elementCnt = 4; ulRRCMsg->protocolIEs.list.count = elementCnt; ulRRCMsg->protocolIEs.list.size = \ - elementCnt * sizeof(ULRRCMessageTransferIEs_t *); + elementCnt * sizeof(ULRRCMessageTransferIEs_t *); /* Initialize the F1Setup members */ DU_ALLOC(ulRRCMsg->protocolIEs.list.array, ulRRCMsg->protocolIEs.list.size); @@ -2026,7 +2026,7 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ ulRRCMsg->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ - ULRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID; + ULRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID; ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_CU_UE_F1AP_ID = ueCb.gnbCuUeF1apId; /*GNB DU UE F1AP ID*/ @@ -2034,7 +2034,7 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ ulRRCMsg->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ - ULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; + ULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_DU_UE_F1AP_ID = ueCb.gnbDuUeF1apId; /*SRBID*/ @@ -2042,7 +2042,7 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ ulRRCMsg->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_SRBID; ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ - ULRRCMessageTransferIEs__value_PR_SRBID; + ULRRCMessageTransferIEs__value_PR_SRBID; ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.SRBID = lcId; /*RRCContainer*/ @@ -2050,17 +2050,17 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ ulRRCMsg->protocolIEs.list.array[idx1]->id = ProtocolIE_ID_id_RRCContainer; ulRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; ulRRCMsg->protocolIEs.list.array[idx1]->value.present = \ - ULRRCMessageTransferIEs__value_PR_RRCContainer; + ULRRCMessageTransferIEs__value_PR_RRCContainer; ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size = msgLen; DU_ALLOC(ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, - ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size) - if(!ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf) - { - DU_LOG(" F1AP : Memory allocation for BuildAndSendULRRCMessageTransfer failed"); - break; - } + ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size) + if(!ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf) + { + DU_LOG(" F1AP : Memory allocation for BuildAndSendULRRCMessageTransfer failed"); + break; + } memcpy(ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, \ - rrcMsg, ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size); + rrcMsg, ulRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size); xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); @@ -2096,221 +2096,221 @@ uint8_t BuildAndSendULRRCMessageTransfer(DuUeCb ueCb, uint8_t lcId, \ } FreeULRRCMessageTransfer(f1apMsg); - return ret; + return ret; }/* End of BuildAndSendULRRCMessageTransfer*/ /******************************************************************* -* -* @brief Builds tag config -* -* @details -* -* Function : BuildTagConfig -* -* Functionality: Builds tag config in MacCellGroupConfig -* -* @params[in] TAG_Config *tag_Config -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds tag config + * + * @details + * + * Function : BuildTagConfig + * + * Functionality: Builds tag config in MacCellGroupConfig + * + * @params[in] TAG_Config *tag_Config + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildTagConfig(struct TAG_Config *tagConfig) { - struct TAG_Config__tag_ToAddModList *tagList; + struct TAG_Config__tag_ToAddModList *tagList; uint8_t idx, elementCnt; tagConfig->tag_ToReleaseList = NULLP; tagConfig->tag_ToAddModList = NULLP; DU_ALLOC(tagConfig->tag_ToAddModList, sizeof(struct TAG_Config__tag_ToAddModList)); - if(!tagConfig->tag_ToAddModList) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildTagConfig"); - return RFAILED; - } + if(!tagConfig->tag_ToAddModList) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildTagConfig"); + return RFAILED; + } - elementCnt = 1; //ODU_VALUE_ONE; - tagList = tagConfig->tag_ToAddModList; - tagList->list.count = elementCnt; - tagList->list.size = elementCnt * sizeof(struct TAG *); + elementCnt = 1; //ODU_VALUE_ONE; + tagList = tagConfig->tag_ToAddModList; + tagList->list.count = elementCnt; + tagList->list.size = elementCnt * sizeof(struct TAG *); tagList->list.array = NULLP; - DU_ALLOC(tagList->list.array, tagList->list.size); - if(!tagList->list.array) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildTagConfig"); - return RFAILED; - } + DU_ALLOC(tagList->list.array, tagList->list.size); + if(!tagList->list.array) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildTagConfig"); + return RFAILED; + } - for(idx=0; idxlist.count; idx++) - { - tagList->list.array[idx] = NULLP; - DU_ALLOC(tagList->list.array[idx], sizeof(struct TAG)); - if(!tagList->list.array[idx]) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildTagConfig"); - return RFAILED; - } - } - - idx = 0; - tagList->list.array[idx]->tag_Id = TAG_ID; - tagList->list.array[idx]->timeAlignmentTimer = TIME_ALIGNMENT_TMR; + for(idx=0; idxlist.count; idx++) + { + tagList->list.array[idx] = NULLP; + DU_ALLOC(tagList->list.array[idx], sizeof(struct TAG)); + if(!tagList->list.array[idx]) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildTagConfig"); + return RFAILED; + } + } + + idx = 0; + tagList->list.array[idx]->tag_Id = TAG_ID; + tagList->list.array[idx]->timeAlignmentTimer = TIME_ALIGNMENT_TMR; return ROK; } /******************************************************************* -* -* @brief Builds PHR Config -* -* @details -* -* Function : BuildPhrConfig -* -* Functionality: Builds phrConfig in MacCellGroupConfig -* -* @params[in] PHR Config * -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds PHR Config + * + * @details + * + * Function : BuildPhrConfig + * + * Functionality: Builds phrConfig in MacCellGroupConfig + * + * @params[in] PHR Config * + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildPhrConfig(struct MAC_CellGroupConfig__phr_Config *phrConfig) { phrConfig->present = MAC_CellGroupConfig__phr_Config_PR_setup; - phrConfig->choice.setup = NULLP; - DU_ALLOC(phrConfig->choice.setup, sizeof(struct PHR_Config)); - if(!phrConfig->choice.setup) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildPhrConfig"); - return RFAILED; - } + phrConfig->choice.setup = NULLP; + DU_ALLOC(phrConfig->choice.setup, sizeof(struct PHR_Config)); + if(!phrConfig->choice.setup) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildPhrConfig"); + return RFAILED; + } - phrConfig->choice.setup->phr_PeriodicTimer = PHR_PERIODIC_TMR; - phrConfig->choice.setup->phr_ProhibitTimer = PHR_PROHIBHIT_TMR; + phrConfig->choice.setup->phr_PeriodicTimer = PHR_PERIODIC_TMR; + phrConfig->choice.setup->phr_ProhibitTimer = PHR_PROHIBHIT_TMR; phrConfig->choice.setup->phr_Tx_PowerFactorChange = PHR_PWR_FACTOR_CHANGE; - phrConfig->choice.setup->multiplePHR = false; - phrConfig->choice.setup->dummy = false; - phrConfig->choice.setup->phr_Type2OtherCell = false; - phrConfig->choice.setup->phr_ModeOtherCG = PHR_MODE_OTHER_CG; + phrConfig->choice.setup->multiplePHR = false; + phrConfig->choice.setup->dummy = false; + phrConfig->choice.setup->phr_Type2OtherCell = false; + phrConfig->choice.setup->phr_ModeOtherCG = PHR_MODE_OTHER_CG; - return ROK; + return ROK; } /******************************************************************* -* -* @brief Builds BSR Config -* -* @details -* -* Function : BuildBsrConfig -* -* Functionality: Builds BuildBsrConfig in MacCellGroupConfig -* -* @params[in] BSR_Config *bsrConfig -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ -uint8_t BuildBsrConfig(struct BSR_Config *bsrConfig) -{ - bsrConfig->periodicBSR_Timer = PERIODIC_BSR_TMR; - bsrConfig->retxBSR_Timer = RETX_BSR_TMR; - bsrConfig->logicalChannelSR_DelayTimer = NULLP; - - return ROK; + * + * @brief Builds BSR Config + * + * @details + * + * Function : BuildBsrConfig + * + * Functionality: Builds BuildBsrConfig in MacCellGroupConfig + * + * @params[in] BSR_Config *bsrConfig + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t BuildBsrConfig(struct BSR_Config *bsrConfig) +{ + bsrConfig->periodicBSR_Timer = PERIODIC_BSR_TMR; + bsrConfig->retxBSR_Timer = RETX_BSR_TMR; + bsrConfig->logicalChannelSR_DelayTimer = NULLP; + + return ROK; } /******************************************************************* -* -* @brief Builds scheduling request config -* -* @details -* -* Function : BuildSchedulingReqConfig -* -* Functionality: Builds BuildSchedulingReqConfig in MacCellGroupConfig -* -* @params[in] SchedulingRequestConfig *schedulingRequestConfig -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds scheduling request config + * + * @details + * + * Function : BuildSchedulingReqConfig + * + * Functionality: Builds BuildSchedulingReqConfig in MacCellGroupConfig + * + * @params[in] SchedulingRequestConfig *schedulingRequestConfig + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildSchedulingReqConfig(struct SchedulingRequestConfig *schedulingRequestConfig) { - struct SchedulingRequestConfig__schedulingRequestToAddModList *schReqList; + struct SchedulingRequestConfig__schedulingRequestToAddModList *schReqList; uint8_t idx, elementCnt; schedulingRequestConfig->schedulingRequestToAddModList = NULLP; - DU_ALLOC(schedulingRequestConfig->schedulingRequestToAddModList, - sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList)); - if(!schedulingRequestConfig->schedulingRequestToAddModList) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); - return RFAILED; - } + DU_ALLOC(schedulingRequestConfig->schedulingRequestToAddModList, + sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList)); + if(!schedulingRequestConfig->schedulingRequestToAddModList) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); + return RFAILED; + } - elementCnt = 1; //ODU_VALUE_ONE; - schReqList = schedulingRequestConfig->schedulingRequestToAddModList; - schReqList->list.count = elementCnt; + elementCnt = 1; //ODU_VALUE_ONE; + schReqList = schedulingRequestConfig->schedulingRequestToAddModList; + schReqList->list.count = elementCnt; schReqList->list.size = elementCnt * sizeof(struct SchedulingRequestToAddMod *); schReqList->list.array = NULLP; DU_ALLOC(schReqList->list.array, schReqList->list.size); - if(!schReqList->list.array) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); - return RFAILED; - } + if(!schReqList->list.array) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); + return RFAILED; + } for(idx=0;idxlist.count; idx++) - { - schReqList->list.array[idx] = NULLP; - DU_ALLOC(schReqList->list.array[idx], sizeof(struct SchedulingRequestToAddMod)); - if(!schReqList->list.array[idx]) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); - return RFAILED; - } - } - - idx = 0; - schReqList->list.array[idx]->schedulingRequestId = SCH_REQ_ID; + { + schReqList->list.array[idx] = NULLP; + DU_ALLOC(schReqList->list.array[idx], sizeof(struct SchedulingRequestToAddMod)); + if(!schReqList->list.array[idx]) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); + return RFAILED; + } + } + + idx = 0; + schReqList->list.array[idx]->schedulingRequestId = SCH_REQ_ID; schReqList->list.array[idx]->sr_ProhibitTimer = NULLP; - DU_ALLOC(schReqList->list.array[idx]->sr_ProhibitTimer, sizeof(long)); - if(!schReqList->list.array[idx]->sr_ProhibitTimer) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); - return RFAILED; - } + DU_ALLOC(schReqList->list.array[idx]->sr_ProhibitTimer, sizeof(long)); + if(!schReqList->list.array[idx]->sr_ProhibitTimer) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSchedulingReqConfig"); + return RFAILED; + } *(schReqList->list.array[idx]->sr_ProhibitTimer) = SR_PROHIBIT_TMR; - schReqList->list.array[idx]->sr_TransMax = SR_TRANS_MAX; - schedulingRequestConfig->schedulingRequestToReleaseList = NULLP; + schReqList->list.array[idx]->sr_TransMax = SR_TRANS_MAX; + schedulingRequestConfig->schedulingRequestToReleaseList = NULLP; - return ROK; + return ROK; } /******************************************************************* -* -* @brief Builds RLC Config -* -* @details -* -* Function : BuildRlcConfig -* -* Functionality: Builds RLC Config in BuildRlcBearerToAddModList -* -* @params[in] RLC_Config *rlcConfig -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds RLC Config + * + * @details + * + * Function : BuildRlcConfig + * + * Functionality: Builds RLC Config in BuildRlcBearerToAddModList + * + * @params[in] RLC_Config *rlcConfig + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildRlcConfig(struct RLC_Config *rlcConfig) { @@ -2318,187 +2318,187 @@ uint8_t BuildRlcConfig(struct RLC_Config *rlcConfig) rlcConfig->choice.am = NULLP; DU_ALLOC(rlcConfig->choice.am, sizeof(struct RLC_Config__am)); - if(!rlcConfig->choice.am) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcConfig"); - return RFAILED; - } + if(!rlcConfig->choice.am) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcConfig"); + return RFAILED; + } /* UL */ - rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength = NULLP; + rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength = NULLP; DU_ALLOC(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); - if(!rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcConfig"); - return RFAILED; - } + if(!rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcConfig"); + return RFAILED; + } *(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength) = SN_FIELD_LEN; - rlcConfig->choice.am->ul_AM_RLC.t_PollRetransmit = T_POLL_RETRANSMIT; - rlcConfig->choice.am->ul_AM_RLC.pollPDU = POLL_PDU; - rlcConfig->choice.am->ul_AM_RLC.pollByte = POLL_BYTE; - rlcConfig->choice.am->ul_AM_RLC.maxRetxThreshold = MAX_RETX_THRESHOLD; + rlcConfig->choice.am->ul_AM_RLC.t_PollRetransmit = T_POLL_RETRANSMIT; + rlcConfig->choice.am->ul_AM_RLC.pollPDU = POLL_PDU; + rlcConfig->choice.am->ul_AM_RLC.pollByte = POLL_BYTE; + rlcConfig->choice.am->ul_AM_RLC.maxRetxThreshold = MAX_RETX_THRESHOLD; /* DL */ rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength = NULLP; DU_ALLOC(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); - if(!rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcConfig"); - return RFAILED; - } - *(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength) = SN_FIELD_LEN; + if(!rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcConfig"); + return RFAILED; + } + *(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength) = SN_FIELD_LEN; rlcConfig->choice.am->dl_AM_RLC.t_Reassembly = T_REASSEMBLY; - rlcConfig->choice.am->dl_AM_RLC.t_StatusProhibit = T_STATUS_PROHIBHIT; - + rlcConfig->choice.am->dl_AM_RLC.t_StatusProhibit = T_STATUS_PROHIBHIT; + return ROK; } /******************************************************************* -* -* @brief Builds MAC LC Config -* -* @details -* -* Function : BuildMacLCConfig -* -* Functionality: Builds MAC LC Config in BuildRlcBearerToAddModList -* -* @params[in] struct LogicalChannelConfig macLcConfig -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds MAC LC Config + * + * @details + * + * Function : BuildMacLCConfig + * + * Functionality: Builds MAC LC Config in BuildRlcBearerToAddModList + * + * @params[in] struct LogicalChannelConfig macLcConfig + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildMacLCConfig(struct LogicalChannelConfig *macLcConfig) { macLcConfig->ul_SpecificParameters = NULLP; DU_ALLOC(macLcConfig->ul_SpecificParameters, sizeof(struct LogicalChannelConfig__ul_SpecificParameters)); - if(!macLcConfig->ul_SpecificParameters) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacLCConfig"); - return RFAILED; - } + if(!macLcConfig->ul_SpecificParameters) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacLCConfig"); + return RFAILED; + } macLcConfig->ul_SpecificParameters->priority = MAC_LC_PRIORITY; - macLcConfig->ul_SpecificParameters->prioritisedBitRate = PRIORTISIED_BIT_RATE; - macLcConfig->ul_SpecificParameters->bucketSizeDuration = BUCKET_SIZE_DURATION; + macLcConfig->ul_SpecificParameters->prioritisedBitRate = PRIORTISIED_BIT_RATE; + macLcConfig->ul_SpecificParameters->bucketSizeDuration = BUCKET_SIZE_DURATION; macLcConfig->ul_SpecificParameters->allowedServingCells = NULLP; - macLcConfig->ul_SpecificParameters->allowedSCS_List = NULLP; - macLcConfig->ul_SpecificParameters->maxPUSCH_Duration = NULLP; + macLcConfig->ul_SpecificParameters->allowedSCS_List = NULLP; + macLcConfig->ul_SpecificParameters->maxPUSCH_Duration = NULLP; macLcConfig->ul_SpecificParameters->configuredGrantType1Allowed = NULLP; macLcConfig->ul_SpecificParameters->logicalChannelGroup = NULLP; DU_ALLOC(macLcConfig->ul_SpecificParameters->logicalChannelGroup, sizeof(long)); if(!macLcConfig->ul_SpecificParameters->logicalChannelGroup) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacLCConfig"); - return RFAILED; - } + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacLCConfig"); + return RFAILED; + } *(macLcConfig->ul_SpecificParameters->logicalChannelGroup) = LC_GRP; macLcConfig->ul_SpecificParameters->schedulingRequestID = NULLP; - DU_ALLOC(macLcConfig->ul_SpecificParameters->schedulingRequestID, sizeof(SchedulingRequestId_t)); - if(!macLcConfig->ul_SpecificParameters->schedulingRequestID) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacLCConfig"); - return RFAILED; - } + DU_ALLOC(macLcConfig->ul_SpecificParameters->schedulingRequestID, sizeof(SchedulingRequestId_t)); + if(!macLcConfig->ul_SpecificParameters->schedulingRequestID) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacLCConfig"); + return RFAILED; + } *(macLcConfig->ul_SpecificParameters->schedulingRequestID) = SCH_REQ_ID; - macLcConfig->ul_SpecificParameters->logicalChannelSR_Mask = false; - macLcConfig->ul_SpecificParameters->logicalChannelSR_DelayTimerApplied = false; - macLcConfig->ul_SpecificParameters->bitRateQueryProhibitTimer = NULLP; + macLcConfig->ul_SpecificParameters->logicalChannelSR_Mask = false; + macLcConfig->ul_SpecificParameters->logicalChannelSR_DelayTimerApplied = false; + macLcConfig->ul_SpecificParameters->bitRateQueryProhibitTimer = NULLP; return ROK; } /******************************************************************* -* -* @brief Builds RLC Bearer to Add/Mod list -* -* @details -* -* Function :BuildRlcBearerToAddModList -* -* Functionality: Builds RLC Bearer to Add/Mod list in DuToCuRrcContainer -* -* @params[in] rlc_BearerToAddModList -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds RLC Bearer to Add/Mod list + * + * @details + * + * Function :BuildRlcBearerToAddModList + * + * Functionality: Builds RLC Bearer to Add/Mod list in DuToCuRrcContainer + * + * @params[in] rlc_BearerToAddModList + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildRlcBearerToAddModList(struct CellGroupConfigRrc__rlc_BearerToAddModList *rlcBearerList) { uint8_t idx, elementCnt; elementCnt = 1; rlcBearerList->list.count = elementCnt; - rlcBearerList->list.size = elementCnt * sizeof(struct RLC_BearerConfig *); + rlcBearerList->list.size = elementCnt * sizeof(struct RLC_BearerConfig *); rlcBearerList->list.array = NULLP; - DU_ALLOC(rlcBearerList->list.array, rlcBearerList->list.size); - if(!rlcBearerList->list.array) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); - return RFAILED; - } + DU_ALLOC(rlcBearerList->list.array, rlcBearerList->list.size); + if(!rlcBearerList->list.array) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); + return RFAILED; + } for(idx=0; idxlist.count; idx++) - { - rlcBearerList->list.array[idx] = NULLP; - DU_ALLOC(rlcBearerList->list.array[idx], sizeof(struct RLC_BearerConfig)); - if(!rlcBearerList->list.array[idx]) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); - return RFAILED; - } - } + { + rlcBearerList->list.array[idx] = NULLP; + DU_ALLOC(rlcBearerList->list.array[idx], sizeof(struct RLC_BearerConfig)); + if(!rlcBearerList->list.array[idx]) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); + return RFAILED; + } + } idx = 0; - rlcBearerList->list.array[idx]->logicalChannelIdentity = RLC_LCID; + rlcBearerList->list.array[idx]->logicalChannelIdentity = RLC_LCID; - DU_ALLOC(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer)); - if(!rlcBearerList->list.array[idx]->servedRadioBearer) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); - return RFAILED; - } + DU_ALLOC(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer)); + if(!rlcBearerList->list.array[idx]->servedRadioBearer) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); + return RFAILED; + } - rlcBearerList->list.array[idx]->servedRadioBearer->present = RLC_BearerConfig__servedRadioBearer_PR_srb_Identity; + rlcBearerList->list.array[idx]->servedRadioBearer->present = RLC_BearerConfig__servedRadioBearer_PR_srb_Identity; rlcBearerList->list.array[idx]->servedRadioBearer->choice.srb_Identity = SRB_ID_1; rlcBearerList->list.array[idx]->reestablishRLC = NULLP; rlcBearerList->list.array[idx]->rlc_Config = NULLP; DU_ALLOC(rlcBearerList->list.array[idx]->rlc_Config, sizeof(struct RLC_Config)); - if(!rlcBearerList->list.array[idx]->rlc_Config) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); - return RFAILED; - } + if(!rlcBearerList->list.array[idx]->rlc_Config) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); + return RFAILED; + } if(BuildRlcConfig(rlcBearerList->list.array[idx]->rlc_Config) != ROK) - { - DU_LOG("\nF1AP : BuildRlcConfig failed"); - return RFAILED; - } + { + DU_LOG("\nF1AP : BuildRlcConfig failed"); + return RFAILED; + } rlcBearerList->list.array[idx]->mac_LogicalChannelConfig = NULLP; DU_ALLOC(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig, sizeof(struct LogicalChannelConfig)); - if(!rlcBearerList->list.array[idx]->mac_LogicalChannelConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); - return RFAILED; - } + if(!rlcBearerList->list.array[idx]->mac_LogicalChannelConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildRlcBearerToAddModList"); + return RFAILED; + } - if(BuildMacLCConfig(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig) != ROK) - { - DU_LOG("\nF1AP : BuildMacLCConfig failed"); - return RFAILED; - } + if(BuildMacLCConfig(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig) != ROK) + { + DU_LOG("\nF1AP : BuildMacLCConfig failed"); + return RFAILED; + } - return ROK; + return ROK; } /******************************************************************* @@ -2518,10 +2518,10 @@ uint8_t BuildRlcBearerToAddModList(struct CellGroupConfigRrc__rlc_BearerToAddMod * RFAILED - failure * * ****************************************************************/ -uint8_t BuildControlRSetToAddModList + uint8_t BuildControlRSetToAddModList ( -struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList -) + struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList + ) { uint8_t idx; uint8_t elementCnt; @@ -2534,7 +2534,7 @@ struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList elementCnt = 1; controlRSetList->list.count = elementCnt; controlRSetList->list.size = \ - elementCnt * sizeof(struct ControlResourceSet *); + elementCnt * sizeof(struct ControlResourceSet *); controlRSetList->list.array = NULLP; DU_ALLOC(controlRSetList->list.array, controlRSetList->list.size); @@ -2550,8 +2550,8 @@ struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList DU_ALLOC(controlRSetList->list.array[idx], sizeof(struct ControlResourceSet)); if(!controlRSetList->list.array[idx]) { - DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); - return RFAILED; + DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); + return RFAILED; } } @@ -2559,23 +2559,22 @@ struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList controlRSet = controlRSetList->list.array[idx]; controlRSet->controlResourceSetId = PDCCH_CTRL_RSRC_SET_ONE_ID; - - /* Values taken from reference logs : - * size 6 bytes - * 3 LSBs unsued - * Bit string stored ff0000000000 - */ + + /* size 6 bytes + * 3 LSBs unsued + * Bit string stored ff0000000000 + */ numBytes = 6; bitsUnused = 3; controlRSet->frequencyDomainResources.size = numBytes * sizeof(uint8_t); controlRSet->frequencyDomainResources.buf = NULLP; - DU_ALLOC(controlRSet->frequencyDomainResources.buf, \ - controlRSet->frequencyDomainResources.size); - if(!controlRSet->frequencyDomainResources.buf) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); - return RFAILED; + DU_ALLOC(controlRSet->frequencyDomainResources.buf, \ + controlRSet->frequencyDomainResources.size); + if(!controlRSet->frequencyDomainResources.buf) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); + return RFAILED; } memset(controlRSet->frequencyDomainResources.buf, 0, FREQ_DOM_RSRC_SIZE); @@ -2589,17 +2588,17 @@ struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList controlRSet->duration = PDCCH_CTRL_RSRC_SET_ONE_DURATION; controlRSet->cce_REG_MappingType.present = \ - ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved; + ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved; controlRSet->precoderGranularity = PDCCH_CTRL_RSRC_SET_ONE_PRECOD_GRANULARITY; controlRSet->tci_StatesPDCCH_ToAddList = NULLP; - controlRSet->tci_StatesPDCCH_ToReleaseList = NULLP; - controlRSet->tci_PresentInDCI = NULLP; + controlRSet->tci_StatesPDCCH_ToReleaseList = NULLP; + controlRSet->tci_PresentInDCI = NULLP; #if 0 uint8_t tciStateIdx; DU_ALLOC(controlRset->tci_StatesPDCCH_ToAddList, \ - sizeof(struct ControlResourceSet__tci_StatesPDCCH_ToAddList)); + sizeof(struct ControlResourceSet__tci_StatesPDCCH_ToAddList)); if(!controlRset->tci_StatesPDCCH_ToAddList) { DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); @@ -2610,20 +2609,20 @@ struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList controlRset->tci_StatesPDCCH_ToAddList->list.count = elementCnt; controlRset->tci_StatesPDCCH_ToAddList->list.size = elementCnt * sizeof(TCI_StateId_t *); DU_ALLOC(controlRset->tci_StatesPDCCH_ToAddList->list.array, \ - controlRset->tci_StatesPDCCH_ToAddList->list.size) - if(!controlRset->tci_StatesPDCCH_ToAddList->list.array) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); - return RFAILED; - } - + controlRset->tci_StatesPDCCH_ToAddList->list.size) + if(!controlRset->tci_StatesPDCCH_ToAddList->list.array) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); + return RFAILED; + } + for(tciStateIdx = 0; tciStateIdx tci_StatesPDCCH_ToAddList->list.array[tciStateIdx], sizeof(TCI_StateId_t)); if(!controlRset->tci_StatesPDCCH_ToAddList->list.array[tciStateIdx]) { - DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); - return RFAILED; + DU_LOG("\nF1AP : Memory allocation failed in BuildControlRSetToAddModList"); + return RFAILED; } } @@ -2668,15 +2667,15 @@ struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList * RFAILED - failure * * ****************************************************************/ -uint8_t BuildSearchSpcToAddModList + uint8_t BuildSearchSpcToAddModList ( -struct PDCCH_Config__searchSpacesToAddModList *searchSpcList -) + struct PDCCH_Config__searchSpacesToAddModList *searchSpcList + ) { uint8_t idx; - uint8_t numBytes; - uint8_t byteIdx; - uint8_t bitsUnused; + uint8_t numBytes; + uint8_t byteIdx; + uint8_t bitsUnused; uint8_t elementCnt; struct SearchSpace *searchSpc; @@ -2684,7 +2683,7 @@ struct PDCCH_Config__searchSpacesToAddModList *searchSpcList searchSpcList->list.count = elementCnt; searchSpcList->list.size = elementCnt * sizeof(struct SearchSpace *); - searchSpcList->list.array = NULLP; + searchSpcList->list.array = NULLP; DU_ALLOC(searchSpcList->list.array, searchSpcList->list.size); if(!searchSpcList->list.array) { @@ -2694,12 +2693,12 @@ struct PDCCH_Config__searchSpacesToAddModList *searchSpcList for(idx = 0; idx < elementCnt; idx++) { - searchSpcList->list.array[idx] = NULLP; + searchSpcList->list.array[idx] = NULLP; DU_ALLOC(searchSpcList->list.array[idx], sizeof(struct SearchSpace)); if(!searchSpcList->list.array[idx]) { - DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); - return RFAILED; + DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); + return RFAILED; } } @@ -2719,47 +2718,47 @@ struct PDCCH_Config__searchSpacesToAddModList *searchSpcList searchSpc->monitoringSlotPeriodicityAndOffset = NULLP; DU_ALLOC(searchSpc->monitoringSlotPeriodicityAndOffset, \ - sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset)); + sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset)); if(!searchSpc->monitoringSlotPeriodicityAndOffset) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); - return RFAILED; - } + { + DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); + return RFAILED; + } searchSpc->monitoringSlotPeriodicityAndOffset->present = \ - SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1; - + SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1; + searchSpc->duration = NULLP; searchSpc->monitoringSymbolsWithinSlot = NULLP; - DU_ALLOC(searchSpc->monitoringSymbolsWithinSlot, sizeof(BIT_STRING_t)); - if(!searchSpc->monitoringSymbolsWithinSlot) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); - return RFAILED; - } - - /* Values taken from reference logs : - * size 2 bytes - * 2 LSBs unsued - * Bit string stores 8000 - */ + DU_ALLOC(searchSpc->monitoringSymbolsWithinSlot, sizeof(BIT_STRING_t)); + if(!searchSpc->monitoringSymbolsWithinSlot) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); + return RFAILED; + } + + /* Values taken from reference logs : + * size 2 bytes + * 2 LSBs unsued + * Bit string stores 8000 + */ numBytes = 2; - bitsUnused = 2; + bitsUnused = 2; searchSpc->monitoringSymbolsWithinSlot->size = numBytes * sizeof(uint8_t); - searchSpc->monitoringSymbolsWithinSlot->buf = NULLP; - DU_ALLOC(searchSpc->monitoringSymbolsWithinSlot->buf, \ - searchSpc->monitoringSymbolsWithinSlot->size); - if(!searchSpc->monitoringSymbolsWithinSlot->buf) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); - return RFAILED; - } + searchSpc->monitoringSymbolsWithinSlot->buf = NULLP; + DU_ALLOC(searchSpc->monitoringSymbolsWithinSlot->buf, \ + searchSpc->monitoringSymbolsWithinSlot->size); + if(!searchSpc->monitoringSymbolsWithinSlot->buf) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); + return RFAILED; + } - byteIdx = 0; - searchSpc->monitoringSymbolsWithinSlot->buf[byteIdx++] = \ - PDCCH_SYMBOL_WITHIN_SLOT /* setting MSB to 128 i.e. 0x80 */; - searchSpc->monitoringSymbolsWithinSlot->buf[byteIdx++] = 0; - searchSpc->monitoringSymbolsWithinSlot->bits_unused = bitsUnused; + byteIdx = 0; + searchSpc->monitoringSymbolsWithinSlot->buf[byteIdx++] = \ + PDCCH_SYMBOL_WITHIN_SLOT /* setting MSB to 128 i.e. 0x80 */; + searchSpc->monitoringSymbolsWithinSlot->buf[byteIdx++] = 0; + searchSpc->monitoringSymbolsWithinSlot->bits_unused = bitsUnused; searchSpc->nrofCandidates = NULLP; DU_ALLOC(searchSpc->nrofCandidates, sizeof(struct SearchSpace__nrofCandidates)); @@ -2770,15 +2769,15 @@ struct PDCCH_Config__searchSpacesToAddModList *searchSpcList } searchSpc->nrofCandidates->aggregationLevel1 = \ - PDCCH_SRCH_SPC_TWO_AGG_LVL1_CANDIDATE; + PDCCH_SRCH_SPC_TWO_AGG_LVL1_CANDIDATE; searchSpc->nrofCandidates->aggregationLevel2 = \ - PDCCH_SRCH_SPC_TWO_AGG_LVL2_CANDIDATE; + PDCCH_SRCH_SPC_TWO_AGG_LVL2_CANDIDATE; searchSpc->nrofCandidates->aggregationLevel4 = \ - PDCCH_SRCH_SPC_TWO_AGG_LVL4_CANDIDATE; + PDCCH_SRCH_SPC_TWO_AGG_LVL4_CANDIDATE; searchSpc->nrofCandidates->aggregationLevel8 = \ - PDCCH_SRCH_SPC_TWO_AGG_LVL8_CANDIDATE; + PDCCH_SRCH_SPC_TWO_AGG_LVL8_CANDIDATE; searchSpc->nrofCandidates->aggregationLevel16 = \ - PDCCH_SRCH_SPC_TWO_AGG_LVL16_CANDIDATE; + PDCCH_SRCH_SPC_TWO_AGG_LVL16_CANDIDATE; searchSpc->searchSpaceType = NULLP; DU_ALLOC(searchSpc->searchSpaceType, sizeof(struct SearchSpace__searchSpaceType)); @@ -2787,19 +2786,19 @@ struct PDCCH_Config__searchSpacesToAddModList *searchSpcList DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); return RFAILED; } - + searchSpc->searchSpaceType->present = SearchSpace__searchSpaceType_PR_ue_Specific; searchSpc->searchSpaceType->choice.ue_Specific = NULLP; DU_ALLOC(searchSpc->searchSpaceType->choice.ue_Specific, \ - sizeof(struct SearchSpace__searchSpaceType__ue_Specific)); + sizeof(struct SearchSpace__searchSpaceType__ue_Specific)); if(!searchSpc->searchSpaceType->choice.ue_Specific) { DU_LOG("\nF1AP : Memory allocation failed in BuildSearchSpcToAddModList"); return RFAILED; } searchSpc->searchSpaceType->choice.ue_Specific->dci_Formats = \ - PDCCH_SRCH_SPC_TWO_UE_SPEC_DCI_FORMAT; + PDCCH_SRCH_SPC_TWO_UE_SPEC_DCI_FORMAT; return ROK; }/* End BuildSearchSpcToAddModList */ @@ -2824,39 +2823,39 @@ uint8_t BuildBWPDlDedPdcchCfg(struct PDCCH_Config *pdcchCfg) { pdcchCfg->controlResourceSetToAddModList = NULLP; DU_ALLOC(pdcchCfg->controlResourceSetToAddModList, \ - sizeof(struct PDCCH_Config__controlResourceSetToAddModList)); + sizeof(struct PDCCH_Config__controlResourceSetToAddModList)); if(!pdcchCfg->controlResourceSetToAddModList) { DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdcchCfg"); return RFAILED; } - if(BuildControlRSetToAddModList(pdcchCfg->controlResourceSetToAddModList) != ROK) - { - return RFAILED; - } - + if(BuildControlRSetToAddModList(pdcchCfg->controlResourceSetToAddModList) != ROK) + { + return RFAILED; + } + pdcchCfg->controlResourceSetToReleaseList = NULLP; pdcchCfg->searchSpacesToAddModList = NULLP; - DU_ALLOC(pdcchCfg->searchSpacesToAddModList, \ - sizeof(struct PDCCH_Config__searchSpacesToAddModList)); - if(!pdcchCfg->searchSpacesToAddModList) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdcchCfg"); - return RFAILED; - } - - if(BuildSearchSpcToAddModList(pdcchCfg->searchSpacesToAddModList) != ROK) - { - return RFAILED; - } - + DU_ALLOC(pdcchCfg->searchSpacesToAddModList, \ + sizeof(struct PDCCH_Config__searchSpacesToAddModList)); + if(!pdcchCfg->searchSpacesToAddModList) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdcchCfg"); + return RFAILED; + } + + if(BuildSearchSpcToAddModList(pdcchCfg->searchSpacesToAddModList) != ROK) + { + return RFAILED; + } + pdcchCfg->searchSpacesToReleaseList = NULLP; - pdcchCfg->downlinkPreemption = NULLP; - pdcchCfg->tpc_PUSCH = NULLP; - pdcchCfg->tpc_PUCCH = NULLP; - pdcchCfg->tpc_SRS = NULLP; + pdcchCfg->downlinkPreemption = NULLP; + pdcchCfg->tpc_PUSCH = NULLP; + pdcchCfg->tpc_PUCCH = NULLP; + pdcchCfg->tpc_SRS = NULLP; return ROK; } @@ -2877,22 +2876,22 @@ uint8_t BuildBWPDlDedPdcchCfg(struct PDCCH_Config *pdcchCfg) * RFAILED - failure * * ****************************************************************/ -uint8_t BuildDMRSDLPdschMapTypeA + uint8_t BuildDMRSDLPdschMapTypeA ( -struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA *dmrsDlCfg -) + struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA *dmrsDlCfg + ) { dmrsDlCfg->present = PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR_setup; - dmrsDlCfg->choice.setup = NULLP; + dmrsDlCfg->choice.setup = NULLP; DU_ALLOC(dmrsDlCfg->choice.setup, sizeof(struct DMRS_DownlinkConfig)); if(!dmrsDlCfg->choice.setup) { DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdschCfg"); return RFAILED; } - - dmrsDlCfg->choice.setup->dmrs_Type = NULLP; - dmrsDlCfg->choice.setup->dmrs_AdditionalPosition = NULLP; + + dmrsDlCfg->choice.setup->dmrs_Type = NULLP; + dmrsDlCfg->choice.setup->dmrs_AdditionalPosition = NULLP; DU_ALLOC(dmrsDlCfg->choice.setup->dmrs_AdditionalPosition, sizeof(long)); if(!dmrsDlCfg->choice.setup->dmrs_AdditionalPosition) { @@ -2900,11 +2899,11 @@ struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA *dmrsDlCfg return RFAILED; } *(dmrsDlCfg->choice.setup->dmrs_AdditionalPosition) = DMRS_ADDITIONAL_POS; - - dmrsDlCfg->choice.setup->maxLength = NULLP; - dmrsDlCfg->choice.setup->scramblingID0 = NULLP; - dmrsDlCfg->choice.setup->scramblingID1 = NULLP; - dmrsDlCfg->choice.setup->phaseTrackingRS = NULLP; + + dmrsDlCfg->choice.setup->maxLength = NULLP; + dmrsDlCfg->choice.setup->scramblingID0 = NULLP; + dmrsDlCfg->choice.setup->scramblingID1 = NULLP; + dmrsDlCfg->choice.setup->phaseTrackingRS = NULLP; return ROK; } @@ -2948,65 +2947,65 @@ uint8_t BuildTCIStatesToAddModList(struct PDSCH_Config__tci_StatesToAddModList * * RFAILED - failure * * ****************************************************************/ -uint8_t BuildPdschTimeDomAllocList + uint8_t BuildPdschTimeDomAllocList ( -struct PDSCH_Config__pdsch_TimeDomainAllocationList *timeDomAllocList -) + struct PDSCH_Config__pdsch_TimeDomainAllocationList *timeDomAllocList + ) { uint8_t idx; uint8_t elementCnt; - struct PDSCH_TimeDomainResourceAllocation *timeDomAlloc; + struct PDSCH_TimeDomainResourceAllocation *timeDomAlloc; timeDomAllocList->present = \ - PDSCH_Config__pdsch_TimeDomainAllocationList_PR_setup; + PDSCH_Config__pdsch_TimeDomainAllocationList_PR_setup; timeDomAllocList->choice.setup = NULLP; DU_ALLOC(timeDomAllocList->choice.setup, \ - sizeof(struct PDSCH_TimeDomainResourceAllocationList)); + sizeof(struct PDSCH_TimeDomainResourceAllocationList)); if(!timeDomAllocList->choice.setup) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); - return RFAILED; - } - - elementCnt = 1; - timeDomAllocList->choice.setup->list.count = elementCnt; - timeDomAllocList->choice.setup->list.size = \ - elementCnt * sizeof(struct PDSCH_TimeDomainResourceAllocation *); - - timeDomAllocList->choice.setup->list.array = NULLP; - DU_ALLOC(timeDomAllocList->choice.setup->list.array, \ - timeDomAllocList->choice.setup->list.size); - if(!timeDomAllocList->choice.setup->list.array) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); - return RFAILED; - } + { + DU_LOG("\nF1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); + return RFAILED; + } - for(idx = 0; idx < elementCnt; idx++) - { - timeDomAllocList->choice.setup->list.array[idx] = NULLP; - DU_ALLOC(timeDomAllocList->choice.setup->list.array[idx], \ - sizeof(struct PDSCH_TimeDomainResourceAllocation)); - if(!timeDomAllocList->choice.setup->list.array[idx]) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); - return RFAILED; - } - } - - idx = 0; - timeDomAlloc = timeDomAllocList->choice.setup->list.array[idx]; + elementCnt = 1; + timeDomAllocList->choice.setup->list.count = elementCnt; + timeDomAllocList->choice.setup->list.size = \ + elementCnt * sizeof(struct PDSCH_TimeDomainResourceAllocation *); - timeDomAlloc->k0 = NULLP; - timeDomAlloc->mappingType = PDSCH_MAPPING_TYPE_A; - timeDomAlloc->startSymbolAndLength = \ - calcSliv(PDSCH_START_SYMBOL, PDSCH_LENGTH_SYMBOL); + timeDomAllocList->choice.setup->list.array = NULLP; + DU_ALLOC(timeDomAllocList->choice.setup->list.array, \ + timeDomAllocList->choice.setup->list.size); + if(!timeDomAllocList->choice.setup->list.array) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); + return RFAILED; + } - return ROK; -} + for(idx = 0; idx < elementCnt; idx++) + { + timeDomAllocList->choice.setup->list.array[idx] = NULLP; + DU_ALLOC(timeDomAllocList->choice.setup->list.array[idx], \ + sizeof(struct PDSCH_TimeDomainResourceAllocation)); + if(!timeDomAllocList->choice.setup->list.array[idx]) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); + return RFAILED; + } + } -/******************************************************************* + idx = 0; + timeDomAlloc = timeDomAllocList->choice.setup->list.array[idx]; + + timeDomAlloc->k0 = NULLP; + timeDomAlloc->mappingType = PDSCH_MAPPING_TYPE_A; + timeDomAlloc->startSymbolAndLength = \ + calcSliv(PDSCH_START_SYMBOL, PDSCH_LENGTH_SYMBOL); + + return ROK; +} + +/******************************************************************* * * @brief Builds PDSCH PRB Bundling type * @@ -3023,22 +3022,22 @@ struct PDSCH_Config__pdsch_TimeDomainAllocationList *timeDomAllocList * RFAILED - failure * * ****************************************************************/ -uint8_t BuildPdschPrbBundlingType + uint8_t BuildPdschPrbBundlingType ( -struct PDSCH_Config__prb_BundlingType *prbBndlType -) + struct PDSCH_Config__prb_BundlingType *prbBndlType + ) { prbBndlType->present = PDSCH_Config__prb_BundlingType_PR_staticBundling; prbBndlType->choice.staticBundling = NULLP; - DU_ALLOC(prbBndlType->choice.staticBundling, \ - sizeof(struct PDSCH_Config__prb_BundlingType__staticBundling)); - if(!prbBndlType->choice.staticBundling) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildPdschPrbBundlingType"); - return RFAILED; - } - prbBndlType->choice.staticBundling->bundleSize = NULLP; + DU_ALLOC(prbBndlType->choice.staticBundling, \ + sizeof(struct PDSCH_Config__prb_BundlingType__staticBundling)); + if(!prbBndlType->choice.staticBundling) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildPdschPrbBundlingType"); + return RFAILED; + } + prbBndlType->choice.staticBundling->bundleSize = NULLP; return ROK; } @@ -3065,7 +3064,7 @@ uint8_t BuildBWPDlDedPdschCfg(struct PDSCH_Config *pdschCfg) pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA = NULLP; DU_ALLOC(pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA, \ - sizeof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA)); + sizeof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA)); if(!pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA) { DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdschCfg"); @@ -3080,7 +3079,7 @@ uint8_t BuildBWPDlDedPdschCfg(struct PDSCH_Config *pdschCfg) pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeB = NULLP; pdschCfg->tci_StatesToAddModList = NULLP; pdschCfg->tci_StatesToReleaseList = NULLP; - pdschCfg->vrb_ToPRB_Interleaver = NULLP; + pdschCfg->vrb_ToPRB_Interleaver = NULLP; #if 0 DU_ALLOC(pdschCfg->tci_StatesToAddModList, sizeof(struct PDSCH_Config__tci_StatesToAddModList)); if(!pdschCfg->tci_StatesToAddModList) @@ -3094,50 +3093,50 @@ uint8_t BuildBWPDlDedPdschCfg(struct PDSCH_Config *pdschCfg) } #endif - pdschCfg->resourceAllocation = RES_ALLOC_TYPE; + pdschCfg->resourceAllocation = RES_ALLOC_TYPE; pdschCfg->pdsch_TimeDomainAllocationList = NULLP; - DU_ALLOC(pdschCfg->pdsch_TimeDomainAllocationList, \ - sizeof(struct PDSCH_Config__pdsch_TimeDomainAllocationList)); + DU_ALLOC(pdschCfg->pdsch_TimeDomainAllocationList, \ + sizeof(struct PDSCH_Config__pdsch_TimeDomainAllocationList)); if(!pdschCfg->pdsch_TimeDomainAllocationList) - { + { DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdschCfg"); - return RFAILED; - } + return RFAILED; + } - if(BuildPdschTimeDomAllocList(pdschCfg->pdsch_TimeDomainAllocationList) != ROK) - { - return RFAILED; - } + if(BuildPdschTimeDomAllocList(pdschCfg->pdsch_TimeDomainAllocationList) != ROK) + { + return RFAILED; + } pdschCfg->pdsch_AggregationFactor = NULLP; - pdschCfg->rateMatchPatternToAddModList = NULLP; - pdschCfg->rateMatchPatternToReleaseList = NULLP; - pdschCfg->rateMatchPatternGroup1 = NULLP; - pdschCfg->rateMatchPatternGroup2 = NULLP; - pdschCfg->rbg_Size = PDSCH_RBG_SIZE; - pdschCfg->mcs_Table = NULLP; - - pdschCfg->maxNrofCodeWordsScheduledByDCI = NULLP; - DU_ALLOC(pdschCfg->maxNrofCodeWordsScheduledByDCI, sizeof(long)); - if(!pdschCfg->maxNrofCodeWordsScheduledByDCI) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdschCfg"); - return RFAILED; - } - *(pdschCfg->maxNrofCodeWordsScheduledByDCI) = PDSCH_MAX_CODEWORD_SCH_BY_DCI; - - if(BuildPdschPrbBundlingType(&pdschCfg->prb_BundlingType) != ROK) - { - return RFAILED; - } - - pdschCfg->zp_CSI_RS_ResourceToAddModList = NULLP; - pdschCfg->zp_CSI_RS_ResourceToReleaseList = NULLP; - pdschCfg->aperiodic_ZP_CSI_RS_ResourceSetsToAddModList = NULLP; - pdschCfg->aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList = NULLP; - pdschCfg->sp_ZP_CSI_RS_ResourceSetsToAddModList = NULLP; - pdschCfg->sp_ZP_CSI_RS_ResourceSetsToReleaseList = NULLP; + pdschCfg->rateMatchPatternToAddModList = NULLP; + pdschCfg->rateMatchPatternToReleaseList = NULLP; + pdschCfg->rateMatchPatternGroup1 = NULLP; + pdschCfg->rateMatchPatternGroup2 = NULLP; + pdschCfg->rbg_Size = PDSCH_RBG_SIZE; + pdschCfg->mcs_Table = NULLP; + + pdschCfg->maxNrofCodeWordsScheduledByDCI = NULLP; + DU_ALLOC(pdschCfg->maxNrofCodeWordsScheduledByDCI, sizeof(long)); + if(!pdschCfg->maxNrofCodeWordsScheduledByDCI) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildBWPDlDedPdschCfg"); + return RFAILED; + } + *(pdschCfg->maxNrofCodeWordsScheduledByDCI) = PDSCH_MAX_CODEWORD_SCH_BY_DCI; + + if(BuildPdschPrbBundlingType(&pdschCfg->prb_BundlingType) != ROK) + { + return RFAILED; + } + + pdschCfg->zp_CSI_RS_ResourceToAddModList = NULLP; + pdschCfg->zp_CSI_RS_ResourceToReleaseList = NULLP; + pdschCfg->aperiodic_ZP_CSI_RS_ResourceSetsToAddModList = NULLP; + pdschCfg->aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList = NULLP; + pdschCfg->sp_ZP_CSI_RS_ResourceSetsToAddModList = NULLP; + pdschCfg->sp_ZP_CSI_RS_ResourceSetsToReleaseList = NULLP; pdschCfg->p_ZP_CSI_RS_ResourceSet = NULLP; return ROK; @@ -3162,46 +3161,46 @@ uint8_t BuildInitialDlBWP(BWP_DownlinkDedicated_t *dlBwp) { dlBwp->pdcch_Config = NULLP; DU_ALLOC(dlBwp->pdcch_Config, sizeof(struct BWP_DownlinkDedicated__pdcch_Config)); - if(!dlBwp->pdcch_Config) - { - DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); + if(!dlBwp->pdcch_Config) + { + DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); return RFAILED; - } - dlBwp->pdcch_Config->present = BWP_DownlinkDedicated__pdcch_Config_PR_setup; + } + dlBwp->pdcch_Config->present = BWP_DownlinkDedicated__pdcch_Config_PR_setup; dlBwp->pdcch_Config->choice.setup = NULLP; - DU_ALLOC(dlBwp->pdcch_Config->choice.setup, sizeof(struct PDCCH_Config)); + DU_ALLOC(dlBwp->pdcch_Config->choice.setup, sizeof(struct PDCCH_Config)); if(!dlBwp->pdcch_Config->choice.setup) { - DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); - return RFAILED; - } + DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); + return RFAILED; + } if(BuildBWPDlDedPdcchCfg(dlBwp->pdcch_Config->choice.setup) != ROK) - { - return RFAILED; - } + { + return RFAILED; + } dlBwp->pdsch_Config = NULLP; - DU_ALLOC(dlBwp->pdsch_Config, sizeof(struct BWP_DownlinkDedicated__pdsch_Config)); - if(!dlBwp->pdsch_Config) - { - DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); - return RFAILED; - } - dlBwp->pdsch_Config->present = BWP_DownlinkDedicated__pdsch_Config_PR_setup; + DU_ALLOC(dlBwp->pdsch_Config, sizeof(struct BWP_DownlinkDedicated__pdsch_Config)); + if(!dlBwp->pdsch_Config) + { + DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); + return RFAILED; + } + dlBwp->pdsch_Config->present = BWP_DownlinkDedicated__pdsch_Config_PR_setup; dlBwp->pdsch_Config->choice.setup = NULLP; DU_ALLOC(dlBwp->pdsch_Config->choice.setup, sizeof(struct PDSCH_Config)); if(!dlBwp->pdsch_Config->choice.setup) { DU_LOG("\nF1AP : Memory Allocation failure in BuildInitialDlBWP"); - return RFAILED; - } + return RFAILED; + } if(BuildBWPDlDedPdschCfg(dlBwp->pdsch_Config->choice.setup) != ROK) - { - return RFAILED; - } + { + return RFAILED; + } dlBwp->sps_Config = NULLP; dlBwp->radioLinkMonitoringConfig = NULLP; @@ -3224,10 +3223,10 @@ uint8_t BuildInitialDlBWP(BWP_DownlinkDedicated_t *dlBwp) * RFAILED - failure * * ****************************************************************/ -uint8_t BuildDMRSULPuschMapTypeA + uint8_t BuildDMRSULPuschMapTypeA ( -struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg -) + struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg + ) { dmrsUlCfg->present = PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR_setup; dmrsUlCfg->choice.setup= NULLP; @@ -3237,9 +3236,9 @@ struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg DU_LOG("\nF1AP : Memory allocation failed in BuildDMRSULPuschMapTypeA"); return RFAILED; } - + dmrsUlCfg->choice.setup->dmrs_Type = NULLP; - dmrsUlCfg->choice.setup->dmrs_AdditionalPosition = NULLP; + dmrsUlCfg->choice.setup->dmrs_AdditionalPosition = NULLP; DU_ALLOC(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition, sizeof(long)); if(!dmrsUlCfg->choice.setup->dmrs_AdditionalPosition) { @@ -3248,11 +3247,11 @@ struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg } *(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition) = DMRS_ADDITIONAL_POS; - dmrsUlCfg->choice.setup->phaseTrackingRS = NULLP; - dmrsUlCfg->choice.setup->maxLength = NULLP; + dmrsUlCfg->choice.setup->phaseTrackingRS = NULLP; + dmrsUlCfg->choice.setup->maxLength = NULLP; dmrsUlCfg->choice.setup->transformPrecodingDisabled = NULLP; DU_ALLOC(dmrsUlCfg->choice.setup->transformPrecodingDisabled, \ - sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled)); + sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled)); if(!dmrsUlCfg->choice.setup->transformPrecodingDisabled) { DU_LOG("\nF1AP : Memory allocation failed in BuildDMRSULPuschMapTypeA"); @@ -3261,7 +3260,7 @@ struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0 = NULLP; DU_ALLOC(dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0,\ - sizeof(long)); + sizeof(long)); if(!dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0) { DU_LOG("\nF1AP : Memory allocation failed in BuildDMRSULPuschMapTypeA"); @@ -3269,8 +3268,8 @@ struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg } *(dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0) = SCRAMBLING_ID; - dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID1 = NULLP; - dmrsUlCfg->choice.setup->transformPrecodingEnabled = NULLP; + dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID1 = NULLP; + dmrsUlCfg->choice.setup->transformPrecodingEnabled = NULLP; return ROK; } @@ -3291,10 +3290,10 @@ struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg * RFAILED - failure * * ****************************************************************/ -uint8_t BuildPuschTimeDomAllocList + uint8_t BuildPuschTimeDomAllocList ( -struct PUSCH_Config__pusch_TimeDomainAllocationList *timeDomAllocList -) + struct PUSCH_Config__pusch_TimeDomainAllocationList *timeDomAllocList + ) { uint8_t idx; uint8_t elementCnt; @@ -3303,20 +3302,20 @@ struct PUSCH_Config__pusch_TimeDomainAllocationList *timeDomAllocList timeDomAllocList->present = PUSCH_Config__pusch_TimeDomainAllocationList_PR_setup; timeDomAllocList->choice.setup = NULLP; DU_ALLOC(timeDomAllocList->choice.setup, \ - sizeof(struct PUSCH_TimeDomainResourceAllocationList)); + sizeof(struct PUSCH_TimeDomainResourceAllocationList)); if(!timeDomAllocList->choice.setup) { DU_LOG("\nF1AP : Memory allocation failed in BuildPuschTimeDomAllocList"); return RFAILED; } - + elementCnt = 1; timeDomAllocList->choice.setup->list.count = elementCnt; timeDomAllocList->choice.setup->list.size = \ - elementCnt * sizeof(PUSCH_TimeDomainResourceAllocation_t *); - timeDomAllocList->choice.setup->list.array = NULLP; + elementCnt * sizeof(PUSCH_TimeDomainResourceAllocation_t *); + timeDomAllocList->choice.setup->list.array = NULLP; DU_ALLOC(timeDomAllocList->choice.setup->list.array, \ - timeDomAllocList->choice.setup->list.size); + timeDomAllocList->choice.setup->list.size); if(!timeDomAllocList->choice.setup->list.array) { DU_LOG("\nF1AP : Memory allocation failed in BuildPuschTimeDomAllocList"); @@ -3325,13 +3324,13 @@ struct PUSCH_Config__pusch_TimeDomainAllocationList *timeDomAllocList for(idx = 0; idx < elementCnt; idx++) { - timeDomAllocList->choice.setup->list.array[idx] = NULLP; + timeDomAllocList->choice.setup->list.array[idx] = NULLP; DU_ALLOC(timeDomAllocList->choice.setup->list.array[idx],\ - sizeof(PUSCH_TimeDomainResourceAllocation_t)); + sizeof(PUSCH_TimeDomainResourceAllocation_t)); if(!timeDomAllocList->choice.setup->list.array[idx]) { - DU_LOG("\nF1AP : Memory allocation failed in BuildPuschTimeDomAllocList"); - return RFAILED; + DU_LOG("\nF1AP : Memory allocation failed in BuildPuschTimeDomAllocList"); + return RFAILED; } } @@ -3378,9 +3377,9 @@ uint8_t BuildBWPUlDedPuschCfg(PUSCH_Config_t *puschCfg) *(puschCfg->dataScramblingIdentityPUSCH) = SCRAMBLING_ID; puschCfg->txConfig = NULLP; - puschCfg->dmrs_UplinkForPUSCH_MappingTypeA = NULLP; + puschCfg->dmrs_UplinkForPUSCH_MappingTypeA = NULLP; DU_ALLOC(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA, \ - sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA)); + sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA)); if(!puschCfg->dmrs_UplinkForPUSCH_MappingTypeA) { DU_LOG("\nF1AP: Memory allocation failed in BuildBWPUlDedPuschCfg"); @@ -3393,14 +3392,14 @@ uint8_t BuildBWPUlDedPuschCfg(PUSCH_Config_t *puschCfg) } puschCfg->dmrs_UplinkForPUSCH_MappingTypeB = NULLP; - puschCfg->pusch_PowerControl = NULLP; - puschCfg->frequencyHopping = NULLP; - puschCfg->frequencyHoppingOffsetLists = NULLP; + puschCfg->pusch_PowerControl = NULLP; + puschCfg->frequencyHopping = NULLP; + puschCfg->frequencyHoppingOffsetLists = NULLP; puschCfg->resourceAllocation = RES_ALLOC_TYPE; puschCfg->pusch_TimeDomainAllocationList = NULLP; DU_ALLOC(puschCfg->pusch_TimeDomainAllocationList, \ - sizeof(struct PUSCH_Config__pusch_TimeDomainAllocationList)); + sizeof(struct PUSCH_Config__pusch_TimeDomainAllocationList)); if(!puschCfg->pusch_TimeDomainAllocationList) { DU_LOG("\nF1AP: Memory allocation failed in BuildBWPUlDedPuschCfg"); @@ -3413,8 +3412,8 @@ uint8_t BuildBWPUlDedPuschCfg(PUSCH_Config_t *puschCfg) } puschCfg->pusch_AggregationFactor = NULLP; - puschCfg->mcs_Table = NULLP; - puschCfg->mcs_TableTransformPrecoder = NULLP; + puschCfg->mcs_Table = NULLP; + puschCfg->mcs_TableTransformPrecoder = NULLP; puschCfg->transformPrecoder = NULLP; DU_ALLOC(puschCfg->transformPrecoder, sizeof(long)); if(!puschCfg->transformPrecoder) @@ -3424,11 +3423,11 @@ uint8_t BuildBWPUlDedPuschCfg(PUSCH_Config_t *puschCfg) } *(puschCfg->transformPrecoder) = PUSCH_TRANSFORM_PRECODER; - puschCfg->codebookSubset = NULLP; - puschCfg->maxRank = NULLP; - puschCfg->rbg_Size = NULLP; - puschCfg->uci_OnPUSCH = NULLP; - puschCfg->tp_pi2BPSK = NULLP; + puschCfg->codebookSubset = NULLP; + puschCfg->maxRank = NULLP; + puschCfg->rbg_Size = NULLP; + puschCfg->uci_OnPUSCH = NULLP; + puschCfg->tp_pi2BPSK = NULLP; return ROK; } @@ -3463,14 +3462,14 @@ uint8_t BuildSrsRsrcAddModList(struct SRS_Config__srs_ResourceToAddModList *reso DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcAddModList"); return RFAILED; } - + for(rsrcIdx = 0; rsrcIdx < resourceList->list.count; rsrcIdx++) { DU_ALLOC(resourceList->list.array[rsrcIdx], sizeof(SRS_Resource_t)); if(!resourceList->list.array[rsrcIdx]) { - DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcAddModList"); - return RFAILED; + DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcAddModList"); + return RFAILED; } } @@ -3481,23 +3480,23 @@ uint8_t BuildSrsRsrcAddModList(struct SRS_Config__srs_ResourceToAddModList *reso resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2 = NULLP; DU_ALLOC(resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2, \ - sizeof(struct SRS_Resource__transmissionComb__n2)); + sizeof(struct SRS_Resource__transmissionComb__n2)); if(!resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2) { DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcAddModList"); return RFAILED; } resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2->combOffset_n2\ - = SRS_COMB_OFFSET_N2; + = SRS_COMB_OFFSET_N2; resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2->cyclicShift_n2\ - = SRS_CYCLIC_SHIFT_N2; + = SRS_CYCLIC_SHIFT_N2; resourceList->list.array[rsrcIdx]->resourceMapping.startPosition = \ - PUSCH_START_SYMBOL; + PUSCH_START_SYMBOL; resourceList->list.array[rsrcIdx]->resourceMapping.nrofSymbols = \ - SRS_Resource__resourceMapping__nrofSymbols_n1; + SRS_Resource__resourceMapping__nrofSymbols_n1; resourceList->list.array[rsrcIdx]->resourceMapping.repetitionFactor = \ - SRS_Resource__resourceMapping__repetitionFactor_n1; + SRS_Resource__resourceMapping__repetitionFactor_n1; resourceList->list.array[rsrcIdx]->freqDomainPosition = SRS_FREQ_DOM_POS; resourceList->list.array[rsrcIdx]->freqDomainShift = SRS_FREQ_DOM_SHIFT; @@ -3505,14 +3504,14 @@ uint8_t BuildSrsRsrcAddModList(struct SRS_Config__srs_ResourceToAddModList *reso resourceList->list.array[rsrcIdx]->freqHopping.b_SRS = B_SRS; resourceList->list.array[rsrcIdx]->freqHopping.b_hop = B_HOP; resourceList->list.array[rsrcIdx]->groupOrSequenceHopping = \ - SRS_Resource__groupOrSequenceHopping_neither; + SRS_Resource__groupOrSequenceHopping_neither; /* Setting resource type to aperiodic for intergration purposes */ resourceList->list.array[rsrcIdx]->resourceType.present = \ - SRS_Resource__resourceType_PR_aperiodic; + SRS_Resource__resourceType_PR_aperiodic; resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic = NULLP; DU_ALLOC(resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic, - sizeof(struct SRS_Resource__resourceType__aperiodic)); + sizeof(struct SRS_Resource__resourceType__aperiodic)); if(!resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic) { DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcAddModList"); @@ -3538,15 +3537,15 @@ uint8_t BuildSrsRsrcAddModList(struct SRS_Config__srs_ResourceToAddModList *reso * RFAILED - failure * * ****************************************************************/ -uint8_t BuildSrsRsrcSetAddModList + uint8_t BuildSrsRsrcSetAddModList ( -struct SRS_Config__srs_ResourceSetToAddModList *rsrcSetList -) + struct SRS_Config__srs_ResourceSetToAddModList *rsrcSetList + ) { uint8_t elementCnt; uint8_t rSetIdx; - uint8_t rsrcIdx; - struct SRS_ResourceSet__srs_ResourceIdList *rsrcIdList; + uint8_t rsrcIdx; + struct SRS_ResourceSet__srs_ResourceIdList *rsrcIdList; elementCnt = 1; rsrcSetList->list.count = elementCnt; @@ -3564,74 +3563,74 @@ struct SRS_Config__srs_ResourceSetToAddModList *rsrcSetList DU_ALLOC(rsrcSetList->list.array[rSetIdx], sizeof(SRS_ResourceSet_t)); if(!rsrcSetList->list.array[rSetIdx]) { - DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); - return RFAILED; + DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); + return RFAILED; } } rSetIdx = 0; rsrcSetList->list.array[rSetIdx]->srs_ResourceSetId = SRS_RSET_ID; - /* Fill Resource Id list in resource set */ - rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList = NULLP; - DU_ALLOC(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList,\ - sizeof(struct SRS_ResourceSet__srs_ResourceIdList)); - if(!rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList) - { - DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); - return RFAILED; - } - - elementCnt = 1; - rsrcIdList = rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList; - rsrcIdList->list.count = elementCnt; - rsrcIdList->list.size = elementCnt * sizeof(SRS_ResourceId_t *); - rsrcIdList->list.array = NULLP; - DU_ALLOC(rsrcIdList->list.array, rsrcIdList->list.size); - if(!rsrcIdList->list.array) - { - DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); - return RFAILED; - } + /* Fill Resource Id list in resource set */ + rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList = NULLP; + DU_ALLOC(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList,\ + sizeof(struct SRS_ResourceSet__srs_ResourceIdList)); + if(!rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList) + { + DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); + return RFAILED; + } - for(rsrcIdx = 0; rsrcIdx < rsrcIdList->list.count; rsrcIdx++) - { - DU_ALLOC(rsrcIdList->list.array[rsrcIdx], sizeof(SRS_ResourceId_t)); - if(!rsrcIdList->list.array[rsrcIdx]) - { - DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); - return RFAILED; - } - } - - rsrcIdx = 0; - *rsrcIdList->list.array[rsrcIdx] = SRS_RSRC_ID; - - /* Fill resource type */ + elementCnt = 1; + rsrcIdList = rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList; + rsrcIdList->list.count = elementCnt; + rsrcIdList->list.size = elementCnt * sizeof(SRS_ResourceId_t *); + rsrcIdList->list.array = NULLP; + DU_ALLOC(rsrcIdList->list.array, rsrcIdList->list.size); + if(!rsrcIdList->list.array) + { + DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); + return RFAILED; + } + + for(rsrcIdx = 0; rsrcIdx < rsrcIdList->list.count; rsrcIdx++) + { + DU_ALLOC(rsrcIdList->list.array[rsrcIdx], sizeof(SRS_ResourceId_t)); + if(!rsrcIdList->list.array[rsrcIdx]) + { + DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); + return RFAILED; + } + } + + rsrcIdx = 0; + *rsrcIdList->list.array[rsrcIdx] = SRS_RSRC_ID; + + /* Fill resource type */ rsrcSetList->list.array[rSetIdx]->resourceType.present = \ - SRS_ResourceSet__resourceType_PR_aperiodic; + SRS_ResourceSet__resourceType_PR_aperiodic; rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic = NULLP; DU_ALLOC(rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic, \ - sizeof(struct SRS_ResourceSet__resourceType__aperiodic)); + sizeof(struct SRS_ResourceSet__resourceType__aperiodic)); if(!rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic) { - DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); - return RFAILED; - } + DU_LOG("\nF1AP: Memory allocation failed in BuildSrsRsrcSetAddModList"); + return RFAILED; + } rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic->aperiodicSRS_ResourceTrigger \ - = APERIODIC_SRS_RESRC_TRIGGER; + = APERIODIC_SRS_RESRC_TRIGGER; - /* TODO : Fill values for below IEs as expected by Viavi */ - rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic->csi_RS = NULLP; + /* TODO : Fill values for below IEs as expected by Viavi */ + rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic->csi_RS = NULLP; rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic->slotOffset = NULLP; - + rsrcSetList->list.array[rSetIdx]->usage = SRS_ResourceSet__usage_codebook; - rsrcSetList->list.array[rSetIdx]->alpha = NULLP; - rsrcSetList->list.array[rSetIdx]->p0 = NULLP; - rsrcSetList->list.array[rSetIdx]->pathlossReferenceRS = NULLP; - rsrcSetList->list.array[rSetIdx]->srs_PowerControlAdjustmentStates = NULLP; + rsrcSetList->list.array[rSetIdx]->alpha = NULLP; + rsrcSetList->list.array[rSetIdx]->p0 = NULLP; + rsrcSetList->list.array[rSetIdx]->pathlossReferenceRS = NULLP; + rsrcSetList->list.array[rSetIdx]->srs_PowerControlAdjustmentStates = NULLP; return ROK; } @@ -3656,7 +3655,7 @@ uint8_t BuildBWPUlDedSrsCfg(SRS_Config_t *srsCfg) srsCfg->srs_ResourceSetToReleaseList = NULLP; srsCfg->srs_ResourceSetToAddModList = NULLP; DU_ALLOC(srsCfg->srs_ResourceSetToAddModList, \ - sizeof(struct SRS_Config__srs_ResourceSetToAddModList)); + sizeof(struct SRS_Config__srs_ResourceSetToAddModList)); if(!srsCfg->srs_ResourceSetToAddModList) { DU_LOG("\nF1AP: Memory allocation failed in BuildBWPUlDedSrsCfg"); @@ -3672,7 +3671,7 @@ uint8_t BuildBWPUlDedSrsCfg(SRS_Config_t *srsCfg) /* Resource to Add/Modify list */ srsCfg->srs_ResourceToAddModList = NULLP; DU_ALLOC(srsCfg->srs_ResourceToAddModList, \ - sizeof(struct SRS_Config__srs_ResourceToAddModList)); + sizeof(struct SRS_Config__srs_ResourceToAddModList)); if(!srsCfg->srs_ResourceToAddModList) { DU_LOG("\nF1AP: Memory allocation failed in BuildBWPUlDedSrsCfg"); @@ -3709,14 +3708,14 @@ uint8_t BuildInitialUlBWP(BWP_UplinkDedicated_t *ulBwp) ulBwp->pucch_Config = NULLP; /* Fill BWP UL dedicated PUSCH config */ - ulBwp->pusch_Config = NULLP; + ulBwp->pusch_Config = NULLP; DU_ALLOC(ulBwp->pusch_Config, sizeof(struct BWP_UplinkDedicated__pusch_Config)); if(!ulBwp->pusch_Config) { DU_LOG("\nF1AP : Memory allocation failed in BuildInitialUlBWP"); return RFAILED; } - + ulBwp->pusch_Config->present = BWP_UplinkDedicated__pusch_Config_PR_setup; ulBwp->pusch_Config->choice.setup = NULLP; DU_ALLOC(ulBwp->pusch_Config->choice.setup, sizeof(PUSCH_Config_t)); @@ -3731,10 +3730,10 @@ uint8_t BuildInitialUlBWP(BWP_UplinkDedicated_t *ulBwp) return RFAILED; } - ulBwp->configuredGrantConfig = NULLP; + ulBwp->configuredGrantConfig = NULLP; /* Fill BPW UL dedicated SRS config */ - ulBwp->srs_Config = NULLP; + ulBwp->srs_Config = NULLP; DU_ALLOC(ulBwp->srs_Config, sizeof(struct BWP_UplinkDedicated__srs_Config)); if(!ulBwp->srs_Config) { @@ -3756,27 +3755,27 @@ uint8_t BuildInitialUlBWP(BWP_UplinkDedicated_t *ulBwp) return RFAILED; } - ulBwp->beamFailureRecoveryConfig = NULLP; - + ulBwp->beamFailureRecoveryConfig = NULLP; + return ROK; } /******************************************************************* -* -* @brief Builds Pusch Serving cell Config -* -* @details -* -* Function : BuildPuschSrvCellCfg -* -* Functionality: Builds Pusch Serving cell Config -* -* @params[in] struct UplinkConfig__pusch_ServingCellConfig *puschCfg -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds Pusch Serving cell Config + * + * @details + * + * Function : BuildPuschSrvCellCfg + * + * Functionality: Builds Pusch Serving cell Config + * + * @params[in] struct UplinkConfig__pusch_ServingCellConfig *puschCfg + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildPuschSrvCellCfg(struct UplinkConfig__pusch_ServingCellConfig *puschCfg) { puschCfg->present = UplinkConfig__pusch_ServingCellConfig_PR_setup; @@ -3789,8 +3788,8 @@ uint8_t BuildPuschSrvCellCfg(struct UplinkConfig__pusch_ServingCellConfig *pusch } puschCfg->choice.setup->codeBlockGroupTransmission = NULLP; - puschCfg->choice.setup->rateMatching = NULLP; - puschCfg->choice.setup->xOverhead = NULLP; + puschCfg->choice.setup->rateMatching = NULLP; + puschCfg->choice.setup->xOverhead = NULLP; puschCfg->choice.setup->ext1 = NULLP; DU_ALLOC(puschCfg->choice.setup->ext1, sizeof(struct PUSCH_ServingCellConfig__ext1)); if(!puschCfg->choice.setup->ext1) @@ -3838,20 +3837,20 @@ uint8_t BuildUlCfg(UplinkConfig_t *ulCfg) { ulCfg->initialUplinkBWP = NULLP; DU_ALLOC(ulCfg->initialUplinkBWP, sizeof(BWP_UplinkDedicated_t)); - if(!ulCfg->initialUplinkBWP) - { - DU_LOG("\nF1AP : Memory Allocation failed in BuildUlCfg"); - return RFAILED; - } + if(!ulCfg->initialUplinkBWP) + { + DU_LOG("\nF1AP : Memory Allocation failed in BuildUlCfg"); + return RFAILED; + } if(BuildInitialUlBWP(ulCfg->initialUplinkBWP) != ROK) - { - return RFAILED; - } + { + return RFAILED; + } ulCfg->uplinkBWP_ToReleaseList = NULLP; - ulCfg->uplinkBWP_ToAddModList = NULLP; - ulCfg->firstActiveUplinkBWP_Id = NULLP; + ulCfg->uplinkBWP_ToAddModList = NULLP; + ulCfg->firstActiveUplinkBWP_Id = NULLP; DU_ALLOC(ulCfg->firstActiveUplinkBWP_Id, sizeof(BWP_Id_t)); if(!ulCfg->firstActiveUplinkBWP_Id) { @@ -3862,7 +3861,7 @@ uint8_t BuildUlCfg(UplinkConfig_t *ulCfg) ulCfg->pusch_ServingCellConfig = NULLP; DU_ALLOC(ulCfg->pusch_ServingCellConfig, \ - sizeof(struct UplinkConfig__pusch_ServingCellConfig)); + sizeof(struct UplinkConfig__pusch_ServingCellConfig)); if(!ulCfg->pusch_ServingCellConfig) { DU_LOG("\nF1AP : Memory Allocation failed in BuildUlCfg"); @@ -3873,10 +3872,10 @@ uint8_t BuildUlCfg(UplinkConfig_t *ulCfg) { return RFAILED; } - - ulCfg->carrierSwitching = NULLP; - ulCfg->ext1 = NULLP; - return ROK; + + ulCfg->carrierSwitching = NULLP; + ulCfg->ext1 = NULLP; + return ROK; } /******************************************************************* @@ -3906,7 +3905,7 @@ uint8_t BuildPdschSrvCellCfg(struct ServingCellConfig__pdsch_ServingCellConfig * } pdschCfg->choice.setup->codeBlockGroupTransmission = NULLP; - pdschCfg->choice.setup->xOverhead = NULLP; + pdschCfg->choice.setup->xOverhead = NULLP; pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH = NULLP; DU_ALLOC(pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH, sizeof(long)); if(!pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH) @@ -3915,8 +3914,8 @@ uint8_t BuildPdschSrvCellCfg(struct ServingCellConfig__pdsch_ServingCellConfig * return RFAILED; } *(pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH)= PDSCH_NUM_HARQ_PROC; - pdschCfg->choice.setup->pucch_Cell = NULLP; - pdschCfg->choice.setup->ext1 = NULLP; + pdschCfg->choice.setup->pucch_Cell = NULLP; + pdschCfg->choice.setup->ext1 = NULLP; return ROK; } @@ -3963,94 +3962,94 @@ uint8_t BuildSpCellCfgDed(ServingCellConfig_t *srvCellCfg) srvCellCfg->initialDownlinkBWP = NULLP; DU_ALLOC(srvCellCfg->initialDownlinkBWP, sizeof(BWP_DownlinkDedicated_t)); - if(!srvCellCfg->initialDownlinkBWP) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); - return RFAILED; - } + if(!srvCellCfg->initialDownlinkBWP) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); + return RFAILED; + } if(BuildInitialDlBWP(srvCellCfg->initialDownlinkBWP) != ROK) - { - DU_LOG("\nF1AP : BuildInitialDlBWP failed"); - return RFAILED; - } + { + DU_LOG("\nF1AP : BuildInitialDlBWP failed"); + return RFAILED; + } srvCellCfg->downlinkBWP_ToReleaseList = NULLP; - srvCellCfg->downlinkBWP_ToAddModList = NULLP; + srvCellCfg->downlinkBWP_ToAddModList = NULLP; srvCellCfg->firstActiveDownlinkBWP_Id = NULLP; - DU_ALLOC(srvCellCfg->firstActiveDownlinkBWP_Id, sizeof(long)); - if(!srvCellCfg->firstActiveDownlinkBWP_Id) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); - return RFAILED; - } - *(srvCellCfg->firstActiveDownlinkBWP_Id) = ACTIVE_DL_BWP_ID; + DU_ALLOC(srvCellCfg->firstActiveDownlinkBWP_Id, sizeof(long)); + if(!srvCellCfg->firstActiveDownlinkBWP_Id) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); + return RFAILED; + } + *(srvCellCfg->firstActiveDownlinkBWP_Id) = ACTIVE_DL_BWP_ID; - srvCellCfg->bwp_InactivityTimer = NULLP; + srvCellCfg->bwp_InactivityTimer = NULLP; srvCellCfg->defaultDownlinkBWP_Id = NULLP; - DU_ALLOC(srvCellCfg->defaultDownlinkBWP_Id, sizeof(long)); - if(!srvCellCfg->defaultDownlinkBWP_Id) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); - return RFAILED; - } - *(srvCellCfg->defaultDownlinkBWP_Id) = ACTIVE_DL_BWP_ID; + DU_ALLOC(srvCellCfg->defaultDownlinkBWP_Id, sizeof(long)); + if(!srvCellCfg->defaultDownlinkBWP_Id) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); + return RFAILED; + } + *(srvCellCfg->defaultDownlinkBWP_Id) = ACTIVE_DL_BWP_ID; srvCellCfg->uplinkConfig = NULLP; DU_ALLOC(srvCellCfg->uplinkConfig, sizeof(UplinkConfig_t)); - if(!srvCellCfg->uplinkConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); - return RFAILED; - } + if(!srvCellCfg->uplinkConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); + return RFAILED; + } if(BuildUlCfg(srvCellCfg->uplinkConfig) != ROK) - { - DU_LOG("\nF1AP : BuildUlCfg failed"); - return RFAILED; - } - srvCellCfg->supplementaryUplink = NULLP; - srvCellCfg->pdcch_ServingCellConfig = NULLP; + { + DU_LOG("\nF1AP : BuildUlCfg failed"); + return RFAILED; + } + srvCellCfg->supplementaryUplink = NULLP; + srvCellCfg->pdcch_ServingCellConfig = NULLP; srvCellCfg->pdsch_ServingCellConfig = NULLP; - DU_ALLOC(srvCellCfg->pdsch_ServingCellConfig, sizeof(struct ServingCellConfig__pdsch_ServingCellConfig)); - if(!srvCellCfg->pdsch_ServingCellConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); - return RFAILED; - } + DU_ALLOC(srvCellCfg->pdsch_ServingCellConfig, sizeof(struct ServingCellConfig__pdsch_ServingCellConfig)); + if(!srvCellCfg->pdsch_ServingCellConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); + return RFAILED; + } if(BuildPdschSrvCellCfg(srvCellCfg->pdsch_ServingCellConfig) != ROK) - { - DU_LOG("\nF1AP : BuildPdschSrvCellCfg failed"); - return RFAILED; - } + { + DU_LOG("\nF1AP : BuildPdschSrvCellCfg failed"); + return RFAILED; + } srvCellCfg->csi_MeasConfig = NULLP; #if 0 - DU_ALLOC(srvCellCfg->csi_MeasConfig, sizeof(struct ServingCellConfig__csi_MeasConfig)) - if(!srvCellCfg->csi_MeasConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); - return RFAILED; - } + DU_ALLOC(srvCellCfg->csi_MeasConfig, sizeof(struct ServingCellConfig__csi_MeasConfig)) + if(!srvCellCfg->csi_MeasConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfgDed"); + return RFAILED; + } if(BuildCsiMeasCfg(srvCellCfg->csi_MeasConfig) != ROK) - { - DU_LOG("\nF1AP : BuildCsiMeasCfg failed"); - return RFAILED; - } + { + DU_LOG("\nF1AP : BuildCsiMeasCfg failed"); + return RFAILED; + } #endif srvCellCfg->sCellDeactivationTimer = NULLP; - srvCellCfg->crossCarrierSchedulingConfig = NULLP; - srvCellCfg->tag_Id = TAG_ID; + srvCellCfg->crossCarrierSchedulingConfig = NULLP; + srvCellCfg->tag_Id = TAG_ID; srvCellCfg->dummy = NULLP; srvCellCfg->pathlossReferenceLinking = NULLP; srvCellCfg->servingCellMO = NULLP; srvCellCfg->ext1 = NULLP; - return ROK; + return ROK; } /******************************************************************* * @@ -4072,160 +4071,160 @@ uint8_t BuildSpCellCfg(SpCellConfig_t *spCellCfg) { spCellCfg->servCellIndex = NULLP; - DU_ALLOC(spCellCfg->servCellIndex, sizeof(long)); - if(!spCellCfg->servCellIndex) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfg"); - return RFAILED; - } + DU_ALLOC(spCellCfg->servCellIndex, sizeof(long)); + if(!spCellCfg->servCellIndex) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfg"); + return RFAILED; + } *(spCellCfg->servCellIndex) = SERV_CELL_IDX; spCellCfg->reconfigurationWithSync = NULLP; - spCellCfg->rlf_TimersAndConstants = NULLP; + spCellCfg->rlf_TimersAndConstants = NULLP; spCellCfg->rlmInSyncOutOfSyncThreshold = NULLP; - DU_ALLOC(spCellCfg->rlmInSyncOutOfSyncThreshold, sizeof(long)); - if(!spCellCfg->rlmInSyncOutOfSyncThreshold) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfg"); - return RFAILED; - } + DU_ALLOC(spCellCfg->rlmInSyncOutOfSyncThreshold, sizeof(long)); + if(!spCellCfg->rlmInSyncOutOfSyncThreshold) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfg"); + return RFAILED; + } *(spCellCfg->rlmInSyncOutOfSyncThreshold) = RLM_SYNC_OUT_SYNC_THRESHOLD; spCellCfg->spCellConfigDedicated = NULLP; DU_ALLOC(spCellCfg->spCellConfigDedicated, sizeof(ServingCellConfig_t)); - if(!spCellCfg->spCellConfigDedicated) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfg"); - return RFAILED; - } + if(!spCellCfg->spCellConfigDedicated) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildSpCellCfg"); + return RFAILED; + } if(BuildSpCellCfgDed(spCellCfg->spCellConfigDedicated) != ROK) - { - DU_LOG("\nF1AP : BuildSpCellCfgDed failed"); - return RFAILED; - } - return ROK; + { + DU_LOG("\nF1AP : BuildSpCellCfgDed failed"); + return RFAILED; + } + return ROK; } /******************************************************************* -* -* @brief Builds Phy cell group config -* -* @details -* -* Function : BuildPhyCellGrpCfg -* -* Functionality: Builds Phy cell group config in DuToCuRrcContainer -* -* @params[in] PhysicalCellGroupConfig_t *phyCellGrpCfg -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds Phy cell group config + * + * @details + * + * Function : BuildPhyCellGrpCfg + * + * Functionality: Builds Phy cell group config in DuToCuRrcContainer + * + * @params[in] PhysicalCellGroupConfig_t *phyCellGrpCfg + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildPhyCellGrpCfg(PhysicalCellGroupConfig_t *phyCellGrpCfg) { phyCellGrpCfg->harq_ACK_SpatialBundlingPUCCH = NULLP; - phyCellGrpCfg->harq_ACK_SpatialBundlingPUSCH = NULLP; + phyCellGrpCfg->harq_ACK_SpatialBundlingPUSCH = NULLP; phyCellGrpCfg->p_NR_FR1 = NULLP; - DU_ALLOC(phyCellGrpCfg->p_NR_FR1, sizeof(long)); - if(!phyCellGrpCfg->p_NR_FR1) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildPhyCellGrpCfg"); - return RFAILED; - } + DU_ALLOC(phyCellGrpCfg->p_NR_FR1, sizeof(long)); + if(!phyCellGrpCfg->p_NR_FR1) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildPhyCellGrpCfg"); + return RFAILED; + } *(phyCellGrpCfg->p_NR_FR1) = P_NR_FR1; - phyCellGrpCfg->pdsch_HARQ_ACK_Codebook = PDSCH_HARQ_ACK_CODEBOOK; - phyCellGrpCfg->tpc_SRS_RNTI = NULLP; - phyCellGrpCfg->tpc_PUCCH_RNTI = NULLP; - phyCellGrpCfg->tpc_PUSCH_RNTI = NULLP; - phyCellGrpCfg->sp_CSI_RNTI = NULLP; - phyCellGrpCfg->cs_RNTI = NULLP; - phyCellGrpCfg->ext1 = NULLP; - phyCellGrpCfg->ext2 = NULLP; - - return ROK; + phyCellGrpCfg->pdsch_HARQ_ACK_Codebook = PDSCH_HARQ_ACK_CODEBOOK; + phyCellGrpCfg->tpc_SRS_RNTI = NULLP; + phyCellGrpCfg->tpc_PUCCH_RNTI = NULLP; + phyCellGrpCfg->tpc_PUSCH_RNTI = NULLP; + phyCellGrpCfg->sp_CSI_RNTI = NULLP; + phyCellGrpCfg->cs_RNTI = NULLP; + phyCellGrpCfg->ext1 = NULLP; + phyCellGrpCfg->ext2 = NULLP; + + return ROK; } /******************************************************************* -* -* @brief Builds Mac cell group config -* -* @details -* -* Function : BuildMacCellGrpCfg -* -* Functionality: Builds Mac cell group config in DuToCuRrcContainer -* -* @params[in] MAC_CellGroupConfig_t *macCellGrpCfg -* -* @return ROK - success -* RFAILED - failure -* -* ****************************************************************/ + * + * @brief Builds Mac cell group config + * + * @details + * + * Function : BuildMacCellGrpCfg + * + * Functionality: Builds Mac cell group config in DuToCuRrcContainer + * + * @params[in] MAC_CellGroupConfig_t *macCellGrpCfg + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ uint8_t BuildMacCellGrpCfg(MAC_CellGroupConfig_t *macCellGrpCfg) { macCellGrpCfg->drx_Config = NULLP; macCellGrpCfg->schedulingRequestConfig = NULLP; - DU_ALLOC(macCellGrpCfg->schedulingRequestConfig, sizeof(struct SchedulingRequestConfig)); - if(!macCellGrpCfg->schedulingRequestConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); - return RFAILED; - } + DU_ALLOC(macCellGrpCfg->schedulingRequestConfig, sizeof(struct SchedulingRequestConfig)); + if(!macCellGrpCfg->schedulingRequestConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); + return RFAILED; + } - if(BuildSchedulingReqConfig(macCellGrpCfg->schedulingRequestConfig) != ROK) - { - DU_LOG("\nF1AP : BuildSchedulingReqConfig failed"); - return RFAILED; - } + if(BuildSchedulingReqConfig(macCellGrpCfg->schedulingRequestConfig) != ROK) + { + DU_LOG("\nF1AP : BuildSchedulingReqConfig failed"); + return RFAILED; + } macCellGrpCfg->bsr_Config = NULLP; DU_ALLOC(macCellGrpCfg->bsr_Config, sizeof(struct BSR_Config)); - if(!macCellGrpCfg->bsr_Config) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); - return RFAILED; - } + if(!macCellGrpCfg->bsr_Config) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); + return RFAILED; + } if(BuildBsrConfig(macCellGrpCfg->bsr_Config) != ROK) - { + { DU_LOG("\nF1AP : BuildBsrConfig failed"); - return RFAILED; - } + return RFAILED; + } macCellGrpCfg->tag_Config = NULLP; DU_ALLOC(macCellGrpCfg->tag_Config, sizeof(struct TAG_Config)); - if(!macCellGrpCfg->tag_Config) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); - return RFAILED; - } + if(!macCellGrpCfg->tag_Config) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); + return RFAILED; + } if(BuildTagConfig(macCellGrpCfg->tag_Config) != ROK) - { - DU_LOG("\nF1AP : BuildTagConfig failed"); - return RFAILED; + { + DU_LOG("\nF1AP : BuildTagConfig failed"); + return RFAILED; } macCellGrpCfg->phr_Config = NULLP; DU_ALLOC(macCellGrpCfg->phr_Config, sizeof(struct MAC_CellGroupConfig__phr_Config)); - if(!macCellGrpCfg->phr_Config) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); - return RFAILED; - } - - if(BuildPhrConfig(macCellGrpCfg->phr_Config) != ROK) - { - DU_LOG("\nF1AP : BuildPhrConfig failed"); - return RFAILED; + if(!macCellGrpCfg->phr_Config) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildMacCellGrpCfg"); + return RFAILED; + } + + if(BuildPhrConfig(macCellGrpCfg->phr_Config) != ROK) + { + DU_LOG("\nF1AP : BuildPhrConfig failed"); + return RFAILED; } macCellGrpCfg->skipUplinkTxDynamic = false; - macCellGrpCfg->ext1 = NULLP; + macCellGrpCfg->ext1 = NULLP; - return ROK; + return ROK; } - /******************************************************************* +/******************************************************************* * * @brief Frees memeory allocated for SearchSpcToAddModList * @@ -4242,57 +4241,57 @@ uint8_t BuildMacCellGrpCfg(MAC_CellGroupConfig_t *macCellGrpCfg) 4221 * ****************************************************************/ void FreeSearchSpcToAddModList(struct PDCCH_Config__searchSpacesToAddModList *searchSpcList) { - uint8_t idx1=0; - uint8_t idx2=0; - struct SearchSpace *searchSpc=NULLP; + uint8_t idx1=0; + uint8_t idx2=0; + struct SearchSpace *searchSpc=NULLP; - if(searchSpcList->list.array) + if(searchSpcList->list.array) + { + if(searchSpcList->list.array[idx2]) + { + searchSpc = searchSpcList->list.array[idx2]; + if(searchSpc->controlResourceSetId) { - if(searchSpcList->list.array[idx2]) + if(searchSpc->monitoringSlotPeriodicityAndOffset) { - searchSpc = searchSpcList->list.array[idx2]; - if(searchSpc->controlResourceSetId) + if(searchSpc->monitoringSymbolsWithinSlot) { - if(searchSpc->monitoringSlotPeriodicityAndOffset) - { - if(searchSpc->monitoringSymbolsWithinSlot) - { - if(searchSpc->monitoringSymbolsWithinSlot->buf) - { - if(searchSpc->nrofCandidates) - { - if(searchSpc->searchSpaceType) - { - DU_FREE(searchSpc->searchSpaceType->choice.ue_Specific,\ - sizeof(struct SearchSpace__searchSpaceType__ue_Specific)); - DU_FREE(searchSpc->searchSpaceType, sizeof(struct - SearchSpace__searchSpaceType)); - } - DU_FREE(searchSpc->nrofCandidates, - sizeof(struct SearchSpace__nrofCandidates)); - } - DU_FREE(searchSpc->monitoringSymbolsWithinSlot->buf, \ - searchSpc->monitoringSymbolsWithinSlot->size); - } - DU_FREE(searchSpc->monitoringSymbolsWithinSlot, - sizeof(BIT_STRING_t)); - } - DU_FREE(searchSpc->monitoringSlotPeriodicityAndOffset, \ - sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset)); - } - DU_FREE(searchSpc->controlResourceSetId, - sizeof(ControlResourceSetId_t)); + if(searchSpc->monitoringSymbolsWithinSlot->buf) + { + if(searchSpc->nrofCandidates) + { + if(searchSpc->searchSpaceType) + { + DU_FREE(searchSpc->searchSpaceType->choice.ue_Specific,\ + sizeof(struct SearchSpace__searchSpaceType__ue_Specific)); + DU_FREE(searchSpc->searchSpaceType, sizeof(struct + SearchSpace__searchSpaceType)); + } + DU_FREE(searchSpc->nrofCandidates, + sizeof(struct SearchSpace__nrofCandidates)); } + DU_FREE(searchSpc->monitoringSymbolsWithinSlot->buf, \ + searchSpc->monitoringSymbolsWithinSlot->size); } - for(idx1 = 0; idx1 < searchSpcList->list.count; idx1++) - { - DU_FREE(searchSpcList->list.array[idx1], - sizeof(struct SearchSpace)); - } - DU_FREE(searchSpcList->list.array,searchSpcList->list.size); + DU_FREE(searchSpc->monitoringSymbolsWithinSlot, + sizeof(BIT_STRING_t)); + } + DU_FREE(searchSpc->monitoringSlotPeriodicityAndOffset, \ + sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset)); + } + DU_FREE(searchSpc->controlResourceSetId, + sizeof(ControlResourceSetId_t)); } + } + for(idx1 = 0; idx1 < searchSpcList->list.count; idx1++) + { + DU_FREE(searchSpcList->list.array[idx1], + sizeof(struct SearchSpace)); + } + DU_FREE(searchSpcList->list.array,searchSpcList->list.size); + } } - /******************************************************************* +/******************************************************************* * * @brief Frees memory allocated for PdschTimeDomAllocList * @@ -4310,24 +4309,24 @@ void FreeSearchSpcToAddModList(struct PDCCH_Config__searchSpacesToAddModList *se void FreePdschTimeDomAllocList( struct PDSCH_Config__pdsch_TimeDomainAllocationList *timeDomAllocList) { uint8_t idx1=0; - - if(timeDomAllocList->choice.setup) + + if(timeDomAllocList->choice.setup) { if(timeDomAllocList->choice.setup->list.array) { - for(idx1 = 0; idx1 choice.setup->list.count ; idx1++) - { - DU_FREE(timeDomAllocList->choice.setup->list.array[idx1], - sizeof(struct PDSCH_TimeDomainResourceAllocation)); - } - DU_FREE(timeDomAllocList->choice.setup->list.array, \ - timeDomAllocList->choice.setup->list.size); + for(idx1 = 0; idx1 choice.setup->list.count ; idx1++) + { + DU_FREE(timeDomAllocList->choice.setup->list.array[idx1], + sizeof(struct PDSCH_TimeDomainResourceAllocation)); + } + DU_FREE(timeDomAllocList->choice.setup->list.array, \ + timeDomAllocList->choice.setup->list.size); } DU_FREE(timeDomAllocList->choice.setup,\ - sizeof(struct PDSCH_TimeDomainResourceAllocationList)); + sizeof(struct PDSCH_TimeDomainResourceAllocationList)); } } - /******************************************************************* +/******************************************************************* * * @brief Frees memory allocated for PuschTimeDomAllocList * @@ -4344,36 +4343,36 @@ void FreePdschTimeDomAllocList( struct PDSCH_Config__pdsch_TimeDomainAllocationL 4221 * ****************************************************************/ void FreePuschTimeDomAllocList(PUSCH_Config_t *puschCfg) { - uint8_t idx1=0; - uint8_t idx2=0; - struct PUSCH_Config__pusch_TimeDomainAllocationList *timeDomAllocList_t=NULLP; + uint8_t idx1=0; + uint8_t idx2=0; + struct PUSCH_Config__pusch_TimeDomainAllocationList *timeDomAllocList_t=NULLP; - if(puschCfg->pusch_TimeDomainAllocationList) - { - timeDomAllocList_t=puschCfg->pusch_TimeDomainAllocationList; - if(timeDomAllocList_t->choice.setup) - { - if(timeDomAllocList_t->choice.setup->list.array) - { - DU_FREE(timeDomAllocList_t->choice.setup->list.array[idx2]->k2, sizeof(long)); - for(idx1 = 0; idx1choice.setup->list.count; idx1++) - { - DU_FREE(timeDomAllocList_t->choice.setup->list.array[idx1],\ - sizeof(PUSCH_TimeDomainResourceAllocation_t)); - } - DU_FREE(timeDomAllocList_t->choice.setup->list.array, \ - timeDomAllocList_t->choice.setup->list.size); - } - DU_FREE(timeDomAllocList_t->choice.setup, \ + if(puschCfg->pusch_TimeDomainAllocationList) + { + timeDomAllocList_t=puschCfg->pusch_TimeDomainAllocationList; + if(timeDomAllocList_t->choice.setup) + { + if(timeDomAllocList_t->choice.setup->list.array) + { + DU_FREE(timeDomAllocList_t->choice.setup->list.array[idx2]->k2, sizeof(long)); + for(idx1 = 0; idx1choice.setup->list.count; idx1++) + { + DU_FREE(timeDomAllocList_t->choice.setup->list.array[idx1],\ + sizeof(PUSCH_TimeDomainResourceAllocation_t)); + } + DU_FREE(timeDomAllocList_t->choice.setup->list.array, \ + timeDomAllocList_t->choice.setup->list.size); + } + DU_FREE(timeDomAllocList_t->choice.setup, \ sizeof(struct PUSCH_TimeDomainResourceAllocationList)); - } - DU_FREE(puschCfg->transformPrecoder, sizeof(long)); - DU_FREE(puschCfg->pusch_TimeDomainAllocationList, \ - sizeof(struct PUSCH_Config__pusch_TimeDomainAllocationList)); - } + } + DU_FREE(puschCfg->transformPrecoder, sizeof(long)); + DU_FREE(puschCfg->pusch_TimeDomainAllocationList, \ + sizeof(struct PUSCH_Config__pusch_TimeDomainAllocationList)); + } } - /******************************************************************* +/******************************************************************* * * @brief Frees memory allocated for InitialUlBWP * @@ -4390,126 +4389,126 @@ void FreePuschTimeDomAllocList(PUSCH_Config_t *puschCfg) * ****************************************************************/ void FreeInitialUlBWP(BWP_UplinkDedicated_t *ulBwp) { - uint8_t rSetIdx, rsrcIdx; - SRS_Config_t *srsCfg = NULLP; - PUSCH_Config_t *puschCfg = NULLP; - struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg = NULLP; - struct SRS_Config__srs_ResourceSetToAddModList *rsrcSetList = NULLP; - struct SRS_ResourceSet__srs_ResourceIdList *rsrcIdList = NULLP; - struct SRS_Config__srs_ResourceToAddModList *resourceList = NULLP; - - if(ulBwp->pusch_Config) - { - if(ulBwp->pusch_Config->choice.setup) - { - puschCfg=ulBwp->pusch_Config->choice.setup; - if(puschCfg->dataScramblingIdentityPUSCH) - { - if(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA) - { - FreePuschTimeDomAllocList(puschCfg); - dmrsUlCfg=puschCfg->dmrs_UplinkForPUSCH_MappingTypeA; - if(dmrsUlCfg->choice.setup) - { - if(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition) - { - if(dmrsUlCfg->choice.setup->transformPrecodingDisabled) - { - DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0,\ - sizeof(long)); - DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled, - sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled)); - } - DU_FREE(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition, - sizeof(long)); - } - DU_FREE(dmrsUlCfg->choice.setup,sizeof(DMRS_UplinkConfig_t)); - } - DU_FREE(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA, \ - sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA)); - } - DU_FREE(puschCfg->dataScramblingIdentityPUSCH, sizeof(long)); - } - DU_FREE(ulBwp->pusch_Config->choice.setup, sizeof(PUSCH_Config_t)); + uint8_t rSetIdx, rsrcIdx; + SRS_Config_t *srsCfg = NULLP; + PUSCH_Config_t *puschCfg = NULLP; + struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg = NULLP; + struct SRS_Config__srs_ResourceSetToAddModList *rsrcSetList = NULLP; + struct SRS_ResourceSet__srs_ResourceIdList *rsrcIdList = NULLP; + struct SRS_Config__srs_ResourceToAddModList *resourceList = NULLP; + + if(ulBwp->pusch_Config) + { + if(ulBwp->pusch_Config->choice.setup) + { + puschCfg=ulBwp->pusch_Config->choice.setup; + if(puschCfg->dataScramblingIdentityPUSCH) + { + if(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA) + { + FreePuschTimeDomAllocList(puschCfg); + dmrsUlCfg=puschCfg->dmrs_UplinkForPUSCH_MappingTypeA; + if(dmrsUlCfg->choice.setup) + { + if(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition) + { + if(dmrsUlCfg->choice.setup->transformPrecodingDisabled) + { + DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0,\ + sizeof(long)); + DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled, + sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled)); + } + DU_FREE(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition, + sizeof(long)); + } + DU_FREE(dmrsUlCfg->choice.setup,sizeof(DMRS_UplinkConfig_t)); + } + DU_FREE(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA, \ + sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA)); } - DU_FREE(ulBwp->pusch_Config, sizeof(struct BWP_UplinkDedicated__pusch_Config)); + DU_FREE(puschCfg->dataScramblingIdentityPUSCH, sizeof(long)); + } + DU_FREE(ulBwp->pusch_Config->choice.setup, sizeof(PUSCH_Config_t)); + } + DU_FREE(ulBwp->pusch_Config, sizeof(struct BWP_UplinkDedicated__pusch_Config)); - /* Free SRS-Config */ - if(ulBwp->srs_Config) - { - if(ulBwp->srs_Config->choice.setup) - { - srsCfg = ulBwp->srs_Config->choice.setup; + /* Free SRS-Config */ + if(ulBwp->srs_Config) + { + if(ulBwp->srs_Config->choice.setup) + { + srsCfg = ulBwp->srs_Config->choice.setup; - /* Free Resource Set to add/mod list */ - if(srsCfg->srs_ResourceSetToAddModList) - { - rsrcSetList = srsCfg->srs_ResourceSetToAddModList; - if(rsrcSetList->list.array) - { - rSetIdx = 0; + /* Free Resource Set to add/mod list */ + if(srsCfg->srs_ResourceSetToAddModList) + { + rsrcSetList = srsCfg->srs_ResourceSetToAddModList; + if(rsrcSetList->list.array) + { + rSetIdx = 0; - /* Free SRS resource Id list in this SRS resource set */ - if(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList) - { - rsrcIdList = rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList; + /* Free SRS resource Id list in this SRS resource set */ + if(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList) + { + rsrcIdList = rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList; - if(rsrcIdList->list.array) - { - for(rsrcIdx = 0; rsrcIdx < rsrcIdList->list.count; rsrcIdx++) - { - DU_FREE(rsrcIdList->list.array[rsrcIdx], sizeof(SRS_ResourceId_t)); - } - DU_FREE(rsrcIdList->list.array, rsrcIdList->list.size); - } - DU_FREE(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList,\ - sizeof(struct SRS_ResourceSet__srs_ResourceIdList)); - } - - /* Free resource type info for this SRS resource set */ - DU_FREE(rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic, \ - sizeof(struct SRS_ResourceSet__resourceType__aperiodic)); - - /* Free memory for each resource set */ - for(rSetIdx = 0; rSetIdx < rsrcSetList->list.count; rSetIdx++) - { - DU_FREE(rsrcSetList->list.array[rSetIdx], sizeof(SRS_ResourceSet_t)); - } - DU_FREE(rsrcSetList->list.array, rsrcSetList->list.size); - } - DU_FREE(srsCfg->srs_ResourceSetToAddModList, \ - sizeof(struct SRS_Config__srs_ResourceSetToAddModList)); - } + if(rsrcIdList->list.array) + { + for(rsrcIdx = 0; rsrcIdx < rsrcIdList->list.count; rsrcIdx++) + { + DU_FREE(rsrcIdList->list.array[rsrcIdx], sizeof(SRS_ResourceId_t)); + } + DU_FREE(rsrcIdList->list.array, rsrcIdList->list.size); + } + DU_FREE(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList,\ + sizeof(struct SRS_ResourceSet__srs_ResourceIdList)); + } - /* Free resource to add/modd list */ - if(srsCfg->srs_ResourceToAddModList) - { - resourceList = srsCfg->srs_ResourceToAddModList; - if(resourceList->list.array) - { - rsrcIdx = 0; - DU_FREE(resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2,\ - sizeof(struct SRS_Resource__transmissionComb__n2)); - DU_FREE(resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic,\ - sizeof(struct SRS_Resource__resourceType__aperiodic)); - - for(rsrcIdx = 0; rsrcIdx < resourceList->list.count; rsrcIdx++) - { - DU_FREE(resourceList->list.array[rsrcIdx], sizeof(SRS_Resource_t)); - } - DU_FREE(resourceList->list.array, resourceList->list.size); - } - DU_FREE(srsCfg->srs_ResourceToAddModList, \ - sizeof(struct SRS_Config__srs_ResourceToAddModList)); - } + /* Free resource type info for this SRS resource set */ + DU_FREE(rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic, \ + sizeof(struct SRS_ResourceSet__resourceType__aperiodic)); + + /* Free memory for each resource set */ + for(rSetIdx = 0; rSetIdx < rsrcSetList->list.count; rSetIdx++) + { + DU_FREE(rsrcSetList->list.array[rSetIdx], sizeof(SRS_ResourceSet_t)); + } + DU_FREE(rsrcSetList->list.array, rsrcSetList->list.size); + } + DU_FREE(srsCfg->srs_ResourceSetToAddModList, \ + sizeof(struct SRS_Config__srs_ResourceSetToAddModList)); + } + + /* Free resource to add/modd list */ + if(srsCfg->srs_ResourceToAddModList) + { + resourceList = srsCfg->srs_ResourceToAddModList; + if(resourceList->list.array) + { + rsrcIdx = 0; + DU_FREE(resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2,\ + sizeof(struct SRS_Resource__transmissionComb__n2)); + DU_FREE(resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic,\ + sizeof(struct SRS_Resource__resourceType__aperiodic)); + + for(rsrcIdx = 0; rsrcIdx < resourceList->list.count; rsrcIdx++) + { + DU_FREE(resourceList->list.array[rsrcIdx], sizeof(SRS_Resource_t)); + } + DU_FREE(resourceList->list.array, resourceList->list.size); + } + DU_FREE(srsCfg->srs_ResourceToAddModList, \ + sizeof(struct SRS_Config__srs_ResourceToAddModList)); + } - DU_FREE(ulBwp->srs_Config->choice.setup, sizeof(SRS_Config_t)); - } - DU_FREE(ulBwp->srs_Config, sizeof(struct BWP_UplinkDedicated__srs_Config)); - } + DU_FREE(ulBwp->srs_Config->choice.setup, sizeof(SRS_Config_t)); } + DU_FREE(ulBwp->srs_Config, sizeof(struct BWP_UplinkDedicated__srs_Config)); + } + } } - /******************************************************************* +/******************************************************************* * * @brief Frees memory allocated for initialUplinkBWP * @@ -4529,37 +4528,37 @@ void FreeinitialUplinkBWP(UplinkConfig_t *ulCfg) { BWP_UplinkDedicated_t *ulBwp=NULLP; struct UplinkConfig__pusch_ServingCellConfig *puschCfg=NULLP; - - if(ulCfg->initialUplinkBWP) - { - ulBwp=ulCfg->initialUplinkBWP; - if(ulCfg->firstActiveUplinkBWP_Id) - { - if(ulCfg->pusch_ServingCellConfig) - { - puschCfg=ulCfg->pusch_ServingCellConfig; - if(puschCfg->choice.setup) - { - if(puschCfg->choice.setup->ext1) - { - DU_FREE(puschCfg->choice.setup->ext1->\ - processingType2Enabled,sizeof(BOOLEAN_t)); - DU_FREE(puschCfg->choice.setup->ext1->\ - maxMIMO_Layers,sizeof(long)); - DU_FREE(puschCfg->choice.setup->ext1, \ - sizeof(struct PUSCH_ServingCellConfig__ext1)); - } - DU_FREE(puschCfg->choice.setup, sizeof(struct PUSCH_ServingCellConfig)); - } - DU_FREE(ulCfg->pusch_ServingCellConfig, sizeof(struct UplinkConfig__pusch_ServingCellConfig)); - } - DU_FREE(ulCfg->firstActiveUplinkBWP_Id, sizeof(BWP_Id_t)); - } - FreeInitialUlBWP(ulBwp); - DU_FREE(ulCfg->initialUplinkBWP, sizeof(BWP_UplinkDedicated_t)); - } + + if(ulCfg->initialUplinkBWP) + { + ulBwp=ulCfg->initialUplinkBWP; + if(ulCfg->firstActiveUplinkBWP_Id) + { + if(ulCfg->pusch_ServingCellConfig) + { + puschCfg=ulCfg->pusch_ServingCellConfig; + if(puschCfg->choice.setup) + { + if(puschCfg->choice.setup->ext1) + { + DU_FREE(puschCfg->choice.setup->ext1->\ + processingType2Enabled,sizeof(BOOLEAN_t)); + DU_FREE(puschCfg->choice.setup->ext1->\ + maxMIMO_Layers,sizeof(long)); + DU_FREE(puschCfg->choice.setup->ext1, \ + sizeof(struct PUSCH_ServingCellConfig__ext1)); + } + DU_FREE(puschCfg->choice.setup, sizeof(struct PUSCH_ServingCellConfig)); + } + DU_FREE(ulCfg->pusch_ServingCellConfig, sizeof(struct UplinkConfig__pusch_ServingCellConfig)); + } + DU_FREE(ulCfg->firstActiveUplinkBWP_Id, sizeof(BWP_Id_t)); + } + FreeInitialUlBWP(ulBwp); + DU_FREE(ulCfg->initialUplinkBWP, sizeof(BWP_UplinkDedicated_t)); + } } - /******************************************************************* +/******************************************************************* * * @brief Frees emmory allocated for BWPDlDedPdschCfg * @@ -4578,43 +4577,43 @@ void FreeinitialUplinkBWP(UplinkConfig_t *ulCfg) void FreeBWPDlDedPdschCfg(BWP_DownlinkDedicated_t *dlBwp) { struct PDSCH_Config *pdschCfg=NULLP; - struct PDSCH_Config__prb_BundlingType *prbBndlType=NULLP; + struct PDSCH_Config__prb_BundlingType *prbBndlType=NULLP; struct PDSCH_Config__pdsch_TimeDomainAllocationList *timeDomAllocList=NULLP; struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA *dmrsDlCfg=NULLP; - if(dlBwp->pdsch_Config->choice.setup) + if(dlBwp->pdsch_Config->choice.setup) { pdschCfg=dlBwp->pdsch_Config->choice.setup; if(pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA) { - if(pdschCfg->pdsch_TimeDomainAllocationList) - { - timeDomAllocList=pdschCfg->pdsch_TimeDomainAllocationList; - if(pdschCfg->maxNrofCodeWordsScheduledByDCI) - { - prbBndlType=&pdschCfg->prb_BundlingType; - DU_FREE(prbBndlType->choice.staticBundling,\ - sizeof(struct PDSCH_Config__prb_BundlingType__staticBundling)); - DU_FREE(pdschCfg->maxNrofCodeWordsScheduledByDCI, sizeof(long)); - } - FreePdschTimeDomAllocList(timeDomAllocList); - DU_FREE(pdschCfg->pdsch_TimeDomainAllocationList, \ - sizeof(struct PDSCH_Config__pdsch_TimeDomainAllocationList)); - } - dmrsDlCfg=pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA; - if(dmrsDlCfg->choice.setup) - { - DU_FREE(dmrsDlCfg->choice.setup->dmrs_AdditionalPosition, - sizeof(long)); - DU_FREE(dmrsDlCfg->choice.setup, sizeof(struct DMRS_DownlinkConfig)); - } - DU_FREE(pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA, \ - sizeof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA)); - } - DU_FREE(dlBwp->pdsch_Config->choice.setup, sizeof(struct PDSCH_Config)); - } + if(pdschCfg->pdsch_TimeDomainAllocationList) + { + timeDomAllocList=pdschCfg->pdsch_TimeDomainAllocationList; + if(pdschCfg->maxNrofCodeWordsScheduledByDCI) + { + prbBndlType=&pdschCfg->prb_BundlingType; + DU_FREE(prbBndlType->choice.staticBundling,\ + sizeof(struct PDSCH_Config__prb_BundlingType__staticBundling)); + DU_FREE(pdschCfg->maxNrofCodeWordsScheduledByDCI, sizeof(long)); + } + FreePdschTimeDomAllocList(timeDomAllocList); + DU_FREE(pdschCfg->pdsch_TimeDomainAllocationList, \ + sizeof(struct PDSCH_Config__pdsch_TimeDomainAllocationList)); + } + dmrsDlCfg=pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA; + if(dmrsDlCfg->choice.setup) + { + DU_FREE(dmrsDlCfg->choice.setup->dmrs_AdditionalPosition, + sizeof(long)); + DU_FREE(dmrsDlCfg->choice.setup, sizeof(struct DMRS_DownlinkConfig)); + } + DU_FREE(pdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA, \ + sizeof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA)); + } + DU_FREE(dlBwp->pdsch_Config->choice.setup, sizeof(struct PDSCH_Config)); + } } - /******************************************************************* +/******************************************************************* * * @brief Frees emmory allocated for BWPDlDedPdcchCfg * @@ -4633,49 +4632,49 @@ void FreeBWPDlDedPdschCfg(BWP_DownlinkDedicated_t *dlBwp) void FreeBWPDlDedPdcchCfg(BWP_DownlinkDedicated_t *dlBwp) { uint8_t idx1=0; - uint8_t idx2=0; - struct PDCCH_Config *pdcchCfg=NULLP; + uint8_t idx2=0; + struct PDCCH_Config *pdcchCfg=NULLP; struct ControlResourceSet *controlRSet=NULLP; - struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList=NULLP; + struct PDCCH_Config__controlResourceSetToAddModList *controlRSetList=NULLP; - if(dlBwp->pdcch_Config->choice.setup) + if(dlBwp->pdcch_Config->choice.setup) { pdcchCfg=dlBwp->pdcch_Config->choice.setup; if(pdcchCfg->controlResourceSetToAddModList) { - controlRSetList = pdcchCfg->controlResourceSetToAddModList; - if(controlRSetList->list.array) - { - controlRSet = controlRSetList->list.array[idx2]; - if(controlRSet) - { - if(controlRSet->frequencyDomainResources.buf) - { - if(controlRSet->pdcch_DMRS_ScramblingID) - { - if(pdcchCfg->searchSpacesToAddModList) - { - FreeSearchSpcToAddModList(pdcchCfg->searchSpacesToAddModList); - DU_FREE(pdcchCfg->searchSpacesToAddModList, \ - sizeof(struct PDCCH_Config__searchSpacesToAddModList)); - } - DU_FREE(controlRSet->pdcch_DMRS_ScramblingID, sizeof(long)); - } - DU_FREE(controlRSet->frequencyDomainResources.buf, \ - controlRSet->frequencyDomainResources.size); - } - } - for(idx1 = 0; idx1 list.count; idx1++) - { - DU_FREE(controlRSetList->list.array[idx1], sizeof(struct ControlResourceSet)); - } - DU_FREE(controlRSetList->list.array, controlRSetList->list.size); - } - DU_FREE(pdcchCfg->controlResourceSetToAddModList, \ - sizeof(struct PDCCH_Config__controlResourceSetToAddModList)); - } - DU_FREE(dlBwp->pdcch_Config->choice.setup, sizeof(struct PDCCH_Config)); - } + controlRSetList = pdcchCfg->controlResourceSetToAddModList; + if(controlRSetList->list.array) + { + controlRSet = controlRSetList->list.array[idx2]; + if(controlRSet) + { + if(controlRSet->frequencyDomainResources.buf) + { + if(controlRSet->pdcch_DMRS_ScramblingID) + { + if(pdcchCfg->searchSpacesToAddModList) + { + FreeSearchSpcToAddModList(pdcchCfg->searchSpacesToAddModList); + DU_FREE(pdcchCfg->searchSpacesToAddModList, \ + sizeof(struct PDCCH_Config__searchSpacesToAddModList)); + } + DU_FREE(controlRSet->pdcch_DMRS_ScramblingID, sizeof(long)); + } + DU_FREE(controlRSet->frequencyDomainResources.buf, \ + controlRSet->frequencyDomainResources.size); + } + } + for(idx1 = 0; idx1 list.count; idx1++) + { + DU_FREE(controlRSetList->list.array[idx1], sizeof(struct ControlResourceSet)); + } + DU_FREE(controlRSetList->list.array, controlRSetList->list.size); + } + DU_FREE(pdcchCfg->controlResourceSetToAddModList, \ + sizeof(struct PDCCH_Config__controlResourceSetToAddModList)); + } + DU_FREE(dlBwp->pdcch_Config->choice.setup, sizeof(struct PDCCH_Config)); + } } /******************************************************************* @@ -4693,188 +4692,188 @@ void FreeBWPDlDedPdcchCfg(BWP_DownlinkDedicated_t *dlBwp) * @return ROK - success * RFAILED - failure * -* ****************************************************************/ + * ****************************************************************/ uint8_t FreeMemDuToCuRrcCont(CellGroupConfigRrc_t *cellGrpCfg) { uint8_t idx=0; - SpCellConfig_t *spCellCfg=NULLP; - ServingCellConfig_t *srvCellCfg=NULLP; - BWP_DownlinkDedicated_t *dlBwp=NULLP; - MAC_CellGroupConfig_t *macCellGrpCfg=NULLP; - PhysicalCellGroupConfig_t *phyCellGrpCfg=NULLP; - struct CellGroupConfigRrc__rlc_BearerToAddModList *rlcBearerList=NULLP; - struct RLC_Config *rlcConfig=NULLP; - struct LogicalChannelConfig *macLcConfig=NULLP; - struct SchedulingRequestConfig *schedulingRequestConfig=NULLP; - struct SchedulingRequestConfig__schedulingRequestToAddModList *schReqList=NULLP; - struct TAG_Config *tagConfig=NULLP; - struct TAG_Config__tag_ToAddModList *tagList=NULLP; - struct MAC_CellGroupConfig__phr_Config *phrConfig=NULLP; - struct ServingCellConfig__pdsch_ServingCellConfig *pdschCfg=NULLP; - - rlcBearerList = cellGrpCfg->rlc_BearerToAddModList; - if(rlcBearerList) - { - if(rlcBearerList->list.array) - { - for(idx=0; idxlist.count; idx++) - { - if(rlcBearerList->list.array[idx]) - { - rlcConfig = rlcBearerList->list.array[idx]->rlc_Config; - macLcConfig = rlcBearerList->list.array[idx]->mac_LogicalChannelConfig; - if(rlcConfig) - { - if(rlcConfig->choice.am) - { - DU_FREE(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); - DU_FREE(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); - DU_FREE(rlcConfig->choice.am, sizeof(struct RLC_Config__am)); - } - DU_FREE(rlcConfig, sizeof(struct RLC_Config)); - } - DU_FREE(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer)); - if(macLcConfig) - { - if(macLcConfig->ul_SpecificParameters) - { - DU_FREE(macLcConfig->ul_SpecificParameters->schedulingRequestID, sizeof(SchedulingRequestId_t)); - DU_FREE(macLcConfig->ul_SpecificParameters->logicalChannelGroup, sizeof(long)); - DU_FREE(macLcConfig->ul_SpecificParameters, sizeof(struct LogicalChannelConfig__ul_SpecificParameters)); - } - DU_FREE(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig, sizeof(struct LogicalChannelConfig)); - } - DU_FREE(rlcBearerList->list.array[idx], sizeof(struct RLC_BearerConfig)); - } - } - DU_FREE(rlcBearerList->list.array, rlcBearerList->list.size); - } - DU_FREE(cellGrpCfg->rlc_BearerToAddModList, sizeof(struct CellGroupConfigRrc__rlc_BearerToAddModList)); - } + SpCellConfig_t *spCellCfg=NULLP; + ServingCellConfig_t *srvCellCfg=NULLP; + BWP_DownlinkDedicated_t *dlBwp=NULLP; + MAC_CellGroupConfig_t *macCellGrpCfg=NULLP; + PhysicalCellGroupConfig_t *phyCellGrpCfg=NULLP; + struct CellGroupConfigRrc__rlc_BearerToAddModList *rlcBearerList=NULLP; + struct RLC_Config *rlcConfig=NULLP; + struct LogicalChannelConfig *macLcConfig=NULLP; + struct SchedulingRequestConfig *schedulingRequestConfig=NULLP; + struct SchedulingRequestConfig__schedulingRequestToAddModList *schReqList=NULLP; + struct TAG_Config *tagConfig=NULLP; + struct TAG_Config__tag_ToAddModList *tagList=NULLP; + struct MAC_CellGroupConfig__phr_Config *phrConfig=NULLP; + struct ServingCellConfig__pdsch_ServingCellConfig *pdschCfg=NULLP; + + rlcBearerList = cellGrpCfg->rlc_BearerToAddModList; + if(rlcBearerList) + { + if(rlcBearerList->list.array) + { + for(idx=0; idxlist.count; idx++) + { + if(rlcBearerList->list.array[idx]) + { + rlcConfig = rlcBearerList->list.array[idx]->rlc_Config; + macLcConfig = rlcBearerList->list.array[idx]->mac_LogicalChannelConfig; + if(rlcConfig) + { + if(rlcConfig->choice.am) + { + DU_FREE(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); + DU_FREE(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); + DU_FREE(rlcConfig->choice.am, sizeof(struct RLC_Config__am)); + } + DU_FREE(rlcConfig, sizeof(struct RLC_Config)); + } + DU_FREE(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer)); + if(macLcConfig) + { + if(macLcConfig->ul_SpecificParameters) + { + DU_FREE(macLcConfig->ul_SpecificParameters->schedulingRequestID, sizeof(SchedulingRequestId_t)); + DU_FREE(macLcConfig->ul_SpecificParameters->logicalChannelGroup, sizeof(long)); + DU_FREE(macLcConfig->ul_SpecificParameters, sizeof(struct LogicalChannelConfig__ul_SpecificParameters)); + } + DU_FREE(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig, sizeof(struct LogicalChannelConfig)); + } + DU_FREE(rlcBearerList->list.array[idx], sizeof(struct RLC_BearerConfig)); + } + } + DU_FREE(rlcBearerList->list.array, rlcBearerList->list.size); + } + DU_FREE(cellGrpCfg->rlc_BearerToAddModList, sizeof(struct CellGroupConfigRrc__rlc_BearerToAddModList)); + } - macCellGrpCfg = cellGrpCfg->mac_CellGroupConfig; - if(macCellGrpCfg) - { - schedulingRequestConfig = macCellGrpCfg->schedulingRequestConfig; + macCellGrpCfg = cellGrpCfg->mac_CellGroupConfig; + if(macCellGrpCfg) + { + schedulingRequestConfig = macCellGrpCfg->schedulingRequestConfig; if(schedulingRequestConfig) - { - schReqList = schedulingRequestConfig->schedulingRequestToAddModList; - if(schReqList) - { - if(schReqList->list.array) - { - for(idx=0;idxlist.count; idx++) - { - if(schReqList->list.array[idx]) - { - DU_FREE(schReqList->list.array[idx]->sr_ProhibitTimer, sizeof(long)); - DU_FREE(schReqList->list.array[idx], sizeof(struct SchedulingRequestToAddMod)); - } - } - DU_FREE(schReqList->list.array, schReqList->list.size); - } - DU_FREE(schedulingRequestConfig->schedulingRequestToAddModList,\ - sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList)); } - DU_FREE(macCellGrpCfg->schedulingRequestConfig, sizeof(struct SchedulingRequestConfig)); - } - if(macCellGrpCfg->bsr_Config) - { - DU_FREE(macCellGrpCfg->bsr_Config, sizeof(struct BSR_Config)); - } - tagConfig = macCellGrpCfg->tag_Config; - if(tagConfig) - { - tagList = tagConfig->tag_ToAddModList; - if(tagList) - { - if(tagList->list.array) - { - for(idx=0; idxlist.count; idx++) - { - DU_FREE(tagList->list.array[idx], sizeof(struct TAG)); - } - DU_FREE(tagList->list.array, tagList->list.size); - } - DU_FREE(tagConfig->tag_ToAddModList, sizeof(struct TAG_Config__tag_ToAddModList)); - } - DU_FREE(tagConfig, sizeof(struct TAG_Config)); - } + { + schReqList = schedulingRequestConfig->schedulingRequestToAddModList; + if(schReqList) + { + if(schReqList->list.array) + { + for(idx=0;idxlist.count; idx++) + { + if(schReqList->list.array[idx]) + { + DU_FREE(schReqList->list.array[idx]->sr_ProhibitTimer, sizeof(long)); + DU_FREE(schReqList->list.array[idx], sizeof(struct SchedulingRequestToAddMod)); + } + } + DU_FREE(schReqList->list.array, schReqList->list.size); + } + DU_FREE(schedulingRequestConfig->schedulingRequestToAddModList,\ + sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList)); } + DU_FREE(macCellGrpCfg->schedulingRequestConfig, sizeof(struct SchedulingRequestConfig)); + } + if(macCellGrpCfg->bsr_Config) + { + DU_FREE(macCellGrpCfg->bsr_Config, sizeof(struct BSR_Config)); + } + tagConfig = macCellGrpCfg->tag_Config; + if(tagConfig) + { + tagList = tagConfig->tag_ToAddModList; + if(tagList) + { + if(tagList->list.array) + { + for(idx=0; idxlist.count; idx++) + { + DU_FREE(tagList->list.array[idx], sizeof(struct TAG)); + } + DU_FREE(tagList->list.array, tagList->list.size); + } + DU_FREE(tagConfig->tag_ToAddModList, sizeof(struct TAG_Config__tag_ToAddModList)); + } + DU_FREE(tagConfig, sizeof(struct TAG_Config)); + } - phrConfig = macCellGrpCfg->phr_Config; - if(phrConfig) - { - DU_FREE(phrConfig->choice.setup, sizeof(struct PHR_Config)); - DU_FREE(phrConfig, sizeof(struct MAC_CellGroupConfig__phr_Config)); + phrConfig = macCellGrpCfg->phr_Config; + if(phrConfig) + { + DU_FREE(phrConfig->choice.setup, sizeof(struct PHR_Config)); + DU_FREE(phrConfig, sizeof(struct MAC_CellGroupConfig__phr_Config)); } - DU_FREE(macCellGrpCfg, sizeof(MAC_CellGroupConfig_t)); - } + DU_FREE(macCellGrpCfg, sizeof(MAC_CellGroupConfig_t)); + } - phyCellGrpCfg = cellGrpCfg->physicalCellGroupConfig; - if(phyCellGrpCfg) - { - DU_FREE(phyCellGrpCfg->p_NR_FR1, sizeof(long)); - DU_FREE(phyCellGrpCfg, sizeof(PhysicalCellGroupConfig_t)); - } + phyCellGrpCfg = cellGrpCfg->physicalCellGroupConfig; + if(phyCellGrpCfg) + { + DU_FREE(phyCellGrpCfg->p_NR_FR1, sizeof(long)); + DU_FREE(phyCellGrpCfg, sizeof(PhysicalCellGroupConfig_t)); + } - spCellCfg = cellGrpCfg->spCellConfig; - if(spCellCfg) - { - if(spCellCfg->servCellIndex) - { - if(spCellCfg->rlmInSyncOutOfSyncThreshold) + spCellCfg = cellGrpCfg->spCellConfig; + if(spCellCfg) + { + if(spCellCfg->servCellIndex) + { + if(spCellCfg->rlmInSyncOutOfSyncThreshold) + { + if(spCellCfg->spCellConfigDedicated) + { + srvCellCfg = spCellCfg->spCellConfigDedicated; + if(srvCellCfg->initialDownlinkBWP) + { + dlBwp = srvCellCfg->initialDownlinkBWP; + if(srvCellCfg->firstActiveDownlinkBWP_Id) + { + if(srvCellCfg->defaultDownlinkBWP_Id) + { + if(srvCellCfg->uplinkConfig) { - if(spCellCfg->spCellConfigDedicated) - { - srvCellCfg = spCellCfg->spCellConfigDedicated; - if(srvCellCfg->initialDownlinkBWP) - { - dlBwp = srvCellCfg->initialDownlinkBWP; - if(srvCellCfg->firstActiveDownlinkBWP_Id) - { - if(srvCellCfg->defaultDownlinkBWP_Id) - { - if(srvCellCfg->uplinkConfig) - { - if(srvCellCfg->pdsch_ServingCellConfig) - { - pdschCfg= srvCellCfg->pdsch_ServingCellConfig; - if(pdschCfg->choice.setup) - { - DU_FREE(pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH,sizeof(long)); - DU_FREE(pdschCfg->choice.setup, sizeof( struct PDSCH_ServingCellConfig)); - } - DU_FREE(srvCellCfg->pdsch_ServingCellConfig, sizeof(struct - ServingCellConfig__pdsch_ServingCellConfig)); - } - FreeinitialUplinkBWP(srvCellCfg->uplinkConfig); - DU_FREE(srvCellCfg->uplinkConfig, sizeof(UplinkConfig_t)); - } - DU_FREE(srvCellCfg->defaultDownlinkBWP_Id, sizeof(long)); - } - DU_FREE(srvCellCfg->firstActiveDownlinkBWP_Id, sizeof(long)); - } - if(dlBwp->pdcch_Config) - { - if(dlBwp->pdsch_Config) - { - FreeBWPDlDedPdschCfg(dlBwp); - DU_FREE(dlBwp->pdsch_Config, sizeof(struct BWP_DownlinkDedicated__pdsch_Config)); - } - FreeBWPDlDedPdcchCfg(dlBwp); - DU_FREE(dlBwp->pdcch_Config, sizeof(struct BWP_DownlinkDedicated__pdcch_Config)); - } - DU_FREE(srvCellCfg->initialDownlinkBWP, sizeof(BWP_DownlinkDedicated_t)); - } - DU_FREE(spCellCfg->spCellConfigDedicated, sizeof(ServingCellConfig_t)); - } - DU_FREE(spCellCfg->rlmInSyncOutOfSyncThreshold, sizeof(long)); + if(srvCellCfg->pdsch_ServingCellConfig) + { + pdschCfg= srvCellCfg->pdsch_ServingCellConfig; + if(pdschCfg->choice.setup) + { + DU_FREE(pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH,sizeof(long)); + DU_FREE(pdschCfg->choice.setup, sizeof( struct PDSCH_ServingCellConfig)); + } + DU_FREE(srvCellCfg->pdsch_ServingCellConfig, sizeof(struct + ServingCellConfig__pdsch_ServingCellConfig)); + } + FreeinitialUplinkBWP(srvCellCfg->uplinkConfig); + DU_FREE(srvCellCfg->uplinkConfig, sizeof(UplinkConfig_t)); } - DU_FREE(spCellCfg->servCellIndex, sizeof(long)); + DU_FREE(srvCellCfg->defaultDownlinkBWP_Id, sizeof(long)); + } + DU_FREE(srvCellCfg->firstActiveDownlinkBWP_Id, sizeof(long)); + } + if(dlBwp->pdcch_Config) + { + if(dlBwp->pdsch_Config) + { + FreeBWPDlDedPdschCfg(dlBwp); + DU_FREE(dlBwp->pdsch_Config, sizeof(struct BWP_DownlinkDedicated__pdsch_Config)); + } + FreeBWPDlDedPdcchCfg(dlBwp); + DU_FREE(dlBwp->pdcch_Config, sizeof(struct BWP_DownlinkDedicated__pdcch_Config)); + } + DU_FREE(srvCellCfg->initialDownlinkBWP, sizeof(BWP_DownlinkDedicated_t)); + } + DU_FREE(spCellCfg->spCellConfigDedicated, sizeof(ServingCellConfig_t)); + } + DU_FREE(spCellCfg->rlmInSyncOutOfSyncThreshold, sizeof(long)); + } + DU_FREE(spCellCfg->servCellIndex, sizeof(long)); } - DU_FREE(spCellCfg,sizeof(SpCellConfig_t)); - } - return ROK; + DU_FREE(spCellCfg,sizeof(SpCellConfig_t)); + } + return ROK; } /******************************************************************* * @@ -4895,379 +4894,724 @@ uint8_t FreeMemDuToCuRrcCont(CellGroupConfigRrc_t *cellGrpCfg) * ****************************************************************/ uint8_t BuildDuToCuRrcContainer(DUtoCURRCContainer_t *duToCuRrcContainer) { - CellGroupConfigRrc_t cellGrpCfg; - asn_enc_rval_t encRetVal; - uint8_t ret = RFAILED; + CellGroupConfigRrc_t cellGrpCfg; + asn_enc_rval_t encRetVal; + uint8_t ret = RFAILED; - while(true) - { - cellGrpCfg.cellGroupId = CELL_GRP_ID; - - cellGrpCfg.rlc_BearerToAddModList = NULLP; - DU_ALLOC(cellGrpCfg.rlc_BearerToAddModList, sizeof(struct CellGroupConfigRrc__rlc_BearerToAddModList)); - if(!cellGrpCfg.rlc_BearerToAddModList) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); - break; - } - if(BuildRlcBearerToAddModList(cellGrpCfg.rlc_BearerToAddModList) != ROK) - { - DU_LOG("\nF1AP : BuildRlcBearerToAddModList failed"); - break; - } + while(true) + { + cellGrpCfg.cellGroupId = CELL_GRP_ID; + + cellGrpCfg.rlc_BearerToAddModList = NULLP; + DU_ALLOC(cellGrpCfg.rlc_BearerToAddModList, sizeof(struct CellGroupConfigRrc__rlc_BearerToAddModList)); + if(!cellGrpCfg.rlc_BearerToAddModList) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); + break; + } + if(BuildRlcBearerToAddModList(cellGrpCfg.rlc_BearerToAddModList) != ROK) + { + DU_LOG("\nF1AP : BuildRlcBearerToAddModList failed"); + break; + } cellGrpCfg.rlc_BearerToReleaseList = NULLP; - cellGrpCfg.mac_CellGroupConfig = NULLP; - DU_ALLOC(cellGrpCfg.mac_CellGroupConfig, sizeof(MAC_CellGroupConfig_t)); - if(!cellGrpCfg.mac_CellGroupConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); - break; - } - if(BuildMacCellGrpCfg(cellGrpCfg.mac_CellGroupConfig) != ROK) - { - DU_LOG("\nF1AP : BuildMacCellGrpCfg failed"); - break; - } - - - cellGrpCfg.physicalCellGroupConfig = NULLP; - DU_ALLOC(cellGrpCfg.physicalCellGroupConfig, sizeof(PhysicalCellGroupConfig_t)); - if(!cellGrpCfg.physicalCellGroupConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); - break; - } - if(BuildPhyCellGrpCfg(cellGrpCfg.physicalCellGroupConfig) != ROK) - { - DU_LOG("\nF1AP : BuildPhyCellGrpCfg failed"); - break; - } - - cellGrpCfg.spCellConfig = NULLP; - DU_ALLOC(cellGrpCfg.spCellConfig, sizeof(SpCellConfig_t)); - if(!cellGrpCfg.spCellConfig) - { - DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); - break; - } - if(BuildSpCellCfg(cellGrpCfg.spCellConfig) != ROK) - { - DU_LOG("\nF1AP : BuildSpCellCfg failed"); - break; - } + cellGrpCfg.mac_CellGroupConfig = NULLP; + DU_ALLOC(cellGrpCfg.mac_CellGroupConfig, sizeof(MAC_CellGroupConfig_t)); + if(!cellGrpCfg.mac_CellGroupConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); + break; + } + if(BuildMacCellGrpCfg(cellGrpCfg.mac_CellGroupConfig) != ROK) + { + DU_LOG("\nF1AP : BuildMacCellGrpCfg failed"); + break; + } + + + cellGrpCfg.physicalCellGroupConfig = NULLP; + DU_ALLOC(cellGrpCfg.physicalCellGroupConfig, sizeof(PhysicalCellGroupConfig_t)); + if(!cellGrpCfg.physicalCellGroupConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); + break; + } + if(BuildPhyCellGrpCfg(cellGrpCfg.physicalCellGroupConfig) != ROK) + { + DU_LOG("\nF1AP : BuildPhyCellGrpCfg failed"); + break; + } + + cellGrpCfg.spCellConfig = NULLP; + DU_ALLOC(cellGrpCfg.spCellConfig, sizeof(SpCellConfig_t)); + if(!cellGrpCfg.spCellConfig) + { + DU_LOG("\nF1AP : Memory allocation failure in BuildDuToCuRrcContainer"); + break; + } + if(BuildSpCellCfg(cellGrpCfg.spCellConfig) != ROK) + { + DU_LOG("\nF1AP : BuildSpCellCfg failed"); + break; + } + + cellGrpCfg.sCellToAddModList = NULLP; + cellGrpCfg.sCellToReleaseList = NULLP; + cellGrpCfg.ext1 = NULLP; + + /* encode cellGrpCfg into duToCuRrcContainer */ + xer_fprint(stdout, &asn_DEF_CellGroupConfigRrc, &cellGrpCfg); + memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_CellGroupConfigRrc, 0, &cellGrpCfg, PrepFinalEncBuf, encBuf); + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode DuToCuRrcContainer (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\n F1AP : Created APER encoded buffer for DuToCuRrcContainer\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + + duToCuRrcContainer->size = encBufSize; + DU_ALLOC(duToCuRrcContainer->buf, duToCuRrcContainer->size); + if(!duToCuRrcContainer->buf) + { + DU_LOG("\nF1AP : Memory allocation failed in BuildDuToCuRrcContainer"); + break; + } + memcpy(duToCuRrcContainer->buf, encBuf, duToCuRrcContainer->size); + ret = ROK; + break; + } + FreeMemDuToCuRrcCont(&cellGrpCfg); + return ret; +} + +/******************************************************************* + * + * @brief Builds and sends the InitialULRRCMessage + * + * @details + * + * Function : BuildAndSendInitialRrcMsgTransfer + * + * Functionality: Constructs the Initial UL RRC Message Transfer and sends + * it to the CU through SCTP. + * + * @params[in] + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t BuildAndSendInitialRrcMsgTransfer(uint32_t gnbDuUeF1apId, uint16_t crnti, + uint16_t rrcContSize, uint8_t *rrcContainer) +{ + uint8_t ret; + uint8_t elementCnt; + uint8_t ieId; + uint8_t idx; + uint8_t idx1; + F1AP_PDU_t *f1apMsg = NULLP; + InitialULRRCMessageTransfer_t *initULRRCMsg=NULLP; + asn_enc_rval_t encRetVal; + bool checkvar=false; + while(true) + { + DU_LOG("\n F1AP : Building RRC Setup Request\n"); + DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + f1apMsg->present = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + if(f1apMsg->choice.initiatingMessage == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + f1apMsg->choice.initiatingMessage->procedureCode =\ + ProcedureCode_id_InitialULRRCMessageTransfer; + f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; + f1apMsg->choice.initiatingMessage->value.present = \ + InitiatingMessage__value_PR_InitialULRRCMessageTransfer; + initULRRCMsg =\ + &f1apMsg->choice.initiatingMessage->value.choice.InitialULRRCMessageTransfer; + elementCnt = 5; + initULRRCMsg->protocolIEs.list.count = elementCnt; + initULRRCMsg->protocolIEs.list.size = \ + elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *); + /* Initialize the F1Setup members */ + DU_ALLOC(initULRRCMsg->protocolIEs.list.array,initULRRCMsg->protocolIEs.list.size); + if(initULRRCMsg->protocolIEs.list.array == NULLP) + { + DU_LOG(" F1AP : Memory allocation for\ + RRCSetupRequestMessageTransferIEs failed"); + break; + } + for(idx=0; idxprotocolIEs.list.array[idx],\ + sizeof(InitialULRRCMessageTransferIEs_t)); + if(initULRRCMsg->protocolIEs.list.array[idx] == NULLP) + { + break; + } + } + idx1 = 0; + /*GNB DU UE F1AP ID*/ + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present = \ + InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_DU_UE_F1AP_ID = gnbDuUeF1apId; + + + /*NRCGI*/ + idx1++; + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_NRCGI; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality =Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present = \ + InitialULRRCMessageTransferIEs__value_PR_NRCGI; + + ret =\ + BuildNrcgi(&initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI); + if(ret!=ROK) + { + break; + } + + /*CRNTI*/ + idx1++; + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_C_RNTI; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ + InitialULRRCMessageTransferIEs__value_PR_C_RNTI; + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.C_RNTI = crnti; + + /*RRCContainer*/ + idx1++; + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_RRCContainer; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ + InitialULRRCMessageTransferIEs__value_PR_RRCContainer; + + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size = rrcContSize; + DU_ALLOC(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size) + if(!initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf) + { + DU_LOG(" F1AP : Memory allocation for RRCSetupRequestMessageTransferIEs failed"); + break; + + } + memcpy(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, rrcContainer, + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size); + + + /*DUtoCURRCContainer*/ + idx1++; + initULRRCMsg->protocolIEs.list.array[idx1]->id = \ + ProtocolIE_ID_id_DUtoCURRCContainer; + initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; + initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ + InitialULRRCMessageTransferIEs__value_PR_DUtoCURRCContainer; + + ret = BuildDuToCuRrcContainer(&initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer); + if(ret != ROK) + { + break; + } + + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + + /* Encode the F1SetupRequest type as APER */ + memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf, encBuf); + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode Initial UL RRC Message Transfer\ + structure (at %s)\n",encRetVal.failed_type ? \ + encRetVal.failed_type->name : "unknown"); + break; + } + else + { + + DU_LOG("\n F1AP : Created APER encoded buffer for Initial UL RRC\ + Message transfer\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + { + DU_LOG("\n F1AP : Sending Initial UL RRC Message Transfer Failed"); + break; + } + checkvar=true; + break; + } + + if(f1apMsg != NULLP) + { + if(f1apMsg->choice.initiatingMessage != NULLP) + { + if(initULRRCMsg->protocolIEs.list.array != NULLP) + { + if(idx == elementCnt) + { + idx1=1; + if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.buf!=NULLP) + { + if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.buf!=NULLP) + { + DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.buf, + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.size); + } + DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.buf,\ + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.size); + } + + idx1=3; + if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf) + { + DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size) + } + + idx1 = 4; + if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer.buf) + { + DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer.buf, + initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer.size); + } + for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(InitialULRRCMessageTransferIEs_t)); + } + } + else + { + for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(InitialULRRCMessageTransferIEs_t)); + } + } + DU_FREE(initULRRCMsg->protocolIEs.list.array,initULRRCMsg->protocolIEs.list.size); + } + DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + } + if(checkvar==true) + return ROK; + else + return RFAILED; +}/* End of BuildAndSendInitialRrcMsgTransfer*/ + +/******************************************************************* + * + * @brief Free the memory allocated for UE Setup response + * + * @details + * + * Function : FreeUeSetupRsp + * + * Functionality: + * Free the memory allocated for UE Setup response + * + * @params[in] F1AP PDU for UE setup response + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +void FreeUeSetupRsp(F1AP_PDU_t *f1apMsg) +{ + uint8_t idx; + UEContextSetupResponse_t *ueSetRsp; + + if(f1apMsg) + { + if(f1apMsg->choice.successfulOutcome) + { + ueSetRsp = &f1apMsg->choice.successfulOutcome->value.choice.\ + UEContextSetupResponse; + if(ueSetRsp->protocolIEs.list.array) + { + for(idx = 0; idx < ueSetRsp->protocolIEs.list.size; idx++) + { + DU_FREE(ueSetRsp->protocolIEs.list.array[idx],\ + sizeof(UEContextSetupResponseIEs_t)); + } + DU_FREE(ueSetRsp->protocolIEs.list.array, \ + ueSetRsp->protocolIEs.list.size); + } + DU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); + } + DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + } +} + +/******************************************************************* + * + * @brief Builds and sends the UE Setup Response + * + * @details + * + * Function : BuildAndSendUESetRsp + * + * Functionality: Constructs the UE Setup Response and sends + * it to the DU through SCTP. + * + * @params[in] + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t BuildAndSendUESetRsp() +{ + uint8_t ret = RFAILED; + uint8_t elementCnt; + uint8_t idx; + F1AP_PDU_t *f1apMsg = NULL; + UEContextSetupResponse_t *ueSetRsp; + asn_enc_rval_t encRetVal; /* Encoder return value */ + + DU_LOG("\n F1AP : Building UE Context Setup Response\n"); + + while(true) + { + DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apMsg->present = F1AP_PDU_PR_successfulOutcome; + DU_ALLOC(f1apMsg->choice.successfulOutcome, + sizeof(SuccessfulOutcome_t)); + if(f1apMsg->choice.successfulOutcome == NULLP) + { + DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + break; + } + + f1apMsg->choice.successfulOutcome->procedureCode = \ + ProcedureCode_id_UEContextSetup; + f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; + f1apMsg->choice.successfulOutcome->value.present = \ + SuccessfulOutcome__value_PR_UEContextSetupResponse; + + ueSetRsp = + &f1apMsg->choice.successfulOutcome->value.choice.UEContextSetupResponse; + elementCnt = 2; + ueSetRsp->protocolIEs.list.count = elementCnt; + ueSetRsp->protocolIEs.list.size = \ + elementCnt * sizeof(UEContextSetupResponse_t *); + + /* Initialize the UESetup members */ + DU_ALLOC(ueSetRsp->protocolIEs.list.array, \ + ueSetRsp->protocolIEs.list.size); + if(ueSetRsp->protocolIEs.list.array == NULLP) + { + DU_LOG(" F1AP : Memory allocation for UE Setup Response failed"); + break; + } + + for(idx=0; idxprotocolIEs.list.array[idx],\ + sizeof(UEContextSetupResponseIEs_t)); + if(ueSetRsp->protocolIEs.list.array[idx] == NULLP) + { + DU_LOG(" F1AP : Memory allocation for UE Setup Response failed"); + break; + } + } + + idx = 0; + + /*GNB CU UE F1AP ID*/ + ueSetRsp->protocolIEs.list.array[idx]->id = \ + ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetRsp->protocolIEs.list.array[idx]->value.present = \ + UEContextSetupResponseIEs__value_PR_GNB_CU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; + + /*GNB DU UE F1AP ID*/ + idx++; + ueSetRsp->protocolIEs.list.array[idx]->id = \ + ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; + ueSetRsp->protocolIEs.list.array[idx]->value.present = \ + UEContextSetupResponseIEs__value_PR_GNB_DU_UE_F1AP_ID; + ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; + + + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + + /* Encode the UE context setup response type as APER */ + memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ + encBuf); + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG( "\n F1AP : Could not encode UE Context Setup Request structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\n F1AP : Created APER encoded buffer for UE Context Setup Request\n"); + for(int i=0; i< encBufSize; i++) + { + printf("%x",encBuf[i]); + } + } + + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + { + DU_LOG("\n F1AP : Sending UE Context Setup Request Failed"); + break; + } + ret = ROK; + break; + } + + FreeUeSetupRsp(f1apMsg); + return ret;; +}/* End of BuildAndSendUESetRsp */ + +/******************************************************************* + * + * @brief deallocating the memory of F1reset msg + * + * @details + * + * Function : FreeF1ResetReq + * + * Functionality : + * - freeing memory of F1reset request msg + * + * @params[in] + * @return void + * + * + * ****************************************************************/ +void FreeF1ResetReq(F1AP_PDU_t *f1apMsg) +{ + uint8_t idx =0 ; + Reset_t *f1ResetMsg; + + if(f1apMsg) + { + if(f1apMsg->choice.initiatingMessage) + { + f1ResetMsg = &f1apMsg->choice.initiatingMessage->value.choice.Reset; - cellGrpCfg.sCellToAddModList = NULLP; - cellGrpCfg.sCellToReleaseList = NULLP; - cellGrpCfg.ext1 = NULLP; - - /* encode cellGrpCfg into duToCuRrcContainer */ - xer_fprint(stdout, &asn_DEF_CellGroupConfigRrc, &cellGrpCfg); - memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_CellGroupConfigRrc, 0, &cellGrpCfg, PrepFinalEncBuf, encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode DuToCuRrcContainer (at %s)\n",\ - encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); - break; - } - else - { - DU_LOG("\n F1AP : Created APER encoded buffer for DuToCuRrcContainer\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } - - duToCuRrcContainer->size = encBufSize; - DU_ALLOC(duToCuRrcContainer->buf, duToCuRrcContainer->size); - if(!duToCuRrcContainer->buf) - { - DU_LOG("\nF1AP : Memory allocation failed in BuildDuToCuRrcContainer"); - break; - } - memcpy(duToCuRrcContainer->buf, encBuf, duToCuRrcContainer->size); - ret = ROK; - break; - } - FreeMemDuToCuRrcCont(&cellGrpCfg); - return ret; + if(f1ResetMsg->protocolIEs.list.array) + { + for(idx=0 ;idx < f1ResetMsg->protocolIEs.list.count ; idx++) + { + if(f1ResetMsg->protocolIEs.list.array[idx]) + { + DU_FREE(f1ResetMsg->protocolIEs.list.array[idx],sizeof(ResetIEs_t)); + } + } + DU_FREE(f1ResetMsg->protocolIEs.list.array,f1ResetMsg->protocolIEs.list.size); + } + DU_FREE(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); + } + DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); + } } - /******************************************************************* * - * @brief Builds and sends the InitialULRRCMessage + * @brief Build and Send F1reset request * * @details * - * Function : BuildAndSendInitialRrcMsgTransfer - * - * Functionality: Constructs the Initial UL RRC Message Transfer and sends - * it to the CU through SCTP. + * Function : BuildAndSendF1ResetReq * - * @params[in] + * Functionality: + * - Build and Send F1reset request msg * + * @params[in] * @return ROK - success * RFAILED - failure * * ****************************************************************/ -uint8_t BuildAndSendInitialRrcMsgTransfer(uint32_t gnbDuUeF1apId, uint16_t crnti, - uint16_t rrcContSize, uint8_t *rrcContainer) +uint8_t BuildAndSendF1ResetReq() { - uint8_t ret; - uint8_t elementCnt; - uint8_t ieId; - uint8_t idx; - uint8_t idx1; - F1AP_PDU_t *f1apMsg = NULLP; - InitialULRRCMessageTransfer_t *initULRRCMsg=NULLP; - asn_enc_rval_t encRetVal; - bool checkvar=false; - while(true) - { - DU_LOG("\n F1AP : Building RRC Setup Request\n"); - DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); - if(f1apMsg == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - break; - } - f1apMsg->present = F1AP_PDU_PR_initiatingMessage; - DU_ALLOC(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); - if(f1apMsg->choice.initiatingMessage == NULLP) - { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); - break; - } - f1apMsg->choice.initiatingMessage->procedureCode =\ - ProcedureCode_id_InitialULRRCMessageTransfer; - f1apMsg->choice.initiatingMessage->criticality = Criticality_ignore; - f1apMsg->choice.initiatingMessage->value.present = \ - InitiatingMessage__value_PR_InitialULRRCMessageTransfer; - initULRRCMsg =\ - &f1apMsg->choice.initiatingMessage->value.choice.InitialULRRCMessageTransfer; - elementCnt = 5; - initULRRCMsg->protocolIEs.list.count = elementCnt; - initULRRCMsg->protocolIEs.list.size = \ - elementCnt * sizeof(InitialULRRCMessageTransferIEs_t *); - /* Initialize the F1Setup members */ - DU_ALLOC(initULRRCMsg->protocolIEs.list.array,initULRRCMsg->protocolIEs.list.size); - if(initULRRCMsg->protocolIEs.list.array == NULLP) - { - DU_LOG(" F1AP : Memory allocation for\ - RRCSetupRequestMessageTransferIEs failed"); - break; - } - for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(InitialULRRCMessageTransferIEs_t)); - if(initULRRCMsg->protocolIEs.list.array[idx] == NULLP) - { - break; - } - } - idx1 = 0; - /*GNB DU UE F1AP ID*/ - initULRRCMsg->protocolIEs.list.array[idx1]->id = \ - ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; - initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx1]->value.present = \ - InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID; - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.GNB_DU_UE_F1AP_ID = gnbDuUeF1apId; - - - /*NRCGI*/ - idx1++; - initULRRCMsg->protocolIEs.list.array[idx1]->id = \ - ProtocolIE_ID_id_NRCGI; - initULRRCMsg->protocolIEs.list.array[idx1]->criticality =Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx1]->value.present = \ - InitialULRRCMessageTransferIEs__value_PR_NRCGI; - - ret =\ - BuildNrcgi(&initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI); - if(ret!=ROK) - { - break; - } + uint8_t elementCnt=0; + uint8_t idx=0; + uint8_t ret= RFAILED; + Reset_t *f1ResetMsg = NULLP; + F1AP_PDU_t *f1apMsg = NULLP; + asn_enc_rval_t encRetVal; + DU_LOG("\nF1AP : Building F1 Reset request \n"); + do + { + DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); + if(f1apMsg == NULLP) + { + break; + } + f1apMsg->present = F1AP_PDU_PR_initiatingMessage; + DU_ALLOC(f1apMsg->choice.initiatingMessage, sizeof(InitiatingMessage_t)); + if(f1apMsg->choice.initiatingMessage == NULLP) + { + break; + } + f1apMsg->choice.initiatingMessage->procedureCode = ProcedureCode_id_Reset; + f1apMsg->choice.initiatingMessage->criticality = Criticality_reject; + f1apMsg->choice.initiatingMessage->value.present = InitiatingMessage__value_PR_Reset; - /*CRNTI*/ - idx1++; - initULRRCMsg->protocolIEs.list.array[idx1]->id = \ - ProtocolIE_ID_id_C_RNTI; - initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ - InitialULRRCMessageTransferIEs__value_PR_C_RNTI; - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.C_RNTI = crnti; - - /*RRCContainer*/ - idx1++; - initULRRCMsg->protocolIEs.list.array[idx1]->id = \ - ProtocolIE_ID_id_RRCContainer; - initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ - InitialULRRCMessageTransferIEs__value_PR_RRCContainer; - - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size = rrcContSize; - DU_ALLOC(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size) - if(!initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf) - { - DU_LOG(" F1AP : Memory allocation for RRCSetupRequestMessageTransferIEs failed"); - break; + f1ResetMsg = &f1apMsg->choice.initiatingMessage->value.choice.Reset; - } - memcpy(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, rrcContainer, - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size); + elementCnt = 3; + f1ResetMsg->protocolIEs.list.count = elementCnt; + f1ResetMsg->protocolIEs.list.size = elementCnt * sizeof(ResetIEs_t *); + + /* Initialize the F1Setup members */ + DU_ALLOC(f1ResetMsg->protocolIEs.list.array,f1ResetMsg->protocolIEs.list.size); + if(f1ResetMsg->protocolIEs.list.array == NULLP) + { + break; + } + for(idx=0; idxprotocolIEs.list.array[idx],sizeof(ResetIEs_t)); + if(f1ResetMsg->protocolIEs.list.array[idx] == NULLP) + { + break; + } + } + /*TransactionID*/ + idx=0; + f1ResetMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_TransactionID; + f1ResetMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; + f1ResetMsg->protocolIEs.list.array[idx]->value.present = ResetIEs__value_PR_TransactionID; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.TransactionID = 1; - /*DUtoCURRCContainer*/ - idx1++; - initULRRCMsg->protocolIEs.list.array[idx1]->id = \ - ProtocolIE_ID_id_DUtoCURRCContainer; - initULRRCMsg->protocolIEs.list.array[idx1]->criticality = Criticality_reject; - initULRRCMsg->protocolIEs.list.array[idx1]->value.present =\ - InitialULRRCMessageTransferIEs__value_PR_DUtoCURRCContainer; + /*Cause*/ + idx++; + f1ResetMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_Cause; + f1ResetMsg->protocolIEs.list.array[idx]->criticality = Criticality_ignore; + f1ResetMsg->protocolIEs.list.array[idx]->value.present = ResetIEs__value_PR_Cause; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.Cause.present = Cause_PR_radioNetwork; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.Cause.choice.radioNetwork = CauseRadioNetwork_action_desirable_for_radio_reasons; - ret = BuildDuToCuRrcContainer(&initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer); - if(ret != ROK) - { - break; - } + /*Reset Type*/ + idx++; + f1ResetMsg->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_ResetType; + f1ResetMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; + f1ResetMsg->protocolIEs.list.array[idx]->value.present = ResetIEs__value_PR_ResetType; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.ResetType.present = ResetType_PR_f1_Interface; + f1ResetMsg->protocolIEs.list.array[idx]->value.choice.ResetType.choice.f1_Interface = ResetAll_reset_all; - xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); + xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - /* Encode the F1SetupRequest type as APER */ - memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); - encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf, encBuf); - /* Encode results */ - if(encRetVal.encoded == ENCODE_FAIL) - { - DU_LOG( "\n F1AP : Could not encode Initial UL RRC Message Transfer\ - structure (at %s)\n",encRetVal.failed_type ? \ - encRetVal.failed_type->name : "unknown"); - break; - } - else - { - - DU_LOG("\n F1AP : Created APER encoded buffer for Initial UL RRC\ - Message transfer\n"); - for(int i=0; i< encBufSize; i++) - { - printf("%x",encBuf[i]); - } - } - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) - { - DU_LOG("\n F1AP : Sending Initial UL RRC Message Transfer Failed"); - break; - } - checkvar=true; - break; - } - - if(f1apMsg != NULLP) - { - if(f1apMsg->choice.initiatingMessage != NULLP) - { - if(initULRRCMsg->protocolIEs.list.array != NULLP) - { - if(idx == elementCnt) - { - idx1=1; - if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.buf!=NULLP) - { - if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.buf!=NULLP) - { - DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.buf, - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.nRCellIdentity.size); - } - DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.buf,\ - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.NRCGI.pLMN_Identity.size); - } - - idx1=3; - if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf) - { - DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.buf, - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.RRCContainer.size) - } - - idx1 = 4; - if(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer.buf) - { - DU_FREE(initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer.buf, - initULRRCMsg->protocolIEs.list.array[idx1]->value.choice.DUtoCURRCContainer.size); - } - for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(InitialULRRCMessageTransferIEs_t)); - } - } - else - { - for(ieId=0; ieIdprotocolIEs.list.array[ieId],sizeof(InitialULRRCMessageTransferIEs_t)); - } - } - DU_FREE(initULRRCMsg->protocolIEs.list.array,initULRRCMsg->protocolIEs.list.size); - } - DU_FREE(f1apMsg->choice.initiatingMessage,sizeof(InitiatingMessage_t)); - } - DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); - } - if(checkvar==true) - return ROK; - else - return RFAILED; -}/* End of BuildAndSendInitialRrcMsgTransfer*/ + /* Encode the F1SetupRequest type as APER */ + memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + encBufSize = 0; + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ + encBuf); + + /* Encode results */ + if(encRetVal.encoded == ENCODE_FAIL) + { + DU_LOG("\nF1AP : Could not encode F1Reset structure (at %s)\n",\ + encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); + break; + } + else + { + DU_LOG("\nF1AP : Created APER encoded buffer for F1Reset\n"); + for(idx=0; idx< encBufSize; idx++) + { + printf("%x",encBuf[idx]); + } + } + + if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) + { + DU_LOG("\nF1AP : Sending F1 Reset request failed"); + break; + } + + ret = ROK; + break; + }while(true); + FreeF1ResetReq(f1apMsg); + return ret; +} /******************************************************************* * - * @brief Free the memory allocated for UE Setup response + * @brief Build And Send F1ResetAck * * @details * - * Function : FreeUeSetupRsp + * Function : BuildAndSendF1ResetAck * * Functionality: - * Free the memory allocated for UE Setup response + * - Build And Send F1ResetRSP * - * @params[in] F1AP PDU for UE setup response * @return ROK - success * RFAILED - failure * * ****************************************************************/ -void FreeUeSetupRsp(F1AP_PDU_t *f1apMsg) +void FreeF1ResetAck(F1AP_PDU_t *f1apMsg) { uint8_t idx; - UEContextSetupResponse_t *ueSetRsp; + ResetAcknowledge_t *f1ResetAck; if(f1apMsg) { if(f1apMsg->choice.successfulOutcome) { - ueSetRsp = &f1apMsg->choice.successfulOutcome->value.choice.\ - UEContextSetupResponse; - if(ueSetRsp->protocolIEs.list.array) + f1ResetAck= &f1apMsg->choice.successfulOutcome->value.choice.ResetAcknowledge; + + if(f1ResetAck->protocolIEs.list.array) { - for(idx = 0; idx < ueSetRsp->protocolIEs.list.size; idx++) + for(idx=0; idxprotocolIEs.list.count ; idx++) { - DU_FREE(ueSetRsp->protocolIEs.list.array[idx],\ - sizeof(UEContextSetupResponseIEs_t)); + if(f1ResetAck->protocolIEs.list.array[idx]) + { + DU_FREE(f1ResetAck->protocolIEs.list.array[idx], sizeof(ResetAcknowledgeIEs_t)); + } } - DU_FREE(ueSetRsp->protocolIEs.list.array, \ - ueSetRsp->protocolIEs.list.size); + DU_FREE(f1ResetAck->protocolIEs.list.array, f1ResetAck->protocolIEs.list.size ); } - DU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); + DU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); } DU_FREE(f1apMsg, sizeof(F1AP_PDU_t)); } @@ -5275,158 +5619,214 @@ void FreeUeSetupRsp(F1AP_PDU_t *f1apMsg) /******************************************************************* * - * @brief Builds and sends the UE Setup Response + * @brief Build And Send F1ResetAck * * @details * - * Function : BuildAndSendUESetRsp - * - * Functionality: Constructs the UE Setup Response and sends - * it to the DU through SCTP. + * Function : BuildAndSendF1ResetAck * - * @params[in] + * Functionality: + * - Build And Send F1ResetRSP * + * @params[in] * @return ROK - success * RFAILED - failure * * ****************************************************************/ -uint8_t BuildAndSendUESetRsp() +uint8_t BuildAndSendF1ResetAck() { - uint8_t ret = RFAILED; - uint8_t elementCnt; - uint8_t idx; - F1AP_PDU_t *f1apMsg = NULL; - UEContextSetupResponse_t *ueSetRsp; - asn_enc_rval_t encRetVal; /* Encoder return value */ - - DU_LOG("\n F1AP : Building UE Context Setup Response\n"); - - while(true) - { + uint8_t idx = 0; + uint8_t elementCnt = 0; + uint8_t ret = RFAILED; + F1AP_PDU_t *f1apMsg = NULL; + ResetAcknowledge_t *f1ResetAck = NULLP; + asn_enc_rval_t encRetVal; + DU_LOG("\nF1AP : Building F1 Reset Acknowledgment \n"); + + do{ + /* Allocate the memory for F1ResetRequest_t */ DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t)); if(f1apMsg == NULLP) { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); break; } - f1apMsg->present = F1AP_PDU_PR_successfulOutcome; - DU_ALLOC(f1apMsg->choice.successfulOutcome, - sizeof(SuccessfulOutcome_t)); + f1apMsg->present = F1AP_PDU_PR_successfulOutcome; + + DU_ALLOC(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t)); if(f1apMsg->choice.successfulOutcome == NULLP) { - DU_LOG(" F1AP : Memory allocation for F1AP-PDU failed"); + DU_LOG("\nF1AP : Memory allocation for F1AP-PDU failed"); break; } + f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; + f1apMsg->choice.successfulOutcome->value.present = SuccessfulOutcome__value_PR_ResetAcknowledge; + f1ResetAck = &f1apMsg->choice.successfulOutcome->value.choice.ResetAcknowledge; - f1apMsg->choice.successfulOutcome->procedureCode = \ - ProcedureCode_id_UEContextSetup; - f1apMsg->choice.successfulOutcome->criticality = Criticality_reject; - f1apMsg->choice.successfulOutcome->value.present = \ - SuccessfulOutcome__value_PR_UEContextSetupResponse; + elementCnt = 1; - ueSetRsp = - &f1apMsg->choice.successfulOutcome->value.choice.UEContextSetupResponse; - elementCnt = 2; - ueSetRsp->protocolIEs.list.count = elementCnt; - ueSetRsp->protocolIEs.list.size = \ - elementCnt * sizeof(UEContextSetupResponse_t *); + f1ResetAck->protocolIEs.list.count = elementCnt; + f1ResetAck->protocolIEs.list.size = elementCnt*sizeof(ResetAcknowledgeIEs_t *); - /* Initialize the UESetup members */ - DU_ALLOC(ueSetRsp->protocolIEs.list.array, \ - ueSetRsp->protocolIEs.list.size); - if(ueSetRsp->protocolIEs.list.array == NULLP) + DU_ALLOC(f1ResetAck->protocolIEs.list.array, f1ResetAck->protocolIEs.list.size ); + if(f1ResetAck->protocolIEs.list.array == NULLP) { - DU_LOG(" F1AP : Memory allocation for UE Setup Response failed"); + DU_LOG("\nF1AP : Memory allocation for F1ResetAckIEs failed"); break; } for(idx=0; idxprotocolIEs.list.array[idx],\ - sizeof(UEContextSetupResponseIEs_t)); - if(ueSetRsp->protocolIEs.list.array[idx] == NULLP) + DU_ALLOC(f1ResetAck->protocolIEs.list.array[idx], sizeof(ResetAcknowledgeIEs_t)); + if(f1ResetAck->protocolIEs.list.array[idx] == NULLP) { - DU_LOG(" F1AP : Memory allocation for UE Setup Response failed"); - break; + break; } } - + /*TransactionID*/ idx = 0; - - /*GNB CU UE F1AP ID*/ - ueSetRsp->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetRsp->protocolIEs.list.array[idx]->value.present = \ - UEContextSetupResponseIEs__value_PR_GNB_CU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_CU_UE_F1AP_ID = CU_ID; - - /*GNB DU UE F1AP ID*/ - idx++; - ueSetRsp->protocolIEs.list.array[idx]->id = \ - ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->criticality = Criticality_reject; - ueSetRsp->protocolIEs.list.array[idx]->value.present = \ - UEContextSetupResponseIEs__value_PR_GNB_DU_UE_F1AP_ID; - ueSetRsp->protocolIEs.list.array[idx]->value.choice.GNB_DU_UE_F1AP_ID = DU_ID; - + f1ResetAck->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_TransactionID; + f1ResetAck->protocolIEs.list.array[idx]->criticality = Criticality_reject; + f1ResetAck->protocolIEs.list.array[idx]->value.present = ResetAcknowledgeIEs__value_PR_TransactionID; + f1ResetAck->protocolIEs.list.array[idx]->value.choice.TransactionID = TRANS_ID; xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg); - /* Encode the UE context setup response type as APER */ - memset((uint8_t *)encBuf, 0, ENC_BUF_MAX_LEN); + /* Encode the F1SetupRequest type as UPER */ + cmMemset((U8 *)encBuf, 0, ENC_BUF_MAX_LEN); encBufSize = 0; - encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf,\ - encBuf); - /* Encode results */ + encRetVal = aper_encode(&asn_DEF_F1AP_PDU, 0, f1apMsg, PrepFinalEncBuf, encBuf); + + /* Check encode results */ if(encRetVal.encoded == ENCODE_FAIL) { - DU_LOG( "\n F1AP : Could not encode UE Context Setup Request structure (at %s)\n",\ + DU_LOG("\nF1AP : Could not encode F1ResetAck structure (at %s)\n",\ encRetVal.failed_type ? encRetVal.failed_type->name : "unknown"); break; } else { - DU_LOG("\n F1AP : Created APER encoded buffer for UE Context Setup Request\n"); + DU_LOG("\nF1AP : Created APER encoded buffer for F1SetupResponse\n"); for(int i=0; i< encBufSize; i++) { printf("%x",encBuf[i]); } } - - /* Sending msg */ - if(SendF1APMsg(DU_APP_MEM_REGION,DU_POOL) != ROK) + /* Sending msg */ + if(SendF1APMsg(DU_APP_MEM_REGION, DU_POOL) != ROK) { - DU_LOG("\n F1AP : Sending UE Context Setup Request Failed"); + DU_LOG("\nF1AP : Sending F1 Reset Acknowledgement failed"); break; } + ret = ROK; break; - } - - FreeUeSetupRsp(f1apMsg); - return ret;; -}/* End of BuildAndSendUESetRsp */ + }while(true); + FreeF1ResetAck(f1apMsg); + return ret; +} /******************************************************************* * -* @brief Handles received F1AP message and sends back response +* @brief Processes GNB DU config update ack +* +* @details +* +* Function : procGNBDUCfgUpdAck +* +* Functionality: Processes GNB DU config update ack +* +* @params[in] F1AP_PDU_t ASN decoded F1AP message +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t procGNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg) +{ + DU_LOG("\nF1AP : GNB-DU config update acknowledgment received"); +#if 0 + if(BuildAndSendF1ResetReq() != ROK) + { + return RFAILED; + } +#endif + /* TODO :Check the deallocation */ + +#if 0 + DU_FREE(gNBDuCfgAck->protocolIEs.list.array,(Size)elementCnt * sizeof(GNBDUConfigurationUpdateAcknowledgeIEs_t)); + DU_FREE(f1apMsg->choice.successfulOutcome,(Size)sizeof(SuccessfulOutcome_t)); + DU_FREE(f1apMsg,(Size)sizeof(F1AP_PDU_t)); +#endif + return ROK; +} +/****************************************************************** +* +* @brief Processes DL RRC Message Transfer sent by CU * * @details * -* Function : F1APMsgHdlr +* Function : procDlRrcMsgTrans * -* Functionality: -* - Decodes received F1AP control message -* - Prepares response message, encodes and sends to SCTP +* Functionality: Processes DL RRC Message Transfer sent by CU * -* @params[in] +* @params[in] F1AP_PDU_t ASN decoded F1AP message * @return ROK - success * RFAILED - failure * * ****************************************************************/ +uint8_t procF1ResetReq(F1AP_PDU_t *f1apMsg) +{ + /* we are currently not supporting Ue release. right now we are supporting only init case of fireset */ + uint8_t idx = 0; + uint8_t ret = ROK; + Reset_t *f1ResetMsg = NULLP; + + DU_LOG("\nProcessing F1 reset request"); + f1ResetMsg = &f1apMsg->choice.initiatingMessage->value.choice.Reset; + + for(idx=0; idxprotocolIEs.list.count; idx++) + { + switch(f1ResetMsg->protocolIEs.list.array[idx]->id) + { + case ProtocolIE_ID_id_TransactionID: + break; + + case ProtocolIE_ID_id_Cause: + break; + + case ProtocolIE_ID_id_ResetType: + { + DU_LOG("\nReceived F1 Reset request"); + break; + } + + default: + break; + } + } + ret = BuildAndSendF1ResetAck(); + DU_LOG("\nUE release is not supported for now"); + return ret; +} +/******************************************************************* + * + * @brief Handles received F1AP message and sends back response + * + * @details + * + * Function : F1APMsgHdlr + * + * Functionality: + * - Decodes received F1AP control message + * - Prepares response message, encodes and sends to SCTP + * + * @params[in] + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ void F1APMsgHdlr(Buffer *mBuf) { int i; @@ -5439,7 +5839,7 @@ void F1APMsgHdlr(Buffer *mBuf) DU_LOG("\nF1AP : Received F1AP message buffer"); ODU_PRINT_MSG(mBuf, 0,0); - + /* Copy mBuf into char array to decode it */ ODU_FIND_MSG_LEN(mBuf, &recvBufLen); DU_ALLOC(recvBuf, (Size)recvBufLen); @@ -5482,6 +5882,11 @@ void F1APMsgHdlr(Buffer *mBuf) { switch(f1apMsg->choice.successfulOutcome->value.present) { + case SuccessfulOutcome__value_PR_ResetAcknowledge: + { + DU_LOG("\nF1AP : F1ResetAcknowledge is received successfully "); + break; + } case SuccessfulOutcome__value_PR_F1SetupResponse: { #ifndef ODU_TEST_STUB @@ -5508,6 +5913,12 @@ void F1APMsgHdlr(Buffer *mBuf) { switch(f1apMsg->choice.initiatingMessage->value.present) { + case InitiatingMessage__value_PR_Reset: + { + DU_LOG("\nF1AP : F1 reset request received"); + procF1ResetReq(f1apMsg); + break; + } case InitiatingMessage__value_PR_DLRRCMessageTransfer: { procDlRrcMsgTrans(f1apMsg); @@ -5517,7 +5928,7 @@ void F1APMsgHdlr(Buffer *mBuf) { procUeContextSetupReq(f1apMsg); break; - } + } default: { @@ -5538,7 +5949,7 @@ void F1APMsgHdlr(Buffer *mBuf) }/* End of switch(f1apMsg->present) */ } /* End of F1APMsgHdlr */ - + /********************************************************************** End of file **********************************************************************/ -- 2.16.6