uint8_t fillSchUeCb(SchUeCb *ueCb, SchUeCfg *ueCfg)
{
uint8_t lcIdx, ueLcIdx;
-
+ SchPdschCfgCmn pdschCfg;
+ SchPucchDlDataToUlAck *dlDataToUlAck;
+
ueCb->ueCfg.cellId = ueCfg->cellId;
ueCb->ueCfg.crnti = ueCfg->crnti;
if(ueCfg->macCellGrpCfgPres == true)
{
memcpy(&ueCb->ueCfg.spCellCfg , &ueCfg->spCellCfg, sizeof(SchSpCellCfg));
ueCb->ueCfg.spCellCfgPres = true;
+ dlDataToUlAck = ueCfg->spCellCfg.servCellCfg.initUlBwp.pucchCfg.dlDataToUlAck;
+ if(dlDataToUlAck)
+ {
+ BuildK0K1Table(ueCb->cellCb, &ueCb->ueCfg.spCellCfg.servCellCfg.initDlBwp.k0K1InfoTbl, false, pdschCfg,\
+ ueCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg, dlDataToUlAck->dlDataToUlAckListCount,\
+ dlDataToUlAck->dlDataToUlAckList);
+ }
}
+
ueCb->state = SCH_UE_STATE_ACTIVE;
- if(ueCfg->ambrCfg != NULLP)
+ if(ueCfg->ambrCfg)
{
- SCH_ALLOC(ueCb->ueCfg.ambrCfg , sizeof(SchAmbrCfg));
- memcpy(&ueCb->ueCfg.ambrCfg->ulBr , &ueCfg->ambrCfg->ulBr, sizeof(SchAmbrCfg));
+ SCH_FREE(ueCb->ueCfg.ambrCfg, sizeof(SchAmbrCfg));
+ ueCb->ueCfg.ambrCfg = ueCfg->ambrCfg;
}
-
memcpy(&ueCb->ueCfg.dlModInfo, &ueCfg->dlModInfo , sizeof(SchModulationInfo));
memcpy(&ueCb->ueCfg.ulModInfo, &ueCfg->ulModInfo , sizeof(SchModulationInfo));
}
}/*End of inner for loop */
}
+
+ SCH_FREE(ueCfg->schLcCfg[lcIdx].drbQos, sizeof(SchDrbQosInfo));
+ SCH_FREE(ueCfg->schLcCfg[lcIdx].snssai, sizeof(SchSnssai));
+
}/* End of outer for loop */
return ROK;
}
SchUeCfgRsp cfgRsp;
Inst inst = pst->dstInst - 1;
memset(&cfgRsp, 0, sizeof(SchUeCfgRsp));
+
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTMAC -> ENTSCH : EVENT_ADD_UE_CONFIG_REQ_TO_SCH\n");
+#endif
if(!ueCfg)
{
uint16_t puschSlot = 0;
uint16_t startRb = 0;
uint8_t numRb = 0;
- uint8_t numPdschSymbols= 14;
uint16_t tbSize = 0;
uint8_t buffer = 5;
uint8_t idx = 0;
SchCellCb *cellCb = ueCb->cellCb;
SchUlSlotInfo *schUlSlotInfo = NULLP;
- uint8_t k2=0, startSymb=0 , symbLen=0;
+ uint8_t k2=0, startSymb=0 , symbLen=11;
if(ueCb->ueCfg.spCellCfgPres == true)
{
startRb = cellCb->schUlSlotInfo[puschSlot]->puschCurrentPrb;
tbSize = schCalcTbSize(dataVol + buffer); /* 2 bytes header + some buffer */
- numRb = schCalcNumPrb(tbSize, ueCb->ueCfg.ulModInfo.mcsIndex, numPdschSymbols);
+ numRb = schCalcNumPrb(tbSize, ueCb->ueCfg.ulModInfo.mcsIndex, symbLen);
/* increment PUSCH PRB */
cellCb->schUlSlotInfo[puschSlot]->puschCurrentPrb += numRb;
SchUeCfgRsp cfgRsp;
Inst inst = pst->dstInst - 1;
memset(&cfgRsp, 0, sizeof(SchUeCfgRsp));
+
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTMAC -> ENTSCH : EVENT_MODIFY_UE_CONFIG_REQ_TO_SCH\n");
+#endif
if(!ueCfg)
{
* ****************************************************************/
void deleteSchUeCb(SchUeCb *ueCb)
{
+ uint8_t timeDomRsrcIdx;
SchPucchCfg *pucchCfg = NULLP;
+ SchPdschConfig *pdschCfg = NULLP;
+
if(ueCb)
{
SCH_FREE(ueCb->ueCfg.ambrCfg, sizeof(SchAmbrCfg));
if(ueCb->ueCfg.spCellCfgPres)
{
+ if(ueCb->ueCfg.spCellCfg.servCellCfg.initDlBwp.pdschCfgPres == true)
+ {
+ pdschCfg = &ueCb->ueCfg.spCellCfg.servCellCfg.initDlBwp.pdschCfg;
+ for(timeDomRsrcIdx = 0; timeDomRsrcIdx < pdschCfg->numTimeDomRsrcAlloc; timeDomRsrcIdx++)
+ SCH_FREE(pdschCfg->timeDomRsrcAllociList[timeDomRsrcIdx].k0, sizeof(uint8_t));
+ }
+
if(ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.pucchCfgPres == true)
{
pucchCfg = &ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.pucchCfg;
ErrorCause result;
SchCellCb *cellCb = NULLP;
Inst inst = pst->dstInst - 1;
-
+
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTMAC -> ENTSCH : EVENT_UE_DELETE_REQ_TO_SCH\n");
+#endif
+
if(!ueDelete)
{
DU_LOG("\nERROR --> SCH : MacSchUeDeleteReq(): Ue Delete request failed");
{
if(cellCb->schDlSlotInfo[idx])
{
- SCH_FREE(cellCb->schDlSlotInfo[idx]->rarInfo, sizeof(RarInfo));
- if(cellCb->schDlSlotInfo[idx]->dlMsgInfo)
- {
- SCH_FREE(cellCb->schDlSlotInfo[idx]->dlMsgInfo->dlMsgPdu,\
- cellCb->schDlSlotInfo[idx]->dlMsgInfo->dlMsgPduLen);
- SCH_FREE(cellCb->schDlSlotInfo[idx]->dlMsgInfo, sizeof(DlMsgInfo));
- }
SCH_FREE(cellCb->schDlSlotInfo[idx], sizeof(SchDlSlotInfo));
}
}
- SCH_FREE(cellCb->schDlSlotInfo, sizeof(SchDlSlotInfo));
+ SCH_FREE(cellCb->schDlSlotInfo, cellCb->numSlots *sizeof(SchDlSlotInfo*));
}
if(cellCb->schUlSlotInfo)
{
{
if(cellCb->schUlSlotInfo[idx])
{
- SCH_FREE(cellCb->schUlSlotInfo[idx]->schPuschInfo,sizeof(SchPuschInfo));
SCH_FREE(cellCb->schUlSlotInfo[idx], sizeof(SchUlSlotInfo));
}
}
- SCH_FREE(cellCb->schUlSlotInfo, sizeof(SchUlSlotInfo));
+ SCH_FREE(cellCb->schUlSlotInfo, cellCb->numSlots * sizeof(SchUlSlotInfo*));
}
- SCH_FREE(cellCb->cellCfg.sib1SchCfg.sib1PdcchCfg.dci.pdschCfg, sizeof(PdschCfg));
memset(cellCb, 0, sizeof(SchCellCb));
+
}
/*******************************************************************
uint8_t cellIdx=0, ret = RFAILED;
Inst inst = pst->dstInst - 1;
SchMacRsp result= RSP_OK;
+
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTMAC -> ENTSCH : EVENT_CELL_DELETE_REQ_TO_SCH\n");
+#endif
if(!cellDelete)
{