remove/replaced PRIVATE and EXTERN keywords
[o-du/l2.git] / src / 5gnrsch / sch_rach.c
index 7f03bfd..7cec7b8 100644 (file)
@@ -42,8 +42,8 @@
 #include "sch.h"
 #include "sch_utils.h"
 
-extern SchCb schCb[SCH_MAX_INST];
-extern uint8_t puschDeltaTable[MAX_MU_PUSCH];
+SchCb schCb[SCH_MAX_INST];
+uint8_t puschDeltaTable[MAX_MU_PUSCH];
 
 /**
  * @brief calculate ra-rnti function. 
@@ -62,9 +62,11 @@ extern uint8_t puschDeltaTable[MAX_MU_PUSCH];
 uint16_t calculateRaRnti(uint8_t symbolIdx, uint8_t slotIdx, uint8_t freqIdx)
 {
    uint16_t raRnti = 0;
-       uint8_t ulCarrierIdx = 0; /* configured to 0 */
+   uint8_t ulCarrierIdx = 0; /* configured to 0 */
+   
    raRnti = (1+symbolIdx+(14*slotIdx)+(14*80*freqIdx)+(14*80*8*ulCarrierIdx));
-       return raRnti;
+   
+   return raRnti;
 }
 
 /**
@@ -82,7 +84,10 @@ uint16_t calculateRaRnti(uint8_t symbolIdx, uint8_t slotIdx, uint8_t freqIdx)
  **/
 void createSchRaCb(uint16_t tcrnti, Inst schInst)
 {
-   schCb[schInst].cells[schInst]->raCb[0].tcrnti = tcrnti;
+   uint8_t ueIdx = 0;
+
+   GET_UE_IDX(tcrnti, ueIdx);
+   schCb[schInst].cells[schInst]->raCb[ueIdx -1].tcrnti = tcrnti;
 }
 
 /**
@@ -100,8 +105,8 @@ void createSchRaCb(uint16_t tcrnti, Inst schInst)
  *  @param[out]  msg3NumRb
  *  @return  void
  **/
-uint8_t schAllocMsg3Pusch(Inst schInst, uint16_t slot, uint16_t *msg3StartRb,
-uint8_t *msg3NumRb)
+uint8_t schAllocMsg3Pusch(Inst schInst, uint16_t slot, uint16_t crnti, \
+   uint16_t *msg3StartRb, uint8_t *msg3NumRb)
 {
    SchCellCb      *cell         = NULLP;
    SchUlSlotInfo  *schUlSlotInfo    = NULLP;
@@ -118,7 +123,6 @@ uint8_t *msg3NumRb)
    uint8_t    numPdschSymbols= 14;
    uint16_t   tbSize         = 0;
 
-
    cell = schCb[schInst].cells[schInst];
    //  puschMu = cell->cellCfg.puschMu;
    delta = puschDeltaTable[puschMu];
@@ -151,6 +155,10 @@ uint8_t *msg3NumRb)
       DU_LOG("SCH: Memory allocation failed in schAllocMsg3Pusch");
       return RFAILED;
    }
+   tbSize = 0;  /* since nPrb has been incremented, recalculating tbSize */
+   tbSize = schCalcTbSizeFromNPrb(numRb, mcs, numPdschSymbols);
+
+   schUlSlotInfo->schPuschInfo->crnti             = crnti;
    schUlSlotInfo->schPuschInfo->harqProcId        = SCH_HARQ_PROC_ID;
    schUlSlotInfo->schPuschInfo->resAllocType      = SCH_ALLOC_TYPE_1;
    schUlSlotInfo->schPuschInfo->fdAlloc.startPrb  = startRb;
@@ -159,8 +167,8 @@ uint8_t *msg3NumRb)
    schUlSlotInfo->schPuschInfo->tdAlloc.numSymb   = symbLen;
    schUlSlotInfo->schPuschInfo->tbInfo.mcs            = mcs;
    schUlSlotInfo->schPuschInfo->tbInfo.ndi        = 1; /* new transmission */
