#ifdef O1_ENABLE
#include "AlarmInterface.h"
-#include "ConfigInterface.h"
+#include "CmInterface.h"
#endif
cellCb->cellStatus = ACTIVATION_IN_PROGRESS;
cellCb->cellInfo.nrPci = nRPci;
- duCb.actvCellLst[duCb.numActvCells++] = cellCb;
+ duCb.actvCellLst[cellCb->cellId -1] = cellCb;
+ duCb.numActvCells++;
if(duBuildAndSendMacCellCfg(cellCb->cellId) != ROK)
{
DU_LOG("\nERROR --> DU APP : macCellCfg build and send failed");
/* Delete cell from actvCellList */
- duCb.actvCellLst[--(duCb.numActvCells)] = NULLP;
+ duCb.actvCellLst[cellCb->cellId -1] = NULLP;
+ --(duCb.numActvCells);
ret = RFAILED;
}
return ret;
uint8_t duGetCellCb(uint16_t cellId, DuCellCb **cellCb)
{
uint8_t cellIdx = 0;
- for(cellIdx=0; cellIdx<duCb.numActvCells; cellIdx++)
+ for(cellIdx=0; cellIdx < MAX_NUM_CELL; cellIdx++)
{
- if(duCb.actvCellLst[cellIdx]->cellId == cellId)
+ if(duCb.actvCellLst[cellIdx] && (duCb.actvCellLst[cellIdx]->cellId == cellId))
+ {
*cellCb = duCb.actvCellLst[cellIdx];
- break;
+ break;
+ }
}
if(!*cellCb)
* ****************************************************************/
uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId)
{
- DuCellCb *cellCb = NULLP;
+ DuCellCb *cellCb = NULLP;
+
+#ifndef O1_ENABLE
+
+ /*Note: Static Configuration, when O1 is not configuring the RRM policy*/
+ RrmPolicy *rrmPolicy;
+ DU_ALLOC(rrmPolicy, sizeof(RrmPolicy));
+ rrmPolicy->rsrcType = RSRC_PRB;
+ rrmPolicy->numMemberList = 1;
+ DU_ALLOC(rrmPolicy->memberList, sizeof(PolicyMemberList *));
+ DU_ALLOC(rrmPolicy->memberList[0], sizeof(PolicyMemberList));
+
+ memset(&rrmPolicy->memberList[0]->plmn, 0, sizeof(Plmn));
+ rrmPolicy->memberList[0]->snssai.sst = 1;
+ rrmPolicy->memberList[0]->snssai.sd[0] = 2;
+ rrmPolicy->memberList[0]->snssai.sd[1] = 3;
+ rrmPolicy->memberList[0]->snssai.sd[2] = 4;
+ rrmPolicy->policyMinRatio = 30;
+ rrmPolicy->policyMaxRatio = 90;
+ rrmPolicy->policyDedicatedRatio = 10;
+#endif
if(cellId->cellId <=0 || cellId->cellId > MAX_NUM_CELL)
{
gCellStatus = CELL_UP;
#ifdef O1_ENABLE
+ if(duCfgParam.tempSliceCfg.rrmPolicy)
+ BuildAndSendSliceConfigReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy, duCfgParam.tempSliceCfg.totalSliceCount);
DU_LOG("\nINFO --> DU APP : Raise cell UP alarm for cell id=%d", cellId->cellId);
raiseCellAlrm(CELL_UP_ALARM_ID, cellId->cellId);
setCellOpState(cellId->cellId, ENABLED, ACTIVE);
+#else
+ BuildAndSendSliceConfigReq(&rrmPolicy,1, rrmPolicy->numMemberList);
#endif
+
}
if((pst->selector == ODU_SELECTOR_LWLC) || (pst->selector == ODU_SELECTOR_TC))
{
uint8_t ret = ROK;
uint16_t cellIdx=0;
+
if(deleteRsp)
{
if(deleteRsp->result == SUCCESSFUL_RSP)
{
GET_CELL_IDX(deleteRsp->cellId, cellIdx);
DU_LOG("\nINFO --> DU APP : MAC CELL Delete Response : SUCCESS [CELL IDX : %d]", deleteRsp->cellId);
- if(duCb.actvCellLst[cellIdx]->cellId == deleteRsp->cellId)
+ if(duCb.actvCellLst[cellIdx] && (duCb.actvCellLst[cellIdx]->cellId == deleteRsp->cellId))
{
memset(duCb.actvCellLst[cellIdx], 0, sizeof(DuCellCb));
gCellStatus = CELL_DOWN;
return RFAILED;
}
- if(duCb.actvCellLst[cellIdx]->numActvUes)
- {
- DU_LOG("\nERROR --> DU APP : duSendCellDeletReq(): Active UEs still present in cellId[%d].\
- Failed to delete cell", cellId);
- return RFAILED;
- }
-
if(duBuildAndSendMacCellStop(cellId) == RFAILED)
{
DU_LOG("\nERROR --> DU APP : duSendCellDeletReq(): Failed to build and send cell stop request to MAC for\