X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fhi_lib%2Fapp%2Fsrc%2Fcommon.c;h=e365cc4372222789d0221c827b3edacf17da5c4b;hb=70d9d920dd4e575f085f1f1a9050fefd1c10e127;hp=d9b5d0c65d018d8124d29ecc0b79f1d10a95d102;hpb=cef07f74965b1749dd909fc1322e211489fea2ea;p=o-du%2Fphy.git diff --git a/fhi_lib/app/src/common.c b/fhi_lib/app/src/common.c index d9b5d0c..e365cc4 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. @@ -16,7 +16,6 @@ * *******************************************************************************/ - #include #include #include @@ -37,6 +36,11 @@ extern enum app_state state; 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 */ @@ -51,6 +55,10 @@ 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]; @@ -59,12 +67,42 @@ 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] = @@ -179,13 +217,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) { @@ -282,11 +342,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;