From d18338bde70b043c3dde28b7d88d128c0b138380 Mon Sep 17 00:00:00 2001 From: sphoorthi Date: Tue, 10 Nov 2020 21:14:52 +0530 Subject: [PATCH] CU testing fixes Change-Id: I87c85607d4f614844d051ea51bac56b66929173a Signed-off-by: sphoorthi --- src/cm/common_def.c | 34 +++++++ src/cm/common_def.h | 1 + src/codec_utils/common/odu_common_codec.c | 34 ------- src/codec_utils/common/odu_common_codec.h | 1 - src/cu_stub/cu_f1ap_msg_hdl.c | 18 ++-- src/cu_stub/cu_f1ap_msg_hdl.h | 1 + src/du_app/du_cell_mgr.c | 75 ++++++++++++---- src/du_app/du_cell_mgr.h | 5 +- src/du_app/du_cfg.c | 34 +++---- src/du_app/du_cfg.h | 2 +- src/du_app/du_f1ap_msg_hdl.c | 41 ++++++--- src/du_app/du_msg_hdl.c | 143 +++++++++++++++++------------- src/du_app/du_ue_mgr.c | 2 +- src/phy_stub/l1_bdy1.c | 12 +-- 14 files changed, 237 insertions(+), 166 deletions(-) diff --git a/src/cm/common_def.c b/src/cm/common_def.c index 867a9c406..0e681d3e0 100644 --- a/src/cm/common_def.c +++ b/src/cm/common_def.c @@ -107,6 +107,40 @@ void oduCpyFixBufToMsg(uint8_t *fixBuf, Buffer *mBuf, uint16_t len) ODU_COPY_FIX_BUF_TO_MSG(fixBuf, mBuf, 0, len, (MsgLen *)©Len); } +/******************************************************************* + * + * @brief Builds PLMN ID + * + * @details + * + * Function : plmnBuildId + * + * Functionality: Building the PLMN ID + * + * @params[in] PLMNID plmn + * @params[out] PLMNID in string format + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t buildPlmnId(Plmn plmn, uint8_t *buf) +{ + uint8_t mncCnt; + mncCnt = 2; + buf[0] = ((plmn.mcc[1] << 4) | (plmn.mcc[0])); + if(mncCnt == 2) + { + buf[1] = ((0xf0) | (plmn.mcc[2])); + buf[2] = ((plmn.mnc[1] << 4) | (plmn.mnc[0])); + } + else + { + buf[1] = ((plmn.mnc[0] << 4) | (plmn.mcc[2])); + buf[2] = ((plmn.mnc[2] << 4) | (plmn.mnc[1])); + } + return ROK; +} + /********************************************************************** End of file diff --git a/src/cm/common_def.h b/src/cm/common_def.h index f4e194ed8..b01b823eb 100644 --- a/src/cm/common_def.h +++ b/src/cm/common_def.h @@ -180,6 +180,7 @@ typedef enum void freqDomRscAllocType0(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain); void oduCpyFixBufToMsg(uint8_t *fixBuf, Buffer *mBuf, uint16_t len); +uint8_t buildPlmnId(Plmn plmn, uint8_t *buf); #endif diff --git a/src/codec_utils/common/odu_common_codec.c b/src/codec_utils/common/odu_common_codec.c index 1f353173a..5ea3c8da6 100644 --- a/src/codec_utils/common/odu_common_codec.c +++ b/src/codec_utils/common/odu_common_codec.c @@ -28,40 +28,6 @@ int PrepFinalEncBuf(const void *buffer, size_t size, void *encodedBuf) return 0; } /* PrepFinalEncBuf */ -/******************************************************************* - * - * @brief Builds PLMN ID - * - * @details - * - * Function : plmnBuildId - * - * Functionality: Building the PLMN ID - * - * @params[in] PLMNID plmn - * OCTET_STRING_t *octe - * @return ROK - success - * RFAILED - failure - * - * ****************************************************************/ -uint8_t buildPlmnId(Plmn plmn, uint8_t *buf) -{ - uint8_t mncCnt; - mncCnt = 2; - buf[0] = ((plmn.mcc[1] << 4) | (plmn.mcc[0])); - if(mncCnt == 2) - { - buf[1] = ((0xf0) | (plmn.mcc[2])); - buf[2] = ((plmn.mnc[1] << 4) | (plmn.mnc[0])); - } - else - { - buf[1] = ((plmn.mnc[0] << 4) | (plmn.mcc[2])); - buf[2] = ((plmn.mnc[2] << 4) | (plmn.mnc[1])); - } - return ROK; -} - /******************************************************************* * * @brief Fills the RicId diff --git a/src/codec_utils/common/odu_common_codec.h b/src/codec_utils/common/odu_common_codec.h index 3a291d318..01e0d7a48 100644 --- a/src/codec_utils/common/odu_common_codec.h +++ b/src/codec_utils/common/odu_common_codec.h @@ -26,7 +26,6 @@ char encBuf[ENC_BUF_MAX_LEN]; int encBufSize; int PrepFinalEncBuf(const void *buffer, size_t size, void *encodedBuf); -uint8_t buildPlmnId(Plmn plmn, uint8_t *buf); uint8_t fillBitString(BIT_STRING_t *id, uint8_t unusedBits, uint8_t byteSize, uint8_t val); uint8_t bitStringToInt(BIT_STRING_t *bitString, void *val); diff --git a/src/cu_stub/cu_f1ap_msg_hdl.c b/src/cu_stub/cu_f1ap_msg_hdl.c index ac6a8428a..0cfc141f4 100644 --- a/src/cu_stub/cu_f1ap_msg_hdl.c +++ b/src/cu_stub/cu_f1ap_msg_hdl.c @@ -224,11 +224,7 @@ S16 SendF1APMsg(Region region, Pool pool) S16 BuildNrCellId(BIT_STRING_t *nrcell) { - uint8_t tmp; - for (tmp = 0 ; tmp < nrcell->size-1; tmp++) - { - nrcell->buf[tmp] = 0; - } + memset(nrcell->buf, 0, nrcell->size); nrcell->buf[4] = 16; nrcell->bits_unused = 4; nrcell->size = 5 * sizeof(uint8_t); @@ -1639,7 +1635,7 @@ uint8_t BuildAndSendDLRRCMessageTransfer(uint8_t rrcMsgType) dlRRCMsg->protocolIEs.list.array[idx]->criticality = Criticality_reject; dlRRCMsg->protocolIEs.list.array[idx]->value.present = \ DLRRCMessageTransferIEs__value_PR_SRBID; - dlRRCMsg->protocolIEs.list.array[idx]->value.choice.SRBID = SRB1; + dlRRCMsg->protocolIEs.list.array[idx]->value.choice.SRBID = SRB0; /* RRCContainer */ idx++; @@ -1815,9 +1811,9 @@ uint8_t procInitULRRCMsg(F1AP_PDU_t *f1apMsg) uint8_t BuildNrcgi(NRCGI_t *nrcgi) { uint8_t ret; - uint8_t unused = 4; + uint8_t unused_bits = 4; uint8_t byteSize = 5; - uint8_t val = 16; + uint8_t val = 1; /* Allocate Buffer Memory */ nrcgi->pLMN_Identity.size = 3 * sizeof(uint8_t); CU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size); @@ -1837,11 +1833,17 @@ uint8_t BuildNrcgi(NRCGI_t *nrcgi) { return RFAILED; } +#if 0 ret = fillBitString(&nrcgi->nRCellIdentity, unused, byteSize, val); if(ret != ROK) { return RFAILED; } +#endif + memset(nrcgi->nRCellIdentity.buf, 0, nrcgi->nRCellIdentity.size); + nrcgi->nRCellIdentity.buf[0] |= val; + nrcgi->nRCellIdentity.bits_unused = unused_bits; + return ROK; } /******************************************************************* diff --git a/src/cu_stub/cu_f1ap_msg_hdl.h b/src/cu_stub/cu_f1ap_msg_hdl.h index 85f252a2a..d20e7560a 100644 --- a/src/cu_stub/cu_f1ap_msg_hdl.h +++ b/src/cu_stub/cu_f1ap_msg_hdl.h @@ -46,6 +46,7 @@ #define CU_ID 1 #define CRNTI 17017 #define CELL_INDEX 0 +#define SRB0 0 #define SRB1 1 #define SRB2 2 #define DRB1 1 diff --git a/src/du_app/du_cell_mgr.c b/src/du_app/du_cell_mgr.c index e1f166e93..e66352581 100644 --- a/src/du_app/du_cell_mgr.c +++ b/src/du_app/du_cell_mgr.c @@ -46,36 +46,40 @@ * RFAILED - failure * * ****************************************************************/ -uint8_t duProcCellsToBeActivated(uint16_t nci, uint16_t nRPci) +uint8_t duProcCellsToBeActivated(uint8_t *plmnStr, uint16_t nci, uint16_t nRPci) { uint8_t ret = ROK; DuCellCb *cellCb = NULLP; + uint8_t cfgIdx, tmpPlmn[4]; - cellCb = duCb.cfgCellLst[nci-1]; - - if(!cellCb) + for(cfgIdx=0; cfgIdxcellInfo.nrEcgi.plmn, tmpPlmn); + if(duCb.cfgCellLst[cfgIdx]->cellInfo.nrEcgi.cellId == nci && + (strcmp((const char*)tmpPlmn, (const char*)plmnStr) == 0)) + { + cellCb = duCb.cfgCellLst[cfgIdx]; + break; + } + else + { + DU_LOG("\nDU APP : No Cell found for NCI %d", nci); + return RFAILED; + } } cellCb->cellStatus = ACTIVATION_IN_PROGRESS; cellCb->cellInfo.nrPci = nRPci; - /* Now remove this cell from configured list and move to active list */ - duCb.cfgCellLst[nci-1] = NULL; - duCb.actvCellLst[nci-1] = cellCb; - duCb.numActvCells++; - /* Build and send Mac Cell Cfg for the number of active cells */ - ret = duBuildAndSendMacCellCfg(); - if(ret != ROK) + duCb.actvCellLst[duCb.numActvCells++] = cellCb; + + if(duBuildAndSendMacCellCfg(cellCb->cellId) != ROK) { - DU_LOG("\nDU APP : MacCellCfg build and send failed at procCellsToBeActivated()"); - /* Move cellCb back to cfgCellList */ - duCb.cfgCellLst[nci-1] = duCb.actvCellLst[nci-1]; - duCb.actvCellLst[nci-1] = NULLP; - duCb.numActvCells--; - return RFAILED; + DU_LOG("\nDU APP : macCellCfg build and send failed"); + /* Delete cell from actvCellList */ + duCb.actvCellLst[--(duCb.numActvCells)] = NULLP; + ret = RFAILED; } return ret; } @@ -120,6 +124,39 @@ void duProcGnbDuCfgUpdAckMsg() { DU_LOG("\nDU APP: GNB-DU config update Ack received "); } +/******************************************************************* +* +* @brief Returns cellCb based on cell ID +* +* @details +* +* Function : duGetCellCb +* +* Functionality: Returns DU APP CellCb based on cell ID +* +* @params[in] F1AP_PDU_t ASN decoded F1AP message +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t duGetCellCb(uint16_t cellId, DuCellCb **cellCb) +{ + uint8_t cellIdx; + for(cellIdx=0; cellIdxcellId == cellId) + *cellCb = duCb.actvCellLst[cellIdx]; + break; + } + + if(!*cellCb) + { + DU_LOG("\nDU APP : Cell Id %d not found in DU APP", cellId); + return RFAILED; + } + + return ROK; +} /********************************************************************** End of file diff --git a/src/du_app/du_cell_mgr.h b/src/du_app/du_cell_mgr.h index 0d310a276..37128dfea 100644 --- a/src/du_app/du_cell_mgr.h +++ b/src/du_app/du_cell_mgr.h @@ -20,10 +20,11 @@ #ifndef __DU_CELL_MGR_H__ #define __DU_CELL_MGR_H__ -uint8_t duBuildAndSendMacCellCfg(); -uint8_t duProcCellsToBeActivated(uint16_t nci, uint16_t nRPci); +uint8_t duBuildAndSendMacCellCfg(uint16_t cellId); +uint8_t duProcCellsToBeActivated(uint8_t *plmnStr, uint16_t nci, uint16_t nRPci); void duProcGnbDuCfgUpdAckMsg(); void duProcF1SetupRsp(); +uint8_t duGetCellCb(uint16_t cellId, DuCellCb **cellCb); #endif /********************************************************************** End of file diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index a0b3fdc0f..7dde83bf7 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -561,12 +561,12 @@ uint8_t readCfg() duCfgParam.mibParams = mib; /* SIB1 Params */ + memset(&sib1.plmn, 0, sizeof(Plmn)); sib1.plmn.mcc[0] = PLMN_MCC0; sib1.plmn.mcc[1] = PLMN_MCC1; sib1.plmn.mcc[2] = PLMN_MCC2; sib1.plmn.mnc[0] = PLMN_MNC0; sib1.plmn.mnc[1] = PLMN_MNC1; - sib1.plmn.mnc[2] = PLMN_MNC2; sib1.tac = DU_TAC; sib1.ranac = DU_RANAC; sib1.cellIdentity = CELL_IDENTITY; @@ -588,12 +588,12 @@ uint8_t readCfg() for(i=0; ibuf, 0, nrcell->size); + nrcell->buf[4] = 16; + nrcell->bits_unused = 4; + return ROK; +} + /******************************************************************* * * @brief Builds Nrcgi @@ -181,9 +205,7 @@ uint8_t BuildDLNRInfo(NRFreqInfo_t *dlnrfreq) uint8_t BuildNrcgi(NRCGI_t *nrcgi) { uint8_t ret; - uint8_t unused = 4; uint8_t byteSize = 5; - uint8_t val = 16; /* Allocate Buffer Memory */ nrcgi->pLMN_Identity.size = PLMN_SIZE * sizeof(uint8_t); DU_ALLOC(nrcgi->pLMN_Identity.buf, nrcgi->pLMN_Identity.size); @@ -198,18 +220,14 @@ uint8_t BuildNrcgi(NRCGI_t *nrcgi) return RFAILED; } /*nrCellIdentity*/ - //ret = BuildNrCellId(&nrcgi->nRCellIdentity); nrcgi->nRCellIdentity.size = byteSize * sizeof(uint8_t); 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) - { - return RFAILED; - } + BuildNrCellId(&nrcgi->nRCellIdentity); + return ROK; } /******************************************************************* @@ -8311,16 +8329,11 @@ uint8_t extractCellsToBeActivated(Cells_to_be_Activated_List_t cellsToActivate) cell = cellsToActivate.list.array[idx]->value.choice.Cells_to_be_Activated_List_Item; bitStringToInt(&cell.nRCGI.nRCellIdentity, &nci); - if(nci <= 0 || nci > MAX_NUM_CELL) - { - DU_LOG("\nDU APP : Invalid NCI %d", nci); - return RFAILED; - } if(cell.nRPCI) { pci = *cell.nRPCI; } - ret = duProcCellsToBeActivated(nci, pci); + ret = duProcCellsToBeActivated(cell.nRCGI.pLMN_Identity.buf, nci, pci); } return ret; } diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index 2a677d1c2..98e24a0a3 100644 --- a/src/du_app/du_msg_hdl.c +++ b/src/du_app/du_msg_hdl.c @@ -38,6 +38,7 @@ #include "legtp.h" #include "lphy_stub.h" #include "du_utils.h" +#include "du_cell_mgr.h" uint8_t rlcDlCfg = 0; uint8_t numRlcDlSaps = 0; @@ -328,43 +329,41 @@ uint8_t duProcCfgComplete() { DuCellCb *cell = NULLP; DU_ALLOC(cell, sizeof(DuCellCb)) - if(cell == NULLP) + if(cell == NULLP) + { + DU_LOG("\nDU_APP : Memory Allocation failed in duProcCfgComplete"); + ret = RFAILED; + } + else + { + uint8_t idx1; + memset(cell, 0, sizeof(DuCellCb)); + cell->cellId = ++cellId; + memset(&cell->cellInfo.nrEcgi.plmn, 0, sizeof(Plmn)); + cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0; + cell->cellInfo.nrEcgi.plmn.mcc[1] = PLMN_MCC1; + cell->cellInfo.nrEcgi.plmn.mcc[2] = PLMN_MCC2; + cell->cellInfo.nrEcgi.plmn.mnc[0] = PLMN_MNC0; + cell->cellInfo.nrEcgi.plmn.mnc[1] = PLMN_MNC1; + cell->cellInfo.nrEcgi.cellId = NR_CELL_ID; + cell->cellInfo.nrPci = NR_PCI; + cell->cellInfo.fiveGsTac = DU_TAC; + memset(&cell->cellInfo.plmn[idx1], 0, sizeof(Plmn)); + for(idx1=0; idx1cellInfo.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; } - else - { - uint32_t nci; - uint8_t idx1; - memset(cell, 0, sizeof(DuCellCb)); - cell->cellId = ++cellId; - cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0; - cell->cellInfo.nrEcgi.plmn.mcc[1] = PLMN_MCC1; - cell->cellInfo.nrEcgi.plmn.mcc[2] = PLMN_MCC2; - cell->cellInfo.nrEcgi.plmn.mnc[0] = PLMN_MNC0; - cell->cellInfo.nrEcgi.plmn.mnc[1] = PLMN_MNC1; - cell->cellInfo.nrEcgi.plmn.mnc[2] = PLMN_MNC2; - cell->cellInfo.nrEcgi.cellId = NR_CELL_ID; - cell->cellInfo.nrPci = NR_PCI; - cell->cellInfo.fiveGsTac = DU_TAC; - for(idx1=0; idx1cellInfo.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 = (uint16_t)cell->cellInfo.nrEcgi.cellId; + cell->cellInfo.maxUe = duCfgParam.maxUe; + cell->cellStatus = CELL_OUT_OF_SERVICE; - duCb.cfgCellLst[nci-1] = cell; - duCb.numCfgCells++; - } + duCb.cfgCellLst[duCb.numCfgCells] = cell; + duCb.numCfgCells++; } + } if(ret != RFAILED) { //Start layer configs @@ -1585,8 +1584,8 @@ uint8_t duBuildAndSendMacCellCfg(uint16_t cellId) ***************************************************************************/ uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) { - uint8_t actvCellIdx = 0; - uint8_t ret = ROK; + uint8_t actvCellIdx = 0; + uint8_t ret = ROK; for(actvCellIdx = 0; actvCellIdx < MAX_NUM_CELL; actvCellIdx++) { @@ -1633,24 +1632,26 @@ uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) * ****************************************************************/ uint8_t duHandleSlotInd(Pst *pst, SlotIndInfo *slotInfo) { + DuCellCb *cellCb = NULLP; + if(slotInfo->cellId <=0 || slotInfo->cellId > MAX_NUM_CELL) { DU_LOG("\nDU APP : Invalid Cell Id %d", slotInfo->cellId); + return RFAILED; } - if(!duCb.actvCellLst[slotInfo->cellId-1]->firstSlotIndRcvd) + + if(duGetCellCb(slotInfo->cellId, &cellCb) != ROK) + return RFAILED; + + if(!cellCb->firstSlotIndRcvd) { -#ifdef ODU_SLOT_IND_DEBUG_LOG - DU_LOG("\nDU APP : Slot Indication received"); -#endif - duCb.actvCellLst[slotInfo->cellId-1]->firstSlotIndRcvd = true; - if((duCb.actvCellLst[slotInfo->cellId-1] != NULL) && \ - (duCb.actvCellLst[slotInfo->cellId-1]->cellStatus == \ - ACTIVATION_IN_PROGRESS)) + DU_LOG("\nDU APP : Slot Indication received"); + cellCb->firstSlotIndRcvd = true; + if((cellCb != NULL) && (cellCb->cellStatus == ACTIVATION_IN_PROGRESS)) { DU_LOG("\nDU APP : 5G-NR Cell %d is UP", slotInfo->cellId); - duCb.actvCellLst[slotInfo->cellId-1]->cellStatus = ACTIVATED; + cellCb->cellStatus = ACTIVATED; } - } /* TODO : Slot Indication to be moved out of EGTP_TEST when @@ -1696,12 +1697,12 @@ uint8_t duBuildAndSendMacCellStartReq() return RFAILED; } - for(uint8_t id = 0; id < MAX_NUM_CELL; id++) + for(uint8_t id = 0; id < duCb.numActvCells; id++) { if(duCb.actvCellLst[id]) { duCb.actvCellLst[id]->firstSlotIndRcvd = FALSE; - cellStartInfo->cellId = duCb.actvCellLst[id]->cellInfo.nrEcgi.cellId; + cellStartInfo->cellId = duCb.actvCellLst[id]->cellId; /* Fill Pst */ FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_CELL_START_REQ); @@ -1768,26 +1769,32 @@ uint8_t duBuildAndSendMacCellStopReq() * ****************************************************************/ uint8_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellStopId) { + DuCellCb *cellCb = NULLP; + if(cellStopId->cellId <=0 || cellStopId->cellId > MAX_NUM_CELL) { DU_LOG("\nDU APP : Invalid Cell Id %d", cellStopId->cellId); } - if(duCb.actvCellLst[cellStopId->cellId-1] != NULL) + + if(duGetCellCb(cellStopId->cellId, &cellCb) != ROK) + return RFAILED; + + if(cellCb->firstSlotIndRcvd) { - if(duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd) + cellCb->firstSlotIndRcvd = false; + if((cellCb->cellStatus == ACTIVATED)) { - duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd = false; - if((duCb.actvCellLst[cellStopId->cellId-1]->cellStatus == \ - ACTIVATED)) - { - DU_LOG("\nDU APP : 5G-NR Cell %d is DOWN", cellStopId->cellId); - duCb.actvCellLst[cellStopId->cellId-1]->cellStatus = DELETION_IN_PROGRESS; - } + DU_LOG("\nDU APP : 5G-NR Cell %d is DOWN", cellStopId->cellId); + cellCb->cellStatus = DELETION_IN_PROGRESS; } } if((pst->selector == ODU_SELECTOR_LWLC) || (pst->selector == ODU_SELECTOR_TC)) DU_FREE_SHRABL_BUF(MAC_MEM_REGION, pst->pool, cellStopId, sizeof(MacCellStopInfo)); + cellCb->cellStatus = CELL_OUT_OF_SERVICE; //TODO: cell status must be set to OOS after all UE and cell cleanup which is not + //supported now + + return ROK; } @@ -1834,9 +1841,15 @@ uint8_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo) * ****************************************************************/ uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo) { + DuCellCb *cellCb = NULLP; DuUeCb ueCb; + + if(duGetCellCb(ulRrcMsgInfo->cellId, &cellCb) != ROK) + return RFAILED; - ueCb = duCb.actvCellLst[ulRrcMsgInfo->cellId -1]->ueCb[ulRrcMsgInfo->ueIdx -1]; + ueCb = cellCb->ueCb[ulRrcMsgInfo->ueIdx -1]; + + BuildAndSendULRRCMessageTransfer(ueCb, ulRrcMsgInfo->lcId, ulRrcMsgInfo->msgLen, \ ulRrcMsgInfo->rrcMsg); @@ -1863,14 +1876,18 @@ uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo) * ****************************************************************/ uint8_t DuProcRlcRrcDeliveryReport(Pst *pst, RrcDeliveryReport *rrcDeliveryReport) { - DuUeCb ueCb; - uint8_t ret = RFAILED; + DuCellCb *cellCb = NULLP; + DuUeCb ueCb; + uint8_t ret = RFAILED; - ueCb = duCb.actvCellLst[rrcDeliveryReport->cellId -1]->ueCb[rrcDeliveryReport->ueIdx -1]; - ret = BuildAndSendRrcDeliveryReport(ueCb.gnbCuUeF1apId, ueCb.gnbDuUeF1apId,rrcDeliveryReport); + if(duGetCellCb(rrcDeliveryReport->cellId, &cellCb) != ROK) + return RFAILED; + + ueCb = cellCb->ueCb[rrcDeliveryReport->ueIdx -1]; + ret = BuildAndSendRrcDeliveryReport(ueCb.gnbCuUeF1apId, ueCb.gnbDuUeF1apId,rrcDeliveryReport); - DU_FREE_SHRABL_BUF(pst->region, pst->pool, rrcDeliveryReport, sizeof(RrcDeliveryReport)); - return ret; + DU_FREE_SHRABL_BUF(pst->region, pst->pool, rrcDeliveryReport, sizeof(RrcDeliveryReport)); + return ret; } diff --git a/src/du_app/du_ue_mgr.c b/src/du_app/du_ue_mgr.c index e1c0c62ee..60cd3c306 100644 --- a/src/du_app/du_ue_mgr.c +++ b/src/du_app/du_ue_mgr.c @@ -300,7 +300,7 @@ uint8_t duProcDlRrcMsg(F1DlRrcMsg *dlRrcMsg) ret = ROK; - if(dlRrcMsg->srbId == SRB1_LCID) //RRC connection setup + if(dlRrcMsg->srbId == SRB0_LCID) //RRC connection setup { for(ueIdx=0; ueIdx