X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fdu_app%2Fdu_cell_mgr.c;h=e663525813de40139920a93b4b8c13add1935dec;hb=d18338bde70b043c3dde28b7d88d128c0b138380;hp=e1f166e936216e959f1e023ec151518dbd672ba0;hpb=3eceb3e5eb30b6df9f674f76b9e7b4e936e5be06;p=o-du%2Fl2.git 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