X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fhi_lib%2Fapp%2Fsrc%2Fcommon.c;h=e3135c74773271893a22ac02e0a5100bdc3a0766;hb=HEAD;hp=3bf22b64705b93bc79988dc060f9078d82537f58;hpb=2fbf70096f64af622da983e88c5a64e90ad9bdbd;p=o-du%2Fphy.git diff --git a/fhi_lib/app/src/common.c b/fhi_lib/app/src/common.c index 3bf22b6..e3135c7 100644 --- a/fhi_lib/app/src/common.c +++ b/fhi_lib/app/src/common.c @@ -1,6 +1,6 @@ /****************************************************************************** * -* Copyright (c) 2019 Intel. +* Copyright (c) 2020 Intel. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ #include #include #include - +#include #include "common.h" #include "xran_fh_o_du.h" #include "xran_pkt.h" @@ -32,70 +32,14 @@ #include "xran_mlog_lnx.h" extern enum app_state state; +struct o_xu_buffers* p_o_xu_buff[XRAN_PORTS_NUM] = {NULL, NULL, NULL, NULL}; -int iq_playback_buffer_size_dl = IQ_PLAYBACK_BUFFER_BYTES; -int iq_playback_buffer_size_ul = IQ_PLAYBACK_BUFFER_BYTES; - -int iq_bfw_buffer_size_dl = IQ_PLAYBACK_BUFFER_BYTES; -int iq_bfw_buffer_size_ul = IQ_PLAYBACK_BUFFER_BYTES; - -int iq_srs_buffer_size_ul = IQ_PLAYBACK_BUFFER_BYTES; - -uint8_t numCCPorts = 1; -/* Number of antennas supported by front-end */ - -uint8_t num_eAxc = 4; -/* Number of CPRI ports supported by front-end */ - -int16_t *p_tx_play_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_play_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_play_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -int16_t *p_tx_prach_play_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_prach_play_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_prach_play_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -int16_t *p_tx_srs_play_buffer[XRAN_MAX_SECTOR_NR*XRAN_MAX_ANT_ARRAY_ELM_NR]; -int32_t tx_srs_play_buffer_size[XRAN_MAX_SECTOR_NR*XRAN_MAX_ANT_ARRAY_ELM_NR]; -int32_t tx_srs_play_buffer_position[XRAN_MAX_SECTOR_NR*XRAN_MAX_ANT_ARRAY_ELM_NR]; - -int16_t *p_rx_log_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_log_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_log_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -int16_t *p_prach_log_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t prach_log_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t prach_log_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -int16_t *p_srs_log_buffer[XRAN_MAX_SECTOR_NR*XRAN_MAX_ANT_ARRAY_ELM_NR]; -int32_t srs_log_buffer_size[XRAN_MAX_SECTOR_NR*XRAN_MAX_ANT_ARRAY_ELM_NR]; -int32_t srs_log_buffer_position[XRAN_MAX_SECTOR_NR*XRAN_MAX_ANT_ARRAY_ELM_NR]; - -int16_t *p_tx_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; - -int16_t *p_rx_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; - -/* beamforming weights for UL (O-DU) */ -int16_t *p_tx_dl_bfw_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_dl_bfw_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_dl_bfw_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -/* beamforming weights for UL (O-DU) */ -int16_t *p_tx_ul_bfw_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_ul_bfw_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t tx_ul_bfw_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -/* beamforming weights for UL (O-RU) */ -int16_t *p_rx_dl_bfw_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_dl_bfw_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_dl_bfw_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; - -/* beamforming weights for UL (O-RU) */ -int16_t *p_rx_ul_bfw_buffer[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_ul_bfw_buffer_size[MAX_ANT_CARRIER_SUPPORTED]; -int32_t rx_ul_bfw_buffer_position[MAX_ANT_CARRIER_SUPPORTED]; +// F1 Tables 38.101-1 Table 5.3.2-1. Maximum transmission bandwidth configuration NRB +uint16_t nLteNumRbsPerSymF1[1][4] = +{ + // 5MHz 10MHz 15MHz 20 MHz + {25, 50, 75, 100}, // Numerology 0 (15KHz) +}; // F1 Tables 38.101-1 Table 5.3.2-1. Maximum transmission bandwidth configuration NRB uint16_t nNumRbsPerSymF1[3][13] = @@ -151,12 +95,7 @@ int16_t nCpSizeF2[2][4][2] = {{68, 36}, {136, 72}, {272, 144}, {544, 288}}, // Numerology 3 (120KHz) }; -uint32_t gMaxSlotNum; -uint32_t gNumDLCtx; -uint32_t gNumULCtx; -uint32_t gDLResetAdvance; -uint32_t gDLProcAdvance; -uint32_t gULProcAdvance; +uint32_t gLocMaxSlotNum; static uint16_t g_NumSlotTDDLoop[XRAN_MAX_SECTOR_NR] = { XRAN_NUM_OF_SLOT_IN_TDD_LOOP }; static uint16_t g_NumDLSymSp[XRAN_MAX_SECTOR_NR][XRAN_NUM_OF_SLOT_IN_TDD_LOOP] = {0}; @@ -210,13 +149,35 @@ uint32_t app_xran_get_scs(uint8_t nMu) * **/ //------------------------------------------------------------------------------------------- -uint16_t app_xran_get_num_rbs(uint32_t nNumerology, uint32_t nBandwidth, uint32_t nAbsFrePointA) +uint16_t app_xran_get_num_rbs(uint8_t ranTech, uint32_t nNumerology, uint32_t nBandwidth, uint32_t nAbsFrePointA) { uint32_t error = 1; uint16_t numRBs = 0; - if (nAbsFrePointA <= 6000000) - { + if (ranTech == XRAN_RAN_LTE) { + switch(nBandwidth) + { + case PHY_BW_5_0_MHZ: + numRBs = nLteNumRbsPerSymF1[nNumerology][0]; + error = 0; + break; + case PHY_BW_10_0_MHZ: + numRBs = nLteNumRbsPerSymF1[nNumerology][1]; + error = 0; + break; + case PHY_BW_15_0_MHZ: + numRBs = nLteNumRbsPerSymF1[nNumerology][2]; + error = 0; + break; + case PHY_BW_20_0_MHZ: + numRBs = nLteNumRbsPerSymF1[nNumerology][3]; + error = 0; + break; + default: + error = 1; + break; + } + } else if (nAbsFrePointA <= 6000000) { // F1 Tables 38.101-1 Table 5.3.2-1. Maximum transmission bandwidth configuration NRB if (nNumerology < 3) { @@ -313,11 +274,11 @@ uint16_t app_xran_get_num_rbs(uint32_t nNumerology, uint32_t nBandwidth, uint32_ if (error) { - printf("ERROR: %s: nNumerology[%d] nBandwidth[%d] nAbsFrePointA[%d]\n",__FUNCTION__, nNumerology, nBandwidth, nAbsFrePointA); + printf("ERROR: %s: RAN[%s] nNumerology[%d] nBandwidth[%d] nAbsFrePointA[%d]\n",__FUNCTION__, (ranTech ? "LTE" : "5G NR"), nNumerology, nBandwidth, nAbsFrePointA); } else { - printf("%s: nNumerology[%d] nBandwidth[%d] nAbsFrePointA[%d] numRBs[%d]\n",__FUNCTION__, nNumerology, nBandwidth, nAbsFrePointA, numRBs); + printf("%s: RAN [%s] nNumerology[%d] nBandwidth[%d] nAbsFrePointA[%d] numRBs[%d]\n",__FUNCTION__, (ranTech ? "LTE" : "5G NR"), nNumerology, nBandwidth, nAbsFrePointA, numRBs); } return numRBs; @@ -373,11 +334,11 @@ uint32_t app_xran_cal_nrarfcn(uint32_t nCenterFreq) int32_t app_xran_slot_limit(int32_t nSfIdx) { while (nSfIdx < 0) { - nSfIdx += gMaxSlotNum; + nSfIdx += gLocMaxSlotNum; } - while (nSfIdx >= gMaxSlotNum) { - nSfIdx -= gMaxSlotNum; + while (nSfIdx >= gLocMaxSlotNum) { + nSfIdx -= gLocMaxSlotNum; } return nSfIdx;