X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fcommon_def.c;h=c731bad45cb7e5aafc3a91c7af758cf4c1f11de6;hb=fc7d3ce9647a7da04f5a67fa34419076069defc1;hp=785956ca7887753f4f7f9c98a9a07f59602cb65e;hpb=4a4be152a02505f732a92caa2a5592f2ec70b9ae;p=o-du%2Fl2.git diff --git a/src/cm/common_def.c b/src/cm/common_def.c index 785956ca7..c731bad45 100644 --- a/src/cm/common_def.c +++ b/src/cm/common_def.c @@ -18,6 +18,23 @@ #include "common_def.h" +#ifdef MEM_SIZE_CHECK +#define CM_MEMORY_ALLOC_SIZE_LOG(_line, _func, _size) \ +{\ + DU_LOG("\nRLC line = %d, func = %s, _size= %d ", _line, _func, _size); \ +} +#else +#define CM_MEMORY_ALLOC_SIZE_LOG(_line, _func, _size) {} +#endif + +/*Spec 38.104, Table 5.4.2.1-1 ARFCN - FREQ mapping*/ +/*{ F_REF(Mhz), ΔF_Global, F_REF-Offs, N_REF-offs, Range of N_REF }*/ +uint32_t arfcnFreqTable[3][5] = { + { 3000, 5, 0, 0, 599999 }, /*index 0*/ + { 24250, 15, 3000, 600000, 2016666 }, /*index 1*/ + { 100000, 60, 24250.08, 2016667, 3279165 }, /*index 2*/ +}; + /** * @brief frequency domain allocation function. * @@ -220,11 +237,11 @@ uint8_t convertScsValToScsEnum(uint32_t num) } /******************************************************************* - * @brief convert scs periodicity value into the enum value received from O1 + * @brief convert SSB periodicity value into the enum value received from O1 * * @details * - * Function : convertScsPeriodicityToEnum + * Function : convertSSBPeriodicityToEnum * * Functionality: * - convert scs periodicity value @@ -234,30 +251,30 @@ uint8_t convertScsValToScsEnum(uint32_t num) * RFAILED - failure * * ****************************************************************/ -uint8_t convertScsPeriodicityToEnum(uint32_t num) +uint8_t convertSSBPeriodicityToEnum(uint32_t num) { switch(num) { case 5: - return SCS_5MS; + return SSB_5MS; case 10: - return SCS_10MS; + return SSB_10MS; case 20: - return SCS_20MS; + return SSB_20MS; case 40: - return SCS_40MS; + return SSB_40MS; case 80: - return SCS_80MS; + return SSB_80MS; case 160: - return SCS_160MS; + return SSB_160MS; default: - return SCS_5MS; + return SSB_5MS; } } /******************************************************************* @@ -278,6 +295,7 @@ uint8_t convertScsPeriodicityToEnum(uint32_t num) * ****************************************************************/ uint8_t SGetSBufNewForDebug(char *file, const char *func, int line, Region region, Pool pool, Data **ptr, Size size) { + CM_MEMORY_ALLOC_SIZE_LOG(line, func, size); if(SGetSBuf(region, pool, ptr, size) == ROK) { #ifdef ODU_MEMORY_DEBUG_LOG @@ -346,6 +364,7 @@ uint8_t SPutSBufNewForDebug(char *file, const char *func, int line, Region regio uint8_t SGetStaticBufNewForDebug(char *file, const char *func, int line, \ Region region, Pool pool, Data **ptr, Size size, uint8_t memType) { + CM_MEMORY_ALLOC_SIZE_LOG(line, func, size); if(SGetStaticBuffer(region, pool, ptr, size, memType) == ROK) { #ifdef ODU_MEMORY_DEBUG_LOG @@ -417,6 +436,75 @@ uint8_t countSetBits(uint32_t num) return(count); } +/******************************************************************* +* +* @brief convert ARFCN to freq in kHZ +* +* @details +* +* Function : convertArfcnToFreqKhz +* +* Functionality: convert ARFCN to freq in kHZ as per Table below +* 3GPP TS 38.104, Table 5.4.2.1-1 +* Formula: F_REF = F_REF-Offs + ΔF_Global (N_REF – N_REF-Offs) +* +* @params[in] uint32_t number +* +* @return [out] uint32_t Freq in kHZ +* +* ****************************************************************/ +uint32_t convertArfcnToFreqKhz(uint32_t arfcn) +{ + uint8_t indexTable = 0; + uint32_t freq = 0; + + for(indexTable = 0; indexTable < 3; indexTable++) + { + if(arfcn <= arfcnFreqTable[indexTable][4]) + { + freq = (arfcnFreqTable[indexTable][2] * 1000) + (arfcnFreqTable[indexTable][1] * (arfcn - arfcnFreqTable[indexTable][3])); + return (freq); + } + } + DU_LOG("ERROR --> DUAPP: ARFCN vaid range is between 0 and 3279165"); + return (freq); +} + + +/******************************************************************* +* +* @brief convert Freq(MHZ) to ARFCN +* +* @details +* +* Function : convertFreqToArfcn +* +* Functionality: convert freq to ARFCN as per Table below +* 3GPP TS 38.104, Table 5.4.2.1-1 +* Formula: NREF = NREF-Offs + (FREF – FREF-Offs) / ΔFGlobal +* +* @params[in] uint32_t Freq(kHZ) +* +* @return [out] uint32_t ARFCN(number) +* +* ****************************************************************/ +uint32_t convertFreqToArfcn(uint32_t freq) +{ + uint8_t indexTable = 0; + uint32_t arfcn = 0; + + for(indexTable = 0; indexTable < 3; indexTable++) + { + if(freq < (arfcnFreqTable[indexTable][0] * 1000)) + { + arfcn = arfcnFreqTable[indexTable][3] + ((freq - (arfcnFreqTable[indexTable][2] * 1000)) / (arfcnFreqTable[indexTable][1])); + return (arfcn); + } + } + DU_LOG("ERROR --> DUAPP: FREQ vaid range is between 0 and 100000 MHz"); + return (arfcn); +} + /********************************************************************** End of file **********************************************************************/