X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_utils.c;h=8a5f298db5ca64f1b63fb59cd358679549d43d95;hb=0d34456980069864f19fe3090ed5a4c968fe2d45;hp=b3d038d88c0ce6b9236087457762c3ee7527266a;hpb=6f769128e3fa5a83ee92e668ef9ac152c96b3200;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_utils.c b/src/5gnrsch/sch_utils.c index b3d038d88..8a5f298db 100644 --- a/src/5gnrsch/sch_utils.c +++ b/src/5gnrsch/sch_utils.c @@ -34,6 +34,7 @@ /* header files */ #include "sch_utils.h" +#include "math.h" /* spec-38.213 Table 13-1 */ int8_t coresetIdxTable[MAX_CORESET_INDEX][4] = { @@ -428,26 +429,47 @@ uint16_t mcsTable[32][3] = { { 30, 4, 0}, /* mcs index 30 */ { 31, 6, 0}}; /* mcs index 31 */ +/* PUCCH resource sets before dedicated PUCCH resource configuration */ +/* Table 9.2.1-1 spec 38.213 */ +uint8_t pucchResourceSet[MAX_PUCCH_RES_SET_IDX][4] = { +{ 0, 12, 2, 0 }, /* index 0 */ +{ 0, 12, 2, 0 }, /* index 1 */ +{ 0, 12, 2, 3 }, /* index 2 */ +{ 1, 10, 4, 0 }, /* index 3 */ +{ 1, 10, 4, 0 }, /* index 4 */ +{ 1, 10, 4, 2 }, /* index 5 */ +{ 1, 10, 4, 4 }, /* index 6 */ +{ 1, 4, 10, 0 }, /* index 7 */ +{ 1, 4, 10, 0 }, /* index 8 */ +{ 1, 4, 10, 2 }, /* index 9 */ +{ 1, 4, 10, 4 }, /* index 10 */ +{ 1, 0, 14, 0 }, /* index 11 */ +{ 1, 0, 14, 0 }, /* index 12 */ +{ 1, 0, 14, 2 }, /* index 13 */ +{ 1, 0, 14, 4 }, /* index 14 */ +{ 1, 0, 14, 0 }, /* index 15 */ +}; + /** * @brief frequency domain allocation function. * * @details * - * Function: calculatePRB + * Function: schAllocFreqDomRscType0 * - * This function does allocation in frequency domain resource. using - * bitwise operator, the bits are set for the PRBs. + * This function does allocation in frequency domain resource. + * This is a bitmap defining non-overlapping groups of 6 PRBs in ascending order. * * @param[in] startPrb - start PRB from where the freq alloc starts. * @param[in] prbSize - number of PRBs to be allocted. * @param[in] freqDomain - 6 bytes of info, each bit represents a group of 6 PRB. * @return void **/ -void calculatePRB(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain) +void schAllocFreqDomRscType0(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain) { uint8_t remBits = prbSize; /* each bit represents 6 PRBs */ uint8_t firstByte = 1; - uint8_t numBits,startBit,byteCount = 0; + uint8_t numBits,startBit,byteCount = 5; while(remBits) { @@ -455,7 +477,7 @@ void calculatePRB(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain) if(startPrb/8) { startPrb -= 8; - byteCount++; + byteCount--; continue; } @@ -476,12 +498,12 @@ void calculatePRB(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain) numBits = 8 - startBit; /* bit operation to set the bits */ - SET_BITS((startBit % 8),numBits,freqDomain[byteCount]) + SET_BITS_MSB((startBit % 8),numBits,freqDomain[byteCount]) firstByte = 0; /* the ramaining bits should be subtracted with the numBits set in this byte */ remBits -= numBits; - byteCount++; + byteCount--; } }