-   schUlSlotInfo->schPuschInfo->tbInfo.rv              = 0;
-   schUlSlotInfo->schPuschInfo->tbInfo.tbSize     = 24; /*Considering 2 PRBs */
+   schUlSlotInfo->schPuschInfo->tbInfo.rv        = 0;
+   schUlSlotInfo->schPuschInfo->tbInfo.tbSize     = tbSize; /*Considering 2 PRBs */
    schUlSlotInfo->schPuschInfo->dmrsMappingType   = DMRS_MAP_TYPE_A;  /* Setting Type-A */
    schUlSlotInfo->schPuschInfo->nrOfDmrsSymbols   = NUM_DMRS_SYMBOLS;
    schUlSlotInfo->schPuschInfo->dmrsAddPos        = DMRS_ADDITIONAL_POS;
@@ -218,7 +226,7 @@ uint8_t schProcessRachInd(RachIndInfo *rachInd, Inst schInst)
    createSchRaCb(rachInd->crnti,schInst);
 
    /* allocate resources for msg3 */
-   ret = schAllocMsg3Pusch(schInst, rarSlot, &msg3StartRb, &msg3NumRb);
+   ret = schAllocMsg3Pusch(schInst, rarSlot, rachInd->crnti, &msg3StartRb, &msg3NumRb);
    if(ret == ROK)
    {
       /* fill RAR info */
@@ -285,7 +293,7 @@ uint8_t schFillRar(RarAlloc *rarAlloc, uint16_t raRnti, uint16_t pci, uint8_t of
    }
 
    /* calculate the PRBs */
-   schAllocFreqDomRscType0(((offsetPointA-offset)/6), (numRbs/6), FreqDomainResource);
+   freqDomRscAllocType0(((offsetPointA-offset)/6), (numRbs/6), FreqDomainResource);
 
    /* fill BWP */
    bwp->freqAlloc.numPrb   = initialBwp->bwp.freqAlloc.numPrb;
@@ -294,15 +302,15 @@ uint8_t schFillRar(RarAlloc *rarAlloc, uint16_t raRnti, uint16_t pci, uint8_t of
    bwp->cyclicPrefix       = initialBwp->bwp.cyclicPrefix;
 
    /* fill the PDCCH PDU */
-   pdcch->coreset0Cfg.startSymbolIndex = firstSymbol;
-   pdcch->coreset0Cfg.durationSymbols = numSymbols;
-   memcpy(pdcch->coreset0Cfg.freqDomainResource,FreqDomainResource,6);
-   pdcch->coreset0Cfg.cceRegMappingType = 1; /* coreset0 is always interleaved */
-   pdcch->coreset0Cfg.regBundleSize = 6;    /* spec-38.211 sec 7.3.2.2 */
-   pdcch->coreset0Cfg.interleaverSize = 2;  /* spec-38.211 sec 7.3.2.2 */
-   pdcch->coreset0Cfg.coreSetType = 0;
-   pdcch->coreset0Cfg.shiftIndex = pci;
-   pdcch->coreset0Cfg.precoderGranularity = 0; /* sameAsRegBundle */
+   pdcch->coresetCfg.startSymbolIndex = firstSymbol;
+   pdcch->coresetCfg.durationSymbols = numSymbols;
+   memcpy(pdcch->coresetCfg.freqDomainResource, FreqDomainResource, FREQ_DOM_RSRC_SIZE);
+   pdcch->coresetCfg.cceRegMappingType = 1; /* coreset0 is always interleaved */
+   pdcch->coresetCfg.regBundleSize = 6;    /* spec-38.211 sec 7.3.2.2 */
+   pdcch->coresetCfg.interleaverSize = 2;  /* spec-38.211 sec 7.3.2.2 */
+   pdcch->coresetCfg.coreSetType = 0;
+   pdcch->coresetCfg.shiftIndex = pci;
+   pdcch->coresetCfg.precoderGranularity = 0; /* sameAsRegBundle */
    pdcch->numDlDci = 1;
    pdcch->dci.rnti = raRnti; /* RA-RNTI */
    pdcch->dci.scramblingId = pci;