[EPIC-ID: ODUHIGH-488][TASK-ID: ODUHIGH-494]SCH framework update to support different...
[o-du/l2.git] / src / 5gnrsch / sch_harq_ul.c
index 55c9b44..c907655 100644 (file)
@@ -84,9 +84,11 @@ void schUlHqEntReset(SchCellCb *cellCb, SchUeCb *ueCb, SchUlHqEnt *hqE)
       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
  *
@@ -213,12 +215,15 @@ uint8_t schUlGetAvlHqProcess(SchCellCb *cellCb, SchUeCb *ueCb, SchUlHqProcCb **h
  **/
 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);
 }
@@ -239,17 +244,7 @@ void schUlHqProcessNack(SchUlHqProcCb *hqP)
 {
    if (hqP->tbInfo.txCntr < hqP->maxHqTxPerHqP)
    {
-      cmLListAdd2Tail(&(hqP->hqEnt->ue->ulRetxHqList), &hqP->ulHqProcLink);
-#ifdef NR_DRX
-      if(hqP->hqEnt->ue->ueDrxInfoPres == true)
-      {
-         schDrxStrtUlHqRttTmr(hqP);
-      }
-      else
-#endif
-      {
-         addUeToBeScheduled(hqP->hqEnt->cell, hqP->hqEnt->ue->ueId);
-      }   
+       hqP->hqEnt->cell->api->SchAddToUlHqRetxList(hqP);
    }
    else
    {
@@ -273,6 +268,35 @@ void schUlHqProcessAck(SchUlHqProcCb *hqP)
 {
    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
  **********************************************************************/