#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.
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;
}
/**
**/
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;
}
/**
* @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;
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;
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 */
}
/* 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;
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;