#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"
+#endif
typedef struct schCellCb SchCellCb;
typedef struct schUeCb SchUeCb;
void schUlHqEntReset(SchCellCb *cellCb, SchUeCb *ueCb, SchUlHqEnt *hqE);
void schUlHqEntInit(SchCellCb *cellCb, SchUeCb *ueCb)
{
ueCb->ulHqEnt.numHqPrcs = SCH_MAX_NUM_UL_HQ_PROC;
- ueCb->ulHqEnt.maxHqTx = cellCb->cellCfg.schHqCfg.maxUlDataHqTx;
+ ueCb->ulHqEnt.maxHqTx = cellCb->schHqCfg.maxUlDataHqTx;
ueCb->ulHqEnt.cell = cellCb;
ueCb->ulHqEnt.ue =ueCb;
schUlHqEntReset(cellCb, ueCb, &ueCb->ulHqEnt);
hqP->ulHqEntLnk.node = (PTR)hqP;
hqP->ulHqProcLink.node = (PTR)hqP;
hqP->ulSlotLnk.node = (PTR)hqP;
+ cellCb->api->SchInitUlHqProcCb(hqP);
schUlHqAddToFreeList(hqP);
}
}
+
/**
* @brief Add hq process to free list of UL Harq entity
*
**/
void schUlReleaseHqProcess(SchUlHqProcCb *hqP, Bool togNdi)
{
+ SchCellCb *cellCb = NULLP;
if (togNdi == TRUE)
{
hqP->tbInfo.ndi ^= 1;
}
- cmLListDeleteLList(&hqP->ulLcPrbEst.dedLcList);
- cmLListDeleteLList(&hqP->ulLcPrbEst.defLcList);
+
+ cellCb = hqP->hqEnt->cell;
+ cellCb->api->SchFreeUlHqProcCb(hqP);
+
schUlHqDeleteFromInUseList(hqP);
schUlHqAddToFreeList(hqP);
}
{
if (hqP->tbInfo.txCntr < hqP->maxHqTxPerHqP)
{
- cmLListAdd2Tail(&(hqP->hqEnt->ue->ulRetxHqList), &hqP->ulHqProcLink);
- addUeToBeScheduled(hqP->hqEnt->cell, hqP->hqEnt->ue->ueId);
+ hqP->hqEnt->cell->api->SchAddToUlHqRetxList(hqP);
}
else
{
{
schUlReleaseHqProcess(hqP, TRUE);
}
+
+/**
+ * @brief Deletes HARQ Entity
+ *
+ * @details
+ *
+ * Function : schUlHqEntDelete
+ *
+ * This function deletes HARQ entity and its member paremeters
+ *
+ * @param[in] Pointer to UE
+ * @return
+ * -# void
+ **/
+void schUlHqEntDelete(SchUeCb *ueCb)
+{
+ uint8_t count;
+ SchUlHqProcCb *hqP;
+
+ cmLListDeleteLList(&ueCb->ulHqEnt.free);
+ cmLListDeleteLList(&ueCb->ulHqEnt.inUse);
+ for(count=0; count < ueCb->ulHqEnt.numHqPrcs; count++)
+ {
+ hqP = &(ueCb->ulHqEnt.procs[count]);
+ ueCb->cellCb->api->SchDeleteUlHqProcCb(hqP);
+ }
+ memset(&ueCb->ulHqEnt, 0, sizeof(SchUlHqEnt));
+}
+
/**********************************************************************
End of file
- **********************************************************************/
\ No newline at end of file
+ **********************************************************************/