summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
d2087c8)
Change-Id: Ifb703874cbadea75b7812a6bb7ab7799e470acd3
Signed-off-by: Balaji Shankaran <balaji.shankaran@radisys.com>
DU_LOG("\nDU_APP: Memory allocation failure");
return RFAILED;
}
DU_LOG("\nDU_APP: Memory allocation failure");
return RFAILED;
}
- strcpy(duCfgParam.srvdCellLst[i].duSysInfo.mibMsg, encBuf);
- duCfgParam.srvdCellLst[i].duSysInfo.mibLen = encBufSize;
+ strcpy((char *)duCfgParam.srvdCellLst[i].duSysInfo.mibMsg, encBuf);
+ duCfgParam.srvdCellLst[i].duSysInfo.mibLen = encBufSize;
/*gnb DU System Info mib msg*/
BuildSib1Msg();
/*gnb DU System Info mib msg*/
BuildSib1Msg();
U8 elementCnt;
U8 idx;
U8 ieId;
U8 elementCnt;
U8 idx;
U8 ieId;
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\nE2AP : Building E2 Setup Request\n");
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\nE2AP : Building E2 Setup Request\n");
U8 elementCnt;
U8 idx;
U8 ieId;
U8 elementCnt;
U8 idx;
U8 ieId;
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\nE2AP : Building Ric Indication Message\n");
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\nE2AP : Building Ric Indication Message\n");
DU_LOG("\nEGTP : Received EGTP open server request");
sockType = CM_INET_DGRAM;
DU_LOG("\nEGTP : Received EGTP open server request");
sockType = CM_INET_DGRAM;
-
- /* Opening and Binding receiver socket */
- if(ret = egtpSrvOpenPrc(sockType, &(egtpCb.recvTptSrvr)) != ROK)
+ ret = egtpSrvOpenPrc(sockType, &(egtpCb.recvTptSrvr));
+ /* Opening and Binding receiver socket */
+ if(ret != ROK)
{
DU_LOG("\nEGTP : Failed while opening receiver transport server");
{
DU_LOG("\nEGTP : Failed while opening receiver transport server");
/* Opening and Binding sender socket */
/* Opening and Binding sender socket */
- if(ret = egtpSrvOpenPrc(sockType, &(egtpCb.dstCb.sendTptSrvr)) != ROK)
+ ret = egtpSrvOpenPrc(sockType, &(egtpCb.dstCb.sendTptSrvr));
+ if(ret != ROK)
{
DU_LOG("\nEGTP : Failed while opening sender transport server");
{
DU_LOG("\nEGTP : Failed while opening sender transport server");
}
DU_LOG("\nEGTP : Receiver socket[%d] and Sender socket[%d] open", egtpCb.recvTptSrvr.sockFd.fd, egtpCb.dstCb.sendTptSrvr.sockFd.fd);
}
DU_LOG("\nEGTP : Receiver socket[%d] and Sender socket[%d] open", egtpCb.recvTptSrvr.sockFd.fd, egtpCb.dstCb.sendTptSrvr.sockFd.fd);
rspPst.event = EVTSRVOPENCFM;
packEgtpSrvOpenCfm(&rspPst, cfm);
rspPst.event = EVTSRVOPENCFM;
packEgtpSrvOpenCfm(&rspPst, cfm);
}
/*******************************************************************
}
/*******************************************************************
S16 egtpSrvOpenPrc(U8 sockType, EgtpTptSrvr *server)
{
S16 egtpSrvOpenPrc(U8 sockType, EgtpTptSrvr *server)
{
- S8 ret;
-
- if(ret = (cmInetSocket(sockType, &(server->sockFd), protType)) != ROK)
+ S8 ret=ROK;
+ ret = cmInetSocket(sockType, &(server->sockFd), protType);
+ if(ret != ROK)
{
DU_LOG("\nEGTP : Failed to open UDP socket");
{
DU_LOG("\nEGTP : Failed to open UDP socket");
-
- if(ret = cmInetBind(&(server->sockFd), &(server->addr)) != ROK)
+ ret = cmInetBind(&(server->sockFd), &(server->addr));
+ if(ret != ROK)
{
DU_LOG("\nEGTP : Failed to bind socket");
{
DU_LOG("\nEGTP : Failed to bind socket");
}
/**************************************************************************
}
/**************************************************************************
extern char encBuf[ENC_BUF_MAX_LEN];
extern DuCfgParams duCfgParam;
extern char encBuf[ENC_BUF_MAX_LEN];
extern DuCfgParams duCfgParam;
+S16 sctpSend(Buffer *mBuf, U8 itfType);
/*******************************************************************
*
* @brief Builds Uplink Info for NR
/*******************************************************************
*
* @brief Builds Uplink Info for NR
duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\
freqBand[0].nrFreqBand;
ulnrfreq->freqBandListNr.list.array[idx]->supportedSULBandList.list.count = SUL_BAND_COUNT;
duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.ulNrFreqInfo.\
freqBand[0].nrFreqBand;
ulnrfreq->freqBandListNr.list.array[idx]->supportedSULBandList.list.count = SUL_BAND_COUNT;
}
/*******************************************************************
*
}
/*******************************************************************
*
* ****************************************************************/
S16 BuildDLNRInfo(NRFreqInfo_t *dlnrfreq)
{
* ****************************************************************/
S16 BuildDLNRInfo(NRFreqInfo_t *dlnrfreq)
{
dlnrfreq->nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.\
fdd.dlNrFreqInfo.nrArfcn;
dlnrfreq->freqBandListNr.list.count = 1;
dlnrfreq->nRARFCN = duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.\
fdd.dlNrFreqInfo.nrArfcn;
dlnrfreq->freqBandListNr.list.count = 1;
DU_FREE(dlnrfreq->freqBandListNr.list.array,sizeof(struct FreqBandNrItem *));
RETVALUE(RFAILED);
}
DU_FREE(dlnrfreq->freqBandListNr.list.array,sizeof(struct FreqBandNrItem *));
RETVALUE(RFAILED);
}
- dlnrfreq->freqBandListNr.list.array[idx]->freqBandIndicatorNr = \
- duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\
- freqBand[0].nrFreqBand;
- dlnrfreq->freqBandListNr.list.array[idx]->supportedSULBandList.list.count = SUL_BAND_COUNT;
- RETVALUE(ROK);
+ dlnrfreq->freqBandListNr.list.array[idx]->freqBandIndicatorNr = \
+ duCfgParam.srvdCellLst[0].duCellInfo.f1Mode.mode.fdd.dlNrFreqInfo.\
+ freqBand[0].nrFreqBand;
+ dlnrfreq->freqBandListNr.list.array[idx]->supportedSULBandList.list.count = SUL_BAND_COUNT;
+ return ROK;
}
/*******************************************************************
}
/*******************************************************************
U8 byteSize = 5;
U8 val = 16;
U8 byteSize = 5;
U8 val = 16;
- GNB_DU_Served_Cells_Item_t *srvCellItem;
/* Allocate Buffer Memory */
nrcgi->pLMN_Identity.size = PLMN_SIZE * sizeof(U8);
DU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size);
/* Allocate Buffer Memory */
nrcgi->pLMN_Identity.size = PLMN_SIZE * sizeof(U8);
DU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size);
&nrcgi->pLMN_Identity); // Building PLMN function
if(ret != ROK)
{
&nrcgi->pLMN_Identity); // Building PLMN function
if(ret != ROK)
{
}
/*nrCellIdentity*/
//ret = BuildNrCellId(&nrcgi->nRCellIdentity);
nrcgi->nRCellIdentity.size = byteSize * sizeof(U8);
DU_ALLOC(nrcgi->nRCellIdentity.buf, nrcgi->nRCellIdentity.size);
}
/*nrCellIdentity*/
//ret = BuildNrCellId(&nrcgi->nRCellIdentity);
nrcgi->nRCellIdentity.size = byteSize * sizeof(U8);
DU_ALLOC(nrcgi->nRCellIdentity.buf, nrcgi->nRCellIdentity.size);
+ if(nrcgi->nRCellIdentity.buf == NULLP)
+ {
+ return RFAILED;
+ }
ret = fillBitString(&nrcgi->nRCellIdentity, unused, byteSize, val);
if(ret != ROK)
{
ret = fillBitString(&nrcgi->nRCellIdentity, unused, byteSize, val);
if(ret != ROK)
{
- DU_FREE(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\
- srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.size * sizeof(U8));
- RETVALUE(RFAILED);
+ DU_FREE(nrcgi->nRCellIdentity.buf, nrcgi->nRCellIdentity.size);
+ return ret;
}
/*******************************************************************
*
}
/*******************************************************************
*
servcell->fiveGS_TAC->buf[0] = 0;
servcell->fiveGS_TAC->buf[1] = 0;
servcell->fiveGS_TAC->buf[2] = duCfgParam.srvdCellLst[0].duCellInfo.tac;
servcell->fiveGS_TAC->buf[0] = 0;
servcell->fiveGS_TAC->buf[1] = 0;
servcell->fiveGS_TAC->buf[2] = duCfgParam.srvdCellLst[0].duCellInfo.tac;
}
/*******************************************************************
*
}
/*******************************************************************
*
S16 BuildNrMode(NR_Mode_Info_t *mode)
{
S16 ret;
S16 BuildNrMode(NR_Mode_Info_t *mode)
{
S16 ret;
- GNB_DU_Served_Cells_Item_t *srvCellItem;
/* FDD Mode */
mode->present = NR_Mode_Info_PR_fDD;
if(mode->present == NR_Mode_Info_PR_fDD)
/* FDD Mode */
mode->present = NR_Mode_Info_PR_fDD;
if(mode->present == NR_Mode_Info_PR_fDD)
{
DU_FREE(mode->choice.fDD,\
sizeof(FDD_Info_t));
{
DU_FREE(mode->choice.fDD,\
sizeof(FDD_Info_t));
- DU_FREE(srvCellItem->served_Cell_Information.\
- nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\
+ DU_FREE(mode->choice.fDD->uL_NRFreqInfo.\
freqBandListNr.list.array,sizeof(struct FreqBandNrItem *));
freqBandListNr.list.array,sizeof(struct FreqBandNrItem *));
- DU_FREE(srvCellItem->served_Cell_Information.\
- nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\
+ DU_FREE(mode->choice.fDD->uL_NRFreqInfo.\
freqBandListNr.list.array[0],sizeof(struct FreqBandNrItem));
RETVALUE(RFAILED);
}
freqBandListNr.list.array[0],sizeof(struct FreqBandNrItem));
RETVALUE(RFAILED);
}
mode->choice.fDD->dL_Transmission_Bandwidth.nRNRB = \
duCfgParam.srvdCellLst[0].duCellInfo.\
f1Mode.mode.fdd.dlTxBw.nrb;
mode->choice.fDD->dL_Transmission_Bandwidth.nRNRB = \
duCfgParam.srvdCellLst[0].duCellInfo.\
f1Mode.mode.fdd.dlTxBw.nrb;
}
/*******************************************************************
*
}
/*******************************************************************
*
U8 extensionId;
U8 sliceId;
U8 sdId;
U8 extensionId;
U8 sliceId;
U8 sdId;
(*ieExtend)->list.count = extensionCnt;
(*ieExtend)->list.size = \
extensionCnt * sizeof(struct ServedPLMNs_ItemExtIEs *);
(*ieExtend)->list.count = extensionCnt;
(*ieExtend)->list.size = \
extensionCnt * sizeof(struct ServedPLMNs_ItemExtIEs *);
sdId++;
(*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\
list.array[sliceId]->sNSSAI.sD->buf[sdId] = 9;
sdId++;
(*ieExtend)->list.array[idx]->extensionValue.choice.SliceSupportList.\
list.array[sliceId]->sNSSAI.sD->buf[sdId] = 9;
}
/*******************************************************************
*
}
/*******************************************************************
*
S16 ret;
U8 plmnidx;
U8 servPlmnid;
S16 ret;
U8 plmnidx;
U8 servPlmnid;
- U8 servPlmnCnt;
- GNB_DU_Served_Cells_Item_t *srvCellItem;
- servPlmnCnt = 1;
srvplmn->list.count = servPlmnCnt;
srvplmn->list.size = \
servPlmnCnt*sizeof(struct ServedPLMNs_Item *);
srvplmn->list.count = servPlmnCnt;
srvplmn->list.size = \
servPlmnCnt*sizeof(struct ServedPLMNs_Item *);
{
DU_FREE(srvplmn->list.\
array[0]->pLMN_Identity.buf,(Size)\
{
DU_FREE(srvplmn->list.\
array[0]->pLMN_Identity.buf,(Size)\
- srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.size * sizeof(U8));
+ srvplmn->list.array[0]->pLMN_Identity.size * sizeof(U8));
for(plmnidx=0; plmnidx<servPlmnCnt; plmnidx++)
{
DU_FREE(srvplmn->list.array[plmnidx],\
for(plmnidx=0; plmnidx<servPlmnCnt; plmnidx++)
{
DU_FREE(srvplmn->list.array[plmnidx],\
sizeof(struct ServedPLMNs_Item *));
RETVALUE(RFAILED);
}
sizeof(struct ServedPLMNs_Item *));
RETVALUE(RFAILED);
}
}
/*******************************************************************
*
}
/*******************************************************************
*
U8 idx;
U8 plmnidx;
U8 plmnId;
U8 idx;
U8 plmnidx;
U8 plmnId;
- U8 plmnCnt;
- U8 servPlmnCnt;
- U8 extensionCnt;
+ U8 plmnCnt=1;
+ U8 servPlmnCnt=1;
+ U8 extensionCnt=1;
U8 sliceId;
U8 servId;
U8 ieId;
GNB_DU_Served_Cells_Item_t *srvCellItem;
U8 sliceId;
U8 servId;
U8 ieId;
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, plmnCnt * sizeof(GNB_DU_Served_Cells_ItemIEs_t *));
duServedCell->list.size = plmnCnt * sizeof(GNB_DU_Served_Cells_ItemIEs_t *);
duServedCell->list.count = plmnCnt;
DU_ALLOC(duServedCell->list.array, plmnCnt * sizeof(GNB_DU_Served_Cells_ItemIEs_t *));
}
/* MIB */
srvCellItem->gNB_DU_System_Information->mIB_message.size =\
}
/* MIB */
srvCellItem->gNB_DU_System_Information->mIB_message.size =\
- strlen(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);
if(!srvCellItem->gNB_DU_System_Information->mIB_message.buf)
DU_ALLOC(srvCellItem->gNB_DU_System_Information->mIB_message.buf,
srvCellItem->gNB_DU_System_Information->mIB_message.size);
if(!srvCellItem->gNB_DU_System_Information->mIB_message.buf)
DU_LOG("\nF1AP: Memory allocation failure for mIB message");
return RFAILED;
}
DU_LOG("\nF1AP: Memory allocation failure for mIB message");
return RFAILED;
}
- strcpy(srvCellItem->gNB_DU_System_Information->mIB_message.buf,
- duCfgParam.srvdCellLst[0].duSysInfo.mibMsg);
+ strcpy((char *)srvCellItem->gNB_DU_System_Information->mIB_message.buf,
+ (char *)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg);
/* SIB1 */
srvCellItem->gNB_DU_System_Information->sIB1_message.size =\
/* SIB1 */
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(duCfgParam.srvdCellLst[0].duSysInfo.mibMsg,
DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg,
srvCellItem->gNB_DU_System_Information->sIB1_message.size);
DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.mibMsg,
- strlen(duCfgParam.srvdCellLst[0].duSysInfo.mibMsg));
- RETVALUE(ROK);
+ strlen((char *)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg));
+ return ROK;
}
/*******************************************************************
*
}
/*******************************************************************
*
rrcLatest++;
rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice.\
Latest_RRC_Version_Enhanced.buf[rrcLatest] = 0;
rrcLatest++;
rrcVer->iE_Extensions->list.array[rrcExt]->extensionValue.choice.\
Latest_RRC_Version_Enhanced.buf[rrcLatest] = 0;
}
/*******************************************************************
*
}
/*******************************************************************
*
DU_LOG("\nF1AP : Failed to allocate memory");
RETVALUE(RFAILED);
}
DU_LOG("\nF1AP : Failed to allocate memory");
RETVALUE(RFAILED);
}
U8 servId;
U8 sliceId;
U8 elementCnt;
U8 servId;
U8 sliceId;
U8 elementCnt;
- U8 plmnCnt;
- U8 servPlmnCnt;
- U8 extensionCnt;
+ U8 plmnCnt=1;
+ U8 servPlmnCnt=1;
+ U8 extensionCnt=1;
F1AP_PDU_t *f1apMsg = NULL;
F1SetupRequest_t *f1SetupReq;
GNB_DU_Served_Cells_List_t *duServedCell;
GNB_DU_Served_Cells_Item_t *srvCellItem;
RRC_Version_t *rrcVer;
asn_enc_rval_t encRetVal; /* Encoder return value */
F1AP_PDU_t *f1apMsg = NULL;
F1SetupRequest_t *f1SetupReq;
GNB_DU_Served_Cells_List_t *duServedCell;
GNB_DU_Served_Cells_Item_t *srvCellItem;
RRC_Version_t *rrcVer;
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\nF1AP : Building F1 Setup Request\n");
DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t));
DU_LOG("\nF1AP : Building F1 Setup Request\n");
DU_ALLOC(f1apMsg, sizeof(F1AP_PDU_t));
f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest;
f1SetupReq = &f1apMsg->choice.initiatingMessage->value.choice.F1SetupRequest;
- elementCnt = (duCfgParam.duName[0] != NULL) ? 5 : 4;
+ elementCnt = (duCfgParam.duName != NULL) ? 5 : 4;
f1SetupReq->protocolIEs.list.count = elementCnt;
f1SetupReq->protocolIEs.list.size = elementCnt * sizeof(F1SetupRequestIEs_t *);
f1SetupReq->protocolIEs.list.count = elementCnt;
f1SetupReq->protocolIEs.list.size = elementCnt * sizeof(F1SetupRequestIEs_t *);
duCfgParam.duId;
/*DU Name*/
duCfgParam.duId;
/*DU Name*/
- if(duCfgParam.duName[0] != NULL)
+ if(duCfgParam.duName != NULL)
{
idx++;
f1SetupReq->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_gNB_DU_Name ;
{
idx++;
f1SetupReq->protocolIEs.list.array[idx]->id = ProtocolIE_ID_id_gNB_DU_Name ;
duServedCell = &f1SetupReq->protocolIEs.list.\
array[idx]->value.choice.GNB_DU_Served_Cells_List;
ret = BuildServedCellList(duServedCell);
duServedCell = &f1SetupReq->protocolIEs.list.\
array[idx]->value.choice.GNB_DU_Served_Cells_List;
ret = BuildServedCellList(duServedCell);
+ srvCellItem = &duServedCell->list.array[idx]->value. \
+ choice.GNB_DU_Served_Cells_Item;
if(ret != ROK)
{
DU_FREE(f1SetupReq->protocolIEs.list.array[--idx]->value.\
if(ret != ROK)
{
DU_FREE(f1SetupReq->protocolIEs.list.array[--idx]->value.\
plmnCnt*sizeof(GNB_DU_Served_Cells_ItemIEs_t *));
#endif
plmnCnt*sizeof(GNB_DU_Served_Cells_ItemIEs_t *));
#endif
- if(duCfgParam.duName[0] != NULL)
+ if(duCfgParam.duName != NULL)
{
DU_FREE(f1SetupReq->protocolIEs.list.array[idx]->value.choice.\
GNB_DU_Name.buf, sizeof(duCfgParam.duName));
{
DU_FREE(f1SetupReq->protocolIEs.list.array[idx]->value.choice.\
GNB_DU_Name.buf, sizeof(duCfgParam.duName));
DU_LOG("\nF1AP : Sending F1 Setup request failed");
RETVALUE(RFAILED);
}
DU_LOG("\nF1AP : Sending F1 Setup request failed");
RETVALUE(RFAILED);
}
}/* End of BuildAndSendF1SetupReq */
/*******************************************************************
}/* End of BuildAndSendF1SetupReq */
/*******************************************************************
/*pLMN_Identity*/
modifyItem->oldNRCGI.pLMN_Identity.size = 3;
/*pLMN_Identity*/
modifyItem->oldNRCGI.pLMN_Identity.size = 3;
- DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf,3*sizeof(uint8_t));
+ DU_ALLOC(modifyItem->oldNRCGI.pLMN_Identity.buf, 3*sizeof(uint8_t));
if(modifyItem->oldNRCGI.pLMN_Identity.buf == NULLP)
{
for(idy=0; idy<modifyCnt ;idy++)
if(modifyItem->oldNRCGI.pLMN_Identity.buf == NULLP)
{
for(idy=0; idy<modifyCnt ;idy++)
DU_LOG("\nF1AP : Sending GND-DU Config Update failed");
RETVALUE(RFAILED);
}
DU_LOG("\nF1AP : Sending GND-DU Config Update failed");
RETVALUE(RFAILED);
}
}/* End of BuildAndSendDUConfigUpdate */
/*******************************************************************
}/* End of BuildAndSendDUConfigUpdate */
/*******************************************************************
* ****************************************************************/
S16 BuildAndSendULRRCMessageTransfer()
{
* ****************************************************************/
S16 BuildAndSendULRRCMessageTransfer()
{
U8 elementCnt;
U8 ieId;
U8 idx;
U8 elementCnt;
U8 ieId;
U8 idx;
DU_LOG("\n F1AP : Sending UL RRC Message Transfer Failed");
RETVALUE(RFAILED);
}
DU_LOG("\n F1AP : Sending UL RRC Message Transfer Failed");
RETVALUE(RFAILED);
}
}/* End of BuildAndSendULRRCMessageTransfer*/
/*******************************************************************
}/* End of BuildAndSendULRRCMessageTransfer*/
/*******************************************************************
DU_FREE(initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,initULRRCMsg->protocolIEs.list.array[idx]->\
value.choice.NRCGI.nRCellIdentity.size);
DU_FREE(initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,initULRRCMsg->protocolIEs.list.array[idx]->\
value.choice.NRCGI.nRCellIdentity.size);
- DU_FREE(initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI.\
+ DU_FREE(initULRRCMsg->protocolIEs.list.array[idx]->value.choice.NRCGI.\
pLMN_Identity.buf,initULRRCMsg->protocolIEs.list.array[idx]->\
value.choice.NRCGI.pLMN_Identity.size);
for(idx=0; idx<elementCnt; idx++)
pLMN_Identity.buf,initULRRCMsg->protocolIEs.list.array[idx]->\
value.choice.NRCGI.pLMN_Identity.size);
for(idx=0; idx<elementCnt; idx++)
DU_LOG("\n F1AP : Sending Initial UL RRC Message Transfer Failed");
RETVALUE(RFAILED);
}
DU_LOG("\n F1AP : Sending Initial UL RRC Message Transfer Failed");
RETVALUE(RFAILED);
}
}/* End of BuildAndSendRRCSetupReq*/
/*******************************************************************
}/* End of BuildAndSendRRCSetupReq*/
/*******************************************************************
idx = 0;
spCellLst->list.array[idx]->id = ProtocolIE_ID_id_SCell_ToBeSetup_Item;
spCellLst->list.array[idx]->criticality = Criticality_ignore;
idx = 0;
spCellLst->list.array[idx]->id = ProtocolIE_ID_id_SCell_ToBeSetup_Item;
spCellLst->list.array[idx]->criticality = Criticality_ignore;
- spCellLst->list.array[idx]->value.present = \
+ spCellLst->list.array[idx]->value.present =\
SCell_ToBeSetup_ItemIEs__value_PR_SCell_ToBeSetup_Item;
/* Special Cell ID -NRCGI */
ret = BuildNrcgi(&spCellLst->list.array[idx]->value.choice.SCell_ToBeSetup_Item.sCell_ID);
SCell_ToBeSetup_ItemIEs__value_PR_SCell_ToBeSetup_Item;
/* Special Cell ID -NRCGI */
ret = BuildNrcgi(&spCellLst->list.array[idx]->value.choice.SCell_ToBeSetup_Item.sCell_ID);
}
/*Special Cell Index*/
spCellLst->list.array[idx]->value.choice.SCell_ToBeSetup_Item.sCellIndex = 1;
}
/*Special Cell Index*/
spCellLst->list.array[idx]->value.choice.SCell_ToBeSetup_Item.sCellIndex = 1;
}/* End of BuildSplCellList*/
/*******************************************************************
}/* End of BuildSplCellList*/
/*******************************************************************
srbSet->list.array[idx]->value.present = \
SRBs_ToBeSetup_ItemIEs__value_PR_SRBs_ToBeSetup_Item;
srbSet->list.array[idx]->value.choice.SRBs_ToBeSetup_Item.sRBID = 2;
srbSet->list.array[idx]->value.present = \
SRBs_ToBeSetup_ItemIEs__value_PR_SRBs_ToBeSetup_Item;
srbSet->list.array[idx]->value.choice.SRBs_ToBeSetup_Item.sRBID = 2;
}/* End of BuildSRBSetup*/
/*******************************************************************
}/* End of BuildSRBSetup*/
/*******************************************************************
Pre_emptionVulnerability_not_pre_emptable;
/* TO DO: GBR_QoSFlowInformation */
Pre_emptionVulnerability_not_pre_emptable;
/* TO DO: GBR_QoSFlowInformation */
}/*End of BuildQOSInfo*/
/*******************************************************************
}/*End of BuildQOSInfo*/
/*******************************************************************
snssai->sD->buf[0] = 3;
snssai->sD->buf[1] = 6;
snssai->sD->buf[2] = 9;
snssai->sD->buf[0] = 3;
snssai->sD->buf[1] = 6;
snssai->sD->buf[2] = 9;
}/*End of BuildSNSSAI*/
/*******************************************************************
}/*End of BuildSNSSAI*/
/*******************************************************************
DU_FREE(flowMap->list.array,flowMap->list.size);
RETVALUE(RFAILED);
}
DU_FREE(flowMap->list.array,flowMap->list.size);
RETVALUE(RFAILED);
}
}/*End of BuildFlowsMap*/
/*******************************************************************
}/*End of BuildFlowsMap*/
/*******************************************************************
* ****************************************************************/
S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo)
{
* ****************************************************************/
S16 BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo)
{
U8 idx;
U8 ulidx;
U8 ulCnt;
U8 idx;
U8 ulidx;
U8 ulCnt;
ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\
gTP_TEID.buf[3] = 1;
ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\
gTP_TEID.buf[3] = 1;
}/*End of BuildULTnlInfo*/
/*******************************************************************
}/*End of BuildULTnlInfo*/
/*******************************************************************
RETVALUE(RFAILED);
}
drbSetItem->uLConfiguration->uLUEConfiguration = ULUEConfiguration_no_data;
RETVALUE(RFAILED);
}
drbSetItem->uLConfiguration->uLUEConfiguration = ULUEConfiguration_no_data;
}/* End of BuildDRBSetup*/
/*******************************************************************
}/* End of BuildDRBSetup*/
/*******************************************************************
U8 ulCnt;
F1AP_PDU_t *f1apMsg = NULL;
UEContextSetupRequest_t *ueSetReq;
U8 ulCnt;
F1AP_PDU_t *f1apMsg = NULL;
UEContextSetupRequest_t *ueSetReq;
- SCell_ToBeSetup_List_t *spCellLst;
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\n F1AP : Building UE Context Setup Request\n");
asn_enc_rval_t encRetVal; /* Encoder return value */
DU_LOG("\n F1AP : Building UE Context Setup Request\n");
BuildNrcgi(&ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI);
if(ret != ROK)
{
BuildNrcgi(&ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI);
if(ret != ROK)
{
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
choice.NRCGI.nRCellIdentity.size));
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
choice.NRCGI.nRCellIdentity.size));
ret = BuildSplCellList(&ueSetReq->protocolIEs.\
list.array[idx]->value.choice.SCell_ToBeSetup_List);
if(ret != ROK)
ret = BuildSplCellList(&ueSetReq->protocolIEs.\
list.array[idx]->value.choice.SCell_ToBeSetup_List);
if(ret != ROK)
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
array[idx]->value.choice.SCell_ToBeSetup_List.list.size);
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
array[idx]->value.choice.SCell_ToBeSetup_List.list.size);
idx=idx-4;
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
idx=idx-4;
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
ret = BuildSRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.\
choice.SRBs_ToBeSetup_List);
if(ret != ROK)
ret = BuildSRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.\
choice.SRBs_ToBeSetup_List);
if(ret != ROK)
for(srbId=0; srbId<srbCnt; srbId++)
{
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
for(srbId=0; srbId<srbCnt; srbId++)
{
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
array[idx]->value.choice.SRBs_ToBeSetup_List.list.size);
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
array[idx]->value.choice.SRBs_ToBeSetup_List.list.size);
- //idx=6
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ idx=6;
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\
- ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size);
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size);
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\
- ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size);
for(spId=0; spId<cellCnt; spId++)
{
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size);
for(spId=0; spId<cellCnt; spId++)
{
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[spId],sizeof(struct
SCell_ToBeSetup_ItemIEs));
}
SCell_ToBeSetup_List.list.array[spId],sizeof(struct
SCell_ToBeSetup_ItemIEs));
}
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
- array[--idx]->value.choice.SCell_ToBeSetup_List.list.size);
- //idx=2
- idx=idx-4;
+ array[idx]->value.choice.SCell_ToBeSetup_List.list.size);
+ idx=2;
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
choice.NRCGI.nRCellIdentity.size));
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
choice.NRCGI.nRCellIdentity.size));
ret = BuildDRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.\
choice.DRBs_ToBeSetup_List);
if(ret != ROK)
ret = BuildDRBSetup(&ueSetReq->protocolIEs.list.array[idx]->value.\
choice.DRBs_ToBeSetup_List);
if(ret != ROK)
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
DRBs_ToBeSetup_List.list.array[0]->value.choice.\
DRBs_ToBeSetup_Item.uLConfiguration,\
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
DRBs_ToBeSetup_List.list.array[0]->value.choice.\
DRBs_ToBeSetup_Item.uLConfiguration,\
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
DRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
array[idx]->value.choice.DRBs_ToBeSetup_List.list.size);
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
DRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
array[idx]->value.choice.DRBs_ToBeSetup_List.list.size);
for(srbId=0; srbId<srbCnt; srbId++)
{
for(srbId=0; srbId<srbCnt; srbId++)
{
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SRBs_ToBeSetup_List.list.array[srbId],\
sizeof(struct SRBs_ToBeSetup_ItemIEs));
}
SRBs_ToBeSetup_List.list.array[srbId],\
sizeof(struct SRBs_ToBeSetup_ItemIEs));
}
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
SRBs_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
- array[--idx]->value.choice.SRBs_ToBeSetup_List.list.size);
- //idx=6
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ array[idx]->value.choice.SRBs_ToBeSetup_List.list.size);
+ idx=6;
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.buf,\
- ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size);
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.nRCellIdentity.size);
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.buf,\
- ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size);
for(spId=0; spId<cellCnt; spId++)
{
SCell_ToBeSetup_List.list.array[0]->value.choice.\
SCell_ToBeSetup_Item.sCell_ID.pLMN_Identity.size);
for(spId=0; spId<cellCnt; spId++)
{
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array[spId],sizeof(struct
SCell_ToBeSetup_ItemIEs));
}
SCell_ToBeSetup_List.list.array[spId],sizeof(struct
SCell_ToBeSetup_ItemIEs));
}
- DU_FREE(ueSetReq->protocolIEs.list.array[--idx]->value.choice.\
+ DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.\
SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
SCell_ToBeSetup_List.list.array,ueSetReq->protocolIEs.list.\
- array[--idx]->value.choice.SCell_ToBeSetup_List.list.size);
- //idx =2
- idx = idx-4;
+ array[idx]->value.choice.SCell_ToBeSetup_List.list.size);
+ idx =2;
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
choice.NRCGI.nRCellIdentity.size));
DU_FREE(ueSetReq->protocolIEs.list.array[idx]->value.choice.NRCGI.\
nRCellIdentity.buf,sizeof(ueSetReq->protocolIEs.list.array[idx]->value.\
choice.NRCGI.nRCellIdentity.size));
DU_LOG("\n F1AP : Sending UE Context Setup Request Failed");
RETVALUE(RFAILED);
}
DU_LOG("\n F1AP : Sending UE Context Setup Request Failed");
RETVALUE(RFAILED);
}
}/* End of BuildAndSendUESetReq*/
/*******************************************************************
}/* End of BuildAndSendUESetReq*/
/*******************************************************************
S16 procGNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg)
{
S16 procGNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg)
{
- F1GnbDuCfgUpdAck duCfgUpdAckDb;
- GNBDUConfigurationUpdateAcknowledge_t *gnbDuCfgUpdAckMsg;
DU_LOG("\nF1AP : GNB-DU config update acknowledgment received");
DU_LOG("\nF1AP : GNB-DU config update acknowledgment received");
- /* Store the received info in local database */
- gnbDuCfgUpdAckMsg = &f1apMsg->choice.successfulOutcome->value.choice.GNBDUConfigurationUpdateAcknowledge;
- duCfgUpdAckDb.transId = gnbDuCfgUpdAckMsg->protocolIEs.list.array[0]->value.choice.TransactionID;
/* TODO :Check the deallocation */
#if 0
/* TODO :Check the deallocation */
#if 0
(Size)sizeof(SuccessfulOutcome_t));
SPutSBuf(DU_APP_MEM_REGION,DU_POOL,(Data *)&f1apMsg,(Size)sizeof(F1AP_PDU_t));
#endif
(Size)sizeof(SuccessfulOutcome_t));
SPutSBuf(DU_APP_MEM_REGION,DU_POOL,(Data *)&f1apMsg,(Size)sizeof(F1AP_PDU_t));
#endif
}
/**********************************************************************
}
/**********************************************************************
void F1APMsgHdlr(Buffer *mBuf);
S16 BuildAndSendF1SetupReq();
S16 procGNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg);
void F1APMsgHdlr(Buffer *mBuf);
S16 BuildAndSendF1SetupReq();
S16 procGNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg);
+S16 BuildAndSendDUConfigUpdate();
/**********************************************************************
End of file
**********************************************************************/
/**********************************************************************
End of file
**********************************************************************/
#include "legtp.h"
#include "du_app_mac_inf.h"
#include "du_ue_mgr.h"
#include "legtp.h"
#include "du_app_mac_inf.h"
#include "du_ue_mgr.h"
#include "kwu.x"
extern S16 cmUnpkLkwCfgCfm(LkwCfgCfm func,Pst *pst, Buffer *mBuf);
#include "kwu.x"
extern S16 cmUnpkLkwCfgCfm(LkwCfgCfm func,Pst *pst, Buffer *mBuf);
memset(cell, 0, sizeof(DuCellCb));
cell->cellId = cellId++;
cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0;
memset(cell, 0, sizeof(DuCellCb));
cell->cellId = cellId++;
cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0;
cell->cellInfo.nrEcgi.cellId = NR_CELL_ID;
cell->cellInfo.nrPci = NR_PCI;
cell->cellInfo.fiveGsTac = DU_TAC;
cell->cellInfo.nrEcgi.cellId = NR_CELL_ID;
cell->cellInfo.nrPci = NR_PCI;
cell->cellInfo.fiveGsTac = DU_TAC;
- for(idx=0; idx<MAX_PLMN; idx++)
+ for(idx1=0; idx1<MAX_PLMN; idx1++)
- cell->cellInfo.plmn[idx].mcc[0] = PLMN_MCC0;
- cell->cellInfo.plmn[idx].mcc[1] = PLMN_MCC1;
- cell->cellInfo.plmn[idx].mcc[2] = PLMN_MCC2;
- cell->cellInfo.plmn[idx].mnc[0] = PLMN_MNC0;
- cell->cellInfo.plmn[idx].mnc[1] = PLMN_MNC1;
- cell->cellInfo.plmn[idx].mnc[2] = PLMN_MNC2;
- }
+ cell->cellInfo.plmn[idx1].mcc[0] = PLMN_MCC0;
+ cell->cellInfo.plmn[idx1].mcc[1] = PLMN_MCC1;
+ cell->cellInfo.plmn[idx1].mcc[2] = PLMN_MCC2;
+ cell->cellInfo.plmn[idx1].mnc[0] = PLMN_MNC0;
+ cell->cellInfo.plmn[idx1].mnc[1] = PLMN_MNC1;
+ cell->cellInfo.plmn[idx1].mnc[2] = PLMN_MNC2;
+ }
cell->cellInfo.maxUe = duCfgParam.maxUe;
cell->cellStatus = CELL_OUT_OF_SERVICE;
nci = (U16)cell->cellInfo.nrEcgi.cellId;
cell->cellInfo.maxUe = duCfgParam.maxUe;
cell->cellStatus = CELL_OUT_OF_SERVICE;
nci = (U16)cell->cellInfo.nrEcgi.cellId;
break;
} /* End of switch(entMode) */
} /* End of entity configuration for loop */
break;
} /* End of switch(entMode) */
} /* End of entity configuration for loop */