Mux Code Changes
[o-du/l2.git] / src / 5gnrsch / sch_utils.c
index b3d038d..8a5f298 100644 (file)
@@ -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--;
    }
 }