#include "du_app_mac_inf.h"
#include "mac_sch_interface.h"
#include "sch.h"
+#include "sch_tmr.h"
#include "sch_utils.h"
/**
*
* @details
*
- * Function : schProcessCrcInd
+ * Function : SchProcCrcInd
*
* This function process CRC indication
*
* -# ROK
* -# RFAILED
**/
-uint8_t schProcessCrcInd(CrcIndInfo *crcInd, Inst schInst)
+uint8_t SchProcCrcInd(Pst *pst, CrcIndInfo *crcInd)
{
- SchCellCb *cell = schCb[schInst].cells[schInst];
uint16_t count=0;
uint8_t ueId=0;
SchUlHqProcCb *hqP = NULLP;
-
+ Inst schInst = pst->dstInst - SCH_INST_START;
+ SchCellCb *cell = schCb[schInst].cells[schInst];
+
while(count <crcInd->numCrcInd)
{
GET_UE_ID(crcInd->crnti, ueId);
if (crcInd->crcInd[count])
{
/* failure case*/
- if (cell->raCb[ueId-1].msg3HqProc.tbInfo.txCntr < cell->cellCfg.schRachCfg.maxMsg3Tx)
+ if (cell->raCb[ueId-1].msg3HqProc.tbInfo.txCntr < cell->maxMsg3Tx)
{
- addUeToBeScheduled(cell, ueId);
+ cell->api->SchCrcInd(cell, ueId);
cell->raCb[ueId - 1].retxMsg3HqProc = &cell->raCb[ueId - 1].msg3HqProc;
}
else
}
else
{
- if(cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot])
+ if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.count == 0)
{
- if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.count == 0)
- {
- DU_LOG("\n ERROR no harq stored in ul hq map at slot %d ue id %d\n",crcInd->timingInfo.slot, ueId);
- continue;
- }
- if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first == 0)
- {
- DU_LOG("\n ERROR NULL harq stored in ul hq map at slot %d ue id %d\n",crcInd->timingInfo.slot, ueId);
- continue;
- }
- hqP = (SchUlHqProcCb*) cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first->node;
- if(hqP == NULLP)
- {
- continue;
+ DU_LOG("\n ERROR no harq stored in ul hq map at slot %d ue id %d\n",crcInd->timingInfo.slot, ueId);
+ continue;
+ }
+ if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first == 0)
+ {
+ DU_LOG("\n ERROR NULL harq stored in ul hq map at slot %d ue id %d\n",crcInd->timingInfo.slot, ueId);
+ continue;
+ }
+ hqP = (SchUlHqProcCb*) cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first->node;
+ if(hqP == NULLP)
+ {
+ continue;
+ }
+ else
+ {
+ if (crcInd->crcInd[count])
+ {
+ /* failure case*/
+ schUlHqProcessNack(hqP);
}
else
{
- if (crcInd->crcInd[count])
- {
- /* failure case*/
- schUlHqProcessNack(hqP);
- }
- else
- {
- /* pass case*/
- schUlHqProcessAck(hqP);
- }
+ /* pass case*/
+ schUlHqProcessAck(hqP);
}
- cmLListDelFrm(&(cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList), &hqP->ulSlotLnk);
}
+ cmLListDelFrm(&(cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList), &hqP->ulSlotLnk);
}
count++;
}