#include "du_app_mac_inf.h"
#include "mac_sch_interface.h"
#include "sch.h"
+#include "sch_tmr.h"
#include "sch_utils.h"
#ifdef NR_DRX
#include "sch_drx.h"
Pst rspPst;
cfgRsp->cellId = ueCfg->cellId;
- cfgRsp->ueId = ueCfg->ueId;
cfgRsp->crnti = ueCfg->crnti;
cfgRsp->rsp = result;
Pst rspPst;
reCfgRsp->cellId = ueRecfgReq->cellId;
- reCfgRsp->ueId = ueRecfgReq->ueId;
reCfgRsp->crnti = ueRecfgReq->crnti;
reCfgRsp->rsp = result;
uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg)
{
uint8_t lcIdx, ueLcIdx, idx;
- uint8_t freqDomainResource[FREQ_DOM_RSRC_SIZE] = {0};
SchPdschCfgCmn pdschCfg;
SchPucchDlDataToUlAck *dlDataToUlAck;
uint8_t retDL = ROK, retUL = ROK;
bool isLcIdValid = FALSE;
ueCb->ueCfg.cellId = ueCfg->cellId;
- ueCb->ueCfg.ueId = ueCfg->ueId;
+ ueCb->ueCfg.ueId = ueCb->ueId;
ueCb->ueCfg.crnti = ueCfg->crnti;
if(ueCfg->macCellGrpCfgPres == true)
{
schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].ulDrxHarqCb);
}
/* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */
- schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
+ schFillDrxUeCb(ueCb->cellCb->numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
/* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we
* recived ueCfg request */
schAddUeInOndurationList(ueCb->cellCb, ueCb, 0);
{
/* convert all the drx configuration recived in ms/subms into number
* of slots and store into the drxUeCb */
- schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
+ schFillDrxUeCb(ueCb->cellCb->numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
/* Recalculate/Restart timer based on their presence */
schDrxUeReCfgTimer(ueCb->cellCb, ueCb);
}
fillSpCellInSchCb(&ueCb->ueCfg.spCellCfg, &ueCfg->spCellCfg);
- covertFreqDomRsrcMapToIAPIFormat(ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0].freqDomainRsrc,\
- freqDomainResource);
- memset(ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0].freqDomainRsrc, 0, FREQ_DOM_RSRC_SIZE);
- memcpy(ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0].freqDomainRsrc, freqDomainResource, FREQ_DOM_RSRC_SIZE);
-
ueCb->ueCfg.spCellCfgPres = true;
dlDataToUlAck = ueCfg->spCellCfg.servCellCfg.initUlBwp.pucchCfg.dlDataToUlAck;
if(ueCb->cellCb)
uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg)
{
uint8_t lcIdx, ueLcIdx, idx;
- uint8_t freqDomainResource[FREQ_DOM_RSRC_SIZE] = {0};
SchPdschCfgCmn pdschCfg;
SchPucchDlDataToUlAck *dlDataToUlAck;
uint8_t retDL = ROK, retUL = ROK;
ueCb->ueCfg.cellId = ueRecfg->cellId;
- ueCb->ueCfg.ueId = ueRecfg->ueId;
ueCb->ueCfg.crnti = ueRecfg->crnti;
+ GET_UE_ID(ueRecfg->crnti, ueCb->ueCfg.ueId);
ueCb->ueCfg.dataTransmissionAction = ueRecfg->dataTransmissionInfo;
if(ueRecfg->macCellGrpRecfgPres == true)
{
schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].ulDrxHarqCb);
}
/* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */
- schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
+ schFillDrxUeCb(ueCb->cellCb->numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
/* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we
* recived ueCfg request */
schAddUeInOndurationList(ueCb->cellCb, ueCb, 0);
{
/* convert all the drx configuration recived in ms/subms into number
* of slots and store into the drxUeCb */
- schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
+ schFillDrxUeCb(ueCb->cellCb->numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb);
/* Recalculate/Restart timer based on their presence */
schDrxUeReCfgTimer(ueCb->cellCb, ueCb);
}
memcpy(&ueCb->ueCfg.spCellCfg , &ueRecfg->spCellRecfg, sizeof(SchSpCellRecfg));
- covertFreqDomRsrcMapToIAPIFormat(ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0].freqDomainRsrc,\
- freqDomainResource);
- memset(ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0].freqDomainRsrc, 0, FREQ_DOM_RSRC_SIZE);
- memcpy(ueCb->ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0].freqDomainRsrc, freqDomainResource, FREQ_DOM_RSRC_SIZE);
-
ueCb->ueCfg.spCellCfgPres = true;
dlDataToUlAck = ueRecfg->spCellRecfg.servCellRecfg.initUlBwp.pucchCfg.dlDataToUlAck;
if(ueCb->cellCb)
uint8_t SchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfg)
{
uint8_t lcIdx = 0, ret = ROK, idx = 0;
+ uint16_t ueId = 0;
SchCellCb *cellCb = NULLP;
SchUeCb *ueCb = NULLP;
SchUeCfgRsp cfgRsp;
return RFAILED;
}
/* Search if UE already configured */
- ueCb = &cellCb->ueCb[ueCfg->ueId - 1];
+ GET_UE_ID(ueCfg->crnti, ueId);
+ ueCb = &cellCb->ueCb[ueId - 1];
if((ueCb->crnti == ueCfg->crnti) && (ueCb->state == SCH_UE_STATE_ACTIVE))
{
/* Fill received Ue Configuration in UeCb */
memset(ueCb, 0, sizeof(SchUeCb));
- ueCb->ueId = ueCfg->ueId;
ueCb->crnti = ueCfg->crnti;
+ GET_UE_ID(ueCb->crnti, ueCb->ueId);
ueCb->cellCb = cellCb;
- schUlHqEntInit(cellCb, &cellCb->ueCb[ueCfg->ueId-1]);
- schDlHqEntInit(cellCb, &cellCb->ueCb[ueCfg->ueId-1]);
+ schUlHqEntInit(cellCb, &cellCb->ueCb[ueCb->ueId-1]);
+ schDlHqEntInit(cellCb, &cellCb->ueCb[ueCb->ueId-1]);
SCH_ALLOC(ueCb->hqDlmap, sizeof(SchHqDlMap*)*(ueCb->cellCb->numSlots));
SCH_ALLOC(ueCb->hqUlmap, sizeof(SchHqUlMap*)*(ueCb->cellCb->numSlots));
* Functionality: Fill and send UE delete response to MAC
*
* @params[in] Inst inst, SchUeDelete *ueDelete, SchMacRsp result,
-* ErrorCause cause
+* CauseOfResult cause
* @return ROK - success
* RFAILED - failure
*
* ****************************************************************/
-void SchSendUeDeleteRspToMac(Inst inst, SchUeDelete *ueDelete, SchMacRsp result, ErrorCause cause)
+void SchSendUeDeleteRspToMac(Inst inst, SchUeDelete *ueDelete, SchMacRsp result, CauseOfResult cause)
{
Pst rspPst;
SchUeDeleteRsp delRsp;
* ****************************************************************/
uint8_t SchProcUeDeleteReq(Pst *pst, SchUeDelete *ueDelete)
{
- uint8_t idx=0, ueId=0, ret=ROK;
- ErrorCause result;
- SchCellCb *cellCb = NULLP;
+ uint8_t idx=0, ueId=0, ret=ROK;
+ CauseOfResult cause;
+ SchCellCb *cellCb = NULLP;
Inst inst = pst->dstInst - SCH_INST_START;
if(!ueDelete)
if(cellCb->cellId != ueDelete->cellId)
{
DU_LOG("\nERROR --> SCH : SchProcUeDeleteReq(): cell Id is not available");
- result = INVALID_CELLID;
+ cause = CELLID_INVALID;
}
else
{
cellCb->api->SchUeDeleteReq(&cellCb->ueCb[ueId-1]);
deleteSchUeCb(&cellCb->ueCb[ueId-1]);
cellCb->numActvUe--;
- result = NOT_APPLICABLE;
+ cause = SUCCESSFUL;
}
else
{
DU_LOG("\nERROR --> SCH : SchProcUeDeleteReq(): SchUeCb not found");
- result = INVALID_UEID;
+ cause = UEID_INVALID;
}
}
- if(result == NOT_APPLICABLE)
+ if(cause == SUCCESSFUL)
{
- SchSendUeDeleteRspToMac(inst, ueDelete, RSP_OK, result);
+ SchSendUeDeleteRspToMac(inst, ueDelete, RSP_OK, cause);
}
else
{
- SchSendUeDeleteRspToMac(inst, ueDelete, RSP_NOK, result);
+ SchSendUeDeleteRspToMac(inst, ueDelete, RSP_NOK, cause);
ret = RFAILED;
}
return ret;