diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 247bc9e073fc05190365e88524c595f79d6b5adb..f155d3061db9a80041b292432d8f90b18f210d45 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -1330,6 +1330,9 @@ add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} ) add_library(coding MODULE ${PHY_TURBOSRC} ) +add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ) + + set(PHY_SRC_COMMON ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c @@ -1370,7 +1373,7 @@ set(PHY_SRC_COMMON ${OPENAIR1_DIR}/PHY/INIT/lte_parms.c ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c - ${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c + ${OPENAIR1_DIR}/PHY/TOOLS/dfts_load.c ${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c ${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c ${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.c @@ -1585,6 +1588,7 @@ endif () add_library(PHY_COMMON ${PHY_SRC_COMMON}) add_dependencies(PHY_COMMON rrc_flag) +add_dependencies(PHY_COMMON dfts) add_library(PHY ${PHY_SRC}) add_dependencies(PHY rrc_flag) add_library(PHY_UE ${PHY_SRC_UE}) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 818b1fd79c70a486933ab1a1cacc7b0b3492be1e..8e4ae59a7faf90c5c10e70037ff2d52913b27491 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -217,7 +217,7 @@ install_protobuf_from_source(){ #tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner #cd protobuf-2.6.1/ rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0 - wget https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz + wget --tries=3 --retry-connrefused https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz tar -xzvf protobuf-cpp-3.3.0.tar.gz --owner $USER --group $(groups | cut -d" " -f1) --no-same-owner cd protobuf-3.3.0/ ./configure @@ -353,8 +353,8 @@ install_bladerf_driver_from_source(){ $SUDO ldconfig echo "Downloading FPGA and firmware images" cd /tmp/bladeRF - wget https://www.nuand.com/fx3/bladeRF_fw_latest.img - wget https://www.nuand.com/fpga/hostedx40-latest.rbf + wget --tries=3 --retry-connrefused https://www.nuand.com/fx3/bladeRF_fw_latest.img + wget --tries=3 --retry-connrefused https://www.nuand.com/fpga/hostedx40-latest.rbf sudo mkdir -p /usr/share/Nuand/bladeRF sudo mv bladeRF_fw_latest.img /usr/share/Nuand/bladeRF/bladeRF_fw.img sudo mv hostedx40-latest.rbf /usr/share/Nuand/bladeRF/hostedx40.rbf @@ -567,7 +567,7 @@ check_install_additional_tools (){ echo_info "Installing Netinterfaces package. The logfile for installation is in $log_netiface" ( $SUDO rm -fr /tmp/netifaces-0.10.4.tar.gz /tmp/netifaces - wget -P /tmp https://pypi.python.org/packages/18/fa/dd13d4910aea339c0bb87d2b3838d8fd923c11869b1f6e741dbd0ff3bc00/netifaces-0.10.4.tar.gz + wget --tries=3 --retry-connrefused -P /tmp https://pypi.python.org/packages/18/fa/dd13d4910aea339c0bb87d2b3838d8fd923c11869b1f6e741dbd0ff3bc00/netifaces-0.10.4.tar.gz tar -xzvf /tmp/netifaces-0.10.4.tar.gz -C /tmp cd /tmp/netifaces-0.10.4 $SUDO python setup.py install diff --git a/openair1/PHY/INIT/lte_init_ru.c b/openair1/PHY/INIT/lte_init_ru.c index 207bf249f511902ba0c1e83f78cfa94f48ab22b0..dddd6b1bd50b134456e540dca75a574ee09ed2cf 100644 --- a/openair1/PHY/INIT/lte_init_ru.c +++ b/openair1/PHY/INIT/lte_init_ru.c @@ -38,7 +38,7 @@ int phy_init_RU(RU_t *ru) { LTE_DL_FRAME_PARMS *fp = ru->frame_parms; RU_CALIBRATION *calibration = &ru->calibration; int i,j,p,re; - init_dfts(); + //load_dftslib(); LOG_I(PHY,"Initializing RU signal buffers (if_south %s) nb_tx %d\n",ru_if_types[ru->if_south],ru->nb_tx); if (ru->is_slave == 1) { @@ -76,7 +76,7 @@ int phy_init_RU(RU_t *ru) { } if (ru->function != NGFI_RRU_IF5) { // we need to do RX/TX RU processing - init_dfts(); + load_dftslib(); init_7_5KHz(); LOG_I(PHY,"nb_tx %d\n",ru->nb_tx); ru->common.rxdata_7_5kHz = (int32_t **)malloc16(ru->nb_rx*sizeof(int32_t *) ); diff --git a/openair1/PHY/INIT/lte_init_ue.c b/openair1/PHY/INIT/lte_init_ue.c index 1a6f0081e1ab0fe151b8470ccdbd4b056dd617c0..082db61da94f53302e9a7a94588060f3fa0ed059 100644 --- a/openair1/PHY/INIT/lte_init_ue.c +++ b/openair1/PHY/INIT/lte_init_ue.c @@ -625,7 +625,7 @@ int init_lte_ue_signal(PHY_VARS_UE *ue, int th_id; LOG_D(PHY,"Initializing UE vars (abstraction %"PRIu8") for eNB TXant %"PRIu8", UE RXant %"PRIu8"\n",abstraction_flag,fp->nb_antennas_tx,fp->nb_antennas_rx); crcTableInit(); - init_dfts(); + load_dftslib(); init_frame_parms(&ue->frame_parms,1); lte_sync_time_init(&ue->frame_parms); init_lte_top(&ue->frame_parms); diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 1c0d5a6acadc6d323f04b99569249f52910f4c0f..af411fc7d776e4a4ac4d0d4308ab4901ac4d59a9 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -96,7 +96,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, while(gNB->configured == 0) usleep(10000); - init_dfts(); + load_dftslib(); /* LOG_I(PHY,"[gNB %"PRIu8"] Initializing DL_FRAME_PARMS : N_RB_DL %"PRIu8", PHICH Resource %d, PHICH Duration %d nb_antennas_tx:%u nb_antennas_rx:%u PRACH[rootSequenceIndex:%u prach_Config_enabled:%u configIndex:%u highSpeed:%u zeroCorrelationZoneConfig:%u freqOffset:%u]\n", gNB->Mod_id, @@ -112,7 +112,6 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, );*/ LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_gNB][MOD %02"PRIu8"][]\n", gNB->Mod_id); crcTableInit(); - init_dfts(); load_nrLDPClib(); // PBCH DMRS gold sequences generation nr_init_pbch_dmrs(gNB); diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index 4ed5be2119e8ca5802923cf44c120ea9cac9302a..5c812e340fa3ca6f24eaa7c739ca0f16722c3025 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -988,7 +988,7 @@ void init_nr_ue_transport(PHY_VARS_NR_UE *ue, void phy_init_nr_top(PHY_VARS_NR_UE *ue) { NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms; crcTableInit(); - init_dfts(); + load_dftslib(); init_context_synchro_nr(frame_parms); generate_ul_reference_signal_sequences(SHRT_MAX); // Polar encoder init for PBCH diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c index 04fe19ecbce878acce9af7830489ff181a5a8573..aaa138fcd9d8ca066a678496c30b015e70c5edde 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c @@ -56,22 +56,22 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms, // do ifft of channel estimate switch(frame_parms->N_RB_DL) { case 6: - dft128((int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], + dft(DFT_128,(int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], (int16_t*) lte_eNB_srs->srs_ch_estimates_time[aa], 1); break; case 25: - dft512((int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], + dft(DFT_512,(int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], (int16_t*) lte_eNB_srs->srs_ch_estimates_time[aa], 1); break; case 50: - dft1024((int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], + dft(DFT_1024,(int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], (int16_t*) lte_eNB_srs->srs_ch_estimates_time[aa], 1); break; case 100: - dft2048((int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], + dft(DFT_2048,(int16_t*) <e_eNB_srs->srs_ch_estimates[aa][0], (int16_t*) lte_eNB_srs->srs_ch_estimates_time[aa], 1); break; diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c index e50af7cdd8f297a95b8c3eeb440227eb5ec37658..d221348b44f38a9e7f2375a47a3c63db7b3d2a9c 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c @@ -657,35 +657,35 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue, } } - void (*idft)(int16_t *,int16_t *, int); + idft_size_idx_t idftsizeidx; switch (ue->frame_parms.ofdm_symbol_size) { case 128: - idft = idft128; - break; - - case 256: - idft = idft256; - break; - - case 512: - idft = idft512; - break; - - case 1024: - idft = idft1024; - break; - - case 1536: - idft = idft1536; - break; - - case 2048: - idft = idft2048; - break; - - default: - idft = idft512; + idftsizeidx = IDFT_128; + break; + + case 256: + idftsizeidx = IDFT_256; + break; + + case 512: + idftsizeidx = IDFT_512; + break; + + case 1024: + idftsizeidx = IDFT_1024; + break; + + case 1536: + idftsizeidx = IDFT_1536; + break; + + case 2048: + idftsizeidx = IDFT_2048; + break; + + default: + idftsizeidx = IDFT_512; break; } @@ -695,7 +695,7 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue, for (p=0; p<ue->frame_parms.nb_antenna_ports_eNB; p++) { if (ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx]) { //LOG_I(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d \n", Ns, ue->current_thread_id[Ns>>1], l); - idft((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx][8], + idft(idftsizeidx,(int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx][8], (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates_time[eNB_offset][(p<<1)+aarx],1); } } diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c index 6f917ee49c5cb1b42e1320972f5fc2dfd8155d74..333a6f08665ef8a34dd6c0a4ad480f931264aba8 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c @@ -724,31 +724,31 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue, if (ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa]) { switch (ue->frame_parms.N_RB_DL) { case 6: - idft128((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], + idft(IDFT_128,(int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_offset][aa], 1); break; case 25: - idft512((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], + idft(IDFT_512,(int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_offset][aa], 1); break; case 50: - idft1024((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], + idft(IDFT_1024,(int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_offset][aa], 1); break; case 75: - idft1536((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], + idft(IDFT_1536,(int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_offset][aa], 1); break; case 100: - idft2048((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], + idft(IDFT_2048,(int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_offset][aa][8], (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_offset][aa], 1); break; diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c index 0c98bdc5a563295f73f2801bfdbbe25c2d5da2f5..0d765a18b339c6fe92109207cb7067cbd50ea3cc 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c @@ -141,28 +141,28 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) // LTE_UE_COMMON *com switch (frame_parms->N_RB_DL) { case 6: - idft128((short*)syncF_tmp, /// complex input + idft(IDFT_128,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 25: - idft512((short*)syncF_tmp, /// complex input + idft(IDFT_512,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 50: - idft1024((short*)syncF_tmp, /// complex input + idft(IDFT_1024,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 75: - idft1536((short*)syncF_tmp, /// complex input + idft(IDFT_1536,(short*)syncF_tmp, /// complex input (short*)sync_tmp, 1); /// complex output break; case 100: - idft2048((short*)syncF_tmp, /// complex input + idft(IDFT_2048,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; @@ -189,28 +189,28 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) // LTE_UE_COMMON *com switch (frame_parms->N_RB_DL) { case 6: - idft128((short*)syncF_tmp, /// complex input + idft(IDFT_128,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 25: - idft512((short*)syncF_tmp, /// complex input + idft(IDFT_512,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 50: - idft1024((short*)syncF_tmp, /// complex input + idft(IDFT_1024,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 75: - idft1536((short*)syncF_tmp, /// complex input + idft(IDFT_1536,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 100: - idft2048((short*)syncF_tmp, /// complex input + idft(IDFT_2048,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; @@ -237,28 +237,28 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) // LTE_UE_COMMON *com switch (frame_parms->N_RB_DL) { case 6: - idft128((short*)syncF_tmp, /// complex input + idft(IDFT_128,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 25: - idft512((short*)syncF_tmp, /// complex input + idft(IDFT_512,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 50: - idft1024((short*)syncF_tmp, /// complex input + idft(IDFT_1024,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 75: - idft1536((short*)syncF_tmp, /// complex input + idft(IDFT_1536,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; case 100: - idft2048((short*)syncF_tmp, /// complex input + idft(IDFT_2048,(short*)syncF_tmp, /// complex input (short*)sync_tmp, /// complex output 1); break; @@ -492,28 +492,28 @@ int ru_sync_time_init(RU_t *ru) // LTE_UE_COMMON *common_vars switch (ru->frame_parms->N_RB_DL) { case 6: - idft128((int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), + idft(IDFT_128,(int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), ru->dmrssync, /// complex output 1); break; case 25: - idft512((int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), + idft(IDFT_512,(int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), ru->dmrssync, /// complex output 1); break; case 50: - idft1024((int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), + idft(IDFT_1024,(int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), ru->dmrssync, /// complex output 1); break; case 75: - idft1536((int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), + idft(IDFT_1536,(int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), ru->dmrssync, 1); /// complex output break; case 100: - idft2048((int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), + idft(IDFT_2048,(int16_t*)(&dmrsp[0][3*ru->frame_parms->ofdm_symbol_size]), ru->dmrssync, /// complex output 1); break; diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c index de48a855df6b5814b569cc3d5fcc15f24e28e434..524b200e1a1883d4cc1748f8b420e2d78ffc5dd8 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c @@ -80,7 +80,7 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq) while (1) { //compute frequency-domain representation of 6144-sample chunk - dft6144((int16_t *)rxp, + dft(DFT_6144,(int16_t *)rxp, sp,1); @@ -267,7 +267,7 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq) } // ifft, accumulate energy over two half-frames - idft256((int16_t*)autocorr0,(int16_t*)tmp_t,1); + idft(IDFT_256,(int16_t*)autocorr0,(int16_t*)tmp_t,1); /* if (i==12288) { sprintf(fname,"corr256F_%d.m",abs(f)); @@ -285,12 +285,12 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq) for (re=0; re<(256/4); re++) autocorr0_t[re] = _mm_add_epi32(autocorr0_t[re],_mm_madd_epi16(tmp_t[re],tmp_t[re])); - idft256((int16_t*)autocorr1,(int16_t*)tmp_t,1); + idft(IDFT_256,(int16_t*)autocorr1,(int16_t*)tmp_t,1); for (re=0; re<(256/4); re++) autocorr1_t[re] = _mm_add_epi32(autocorr1_t[re],_mm_madd_epi16(tmp_t[re],tmp_t[re])); - idft256((int16_t*)autocorr2,(int16_t*)tmp_t,1); + idft(IDFT_256,(int16_t*)autocorr2,(int16_t*)tmp_t,1); for (re=0; re<(256/4); re++) autocorr2_t[re] = _mm_add_epi32(autocorr2_t[re],_mm_madd_epi16(tmp_t[re],tmp_t[re])); diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c index cb001f9dc48f95e75a8e355322bda9aa99a5fcfc..f5543eda52ec8f39eabc75ab50e7c18c90583365 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c @@ -246,25 +246,25 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB, switch(frame_parms->N_RB_DL) { case 6: - idft128((int16_t *) temp_in_ifft_0, + idft(IDFT_128,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; case 25: - idft512((int16_t *) temp_in_ifft_0, + idft(IDFT_512,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; case 50: - idft1024((int16_t *) temp_in_ifft_0, + idft(IDFT_1024,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; case 100: - idft2048((int16_t *) temp_in_ifft_0, + idft(IDFT_2048,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; @@ -575,25 +575,25 @@ int32_t lte_ul_channel_estimation_RRU(LTE_DL_FRAME_PARMS *frame_parms, switch(frame_parms->N_RB_DL) { case 6: - idft128((int16_t *) temp_in_ifft_0, + idft(IDFT_128,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; case 25: - idft512((int16_t *) temp_in_ifft_0, + idft(IDFT_512,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; case 50: - idft1024((int16_t *) temp_in_ifft_0, + idft(IDFT_1024,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; case 100: - idft2048((int16_t *) temp_in_ifft_0, + idft(IDFT_2048,(int16_t *) temp_in_ifft_0, (int16_t *) ul_ch_estimates_time[aa], 1); break; diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c index 3471f98af793b6e3b1b2bbe2f09c676ac983d729..983e30c80a1b6c50ccf4a9f7b4ac418304db86ae 100644 --- a/openair1/PHY/LTE_TRANSPORT/prach.c +++ b/openair1/PHY/LTE_TRANSPORT/prach.c @@ -298,24 +298,24 @@ void rx_prach0(PHY_VARS_eNB *eNB, switch (fp->N_RB_UL) { case 6: if (prach_fmt == 4) { - dft256(prach2,rxsigF[aa],1); + dft(DFT_256,prach2,rxsigF[aa],1); } else { - dft1536(prach2,rxsigF[aa],1); + dft(DFT_1536,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft1536(prach2+3072,rxsigF[aa]+3072,1); + dft(DFT_1536,prach2+3072,rxsigF[aa]+3072,1); } break; case 15: if (prach_fmt == 4) { - dft256(prach2,rxsigF[aa],1); + dft(DFT_256,prach2,rxsigF[aa],1); } else { - dft3072(prach2,rxsigF[aa],1); + dft(DFT_3072,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft3072(prach2+6144,rxsigF[aa]+6144,1); + dft(DFT_3072,prach2+6144,rxsigF[aa]+6144,1); } break; @@ -323,13 +323,13 @@ void rx_prach0(PHY_VARS_eNB *eNB, case 25: default: if (prach_fmt == 4) { - dft1024(prach2,rxsigF[aa],1); + dft(DFT_1024,prach2,rxsigF[aa],1); fft_size = 1024; } else { - dft6144(prach2,rxsigF[aa],1); + dft(DFT_6144,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft6144(prach2+12288,rxsigF[aa]+12288,1); + dft(DFT_6144,prach2+12288,rxsigF[aa]+12288,1); fft_size = 6144; } @@ -338,24 +338,24 @@ void rx_prach0(PHY_VARS_eNB *eNB, case 50: if (prach_fmt == 4) { - dft2048(prach2,rxsigF[aa],1); + dft(DFT_2048,prach2,rxsigF[aa],1); } else { - dft12288(prach2,rxsigF[aa],1); + dft(DFT_12288,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft12288(prach2+24576,rxsigF[aa]+24576,1); + dft(DFT_12288,prach2+24576,rxsigF[aa]+24576,1); } break; case 75: if (prach_fmt == 4) { - dft3072(prach2,rxsigF[aa],1); + dft(DFT_3072,prach2,rxsigF[aa],1); } else { - dft18432(prach2,rxsigF[aa],1); + dft(DFT_18432,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft18432(prach2+36864,rxsigF[aa]+36864,1); + dft(DFT_18432,prach2+36864,rxsigF[aa]+36864,1); } break; @@ -363,21 +363,21 @@ void rx_prach0(PHY_VARS_eNB *eNB, case 100: if (fp->threequarter_fs==0) { if (prach_fmt == 4) { - dft4096(prach2,rxsigF[aa],1); + dft(DFT_4096,prach2,rxsigF[aa],1); } else { - dft24576(prach2,rxsigF[aa],1); + dft(DFT_24576,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft24576(prach2+49152,rxsigF[aa]+49152,1); + dft(DFT_24576,prach2+49152,rxsigF[aa]+49152,1); } } else { if (prach_fmt == 4) { - dft3072(prach2,rxsigF[aa],1); + dft(DFT_3072,prach2,rxsigF[aa],1); } else { - dft18432(prach2,rxsigF[aa],1); + dft(DFT_18432,prach2,rxsigF[aa],1); if (prach_fmt>1) - dft18432(prach2+36864,rxsigF[aa]+36864,1); + dft(DFT_18432,prach2+36864,rxsigF[aa]+36864,1); } } @@ -589,13 +589,13 @@ void rx_prach0(PHY_VARS_eNB *eNB, // Now do IFFT of size 1024 (N_ZC=839) or 256 (N_ZC=139) if (N_ZC == 839) { log2_ifft_size = 10; - idft1024(prachF,prach_ifft_tmp,1); + idft(IDFT_1024,prachF,prach_ifft_tmp,1); // compute energy and accumulate over receive antennas and repetitions for BR for (i=0; i<2048; i++) prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[i<<1] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>9; } else { - idft256(prachF,prach_ifft_tmp,1); + idft(IDFT_256,prachF,prach_ifft_tmp,1); log2_ifft_size = 8; // compute energy and accumulate over receive antennas and repetitions for BR diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c index 1b0d7feaf51cd647d6e199c08016df49c9e057b3..0e7bdd2ae46af2fe9075fa58e443f0d7676f433b 100644 --- a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c +++ b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c @@ -154,9 +154,9 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH) { switch (Msc_PUSCH) { case 12: - dft12((int16_t *)idft_in0,(int16_t *)idft_out0); - dft12((int16_t *)idft_in1,(int16_t *)idft_out1); - dft12((int16_t *)idft_in2,(int16_t *)idft_out2); + dft(DFT_12,(int16_t *)idft_in0,(int16_t *)idft_out0,0); + dft(DFT_12,(int16_t *)idft_in1,(int16_t *)idft_out1,0); + dft(DFT_12,(int16_t *)idft_in2,(int16_t *)idft_out2,0); #if defined(__x86_64__)||defined(__i386__) norm128 = _mm_set1_epi16(9459); #elif defined(__arm__) @@ -178,201 +178,201 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH) { break; case 24: - dft24(idft_in0,idft_out0,1); - dft24(idft_in1,idft_out1,1); - dft24(idft_in2,idft_out2,1); + dft(DFT_24,idft_in0,idft_out0,1); + dft(DFT_24,idft_in1,idft_out1,1); + dft(DFT_24,idft_in2,idft_out2,1); break; case 36: - dft36(idft_in0,idft_out0,1); - dft36(idft_in1,idft_out1,1); - dft36(idft_in2,idft_out2,1); + dft(DFT_36,idft_in0,idft_out0,1); + dft(DFT_36,idft_in1,idft_out1,1); + dft(DFT_36,idft_in2,idft_out2,1); break; case 48: - dft48(idft_in0,idft_out0,1); - dft48(idft_in1,idft_out1,1); - dft48(idft_in2,idft_out2,1); + dft(DFT_48,idft_in0,idft_out0,1); + dft(DFT_48,idft_in1,idft_out1,1); + dft(DFT_48,idft_in2,idft_out2,1); break; case 60: - dft60(idft_in0,idft_out0,1); - dft60(idft_in1,idft_out1,1); - dft60(idft_in2,idft_out2,1); + dft(DFT_60,idft_in0,idft_out0,1); + dft(DFT_60,idft_in1,idft_out1,1); + dft(DFT_60,idft_in2,idft_out2,1); break; case 72: - dft72(idft_in0,idft_out0,1); - dft72(idft_in1,idft_out1,1); - dft72(idft_in2,idft_out2,1); + dft(DFT_72,idft_in0,idft_out0,1); + dft(DFT_72,idft_in1,idft_out1,1); + dft(DFT_72,idft_in2,idft_out2,1); break; case 96: - dft96(idft_in0,idft_out0,1); - dft96(idft_in1,idft_out1,1); - dft96(idft_in2,idft_out2,1); + dft(DFT_96,idft_in0,idft_out0,1); + dft(DFT_96,idft_in1,idft_out1,1); + dft(DFT_96,idft_in2,idft_out2,1); break; case 108: - dft108(idft_in0,idft_out0,1); - dft108(idft_in1,idft_out1,1); - dft108(idft_in2,idft_out2,1); + dft(DFT_108,idft_in0,idft_out0,1); + dft(DFT_108,idft_in1,idft_out1,1); + dft(DFT_108,idft_in2,idft_out2,1); break; case 120: - dft120(idft_in0,idft_out0,1); - dft120(idft_in1,idft_out1,1); - dft120(idft_in2,idft_out2,1); + dft(DFT_120,idft_in0,idft_out0,1); + dft(DFT_120,idft_in1,idft_out1,1); + dft(DFT_120,idft_in2,idft_out2,1); break; case 144: - dft144(idft_in0,idft_out0,1); - dft144(idft_in1,idft_out1,1); - dft144(idft_in2,idft_out2,1); + dft(DFT_144,idft_in0,idft_out0,1); + dft(DFT_144,idft_in1,idft_out1,1); + dft(DFT_144,idft_in2,idft_out2,1); break; case 180: - dft180(idft_in0,idft_out0,1); - dft180(idft_in1,idft_out1,1); - dft180(idft_in2,idft_out2,1); + dft(DFT_180,idft_in0,idft_out0,1); + dft(DFT_180,idft_in1,idft_out1,1); + dft(DFT_180,idft_in2,idft_out2,1); break; case 192: - dft192(idft_in0,idft_out0,1); - dft192(idft_in1,idft_out1,1); - dft192(idft_in2,idft_out2,1); + dft(DFT_192,idft_in0,idft_out0,1); + dft(DFT_192,idft_in1,idft_out1,1); + dft(DFT_192,idft_in2,idft_out2,1); break; case 216: - dft216(idft_in0,idft_out0,1); - dft216(idft_in1,idft_out1,1); - dft216(idft_in2,idft_out2,1); + dft(DFT_216,idft_in0,idft_out0,1); + dft(DFT_216,idft_in1,idft_out1,1); + dft(DFT_216,idft_in2,idft_out2,1); break; case 240: - dft240(idft_in0,idft_out0,1); - dft240(idft_in1,idft_out1,1); - dft240(idft_in2,idft_out2,1); + dft(DFT_240,idft_in0,idft_out0,1); + dft(DFT_240,idft_in1,idft_out1,1); + dft(DFT_240,idft_in2,idft_out2,1); break; case 288: - dft288(idft_in0,idft_out0,1); - dft288(idft_in1,idft_out1,1); - dft288(idft_in2,idft_out2,1); + dft(DFT_288,idft_in0,idft_out0,1); + dft(DFT_288,idft_in1,idft_out1,1); + dft(DFT_288,idft_in2,idft_out2,1); break; case 300: - dft300(idft_in0,idft_out0,1); - dft300(idft_in1,idft_out1,1); - dft300(idft_in2,idft_out2,1); + dft(DFT_300,idft_in0,idft_out0,1); + dft(DFT_300,idft_in1,idft_out1,1); + dft(DFT_300,idft_in2,idft_out2,1); break; case 324: - dft324((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft324((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft324((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_324,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_324,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_324,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 360: - dft360((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft360((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft360((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_360,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_360,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_360,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 384: - dft384((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft384((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft384((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_384,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_384,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_384,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 432: - dft432((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft432((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft432((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_432,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_432,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_432,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 480: - dft480((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft480((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft480((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_480,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_480,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_480,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 540: - dft540((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft540((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft540((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_540,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_540,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_540,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 576: - dft576((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft576((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft576((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_576,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_576,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_576,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 600: - dft600((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft600((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft600((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_600,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_600,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_600,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 648: - dft648((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft648((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft648((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_648,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_648,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_648,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 720: - dft720((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft720((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft720((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_720,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_720,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_720,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 768: - dft768((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft768((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft768((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_768,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_768,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_768,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 864: - dft864((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft864((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft864((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_864,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_864,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_864,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 900: - dft900((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft900((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft900((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_900,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_900,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_900,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 960: - dft960((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft960((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft960((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_960,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_960,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_960,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 972: - dft972((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft972((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft972((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_972,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_972,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_972,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 1080: - dft1080((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft1080((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft1080((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_1080,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_1080,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_1080,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 1152: - dft1152((int16_t *)idft_in0,(int16_t *)idft_out0,1); - dft1152((int16_t *)idft_in1,(int16_t *)idft_out1,1); - dft1152((int16_t *)idft_in2,(int16_t *)idft_out2,1); + dft(DFT_1152,(int16_t *)idft_in0,(int16_t *)idft_out0,1); + dft(DFT_1152,(int16_t *)idft_in1,(int16_t *)idft_out1,1); + dft(DFT_1152,(int16_t *)idft_in2,(int16_t *)idft_out2,1); break; case 1200: - dft1200(idft_in0,idft_out0,1); - dft1200(idft_in1,idft_out1,1); - dft1200(idft_in2,idft_out2,1); + dft(DFT_1200,idft_in0,idft_out0,1); + dft(DFT_1200,idft_in1,idft_out1,1); + dft(DFT_1200,idft_in2,idft_out2,1); break; default: diff --git a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c index 49fa484c2650cf7d3c5bf095511f32d126528100..5c75dd250cff86a92eb3e50a38f8ef5d0442e098 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c @@ -338,11 +338,11 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 switch (ue->frame_parms.N_RB_UL) { case 6: if (prach_fmt == 4) { - idft256(prachF,prach2,1); + idft(IDFT_256,prachF,prach2,1); memmove( prach, prach+512, Ncp<<2 ); prach_len = 256+Ncp; } else { - idft1536(prachF,prach2,1); + idft(IDFT_1536,prachF,prach2,1); memmove( prach, prach+3072, Ncp<<2 ); prach_len = 1536+Ncp; @@ -356,12 +356,12 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 case 15: if (prach_fmt == 4) { - idft512(prachF,prach2,1); + idft(IDFT_512,prachF,prach2,1); //TODO: account for repeated format in dft output memmove( prach, prach+1024, Ncp<<2 ); prach_len = 512+Ncp; } else { - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); memmove( prach, prach+6144, Ncp<<2 ); prach_len = 3072+Ncp; @@ -376,11 +376,11 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 case 25: default: if (prach_fmt == 4) { - idft1024(prachF,prach2,1); + idft(IDFT_1024,prachF,prach2,1); memmove( prach, prach+2048, Ncp<<2 ); prach_len = 1024+Ncp; } else { - idft6144(prachF,prach2,1); + idft(IDFT_6144,prachF,prach2,1); /*for (i=0;i<6144*2;i++) prach2[i]<<=1;*/ memmove( prach, prach+12288, Ncp<<2 ); @@ -396,11 +396,11 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 case 50: if (prach_fmt == 4) { - idft2048(prachF,prach2,1); + idft(IDFT_2048,prachF,prach2,1); memmove( prach, prach+4096, Ncp<<2 ); prach_len = 2048+Ncp; } else { - idft12288(prachF,prach2,1); + idft(IDFT_12288,prachF,prach2,1); memmove( prach, prach+24576, Ncp<<2 ); prach_len = 12288+Ncp; @@ -414,12 +414,12 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 case 75: if (prach_fmt == 4) { - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); //TODO: account for repeated format in dft output memmove( prach, prach+6144, Ncp<<2 ); prach_len = 3072+Ncp; } else { - idft18432(prachF,prach2,1); + idft(IDFT_18432,prachF,prach2,1); memmove( prach, prach+36864, Ncp<<2 ); prach_len = 18432+Ncp; @@ -434,11 +434,11 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 case 100: if (ue->frame_parms.threequarter_fs == 0) { if (prach_fmt == 4) { - idft4096(prachF,prach2,1); + idft(IDFT_4096,prachF,prach2,1); memmove( prach, prach+8192, Ncp<<2 ); prach_len = 4096+Ncp; } else { - idft24576(prachF,prach2,1); + idft(IDFT_24576,prachF,prach2,1); memmove( prach, prach+49152, Ncp<<2 ); prach_len = 24576+Ncp; @@ -449,12 +449,12 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 } } else { if (prach_fmt == 4) { - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); //TODO: account for repeated format in dft output memmove( prach, prach+6144, Ncp<<2 ); prach_len = 3072+Ncp; } else { - idft18432(prachF,prach2,1); + idft(IDFT_18432,prachF,prach2,1); memmove( prach, prach+36864, Ncp<<2 ); prach_len = 18432+Ncp; printf("Generated prach for 100 PRB, 3/4 sampling\n"); diff --git a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c index a9878b4eae49019a7a4d17063d60561f4bc16a3f..b08fe30248299c18f3dc4d96a986acfee1af1aee 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c @@ -104,9 +104,9 @@ void dft_lte(int32_t *z,int32_t *d, int32_t Msc_PUSCH, uint8_t Nsymb) switch (Msc_PUSCH) { case 12: - dft12((int16_t *)dft_in0,(int16_t *)dft_out0); - dft12((int16_t *)dft_in1,(int16_t *)dft_out1); - dft12((int16_t *)dft_in2,(int16_t *)dft_out2); + dft(DFT_12,(int16_t *)dft_in0,(int16_t *)dft_out0,0); + dft(DFT_12,(int16_t *)dft_in1,(int16_t *)dft_out1,0); + dft(DFT_12,(int16_t *)dft_in2,(int16_t *)dft_out2,0); /* dft12f(&((__m128i *)dft_in0)[0],&((__m128i *)dft_in0)[1],&((__m128i *)dft_in0)[2],&((__m128i *)dft_in0)[3],&((__m128i *)dft_in0)[4],&((__m128i *)dft_in0)[5],&((__m128i *)dft_in0)[6],&((__m128i *)dft_in0)[7],&((__m128i *)dft_in0)[8],&((__m128i *)dft_in0)[9],&((__m128i *)dft_in0)[10],&((__m128i *)dft_in0)[11], @@ -138,201 +138,201 @@ void dft_lte(int32_t *z,int32_t *d, int32_t Msc_PUSCH, uint8_t Nsymb) break; case 24: - dft24((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft24((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft24((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_24,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_24,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_24,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 36: - dft36((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft36((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft36((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_36,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_36,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_36,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 48: - dft48((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft48((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft48((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_48,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_48,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_48,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 60: - dft60((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft60((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft60((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_60,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_60,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_60,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 72: - dft72((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft72((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft72((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_72,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_72,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_72,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 96: - dft96((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft96((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft96((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_96,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_96,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_96,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 108: - dft108((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft108((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft108((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_108,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_108,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_108,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 120: - dft120((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft120((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft120((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_120,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_120,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_120,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 144: - dft144((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft144((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft144((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_144,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_144,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_144,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 180: - dft180((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft180((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft180((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_180,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_180,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_180,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 192: - dft192((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft192((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft192((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_192,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_192,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_192,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 216: - dft216((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft216((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft216((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_216,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_216,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_216,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 240: - dft240((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft240((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft240((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_240,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_240,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_240,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 288: - dft288((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft288((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft288((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_288,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_288,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_288,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 300: - dft300((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft300((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft300((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_300,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_300,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_300,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 324: - dft324((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft324((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft324((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_324,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_324,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_324,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 360: - dft360((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft360((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft360((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_360,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_360,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_360,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 384: - dft384((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft384((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft384((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_384,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_384,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_384,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 432: - dft432((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft432((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft432((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_432,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_432,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_432,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 480: - dft480((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft480((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft480((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_480,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_480,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_480,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 540: - dft540((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft540((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft540((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_540,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_540,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_540,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 576: - dft576((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft576((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft576((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_576,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_576,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_576,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 600: - dft600((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft600((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft600((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_600,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_600,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_600,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 648: - dft648((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft648((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft648((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_648,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_648,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_648,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 720: - dft720((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft720((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft720((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_720,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_720,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_720,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 768: - dft768((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft768((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft768((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_768,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_768,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_768,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 864: - dft864((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft864((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft864((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_864,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_864,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_864,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 900: - dft900((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft900((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft900((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_900,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_900,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_900,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 960: - dft960((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft960((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft960((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_960,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_960,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_960,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 972: - dft972((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft972((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft972((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_972,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_972,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_972,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 1080: - dft1080((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft1080((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft1080((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_1080,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_1080,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_1080,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 1152: - dft1152((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft1152((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft1152((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_1152,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_1152,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_1152,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; case 1200: - dft1200((int16_t*)dft_in0,(int16_t*)dft_out0,1); - dft1200((int16_t*)dft_in1,(int16_t*)dft_out1,1); - dft1200((int16_t*)dft_in2,(int16_t*)dft_out2,1); + dft(DFT_1200,(int16_t*)dft_in0,(int16_t*)dft_out0,1); + dft(DFT_1200,(int16_t*)dft_in1,(int16_t*)dft_out1,1); + dft(DFT_1200,(int16_t*)dft_in2,(int16_t*)dft_out2,1); break; } diff --git a/openair1/PHY/MODULATION/nr_modulation.c b/openair1/PHY/MODULATION/nr_modulation.c index 5c8fce3c3862641ecdd4dc39315e5cd542e0e984..b27b692e66122244cba89b409b0bc9343d235a88 100644 --- a/openair1/PHY/MODULATION/nr_modulation.c +++ b/openair1/PHY/MODULATION/nr_modulation.c @@ -242,7 +242,7 @@ void nr_dft(int32_t *z, int32_t *d, uint32_t Msc_PUSCH) switch (Msc_PUSCH) { case 12: - dft12((int16_t *)dft_in0, (int16_t *)dft_out0); + dft(DFT_12,(int16_t *)dft_in0, (int16_t *)dft_out0,0); #if defined(__x86_64__) || defined(__i386__) norm128 = _mm_set1_epi16(9459); @@ -260,135 +260,135 @@ void nr_dft(int32_t *z, int32_t *d, uint32_t Msc_PUSCH) break; case 24: - dft24((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_24,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 36: - dft36((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_36,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 48: - dft48((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_48,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 60: - dft60((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_60,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 72: - dft72((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_72,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 96: - dft96((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_96,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 108: - dft108((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_108,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 120: - dft120((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_120,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 144: - dft144((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_144,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 180: - dft180((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_180,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 192: - dft192((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_192,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 216: - dft216((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_216,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 240: - dft240((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_240,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 288: - dft288((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_288,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 300: - dft300((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_300,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 324: - dft324((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_324,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 360: - dft360((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_360,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 384: - dft384((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_384,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 432: - dft432((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_432,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 480: - dft480((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_480,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 540: - dft540((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_540,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 576: - dft576((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_576,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 600: - dft600((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_600,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 648: - dft648((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_648,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 720: - dft720((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_720,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 768: - dft768((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_768,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 864: - dft864((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_864,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 900: - dft900((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_900,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 960: - dft960((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_960,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 972: - dft972((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_960,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 1080: - dft1080((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_1080,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 1152: - dft1152((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_1152,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; case 1200: - dft1200((int16_t*)dft_in0, (int16_t*)dft_out0, 1); + dft(DFT_1200,(int16_t*)dft_in0, (int16_t*)dft_out0, 1); break; } diff --git a/openair1/PHY/MODULATION/ofdm_mod.c b/openair1/PHY/MODULATION/ofdm_mod.c index cbeeca13278f6147c0ce2657f95da5faef7e490d..855e649cc5e629a128ba9ffcc680f07c6525956d 100644 --- a/openair1/PHY/MODULATION/ofdm_mod.c +++ b/openair1/PHY/MODULATION/ofdm_mod.c @@ -95,41 +95,41 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input volatile int *output_ptr=(int*)0; int *temp_ptr=(int*)0; - void (*idft)(int16_t *,int16_t *, int); + idft_size_idx_t idftsize; switch (fftsize) { case 128: - idft = idft128; + idftsize = IDFT_128; break; case 256: - idft = idft256; + idftsize = IDFT_256; break; case 512: - idft = idft512; + idftsize = IDFT_512; break; case 1024: - idft = idft1024; + idftsize = IDFT_1024; break; case 1536: - idft = idft1536; + idftsize = IDFT_1536; break; case 2048: - idft = idft2048; + idftsize = IDFT_2048; break; case 3072: - idft = idft3072; + idftsize = IDFT_3072; break; case 4096: - idft = idft4096; + idftsize = IDFT_4096; break; default: - idft = idft512; + idftsize = IDFT_512; break; } @@ -148,12 +148,12 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input #ifndef __AVX2__ // handle 128-bit alignment for 128-bit SIMD (SSE4,NEON,AltiVEC) - idft((int16_t *)&input[i*fftsize], + idft(idftsize,(int16_t *)&input[i*fftsize], (fftsize==128) ? (int16_t *)temp : (int16_t *)&output[(i*fftsize) + ((1+i)*nb_prefix_samples)], 1); #else // on AVX2 need 256-bit alignment - idft((int16_t *)&input[i*fftsize], + idft(idftsize,(int16_t *)&input[i*fftsize], (int16_t *)temp, 1); diff --git a/openair1/PHY/MODULATION/slot_fep.c b/openair1/PHY/MODULATION/slot_fep.c index 163ebac65f7a81938b7dd97b743f2846945c9b33..8f41735f10cfa5fd4a915a7d8cb825b2305c03ba 100644 --- a/openair1/PHY/MODULATION/slot_fep.c +++ b/openair1/PHY/MODULATION/slot_fep.c @@ -49,36 +49,36 @@ int slot_fep(PHY_VARS_UE *ue, unsigned char harq_pid = dlsch_ue[0]->current_harq_pid; LTE_DL_UE_HARQ_t *dlsch0_harq = dlsch_ue[0]->harq_processes[harq_pid]; int uespec_pilot[9][1200];*/ - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsizeidx; int tmp_dft_in[2048] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft128; - break; - - case 256: - dft = dft256; - break; - - case 512: - dft = dft512; - break; - - case 1024: - dft = dft1024; - break; - - case 1536: - dft = dft1536; - break; - - case 2048: - dft = dft2048; + dftsizeidx = DFT_128; + break; + + case 256: + dftsizeidx = DFT_256; + break; + + case 512: + dftsizeidx = DFT_512; + break; + + case 1024: + dftsizeidx = DFT_1024; + break; + + case 1536: + dftsizeidx = DFT_1536; + break; + + case 2048: + dftsizeidx = DFT_2048; break; default: - dft = dft512; + dftsizeidx = DFT_512; break; } @@ -118,13 +118,13 @@ int slot_fep(PHY_VARS_UE *ue, memcpy((void *)tmp_dft_in, (void *)&common_vars->rxdata[aa][rx_offset % frame_length_samples], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsizeidx,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly #if UE_TIMING_TRACE start_meas(&ue->rx_dft_stats); #endif - dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); #if UE_TIMING_TRACE stop_meas(&ue->rx_dft_stats); @@ -153,10 +153,10 @@ int slot_fep(PHY_VARS_UE *ue, memcpy((void *)tmp_dft_in, (void *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsizeidx,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly - dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } @@ -247,36 +247,36 @@ int front_end_fft(PHY_VARS_UE *ue, unsigned char harq_pid = dlsch_ue[0]->current_harq_pid; LTE_DL_UE_HARQ_t *dlsch0_harq = dlsch_ue[0]->harq_processes[harq_pid]; int uespec_pilot[9][1200];*/ - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsizeidx; int tmp_dft_in[2048] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft128; - break; - - case 256: - dft = dft256; - break; - - case 512: - dft = dft512; - break; - - case 1024: - dft = dft1024; - break; - - case 1536: - dft = dft1536; - break; - - case 2048: - dft = dft2048; - break; - - default: - dft = dft512; + dftsizeidx = DFT_128; + break; + + case 256: + dftsizeidx = DFT_256; + break; + + case 512: + dftsizeidx = DFT_512; + break; + + case 1024: + dftsizeidx = DFT_1024; + break; + + case 1536: + dftsizeidx = DFT_1536; + break; + + case 2048: + dftsizeidx = DFT_2048; + break; + + default: + dftsizeidx = DFT_512; break; } @@ -319,11 +319,11 @@ int front_end_fft(PHY_VARS_UE *ue, memcpy((void *)tmp_dft_in, (void *)&common_vars->rxdata[aa][rx_offset % frame_length_samples], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsizeidx,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[threadId].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly start_meas(&ue->rx_dft_stats); - dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[threadId].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); stop_meas(&ue->rx_dft_stats); } @@ -349,10 +349,10 @@ int front_end_fft(PHY_VARS_UE *ue, memcpy((void *)tmp_dft_in, (void *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsizeidx,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[threadId].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly - dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[threadId].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } diff --git a/openair1/PHY/MODULATION/slot_fep_mbsfn.c b/openair1/PHY/MODULATION/slot_fep_mbsfn.c index 38d78119e3fefe839bd34a3e270dc4a73247b163..603674502973f973275dd913480a1c4645963205 100644 --- a/openair1/PHY/MODULATION/slot_fep_mbsfn.c +++ b/openair1/PHY/MODULATION/slot_fep_mbsfn.c @@ -42,35 +42,35 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue, unsigned int subframe_offset; // int i; unsigned int frame_length_samples = frame_parms->samples_per_tti * 10; - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsizeidx; switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft128; - break; - - case 256: - dft = dft256; - break; - - case 512: - dft = dft512; - break; - - case 1024: - dft = dft1024; - break; - - case 1536: - dft = dft1536; - break; - - case 2048: - dft = dft2048; - break; - - default: - dft = dft512; + dftsizeidx = DFT_128; + break; + + case 256: + dftsizeidx = DFT_256; + break; + + case 512: + dftsizeidx = DFT_512; + break; + + case 1024: + dftsizeidx = DFT_1024; + break; + + case 1536: + dftsizeidx = DFT_1536; + break; + + case 2048: + dftsizeidx = DFT_2048; + break; + + default: + dftsizeidx = DFT_512; break; } @@ -110,7 +110,7 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue, #if UE_TIMING_TRACE start_meas(&ue->rx_dft_stats); #endif - dft((int16_t *)&common_vars->rxdata[aa][(sample_offset + + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(sample_offset + nb_prefix_samples0 + subframe_offset - SOFFSET) % frame_length_samples], @@ -131,7 +131,7 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue, #if UE_TIMING_TRACE start_meas(&ue->rx_dft_stats); #endif - dft((int16_t *)&common_vars->rxdata[aa][(sample_offset + + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(sample_offset + (frame_parms->ofdm_symbol_size+nb_prefix_samples0+nb_prefix_samples) + (frame_parms->ofdm_symbol_size+nb_prefix_samples)*(l-1) + subframe_offset- @@ -208,43 +208,43 @@ int slot_fep_mbsfn_khz_1dot25(PHY_VARS_UE *ue, int ofdm_symbol_size; unsigned int subframe_offset; unsigned int frame_length_samples = frame_parms->samples_per_tti * 10; - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsizeidx; AssertFatal(frame_parms->frame_type == FDD, "Frame is TDD!\n"); switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft1536; + dftsizeidx = DFT_1536; ofdm_symbol_size=1536; nb_prefix_samples=384; break; case 256: AssertFatal(1==0,"FeMBMS dft3072 not implemented\n"); - dft = dft3072; + dftsizeidx = DFT_3072; ofdm_symbol_size=3072; nb_prefix_samples=768; break; case 512: - dft = dft6144; + dftsizeidx = DFT_6144; nb_prefix_samples=1536; ofdm_symbol_size=6144; break; case 1024: - dft = dft12288; + dftsizeidx = DFT_12288; nb_prefix_samples=3072; ofdm_symbol_size=12288; break; case 1536: - dft = dft18432; + dftsizeidx = DFT_18432; nb_prefix_samples=4608; ofdm_symbol_size=18432; break; case 2048: - dft = dft24576; + dftsizeidx = DFT_24576; nb_prefix_samples=6144; ofdm_symbol_size=24576; break; @@ -265,7 +265,7 @@ int slot_fep_mbsfn_khz_1dot25(PHY_VARS_UE *ue, #if UE_TIMING_TRACE start_meas(&ue->rx_dft_stats); #endif - dft((int16_t *)&common_vars->rxdata[aa][(sample_offset + + dft(dftsizeidx,(int16_t *)&common_vars->rxdata[aa][(sample_offset + nb_prefix_samples + subframe_offset - SOFFSET) % frame_length_samples], diff --git a/openair1/PHY/MODULATION/slot_fep_nr.c b/openair1/PHY/MODULATION/slot_fep_nr.c index f2e5d24badb305acd0c912e99120220a45ad5b29..c5c4d0b63821ac78cbb6d43a382f0c65be4cfcb2 100644 --- a/openair1/PHY/MODULATION/slot_fep_nr.c +++ b/openair1/PHY/MODULATION/slot_fep_nr.c @@ -62,44 +62,44 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, unsigned int rx_offset; - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsize; int tmp_dft_in[8192] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft128; + dftsize = DFT_128; break; case 256: - dft = dft256; + dftsize = DFT_256; break; case 512: - dft = dft512; + dftsize = DFT_512; break; case 1024: - dft = dft1024; + dftsize = DFT_1024; break; case 1536: - dft = dft1536; + dftsize = DFT_1536; break; case 2048: - dft = dft2048; + dftsize = DFT_2048; break; case 3072: - dft = dft3072; + dftsize = DFT_3072; break; case 4096: - dft = dft4096; + dftsize = DFT_4096; break; case 8192: - dft = dft8192; + dftsize = DFT_8192; break; default: @@ -155,14 +155,14 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, memcpy((void *)tmp_dft_in, (void *) &common_vars->rxdata[aa][rx_offset % frame_length_samples], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsize,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly #if UE_TIMING_TRACE start_meas(&ue->rx_dft_stats); #endif - dft((int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsize,(int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); #if UE_TIMING_TRACE stop_meas(&ue->rx_dft_stats); @@ -183,11 +183,11 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, memcpy((void *)tmp_dft_in, (void *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsize,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly - dft((int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsize,(int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } #if UE_TIMING_TRACE @@ -237,44 +237,44 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, unsigned int rx_offset; - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsize; int tmp_dft_in[8192] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft128; + dftsize = DFT_128; break; case 256: - dft = dft256; + dftsize = DFT_256; break; case 512: - dft = dft512; + dftsize = DFT_512; break; case 1024: - dft = dft1024; + dftsize = DFT_1024; break; case 1536: - dft = dft1536; + dftsize = DFT_1536; break; case 2048: - dft = dft2048; + dftsize = DFT_2048; break; case 3072: - dft = dft3072; + dftsize = DFT_3072; break; case 4096: - dft = dft4096; + dftsize = DFT_4096; break; case 8192: - dft = dft8192; + dftsize = DFT_8192; break; default: @@ -330,14 +330,15 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, memcpy((void *)tmp_dft_in, (void *) &common_vars->rxdata[aa][rx_offset], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsize,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly #if UE_TIMING_TRACE start_meas(&ue->rx_dft_stats); #endif - dft((int16_t *) &common_vars->rxdata[aa][rx_offset], + + dft(dftsize,(int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); #if UE_TIMING_TRACE stop_meas(&ue->rx_dft_stats); @@ -358,11 +359,10 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, memcpy((void *)tmp_dft_in, (void *) &common_vars->rxdata[aa][rx_offset], frame_parms->ofdm_symbol_size*sizeof(int)); - dft((int16_t *)tmp_dft_in, + dft(dftsize,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly - - dft((int16_t *) &common_vars->rxdata[aa][rx_offset], + dft(dftsize,(int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } #if UE_TIMING_TRACE @@ -400,43 +400,43 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, unsigned int nb_prefix_samples = (no_prefix ? 0 : frame_parms->nb_prefix_samples); unsigned int nb_prefix_samples0 = (no_prefix ? 0 : frame_parms->nb_prefix_samples0); - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsize; switch (frame_parms->ofdm_symbol_size) { case 128: - dft = dft128; + dftsize = DFT_128; break; case 256: - dft = dft256; + dftsize = DFT_256; break; case 512: - dft = dft512; + dftsize = DFT_512; break; case 1024: - dft = dft1024; + dftsize = DFT_1024; break; case 1536: - dft = dft1536; + dftsize = DFT_1536; break; case 2048: - dft = dft2048; + dftsize = DFT_2048; break; case 4096: - dft = dft4096; + dftsize = DFT_4096; break; case 8192: - dft = dft8192; + dftsize = DFT_8192; break; default: - dft = dft512; + dftsize = DFT_512; break; } @@ -448,7 +448,7 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, else rxdata_offset = slot_offset + nb_prefix_samples0 + (symbol * (frame_parms->ofdm_symbol_size + nb_prefix_samples)) - SOFFSET; - dft((int16_t *)&rxdata[rxdata_offset], + dft(dftsize,(int16_t *)&rxdata[rxdata_offset], (int16_t *)&rxdataF[symbol * frame_parms->ofdm_symbol_size], 1); return(0); diff --git a/openair1/PHY/MODULATION/slot_fep_ul.c b/openair1/PHY/MODULATION/slot_fep_ul.c index 3ac8537c696ff2df692e98ad0967c1c296253ac8..746f8dbc0e1535dcca3bcdded7a83b6edee24a91 100644 --- a/openair1/PHY/MODULATION/slot_fep_ul.c +++ b/openair1/PHY/MODULATION/slot_fep_ul.c @@ -44,7 +44,7 @@ int slot_fep_ul(RU_t *ru, unsigned int slot_offset; - void (*dft)(int16_t *,int16_t *, int); + dft_size_idx_t dftsize; int tmp_dft_in[2048] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs unsigned int frame_length_samples = fp->samples_per_tti * 10; @@ -52,31 +52,31 @@ int slot_fep_ul(RU_t *ru, switch (fp->ofdm_symbol_size) { case 128: - dft = dft128; + dftsize = DFT_128; break; case 256: - dft = dft256; + dftsize = DFT_256; break; case 512: - dft = dft512; + dftsize = DFT_512; break; case 1024: - dft = dft1024; + dftsize = DFT_1024; break; case 1536: - dft = dft1536; + dftsize = DFT_1536; break; case 2048: - dft = dft2048; + dftsize = DFT_2048; break; default: - dft = dft512; + dftsize = DFT_512; break; } @@ -109,7 +109,7 @@ int slot_fep_ul(RU_t *ru, LOG_D(PHY,"slot_fep: symbol 0 %d dB\n", dB_fixed(signal_energy(&common->rxdata_7_5kHz[aa][rx_offset],fp->ofdm_symbol_size))); #endif - dft( (int16_t *)&common->rxdata_7_5kHz[aa][rx_offset], + dft( dftsize,(int16_t *)&common->rxdata_7_5kHz[aa][rx_offset], (int16_t *)&common->rxdataF[aa][fp->ofdm_symbol_size*symbol], 1 ); @@ -121,13 +121,13 @@ int slot_fep_ul(RU_t *ru, memcpy((void *)&tmp_dft_in, (void *)&common->rxdata_7_5kHz[aa][(rx_offset % frame_length_samples)], fp->ofdm_symbol_size*sizeof(int)); - dft( (short *) tmp_dft_in, + dft( dftsize,(short *) tmp_dft_in, (short*) &common->rxdataF[aa][fp->ofdm_symbol_size*symbol], 1 ); } else{ - dft( (short *)&common->rxdata_7_5kHz[aa][rx_offset], + dft( dftsize,(short *)&common->rxdata_7_5kHz[aa][rx_offset], (short*)&common->rxdataF[aa][fp->ofdm_symbol_size*symbol], 1 ); diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c index 0d7732599fc21fbe942734d36fdccebf400fb4ce..f94a82c111820ba61af2d9bf5eb9e3173dfd9c6e 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c @@ -430,55 +430,55 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, switch (gNB->frame_parms.ofdm_symbol_size) { case 128: - idft128((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_128,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 256: - idft256((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_256,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 512: - idft512((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_512,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 1024: - idft1024((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_1024,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 1536: - idft1536((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_1536,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 2048: - idft2048((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_2048,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 4096: - idft4096((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_4096,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; case 8192: - idft8192((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_8192,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; default: - idft512((int16_t*) &ul_ch_estimates[aarx][symbol_offset], + idft(IDFT_512,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], 1); break; diff --git a/openair1/PHY/NR_REFSIG/pss_nr.h b/openair1/PHY/NR_REFSIG/pss_nr.h index a2e66d4e110dce4263b22a42e9c4c513bc3a6a00..19b9736bcbeab0f10a5df838659df74ca911d939 100644 --- a/openair1/PHY/NR_REFSIG/pss_nr.h +++ b/openair1/PHY/NR_REFSIG/pss_nr.h @@ -127,8 +127,8 @@ time_stats_t generic_time[TIME_LAST]; /************** FUNCTION ******************************************/ -void *get_idft(int ofdm_symbol_size); -void *get_dft(int ofdm_symbol_size); +idft_size_idx_t get_idft(int ofdm_symbol_size); +dft_size_idx_t get_dft(int ofdm_symbol_size); void init_context_synchro_nr(NR_DL_FRAME_PARMS *frame_parms_ue); void free_context_synchro_nr(void); void init_context_pss_nr(NR_DL_FRAME_PARMS *frame_parms_ue); diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach.c b/openair1/PHY/NR_TRANSPORT/nr_prach.c index 5710499e1aed5c7c61b640aa0ca93682728b38e8..7ab553fe6bcdff35a0cc326e2ee64de2f4951e7e 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prach.c @@ -175,39 +175,39 @@ void rx_nr_prach_ru(RU_t *ru, //50 MHz @ 61.44 Ms/s prach2 = prach[aa] + (Ncp<<2); if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) - dft49152(prach2,rxsigF[aa],1); + dft(DFT_49152,prach2,rxsigF[aa],1); if (prach_fmt == 1 || prach_fmt == 2) { - dft49152(prach2+98304,rxsigF[aa]+98304,1); + dft(DFT_49152,prach2+98304,rxsigF[aa]+98304,1); reps++; } if (prach_fmt == 2) { - dft49152(prach2+(98304*2),rxsigF[aa]+(98304*2),1); - dft49152(prach2+(98304*3),rxsigF[aa]+(98304*3),1); + dft(DFT_49152,prach2+(98304*2),rxsigF[aa]+(98304*2),1); + dft(DFT_49152,prach2+(98304*3),rxsigF[aa]+(98304*3),1); reps+=2; } if (prach_fmt == 3) { - for (int i=0;i<4;i++) dft12288(prach2+(i*12288*2),rxsigF[aa]+(i*12288*2),1); + for (int i=0;i<4;i++) dft(DFT_12288,prach2+(i*12288*2),rxsigF[aa]+(i*12288*2),1); reps=4; } if (prach_fmt >3) { - dft2048(prach2,rxsigF[aa],1); + dft(DFT_2048,prach2,rxsigF[aa],1); if (prach_fmt != 0xc0) { - dft2048(prach2+4096,rxsigF[aa]+4096,1); + dft(DFT_2048,prach2+4096,rxsigF[aa]+4096,1); reps++; } } if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft2048(prach2+4096*2,rxsigF[aa]+4096*2,1); - dft2048(prach2+4096*3,rxsigF[aa]+4096*3,1); + dft(DFT_2048,prach2+4096*2,rxsigF[aa]+4096*2,1); + dft(DFT_2048,prach2+4096*3,rxsigF[aa]+4096*3,1); reps+=2; } if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft2048(prach2+4096*4,rxsigF[aa]+4096*4,1); - dft2048(prach2+4096*5,rxsigF[aa]+4096*5,1); + dft(DFT_2048,prach2+4096*4,rxsigF[aa]+4096*4,1); + dft(DFT_2048,prach2+4096*5,rxsigF[aa]+4096*5,1); reps+=2; } if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft2048(prach2+(3072*i),rxsigF[aa]+(3072*i),1); + for (int i=6;i<11;i++) dft(DFT_2048,prach2+(3072*i),rxsigF[aa]+(3072*i),1); reps+=6; } } else { @@ -215,41 +215,41 @@ void rx_nr_prach_ru(RU_t *ru, prach2 = prach[aa] + (3*Ncp); AssertFatal(fp->N_RB_UL <= 107,"cannot do 108..136 PRBs with 3/4 sampling\n"); if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) { - dft36864(prach2,rxsigF[aa],1); + dft(DFT_36864,prach2,rxsigF[aa],1); reps++; } if (prach_fmt == 1 || prach_fmt == 2) { - dft36864(prach2+73728,rxsigF[aa]+73728,1); + dft(DFT_36864,prach2+73728,rxsigF[aa]+73728,1); reps++; } if (prach_fmt == 2) { - dft36864(prach2+(98304*2),rxsigF[aa]+(98304*2),1); - dft36864(prach2+(98304*3),rxsigF[aa]+(98304*3),1); + dft(DFT_36864,prach2+(98304*2),rxsigF[aa]+(98304*2),1); + dft(DFT_36864,prach2+(98304*3),rxsigF[aa]+(98304*3),1); reps+=2; } if (prach_fmt == 3) { - for (int i=0;i<4;i++) dft9216(prach2+(i*9216*2),rxsigF[aa]+(i*9216*2),1); + for (int i=0;i<4;i++) dft(DFT_9216,prach2+(i*9216*2),rxsigF[aa]+(i*9216*2),1); reps=4; } if (prach_fmt >3) { - dft1536(prach2,rxsigF[aa],1); + dft(DFT_1536,prach2,rxsigF[aa],1); if (prach_fmt != 0xc0) { - dft1536(prach2+3072,rxsigF[aa]+3072,1); + dft(DFT_1536,prach2+3072,rxsigF[aa]+3072,1); reps++; } } if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft1536(prach2+3072*2,rxsigF[aa]+3072*2,1); - dft1536(prach2+3072*3,rxsigF[aa]+3072*3,1); + dft(DFT_1536,prach2+3072*2,rxsigF[aa]+3072*2,1); + dft(DFT_1536,prach2+3072*3,rxsigF[aa]+3072*3,1); reps+=2; } if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft1536(prach2+3072*4,rxsigF[aa]+3072*4,1); - dft1536(prach2+3072*5,rxsigF[aa]+3072*5,1); + dft(DFT_1536,prach2+3072*4,rxsigF[aa]+3072*4,1); + dft(DFT_1536,prach2+3072*5,rxsigF[aa]+3072*5,1); reps+=2; } if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft1536(prach2+(3072*i),rxsigF[aa]+(3072*i),1); + for (int i=6;i<11;i++) dft(DFT_1536,prach2+(3072*i),rxsigF[aa]+(3072*i),1); reps+=6; } } @@ -260,41 +260,41 @@ void rx_nr_prach_ru(RU_t *ru, dftlen=98304; //80,90,100 MHz @ 61.44 Ms/s if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) - dft98304(prach2,rxsigF[aa],1); + dft(DFT_98304,prach2,rxsigF[aa],1); if (prach_fmt == 1 || prach_fmt == 2) { - dft98304(prach2+196608,rxsigF[aa]+196608,1); + dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1); reps++; } if (prach_fmt == 1 || prach_fmt == 2) { - dft98304(prach2+196608,rxsigF[aa]+196608,1); - dft98304(prach2+(196608*2),rxsigF[aa]+(196608*2),1); + dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1); + dft(DFT_98304,prach2+(196608*2),rxsigF[aa]+(196608*2),1); reps+=2; } if (prach_fmt == 3) { - dft24576(prach2+(2*49152),rxsigF[aa]+(2*49152),1); + dft(DFT_24576,prach2+(2*49152),rxsigF[aa]+(2*49152),1); reps=4; dftlen=24576; } if (prach_fmt >3) { dftlen=4096; - dft4096(prach2,rxsigF[aa],1); + dft(DFT_4096,prach2,rxsigF[aa],1); if (prach_fmt != 0xc0) { - dft4096(prach2+8192,rxsigF[aa]+8192,1); + dft(DFT_4096,prach2+8192,rxsigF[aa]+8192,1); reps++; } } if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft4096(prach2+8192*2,rxsigF[aa]+8192*2,1); - dft4096(prach2+8192*3,rxsigF[aa]+8192*3,1); + dft(DFT_4096,prach2+8192*2,rxsigF[aa]+8192*2,1); + dft(DFT_4096,prach2+8192*3,rxsigF[aa]+8192*3,1); reps+=2; } if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft4096(prach2+8192*4,rxsigF[aa]+8192*4,1); - dft4096(prach2+8192*5,rxsigF[aa]+8192*5,1); + dft(DFT_4096,prach2+8192*4,rxsigF[aa]+8192*4,1); + dft(DFT_4096,prach2+8192*5,rxsigF[aa]+8192*5,1); reps+=2; } if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft4096(prach2+(8192*i),rxsigF[aa]+(8192*i),1); + for (int i=6;i<11;i++) dft(DFT_4096,prach2+(8192*i),rxsigF[aa]+(8192*i),1); reps+=6; } } else { @@ -303,39 +303,39 @@ void rx_nr_prach_ru(RU_t *ru, // 80 MHz @ 46.08 Ms/s dftlen=73728; if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) { - dft73728(prach2,rxsigF[aa],1); + dft(DFT_73728,prach2,rxsigF[aa],1); reps++; } if (prach_fmt == 1 || prach_fmt == 2) { - dft73728(prach2+(2*73728),rxsigF[aa]+(2*73728),1); + dft(DFT_73728,prach2+(2*73728),rxsigF[aa]+(2*73728),1); reps++; } if (prach_fmt == 3) { - dft73728(prach2+(4*73728),rxsigF[aa]+(4*73728),1); + dft(DFT_73728,prach2+(4*73728),rxsigF[aa]+(4*73728),1); reps=4; dftlen=18432; } if (prach_fmt >3) { dftlen=3072; - dft3072(prach2,rxsigF[aa],1); + dft(DFT_3072,prach2,rxsigF[aa],1); if (prach_fmt != 0xc0) { - dft3072(prach2+6144,rxsigF[aa]+6144,1); + dft(DFT_3072,prach2+6144,rxsigF[aa]+6144,1); reps++; } } if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft3072(prach2+6144*2,rxsigF[aa]+6144*2,1); - dft3072(prach2+6144*3,rxsigF[aa]+6144*3,1); + dft(DFT_3072,prach2+6144*2,rxsigF[aa]+6144*2,1); + dft(DFT_3072,prach2+6144*3,rxsigF[aa]+6144*3,1); reps+=2; } if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft3072(prach2+6144*4,rxsigF[aa]+6144*4,1); - dft3072(prach2+6144*5,rxsigF[aa]+6144*5,1); + dft(DFT_3072,prach2+6144*4,rxsigF[aa]+6144*4,1); + dft(DFT_3072,prach2+6144*5,rxsigF[aa]+6144*5,1); reps+=2; } if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft3072(prach2+(6144*i),rxsigF[aa]+(6144*i),1); + for (int i=6;i<11;i++) dft(DFT_3072,prach2+(6144*i),rxsigF[aa]+(6144*i),1); reps+=6; } } @@ -590,12 +590,12 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, // Now do IFFT of size 1024 (N_ZC=839) or 256 (N_ZC=139) if (N_ZC == 839) { log2_ifft_size = 10; - idft1024(prachF,prach_ifft_tmp,1); + idft(IDFT_1024,prachF,prach_ifft_tmp,1); // compute energy and accumulate over receive antennas for (i=0;i<2048;i++) prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[i<<1] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10; } else { - idft256(prachF,prach_ifft_tmp,1); + idft(IDFT_256,prachF,prach_ifft_tmp,1); log2_ifft_size = 8; // compute energy and accumulate over receive antennas and repetitions for BR for (i=0;i<256;i++) diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index bce8ddcc29190f362574f154098ed63c8436908d..d818b0a25091ded6bcd69443eb61214669e83099 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -44,7 +44,7 @@ void nr_idft(uint32_t *z, uint32_t Msc_PUSCH) switch (Msc_PUSCH) { case 12: - dft12((int16_t *)idft_in0, (int16_t *)idft_out0); + dft(DFT_12,(int16_t *)idft_in0, (int16_t *)idft_out0,0); #if defined(__x86_64__)||defined(__i386__) norm128 = _mm_set1_epi16(9459); @@ -63,135 +63,135 @@ void nr_idft(uint32_t *z, uint32_t Msc_PUSCH) break; case 24: - dft24(idft_in0, idft_out0, 1); + dft(DFT_24,idft_in0, idft_out0, 1); break; case 36: - dft36(idft_in0, idft_out0, 1); + dft(DFT_36,idft_in0, idft_out0, 1); break; case 48: - dft48(idft_in0, idft_out0, 1); + dft(DFT_48,idft_in0, idft_out0, 1); break; case 60: - dft60(idft_in0, idft_out0, 1); + dft(DFT_60,idft_in0, idft_out0, 1); break; case 72: - dft72(idft_in0, idft_out0, 1); + dft(DFT_72,idft_in0, idft_out0, 1); break; case 96: - dft96(idft_in0, idft_out0, 1); + dft(DFT_96,idft_in0, idft_out0, 1); break; case 108: - dft108(idft_in0, idft_out0, 1); + dft(DFT_108,idft_in0, idft_out0, 1); break; case 120: - dft120(idft_in0, idft_out0, 1); + dft(DFT_120,idft_in0, idft_out0, 1); break; case 144: - dft144(idft_in0, idft_out0, 1); + dft(DFT_144,idft_in0, idft_out0, 1); break; case 180: - dft180(idft_in0, idft_out0, 1); + dft(DFT_180,idft_in0, idft_out0, 1); break; case 192: - dft192(idft_in0, idft_out0, 1); + dft(DFT_192,idft_in0, idft_out0, 1); break; case 216: - dft216(idft_in0, idft_out0, 1); + dft(DFT_216,idft_in0, idft_out0, 1); break; case 240: - dft240(idft_in0, idft_out0, 1); + dft(DFT_240,idft_in0, idft_out0, 1); break; case 288: - dft288(idft_in0, idft_out0, 1); + dft(DFT_288,idft_in0, idft_out0, 1); break; case 300: - dft300(idft_in0, idft_out0, 1); + dft(DFT_300,idft_in0, idft_out0, 1); break; case 324: - dft324((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_324,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 360: - dft360((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_360,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 384: - dft384((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_384,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 432: - dft432((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_432,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 480: - dft480((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_480,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 540: - dft540((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_540,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 576: - dft576((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_576,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 600: - dft600((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_600,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 648: - dft648((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_648,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 720: - dft720((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_720,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 768: - dft768((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_768,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 864: - dft864((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_864,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 900: - dft900((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_900,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 960: - dft960((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_960,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 972: - dft972((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_972,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 1080: - dft1080((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_1080,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 1152: - dft1152((int16_t*)idft_in0, (int16_t*)idft_out0, 1); + dft(DFT_1152,(int16_t*)idft_in0, (int16_t*)idft_out0, 1); break; case 1200: - dft1200(idft_in0, idft_out0, 1); + dft(DFT_1200,idft_in0, idft_out0, 1); break; default: diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c index be5c754bebfb0df750e3c7662deb7c5b09b5a5e3..19564bd8d08394d52cb417cb31ae3dee2fff2fde 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c @@ -405,39 +405,39 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue, } - void (*idft)(int16_t *,int16_t *, int); + idft_size_idx_t idftsizeidx; switch (ue->frame_parms.ofdm_symbol_size) { case 128: - idft = idft128; + idftsizeidx = IDFT_128; break; case 256: - idft = idft256; + idftsizeidx = IDFT_256; break; case 512: - idft = idft512; + idftsizeidx = IDFT_512; break; case 1024: - idft = idft1024; + idftsizeidx = IDFT_1024; break; case 1536: - idft = idft1536; + idftsizeidx = IDFT_1536; break; case 2048: - idft = idft2048; + idftsizeidx = IDFT_2048; break; case 3072: - idft = idft3072; + idftsizeidx = IDFT_3072; break; case 4096: - idft = idft4096; + idftsizeidx = IDFT_4096; break; default: @@ -453,7 +453,8 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue, if (ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx]) { LOG_D(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d ch_offset %d\n", Ns, ue->current_thread_id[Ns], symbol, ch_offset); - idft((int16_t*) &ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx][ch_offset], + idft(idftsizeidx, + (int16_t*) &ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx][ch_offset], (int16_t*) ue->pbch_vars[eNB_offset]->dl_ch_estimates_time[(p<<1)+aarx],1); } } diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c index f4071190247d71d009e16bb3c143a2c1f48c3123..3f16bc246562ca66202e7366f5cddbd7957dc22b 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c @@ -398,7 +398,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, // This is after cyclic prefix (Ncp<<1 samples for 30.72 Ms/s, Ncp<<2 samples for 61.44 Ms/s prach2 = prach+(Ncp<<1); if (prach_fmt == 0) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s - idft49152(prachF,prach2,1); + idft(IDFT_49152,prachF,prach2,1); // here we have |empty | Prach49152| memmove(prach,prach+(49152<<1),(Ncp<<3)); // here we have |Prefix | Prach49152| @@ -406,7 +406,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, dftlen=49152; } else if (prach_fmt == 1) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s - idft49152(prachF,prach2,1); + idft(IDFT_49152,prachF,prach2,1); memmove(prach2+(49152<<1),prach2,(49152<<2)); // here we have |empty | Prach49152 | Prach49152| memmove(prach,prach+(49152<<2),(Ncp<<3)); @@ -415,7 +415,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, dftlen=49152; } else if (prach_fmt == 2) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s - idft49152(prachF,prach2,1); + idft(IDFT_49152,prachF,prach2,1); memmove(prach2+(49152<<1),prach2,(49152<<2)); // here we have |empty | Prach49152 | Prach49152| empty49152 | empty49152 memmove(prach2+(49152<<2),prach2,(49152<<3)); @@ -426,7 +426,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, dftlen=49152; } else if (prach_fmt == 3) { // //6144 samples @ 30.72 Ms/s, 12288 samples @ 61.44 Ms/s - idft12288(prachF,prach2,1); + idft(IDFT_12288,prachF,prach2,1); memmove(prach2+(12288<<1),prach2,(12288<<2)); // here we have |empty | Prach12288 | Prach12288| empty12288 | empty12288 memmove(prach2+(12288<<2),prach2,(12288<<3)); @@ -438,7 +438,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, } else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { prach2 = prach+(Ncp<<1); - idft2048(prachF,prach2,1); + idft(IDFT_2048,prachF,prach2,1); dftlen=2048; // here we have |empty | Prach2048 | if (prach_fmt != 0xc0) { @@ -450,7 +450,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, // here we have |Prefix | Prach2048 | Prach2048 (if ! 0xc0) | } else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 6x2048 - idft2048(prachF,prach2,1); + idft(IDFT_2048,prachF,prach2,1); dftlen=2048; // here we have |empty | Prach2048 | memmove(prach2+(2048<<1),prach2,(2048<<2)); @@ -463,7 +463,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, } else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x2048 prach2 = prach+(Ncp<<1); - idft2048(prachF,prach2,1); + idft(IDFT_2048,prachF,prach2,1); dftlen=2048; // here we have |empty | Prach2048 | memmove(prach2+(2048<<1),prach2,(2048<<2)); @@ -477,7 +477,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (2048*6)+Ncp; } else if (prach_fmt == 0xb4) { // 12x2048 - idft2048(prachF,prach2,1); + idft(IDFT_2048,prachF,prach2,1); dftlen=2048; // here we have |empty | Prach2048 | memmove(prach2+(2048<<1),prach2,(2048<<2)); @@ -498,7 +498,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, Ncp = (Ncp*3)/2; prach2 = prach+(Ncp<<1); if (prach_fmt == 0) { - idft36864(prachF,prach2,1); + idft(IDFT_36864,prachF,prach2,1); dftlen=36864; // here we have |empty | Prach73728| memmove(prach,prach+(36864<<1),(Ncp<<2)); @@ -506,7 +506,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (36864*1)+Ncp; } else if (prach_fmt == 1) { - idft36864(prachF,prach2,1); + idft(IDFT_36864,prachF,prach2,1); dftlen=36864; memmove(prach2+(36864<<1),prach2,(36864<<2)); // here we have |empty | Prach73728 | Prach73728| @@ -515,7 +515,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (36864*2)+Ncp; } if (prach_fmt == 2) { - idft36864(prachF,prach2,1); + idft(IDFT_36864,prachF,prach2,1); dftlen=36864; memmove(prach2+(36864<<1),prach2,(36864<<2)); // here we have |empty | Prach73728 | Prach73728| empty73728 | empty73728 @@ -526,7 +526,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (36864*4)+Ncp; } else if (prach_fmt == 3) { - idft9216(prachF,prach2,1); + idft(IDFT_9216,prachF,prach2,1); dftlen=36864; memmove(prach2+(9216<<1),prach2,(9216<<2)); // here we have |empty | Prach9216 | Prach9216| empty9216 | empty9216 @@ -537,7 +537,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (9216*4)+Ncp; } else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - idft1536(prachF,prach2,1); + idft(IDFT_1536,prachF,prach2,1); dftlen=1536; // here we have |empty | Prach1536 | if (prach_fmt != 0xc0) @@ -547,7 +547,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (1536*2)+Ncp; } else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 6x1536 - idft1536(prachF,prach2,1); + idft(IDFT_1536,prachF,prach2,1); dftlen=1536; // here we have |empty | Prach1536 | memmove(prach2+(1536<<1),prach2,(1536<<2)); @@ -559,7 +559,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (1536*4)+Ncp; } else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x1536 - idft1536(prachF,prach2,1); + idft(IDFT_1536,prachF,prach2,1); dftlen=1536; // here we have |empty | Prach1536 | memmove(prach2+(1536<<1),prach2,(1536<<2)); @@ -573,7 +573,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (1536*6)+Ncp; } else if (prach_fmt == 0xb4) { // 12x1536 - idft1536(prachF,prach2,1); + idft(IDFT_1536,prachF,prach2,1); dftlen=1536; // here we have |empty | Prach1536 | memmove(prach2+(1536<<1),prach2,(1536<<2)); @@ -595,7 +595,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, Ncp<<=2; prach2 = prach+(Ncp<<1); if (prach_fmt == 0) { //24576 samples @ 30.72 Ms/s, 98304 samples @ 122.88 Ms/s - idft98304(prachF,prach2,1); + idft(IDFT_98304,prachF,prach2,1); dftlen=98304; // here we have |empty | Prach98304| memmove(prach,prach+(98304<<1),(Ncp<<2)); @@ -603,7 +603,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (98304*1)+Ncp; } else if (prach_fmt == 1) { - idft98304(prachF,prach2,1); + idft(IDFT_98304,prachF,prach2,1); dftlen=98304; memmove(prach2+(98304<<1),prach2,(98304<<2)); // here we have |empty | Prach98304 | Prach98304| @@ -612,7 +612,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (98304*2)+Ncp; } else if (prach_fmt == 2) { - idft98304(prachF,prach2,1); + idft(IDFT_98304,prachF,prach2,1); dftlen=98304; memmove(prach2+(98304<<1),prach2,(98304<<2)); // here we have |empty | Prach98304 | Prach98304| empty98304 | empty98304 @@ -623,7 +623,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (98304*4)+Ncp; } else if (prach_fmt == 3) { // 4x6144, Ncp 3168 - idft24576(prachF,prach2,1); + idft(IDFT_24576,prachF,prach2,1); dftlen=24576; memmove(prach2+(24576<<1),prach2,(24576<<2)); // here we have |empty | Prach24576 | Prach24576| empty24576 | empty24576 @@ -634,7 +634,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (24576*4)+(Ncp<<1); } else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - idft4096(prachF,prach2,1); + idft(IDFT_4096,prachF,prach2,1); dftlen=4096; // here we have |empty | Prach4096 | if (prach_fmt != 0xc0) { @@ -647,7 +647,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, } else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 4x4096 - idft4096(prachF,prach2,1); + idft(IDFT_4096,prachF,prach2,1); dftlen=4096; // here we have |empty | Prach4096 | memmove(prach2+(4096<<1),prach2,(4096<<2)); @@ -659,7 +659,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (4096*4)+Ncp; } else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x4096 - idft4096(prachF,prach2,1); + idft(IDFT_4096,prachF,prach2,1); dftlen=4096; // here we have |empty | Prach4096 | memmove(prach2+(4096<<1),prach2,(4096<<2)); @@ -673,7 +673,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (4096*6)+Ncp; } else if (prach_fmt == 0xb4) { // 12x4096 - idft4096(prachF,prach2,1); + idft(IDFT_4096,prachF,prach2,1); dftlen=4096; // here we have |empty | Prach4096 | memmove(prach2+(4096<<1),prach2,(4096<<2)); @@ -693,7 +693,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, Ncp = (Ncp*3); prach2 = prach+(Ncp<<1); if (prach_fmt == 0) { - idft73728(prachF,prach2,1); + idft(IDFT_73728,prachF,prach2,1); dftlen=73728; // here we have |empty | Prach73728| memmove(prach,prach+(73728<<1),(Ncp<<4)); @@ -701,7 +701,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (73728*1)+Ncp; } else if (prach_fmt == 1) { - idft73728(prachF,prach2,1); + idft(IDFT_73728,prachF,prach2,1); dftlen=73728; memmove(prach2+(73728<<1),prach2,(73728<<2)); // here we have |empty | Prach73728 | Prach73728| @@ -710,7 +710,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (73728*2)+Ncp; } if (prach_fmt == 2) { - idft73728(prachF,prach2,1); + idft(IDFT_73728,prachF,prach2,1); dftlen=73728; memmove(prach2+(73728<<1),prach2,(73728<<2)); // here we have |empty | Prach73728 | Prach73728| empty73728 | empty73728 @@ -721,7 +721,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (73728*4)+Ncp; } else if (prach_fmt == 3) { - idft18432(prachF,prach2,1); + idft(IDFT_18432,prachF,prach2,1); dftlen=18432; memmove(prach2+(18432<<1),prach2,(18432<<2)); // here we have |empty | Prach18432 | Prach18432| empty18432 | empty18432 @@ -732,7 +732,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (18432*4)+Ncp; } else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); dftlen=3072; // here we have |empty | Prach3072 | if (prach_fmt != 0xc0) { @@ -744,7 +744,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, // here we have |Prefix | Prach3072 | Prach3072 (if ! 0xc0) | } else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x3072 - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); dftlen=3072; // here we have |empty | Prach3072 | memmove(prach2+(3072<<1),prach2,(3072<<2)); @@ -758,7 +758,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (3072*6)+Ncp; } else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 4x3072 - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); dftlen=3072; // here we have |empty | Prach3072 | memmove(prach2+(3072<<1),prach2,(3072<<2)); @@ -770,7 +770,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, prach_len = (3072*4)+Ncp; } else if (prach_fmt == 0xb4) { // 12x3072 - idft3072(prachF,prach2,1); + idft(IDFT_3072,prachF,prach2,1); dftlen=3072; // here we have |empty | Prach3072 | memmove(prach2+(3072<<1),prach2,(3072<<2)); diff --git a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c index e8eceb77a6d881c9a80d85e3154b0a6abce3353e..baf34ade92a2a67fe51aae93498af971993c674f 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c @@ -52,7 +52,7 @@ * * PARAMETERS : size of ofdm symbol * -* RETURN : function idft +* RETURN : index pointing to the dft func in the dft library * * DESCRIPTION : get idft function depending of ofdm size * @@ -60,45 +60,45 @@ //#define DBG_PSS_NR -void *get_idft(int ofdm_symbol_size) +idft_size_idx_t get_idft(int ofdm_symbol_size) { - void (*idft)(int16_t *,int16_t *, int); - + + switch (ofdm_symbol_size) { case 128: - idft = idft128; + return IDFT_128; break; case 256: - idft = idft256; + return IDFT_256; break; case 512: - idft = idft512; + return IDFT_512; break; case 1024: - idft = idft1024; + return IDFT_1024; break; case 1536: - idft = idft1536; + return IDFT_1536; break; case 2048: - idft = idft2048; + return IDFT_2048; break; case 3072: - idft = idft3072; + return IDFT_3072; break; case 4096: - idft = idft4096; + return IDFT_4096; break; case 8192: - idft = idft8192; + return IDFT_8192; break; default: @@ -106,7 +106,7 @@ void *get_idft(int ofdm_symbol_size) assert(0); break; } - return idft; + return IDFT_SIZE_IDXTABLESIZE; // never reached and will trigger assertion in idft function } /******************************************************************* @@ -121,41 +121,41 @@ void *get_idft(int ofdm_symbol_size) * *********************************************************************/ -void *get_dft(int ofdm_symbol_size) +dft_size_idx_t get_dft(int ofdm_symbol_size) { - void (*dft)(int16_t *,int16_t *, int); + switch (ofdm_symbol_size) { case 128: - dft = dft128; + return DFT_128; break; case 256: - dft = dft256; + return DFT_256; break; case 512: - dft = dft512; + return DFT_512; break; case 1024: - dft = dft1024; + return DFT_1024; break; case 1536: - dft = dft1536; + return DFT_1536; break; case 2048: - dft = dft2048; + return DFT_2048; break; case 4096: - dft = dft4096; + return DFT_4096; break; case 8192: - dft = dft8192; + return DFT_8192; break; default: @@ -163,7 +163,7 @@ void *get_dft(int ofdm_symbol_size) assert(0); break; } - return dft; + return DFT_SIZE_IDXTABLESIZE; // never reached and will trigger assertion in idft function; } /******************************************************************* @@ -191,7 +191,7 @@ void generate_pss_nr(NR_DL_FRAME_PARMS *fp,int N_ID_2) unsigned int size = length * IQ_SIZE; /* i & q */ int16_t *primary_synchro = primary_synchro_nr[N_ID_2]; /* pss in complex with alternatively i then q */ int16_t *primary_synchro2 = primary_synchro_nr2[N_ID_2]; /* pss in complex with alternatively i then q */ - void (*idft)(int16_t *,int16_t *, int); + #define INITIAL_PSS_NR (7) const int x_initial[INITIAL_PSS_NR] = {0, 1, 1 , 0, 1, 1, 1}; @@ -282,9 +282,10 @@ void generate_pss_nr(NR_DL_FRAME_PARMS *fp,int N_ID_2) /* IFFT will give temporal signal of Pss */ - idft = get_idft(length); - - idft(synchroF_tmp, /* complex input */ + + + idft((int16_t)get_idft(length), + synchroF_tmp, /* complex input */ synchro_tmp, /* complex output */ 1); /* scaling factor */ @@ -312,6 +313,7 @@ void generate_pss_nr(NR_DL_FRAME_PARMS *fp,int N_ID_2) #endif + #if 0 /* it allows checking that process of idft on a signal and then dft gives same signal with limited errors */ @@ -323,10 +325,11 @@ void generate_pss_nr(NR_DL_FRAME_PARMS *fp,int N_ID_2) bzero(synchroF_tmp, size); - void (*dft)(int16_t *,int16_t *, int) = get_dft(length); + /* get pss in the time domain by applying an inverse FFT */ - dft(synchro_tmp, /* complex input */ + dft((int16_t)get_dft(length), + synchro_tmp, /* complex input */ synchroF_tmp, /* complex output */ 1); /* scaling factor */ diff --git a/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c index 44d500b0b7ebfeacdf9f68704bca8f875541b3e7..e3f1f13a8d18f83d90286761ac65edff673ebbf9 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c @@ -182,7 +182,7 @@ void insert_sss_nr(int16_t *sss_time, } /* get sss in the frequency domain by applying an inverse FFT */ - idft2048(synchroF_tmp, /* complex input */ + idft(IDFT_2048,synchroF_tmp, /* complex input */ synchro_tmp, /* complex output */ 1); /* scaling factor */ diff --git a/openair1/PHY/TOOLS/dfts_load.c b/openair1/PHY/TOOLS/dfts_load.c new file mode 100644 index 0000000000000000000000000000000000000000..d758f46a4330977dd7cd3a667ede8f8998ef6614 --- /dev/null +++ b/openair1/PHY/TOOLS/dfts_load.c @@ -0,0 +1,65 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file openair1/PHY/CODING/coding_nr_load.c + * \brief: load library implementing coding/decoding algorithms + * \author Francois TABURET + * \date 2020 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +#define _GNU_SOURCE +#include <sys/types.h> +#include <stdlib.h> +#include <malloc.h> +#include "assertions.h" +#include "common/utils/LOG/log.h" +#define OAIDFTS_LOADER +#include "tools_defs.h" +#include "common/config/config_userapi.h" +#include "common/utils/load_module_shlib.h" + + +/* function description array, to be used when loading the dfts/idfts lib */ +static loader_shlibfunc_t shlib_fdesc[2]; +static char *arg[64]={"phytest","-O","cmdlineonly::dbgl0"}; + + +int load_dftslib(void) { + + char *ptr = (char*)config_get_if(); + if ( ptr==NULL ) {// phy simulators, config module possibly not loaded + load_configmodule(3,(char **)arg,CONFIG_ENABLECMDLINEONLY) ; + logInit(); + } + shlib_fdesc[0].fname = "dft"; + shlib_fdesc[1].fname = "idft"; + int ret=load_module_shlib("dfts",shlib_fdesc,sizeof(shlib_fdesc)/sizeof(loader_shlibfunc_t),NULL); + AssertFatal( (ret >= 0),"Error loading dftsc decoder"); + dft = (dftfunc_t)shlib_fdesc[0].fptr; + idft = (idftfunc_t)shlib_fdesc[1].fptr; +return 0; +} + + diff --git a/openair1/PHY/TOOLS/lte_dfts.c b/openair1/PHY/TOOLS/oai_dfts.c similarity index 98% rename from openair1/PHY/TOOLS/lte_dfts.c rename to openair1/PHY/TOOLS/oai_dfts.c index 2de8653ab3900652e4e0ca8d95f0919c989709bd..d0b39184bb63aed51bb91623bd4fcd233e91ecf5 100644 --- a/openair1/PHY/TOOLS/lte_dfts.c +++ b/openair1/PHY/TOOLS/oai_dfts.c @@ -31,11 +31,10 @@ #ifndef M_PI #define M_PI 3.14159265358979323846 #endif - +#define OAIDFTS_MAIN #ifndef MR_MAIN #include "PHY/defs_common.h" #include "PHY/impl_defs_top.h" -#include "tools_defs.h" #else #include "time_meas.h" #include "LOG/log.h" @@ -64,6 +63,9 @@ const static int16_t reflip[32] __attribute__((aligned(32))) = {1,-1,1,-1,1,-1, + + + #if defined(__x86_64__) || defined(__i386__) static inline void cmac(__m128i a,__m128i b, __m128i *re32, __m128i *im32) __attribute__((always_inline)); static inline void cmac(__m128i a,__m128i b, __m128i *re32, __m128i *im32) @@ -2588,7 +2590,7 @@ const static int16_t tw64c[96] __attribute__((aligned(32))) = { #endif #ifndef __AVX2__ -void dft64(int16_t *x,int16_t *y,int scale) +void dft64(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[16],ytmp[16],*tw64a_128=(simd_q15_t *)tw64a,*tw64b_128=(simd_q15_t *)tw64b,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y; @@ -2702,7 +2704,7 @@ void dft64(int16_t *x,int16_t *y,int scale) } #else // __AVX2__ -void dft64(int16_t *x,int16_t *y,int scale) +void dft64(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[16],ytmp[16],*tw64a_256=(simd256_q15_t *)tw64a,*tw64b_256=(simd256_q15_t *)tw64b,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y; @@ -2850,7 +2852,7 @@ void dft64(int16_t *x,int16_t *y,int scale) #endif #ifndef __AVX2__ -void idft64(int16_t *x,int16_t *y,int scale) +void idft64(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[16],ytmp[16],*tw64a_128=(simd_q15_t *)tw64,*tw64b_128=(simd_q15_t *)tw64c,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y; @@ -2942,7 +2944,7 @@ void idft64(int16_t *x,int16_t *y,int scale) } #else // __AVX2__ -void idft64(int16_t *x,int16_t *y,int scale) +void idft64(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[16],ytmp[16],*tw64a_256=(simd256_q15_t *)tw64,*tw64b_256=(simd256_q15_t *)tw64c,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y; @@ -3052,7 +3054,7 @@ int16_t tw128b[128] __attribute__((aligned(32))) = {0,32767,-1608,32727,-3212,32 int16_t tw128c[128] __attribute__((aligned(32))) = {0,32767,1608,32727,3212,32609,4808,32412,6393,32137,7962,31785,9512,31356,11039,30851,12540,30272,14010,29621,15447,28897,16846,28105,18205,27244,19520,26318,20788,25329,22005,24278,23170,23169,24279,22004,25330,20787,26319,19519,27245,18204,28106,16845,28898,15446,29622,14009,30273,12539,30852,11038,31357,9511,31786,7961,32138,6392,32413,4807,32610,3211,32728,1607,32767,0,32728,-1608,32610,-3212,32413,-4808,32138,-6393,31786,-7962,31357,-9512,30852,-11039,30273,-12540,29622,-14010,28898,-15447,28106,-16846,27245,-18205,26319,-19520,25330,-20788,24279,-22005,23170,-23170,22005,-24279,20788,-25330,19520,-26319,18205,-27245,16846,-28106,15447,-28898,14010,-29622,12540,-30273,11039,-30852,9512,-31357,7962,-31786,6393,-32138,4808,-32413,3212,-32610,1608,-32728}; #ifndef __AVX2__ -void dft128(int16_t *x,int16_t *y,int scale) +void dft128(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[64],*x64 = (simdshort_q15_t *)x; @@ -3159,7 +3161,7 @@ void dft128(int16_t *x,int16_t *y,int scale) } #else // __AVX2__ -void dft128(int16_t *x,int16_t *y,int scale) +void dft128(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[16],*x256 = (simd256_q15_t *)x; @@ -3229,7 +3231,7 @@ void dft128(int16_t *x,int16_t *y,int scale) #endif #ifndef __AVX2__ -void idft128(int16_t *x,int16_t *y,int scale) +void idft128(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[64],*x64 = (simdshort_q15_t *)x; @@ -3328,7 +3330,7 @@ void idft128(int16_t *x,int16_t *y,int scale) } #else // __AVX2__ -void idft128(int16_t *x,int16_t *y,int scale) +void idft128(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[16],*x256 = (simd256_q15_t *)x; @@ -3401,7 +3403,7 @@ int16_t tw256b[384] __attribute__((aligned(32))) = {0,32767,-805,32757,-1608,327 0,32767,-2411,32678,-4808,32412,-7180,31970,-9512,31356,-11793,30571,-14010,29621,-16151,28510,-18205,27244,-20160,25831,-22005,24278,-23732,22594,-25330,20787,-26790,18867,-28106,16845,-29269,14732,-30273,12539,-31114,10278,-31786,7961,-32285,5601,-32610,3211,-32758,804,-32728,-1608,-32521,-4012,-32138,-6393,-31581,-8740,-30852,-11039,-29956,-13279,-28898,-15447,-27684,-17531,-26319,-19520,-24812,-21403,-23170,-23170,-21403,-24812,-19520,-26319,-17531,-27684,-15447,-28898,-13279,-29956,-11039,-30852,-8740,-31581,-6393,-32138,-4012,-32521,-1608,-32728,804,-32758,3211,-32610,5601,-32285,7961,-31786,10278,-31114,12539,-30273,14732,-29269,16845,-28106,18867,-26790,20787,-25330,22594,-23732,24278,-22005,25831,-20160,27244,-18205,28510,-16151,29621,-14010,30571,-11793,31356,-9512,31970,-7180,32412,-4808,32678,-2411 }; #ifndef __AVX2__ -void dft256(int16_t *x,int16_t *y,int scale) +void dft256(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[64],ytmp[64],*tw256a_128p=(simd_q15_t *)tw256a,*tw256b_128p=(simd_q15_t *)tw256b,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; @@ -3513,7 +3515,7 @@ void dft256(int16_t *x,int16_t *y,int scale) -void idft256(int16_t *x,int16_t *y,int scale) +void idft256(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[64],ytmp[64],*tw256_128p=(simd_q15_t *)tw256,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; @@ -3571,7 +3573,7 @@ void idft256(int16_t *x,int16_t *y,int scale) #else //__AVX2__ -void dft256(int16_t *x,int16_t *y,int scale) +void dft256(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[32],ytmp[32],*tw256a_256p=(simd256_q15_t *)tw256a,*tw256b_256p=(simd256_q15_t *)tw256b,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; @@ -3663,7 +3665,7 @@ void dft256(int16_t *x,int16_t *y,int scale) } -void idft256(int16_t *x,int16_t *y,int scale) +void idft256(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[32],ytmp[32],*tw256_256p=(simd256_q15_t *)tw256,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; @@ -3768,7 +3770,7 @@ int16_t tw512c[512] __attribute__((aligned(32))) = { }; #ifndef __AVX2__ -void dft512(int16_t *x,int16_t *y,int scale) +void dft512(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[256],*xtmpp,*x64 = (simdshort_q15_t *)x; @@ -3888,7 +3890,7 @@ void dft512(int16_t *x,int16_t *y,int scale) } -void idft512(int16_t *x,int16_t *y,int scale) +void idft512(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[256],*xtmpp,*x64 = (simdshort_q15_t *)x; @@ -3980,7 +3982,7 @@ void idft512(int16_t *x,int16_t *y,int scale) #else //__AVX2__ -void dft512(int16_t *x,int16_t *y,int scale) +void dft512(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[64],*x256 = (simd256_q15_t *)x; @@ -4062,7 +4064,7 @@ void dft512(int16_t *x,int16_t *y,int scale) } -void idft512(int16_t *x,int16_t *y,int scale) +void idft512(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[64],*x256 = (simd256_q15_t *)x; @@ -4149,7 +4151,7 @@ void idft512(int16_t *x,int16_t *y,int scale) int16_t tw1024[1536] __attribute__((aligned(32))); #ifndef __AVX2__ -void dft1024(int16_t *x,int16_t *y,int scale) +void dft1024(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[256],ytmp[256],*tw1024_128p=(simd_q15_t *)tw1024,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; @@ -4205,7 +4207,7 @@ void dft1024(int16_t *x,int16_t *y,int scale) } -void idft1024(int16_t *x,int16_t *y,int scale) +void idft1024(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[256],ytmp[256],*tw1024_128p=(simd_q15_t *)tw1024,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; @@ -4262,7 +4264,7 @@ void idft1024(int16_t *x,int16_t *y,int scale) } #else //__AVX2__ -void dft1024(int16_t *x,int16_t *y,int scale) +void dft1024(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[128],ytmp[128],*tw1024_256p=(simd256_q15_t *)tw1024,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; @@ -4318,7 +4320,7 @@ void dft1024(int16_t *x,int16_t *y,int scale) } -void idft1024(int16_t *x,int16_t *y,int scale) +void idft1024(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[128],ytmp[128],*tw1024_256p=(simd256_q15_t *)tw1024,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; @@ -4378,7 +4380,7 @@ void idft1024(int16_t *x,int16_t *y,int scale) int16_t tw2048[2048] __attribute__((aligned(32))); #ifndef __AVX2__ -void dft2048(int16_t *x,int16_t *y,int scale) +void dft2048(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[1024],*xtmpp,*x64 = (simdshort_q15_t *)x; @@ -4469,7 +4471,7 @@ void dft2048(int16_t *x,int16_t *y,int scale) } -void idft2048(int16_t *x,int16_t *y,int scale) +void idft2048(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[1024],*xtmpp,*x64 = (simdshort_q15_t *)x; @@ -4561,7 +4563,7 @@ void idft2048(int16_t *x,int16_t *y,int scale) #else // __AVX2__ -void dft2048(int16_t *x,int16_t *y,int scale) +void dft2048(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[256],*xtmpp,*x256 = (simd256_q15_t *)x; @@ -4652,7 +4654,7 @@ void dft2048(int16_t *x,int16_t *y,int scale) } -void idft2048(int16_t *x,int16_t *y,int scale) +void idft2048(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[256],*xtmpp,*x256 = (simd256_q15_t *)x; @@ -4749,7 +4751,7 @@ void idft2048(int16_t *x,int16_t *y,int scale) int16_t tw4096[3*2*1024]; #ifndef __AVX2__ -void dft4096(int16_t *x,int16_t *y,int scale) +void dft4096(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[1024],ytmp[1024],*tw4096_128p=(simd_q15_t *)tw4096,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; @@ -4807,7 +4809,7 @@ void dft4096(int16_t *x,int16_t *y,int scale) -void idft4096(int16_t *x,int16_t *y,int scale) +void idft4096(int16_t *x,int16_t *y,unsigned char scale) { simd_q15_t xtmp[1024],ytmp[1024],*tw4096_128p=(simd_q15_t *)tw4096,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; @@ -4864,7 +4866,7 @@ void idft4096(int16_t *x,int16_t *y,int scale) } #else //__AVX2__ -void dft4096(int16_t *x,int16_t *y,int scale) +void dft4096(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[512],ytmp[512],*tw4096_256p=(simd256_q15_t *)tw4096,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; @@ -4920,7 +4922,7 @@ void dft4096(int16_t *x,int16_t *y,int scale) } -void idft4096(int16_t *x,int16_t *y,int scale) +void idft4096(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[512],ytmp[512],*tw4096_256p=(simd256_q15_t *)tw4096,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; @@ -4982,7 +4984,7 @@ void idft4096(int16_t *x,int16_t *y,int scale) int16_t tw8192[2*4096] __attribute__((aligned(32))); #ifndef __AVX2__ -void dft8192(int16_t *x,int16_t *y,int scale) +void dft8192(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[4096],*xtmpp,*x64 = (simdshort_q15_t *)x; @@ -5072,7 +5074,7 @@ void dft8192(int16_t *x,int16_t *y,int scale) } -void idft8192(int16_t *x,int16_t *y,int scale) +void idft8192(int16_t *x,int16_t *y,unsigned char scale) { simdshort_q15_t xtmp[4096],*xtmpp,*x64 = (simdshort_q15_t *)x; @@ -5163,7 +5165,7 @@ void idft8192(int16_t *x,int16_t *y,int scale) } #else // __AVX2__ -void dft8192(int16_t *x,int16_t *y,int scale) +void dft8192(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[1024],*xtmpp,*x256 = (simd256_q15_t *)x; @@ -5254,7 +5256,7 @@ void dft8192(int16_t *x,int16_t *y,int scale) } -void idft8192(int16_t *x,int16_t *y,int scale) +void idft8192(int16_t *x,int16_t *y,unsigned char scale) { simd256_q15_t xtmp[1024],*xtmpp,*x256 = (simd256_q15_t *)x; @@ -5350,7 +5352,7 @@ void idft8192(int16_t *x,int16_t *y,int scale) int16_t twa1536[1024],twb1536[1024]; // 512 x 3 -void idft1536(int16_t *input, int16_t *output, int scale) +void idft1536(int16_t *input, int16_t *output, unsigned char scale) { int i,i2,j; uint32_t tmp[3][512 ]__attribute__((aligned(32))); @@ -5402,7 +5404,7 @@ void idft1536(int16_t *input, int16_t *output, int scale) } -void dft1536(int16_t *input, int16_t *output, int scale) +void dft1536(int16_t *input, int16_t *output, unsigned char scale) { int i,i2,j; uint32_t tmp[3][512] __attribute__((aligned(32))); @@ -5467,7 +5469,7 @@ void dft1536(int16_t *input, int16_t *output, int scale) int16_t twa3072[2048] __attribute__((aligned(32))); int16_t twb3072[2048] __attribute__((aligned(32))); // 1024 x 3 -void dft3072(int16_t *input, int16_t *output,int scale) +void dft3072(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][1024] __attribute__((aligned(32))); @@ -5517,7 +5519,7 @@ void dft3072(int16_t *input, int16_t *output,int scale) _m_empty(); } -void idft3072(int16_t *input, int16_t *output,int scale) +void idft3072(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][1024]__attribute__((aligned(32))); @@ -5571,7 +5573,7 @@ void idft3072(int16_t *input, int16_t *output,int scale) int16_t twa6144[4096] __attribute__((aligned(32))); int16_t twb6144[4096] __attribute__((aligned(32))); -void idft6144(int16_t *input, int16_t *output,int scale) +void idft6144(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][2048] __attribute__((aligned(32))); @@ -5631,7 +5633,7 @@ void idft6144(int16_t *input, int16_t *output,int scale) } -void dft6144(int16_t *input, int16_t *output,int scale) +void dft6144(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][2048] __attribute__((aligned(32))); @@ -5695,12 +5697,12 @@ void dft6144(int16_t *input, int16_t *output,int scale) int16_t twa9216[6144] __attribute__((aligned(32))); int16_t twb9216[6144] __attribute__((aligned(32))); // 3072 x 3 -void dft9216(int16_t *input, int16_t *output,int scale) { +void dft9216(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } -void idft9216(int16_t *input, int16_t *output,int scale) { +void idft9216(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } @@ -5708,7 +5710,7 @@ void idft9216(int16_t *input, int16_t *output,int scale) { int16_t twa12288[8192] __attribute__((aligned(32))); int16_t twb12288[8192] __attribute__((aligned(32))); // 4096 x 3 -void dft12288(int16_t *input, int16_t *output,int scale) +void dft12288(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][4096] __attribute__((aligned(32))); @@ -5768,7 +5770,7 @@ void dft12288(int16_t *input, int16_t *output,int scale) } -void idft12288(int16_t *input, int16_t *output,int scale) +void idft12288(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][4096] __attribute__((aligned(32))); @@ -5832,7 +5834,7 @@ void idft12288(int16_t *input, int16_t *output,int scale) int16_t twa18432[12288] __attribute__((aligned(32))); int16_t twb18432[12288] __attribute__((aligned(32))); // 6144 x 3 -void dft18432(int16_t *input, int16_t *output,int scale) { +void dft18432(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][6144] __attribute__((aligned(32))); @@ -5880,7 +5882,7 @@ void dft18432(int16_t *input, int16_t *output,int scale) { _m_empty(); } -void idft18432(int16_t *input, int16_t *output,int scale) { +void idft18432(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][6144] __attribute__((aligned(32))); @@ -5932,7 +5934,7 @@ void idft18432(int16_t *input, int16_t *output,int scale) { int16_t twa24576[16384] __attribute__((aligned(32))); int16_t twb24576[16384] __attribute__((aligned(32))); // 8192 x 3 -void dft24576(int16_t *input, int16_t *output,int scale) +void dft24576(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][8192] __attribute__((aligned(32))); @@ -5995,7 +5997,7 @@ void dft24576(int16_t *input, int16_t *output,int scale) } } -void idft24576(int16_t *input, int16_t *output,int scale) +void idft24576(int16_t *input, int16_t *output,unsigned char scale) { int i,i2,j; uint32_t tmp[3][8192] __attribute__((aligned(32))); @@ -6057,11 +6059,11 @@ void idft24576(int16_t *input, int16_t *output,int scale) int16_t twa36864[24576] __attribute__((aligned(32))); int16_t twb36884[24576] __attribute__((aligned(32))); // 12288 x 3 -void dft36864(int16_t *input, int16_t *output,int scale) { +void dft36864(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } -void idft36864(int16_t *input, int16_t *output,int scale) { +void idft36864(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } @@ -6069,12 +6071,12 @@ void idft36864(int16_t *input, int16_t *output,int scale) { int16_t twa49152[32768] __attribute__((aligned(32))); int16_t twb49152[32768] __attribute__((aligned(32))); // 16384 x 3 -void dft49152(int16_t *input, int16_t *output,int scale) { +void dft49152(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } -void idft49152(int16_t *input, int16_t *output,int scale) { +void idft49152(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } @@ -6082,12 +6084,12 @@ void idft49152(int16_t *input, int16_t *output,int scale) { int16_t twa73728[49152] __attribute__((aligned(32))); int16_t twb73728[49152] __attribute__((aligned(32))); // 24576 x 3 -void dft73728(int16_t *input, int16_t *output,int scale) { +void dft73728(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } -void idft73728(int16_t *input, int16_t *output,int scale) { +void idft73728(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } @@ -6096,12 +6098,12 @@ void idft73728(int16_t *input, int16_t *output,int scale) { int16_t twa98304[49152] __attribute__((aligned(32))); int16_t twb98304[49152] __attribute__((aligned(32))); // 32768 x 3 -void dft98304(int16_t *input, int16_t *output,int scale) { +void dft98304(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } -void idft98304(int16_t *input, int16_t *output,int scale) { +void idft98304(int16_t *input, int16_t *output,uint8_t scale) { AssertFatal(1==0,"Need to do this ..\n"); } @@ -6259,7 +6261,7 @@ static inline void dft12f(simd_q15_t *x0, -void dft12(int16_t *x,int16_t *y) +void dft12(int16_t *x,int16_t *y ,unsigned char scale_flag) { simd_q15_t *x128 = (simd_q15_t *)x,*y128 = (simd_q15_t *)y; @@ -8591,8 +8593,6 @@ void dft1200(int16_t *x,int16_t *y,unsigned char scale_flag) } -//#define round trunc - void init_rad4(int N,int16_t *tw) { int16_t *twa = tw; @@ -8708,12 +8708,13 @@ void init_rad5_rep(int N,int16_t *twa,int16_t *twb,int16_t *twc,int16_t *twd) { twa+=8; twb+=8; twc+=8; - twd+=8; + twd+=8; } } +/*----------------------------------------------------------------*/ +/* dft library entry points: */ - -void init_dfts(void) +int dfts_autoinit(void) { init_rad4(1024,tw1024); init_rad2(2048,tw2048); @@ -8760,9 +8761,23 @@ void init_dfts(void) init_rad3_rep(1080,twa1080,twb1080); init_rad4_rep(1152,twa1152,twb1152,twc1152); init_rad4_rep(1200,twa1200,twb1200,twc1200); + return 0; } -//#undef round + + + +void dft(uint8_t sizeidx, int16_t *sigF,int16_t *sig,unsigned char scale_flag){ + AssertFatal((sizeidx>=0 && sizeidx<(int)DFT_SIZE_IDXTABLESIZE),"Invalid dft size index %i\n",sizeidx); + dft_ftab[sizeidx](sigF,sig,scale_flag); +}; + +void idft(uint8_t sizeidx, int16_t *sigF,int16_t *sig,unsigned char scale_flag){ + AssertFatal((sizeidx>=0 && sizeidx<(int)IDFT_SIZE_IDXTABLESIZE),"Invalid idft size index %i\n",sizeidx); + idft_ftab[sizeidx](sigF,sig,scale_flag); +}; + +/*---------------------------------------------------------------------------------------*/ #ifdef MR_MAIN #include <string.h> @@ -8933,12 +8948,12 @@ int main(int argc, char**argv) #ifdef __AVX2__ simd256_q15_t x[4096],x2[4096],y[4096],tw0,tw1,tw2,tw3; #else - simd_q15_t x[8192],x2[8192],y[8192],tw0,tw1,tw2,tw3; + simd_q15_t x[8192],y[8192],tw0,tw1,tw2,tw3; #endif int i; simd_q15_t *x128=(simd_q15_t*)x,*y128=(simd_q15_t*)y; - init_dfts(); + dfts_autoinit(); set_taus_seed(0); opp_enabled = 1; diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h index d753b501b6e7de816f201e98101b483c57211a91..86916cab21b4021cdb1e7e174b177992010d6053 100644 --- a/openair1/PHY/TOOLS/tools_defs.h +++ b/openair1/PHY/TOOLS/tools_defs.h @@ -36,6 +36,8 @@ extern "C" { #include <stdint.h> #include "PHY/sse_intrin.h" +#define CEILIDIV(a,b) ((a+b-1)/b) +#define ROUNDIDIV(a,b) (((a<<1)+b)/(b<<1)) struct complex { double x; @@ -179,44 +181,145 @@ This function performs optimized fixed-point radix-2 FFT/IFFT. ); */ -void idft1536(int16_t *sigF,int16_t *sig,int scale); -void idft6144(int16_t *sigF,int16_t *sig,int scale); -void idft12288(int16_t *sigF,int16_t *sig,int scale); -void idft18432(int16_t *sigF,int16_t *sig,int scale); -void idft3072(int16_t *sigF,int16_t *sig,int scale); -void idft24576(int16_t *sigF,int16_t *sig,int scale); -void dft1536(int16_t *sigF,int16_t *sig,int scale); -void dft3072(int16_t *sigF,int16_t *sig,int scale); +#ifdef OAIDFTS_MAIN +typedef void(*adftfunc_t)(int16_t *sigF,int16_t *sig,unsigned char scale_flag); +typedef void(*aidftfunc_t)(int16_t *sigF,int16_t *sig,unsigned char scale_flag); -void dft6144(int16_t *sigF,int16_t *sig,int scale); - -void dft12288(int16_t *sigF,int16_t *sig,int scale); - -void dft18432(int16_t *sigF,int16_t *sig,int scale); - -void dft24576(int16_t *sigF,int16_t *sig,int scale); - -void dft49152(int16_t *sigF,int16_t *sig,int scale); -void idft49152(int16_t *sigF,int16_t *sig,int scale); - -void dft9216(int16_t *sigF,int16_t *sig,int scale); -void idft9216(int16_t *sigF,int16_t *sig,int scale); +void dft12(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft24(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft36(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft48(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft60(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft64(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft72(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft96(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft108(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft120(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft128(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft144(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft180(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft192(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft216(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft240(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft256(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft288(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft300(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft324(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft360(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft384(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft432(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft480(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft512(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft540(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft576(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft600(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft648(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft720(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft768(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft864(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft900(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft960(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft972(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft1024(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft1080(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft1152(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft1200(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft1536(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void dft2048(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft3072(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void dft4096(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft6144(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void dft8192(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft9216(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft12288(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft18432(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft24576(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft36864(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft49152(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft73728(int16_t *x,int16_t *y,uint8_t scale_flag); +void dft98304(int16_t *x,int16_t *y,uint8_t scale_flag); + + +void idft64(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft128(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft256(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft512(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft1024(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft1536(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft2048(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft3072(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft4096(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft6144(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft8192(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft9216(int16_t *x,int16_t *y,uint8_t scale_flag); +void idft12288(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft18432(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft24576(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft36864(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft49152(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft73728(int16_t *sigF,int16_t *sig,uint8_t scale_flag); +void idft98304(int16_t *sigF,int16_t *sig,uint8_t scale_flag); + + + + +#else + typedef void(*dftfunc_t)(uint8_t sizeidx,int16_t *sigF,int16_t *sig,unsigned char scale_flag); + typedef void(*idftfunc_t)(uint8_t sizeidx,int16_t *sigF,int16_t *sig,unsigned char scale_flag); +# ifdef OAIDFTS_LOADER + dftfunc_t dft; + idftfunc_t idft; +# else + extern dftfunc_t dft; + extern idftfunc_t idft; + extern int load_dftslib(void); +# endif +#endif -void dft36864(int16_t *sigF,int16_t *sig,int scale); -void idft36864(int16_t *sigF,int16_t *sig,int scale); +typedef enum DFT_size_idx { + DFT_12, DFT_24, DFT_36, DFT_48, DFT_60, DFT_72, DFT_96, + DFT_108, DFT_120, DFT_128, DFT_144, DFT_180, DFT_192, DFT_216, DFT_240, + DFT_256, DFT_288, DFT_300, DFT_324, DFT_360, DFT_384, DFT_432, DFT_480, + DFT_512, DFT_540, DFT_576, DFT_600, DFT_648, DFT_720, DFT_768, DFT_864, + DFT_900, DFT_960, DFT_972, DFT_1024, DFT_1080, DFT_1152, DFT_1200, DFT_1536, + DFT_2048, DFT_3072, DFT_4096, DFT_6144, DFT_8192, DFT_9216, DFT_12288, DFT_18432, + DFT_24576, DFT_36864, DFT_49152, DFT_73728, DFT_98304, + DFT_SIZE_IDXTABLESIZE +} dft_size_idx_t; + +#ifdef OAIDFTS_MAIN +adftfunc_t dft_ftab[]={ + dft12, dft24, dft36, dft48, dft60, dft72, dft96, + dft108, dft120, dft128, dft144, dft180, dft192, dft216, dft240, + dft256, dft288, dft300, dft324, dft360, dft384, dft432, dft480, + dft512, dft540, dft576, dft600, dft648, dft720, dft768, dft864, + dft900, dft960, dft972, dft1024, dft1080, dft1152, dft1200, dft1536, + dft2048, dft3072, dft4096, dft6144, dft8192, dft9216, dft12288, dft18432, + dft24576, dft36864, dft49152, dft73728, dft98304 +}; +#endif -void dft98304(int16_t *sigF,int16_t *sig,int scale); -void idft98304(int16_t *sigF,int16_t *sig,int scale); +typedef enum idft_size_idx { + IDFT_128, IDFT_256, IDFT_512, IDFT_1024, IDFT_1536, IDFT_2048, IDFT_3072, IDFT_4096, + IDFT_6144, IDFT_8192, IDFT_9216, IDFT_12288, IDFT_18432, IDFT_24576, IDFT_36864, IDFT_49152, + IDFT_73728, IDFT_98304, + IDFT_SIZE_IDXTABLESIZE +} idft_size_idx_t; +#ifdef OAIDFTS_MAIN +aidftfunc_t idft_ftab[]={ + idft128, idft256, idft512, idft1024, idft1536, idft2048, idft3072, idft4096, + idft6144, idft8192, idft9216, idft12288, idft18432, idft24576, idft36864, idft49152, + idft73728, idft98304 +}; +#endif -void dft73728(int16_t *sigF,int16_t *sig,int scale); -void idft73728(int16_t *sigF,int16_t *sig,int scale); /*!\fn int32_t rotate_cpx_vector(int16_t *x,int16_t *alpha,int16_t *y,uint32_t N,uint16_t output_shift) @@ -387,57 +490,7 @@ int64_t dot_product64(int16_t *x, uint32_t N, //must be a multiple of 8 uint8_t output_shift); -void dft12(int16_t *x,int16_t *y); -void dft24(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft36(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft48(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft60(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft72(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft96(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft108(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft120(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft144(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft180(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft192(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft216(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft240(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft288(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft300(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft324(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft360(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft384(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft432(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft480(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft540(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft576(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft600(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft648(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft720(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft768(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft864(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft900(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft960(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft972(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft1080(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft1152(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft1200(int16_t *x,int16_t *y,uint8_t scale_flag); -void dft64(int16_t *x,int16_t *y,int scale); -void dft128(int16_t *x,int16_t *y,int scale); -void dft256(int16_t *x,int16_t *y,int scale); -void dft512(int16_t *x,int16_t *y,int scale); -void dft1024(int16_t *x,int16_t *y,int scale); -void dft2048(int16_t *x,int16_t *y,int scale); -void dft4096(int16_t *x,int16_t *y,int scale); -void dft8192(int16_t *x,int16_t *y,int scale); -void idft64(int16_t *x,int16_t *y,int scale); -void idft128(int16_t *x,int16_t *y,int scale); -void idft256(int16_t *x,int16_t *y,int scale); -void idft512(int16_t *x,int16_t *y,int scale); -void idft1024(int16_t *x,int16_t *y,int scale); -void idft2048(int16_t *x,int16_t *y,int scale); -void idft4096(int16_t *x,int16_t *y,int scale); -void idft8192(int16_t *x,int16_t *y,int scale); /** @} */ diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 58b312038a23a8ea71a1e3a2da9a65252ae9992d..860b73276c307aa41041fd34008f2800109c1301 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -1917,6 +1917,7 @@ int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_in nr_extract_dci_info(mac,dci->dci_format,dci->payloadSize,dci->rnti,(uint64_t *)dci->payloadBits,&dci_pdu_rel15); nr_ue_process_dci(module_id, cc_id, gNB_index, &dci_pdu_rel15, dci->rnti, dci->dci_format); + return 0; } int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr_dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format){ diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c index a4092c11fa492ec5d3ba09e3a9215d63b13f00bf..c00b57d7aaf8fea1bb5683c4bbdde455877f66cf 100644 --- a/openair2/RRC/NR/MESSAGES/asn1_msg.c +++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c @@ -570,8 +570,8 @@ void do_PHYSICALCELLGROUP(uint8_t Mod_id, void do_SpCellConfig(gNB_RRC_INST *rrc, struct NR_SpCellConfig *spconfig){ - gNB_RrcConfigurationReq *common_configuration; - common_configuration = CALLOC(1,sizeof(gNB_RrcConfigurationReq)); + //gNB_RrcConfigurationReq *common_configuration; + //common_configuration = CALLOC(1,sizeof(gNB_RrcConfigurationReq)); //Fill servingcellconfigcommon config value //Fill common config to structure // rrc->configuration = common_configuration; diff --git a/openair2/X2AP/x2ap_eNB_generate_messages.c b/openair2/X2AP/x2ap_eNB_generate_messages.c index 47a3475063fb5b25d3b3e91638f7ba1985dc0a52..0aeabce0d2cfcaa3bc545fc2ef2321cf46632b22 100644 --- a/openair2/X2AP/x2ap_eNB_generate_messages.c +++ b/openair2/X2AP/x2ap_eNB_generate_messages.c @@ -1691,11 +1691,11 @@ int x2ap_gNB_generate_ENDC_x2_SgNB_addition_request_ACK( x2ap_eNB_instance_t *in // Currently hardcoded (dummy) values filling the fields of SgNB_addition_request message. To be substituted // with values coming from RRC. - uint16_t nRencryptionAlgorithms = 0; - uint16_t nRintegrityProtectionAlgorithms = 0; - uint8_t SgNBSecurityKey[32] = { 0 }; - int uEaggregateMaximumBitRateDownlink = 100000000; - int uEaggregateMaximumBitRateUplink = 100000000; + //uint16_t nRencryptionAlgorithms = 0; + //uint16_t nRintegrityProtectionAlgorithms = 0; + //uint8_t SgNBSecurityKey[32] = { 0 }; + //int uEaggregateMaximumBitRateDownlink = 100000000; + //int uEaggregateMaximumBitRateUplink = 100000000; int e_rabs_admitted_tobeadded = 1; int e_RAB_ID = 1; long int pDCPatSgNB = X2AP_EN_DC_ResourceConfiguration__pDCPatSgNB_present; diff --git a/openair2/X2AP/x2ap_eNB_handler.c b/openair2/X2AP/x2ap_eNB_handler.c index b7a9b705967f2e2035d46e50210db238906d22f6..95e0910fcde6f2d213ea99ca6ae15c232ced7b63 100644 --- a/openair2/X2AP/x2ap_eNB_handler.c +++ b/openair2/X2AP/x2ap_eNB_handler.c @@ -1773,7 +1773,7 @@ int x2ap_gNB_handle_ENDC_sGNB_addition_request (instance_t instance, X2AP_MeNBtoSgNBContainer_t *container = &ie->value.choice.MeNBtoSgNBContainer; - if (ie->value.choice.MeNBtoSgNBContainer.size > 8192 ) // TODO: this is the size of rrc_buffer in struct x2ap_handover_req_s + if (container->size > 8192 ) // TODO: this is the size of rrc_buffer in struct x2ap_handover_req_s { printf("%s:%d: fatal: buffer too big\n", __FILE__, __LINE__); abort(); } memcpy(X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer, ie->value.choice.MeNBtoSgNBContainer.buf, ie->value.choice.MeNBtoSgNBContainer.size); @@ -1943,7 +1943,6 @@ int x2ap_gNB_handle_ENDC_sGNB_reconfiguration_complete (instance_t instance, x2ap_eNB_instance_t *instance_p; x2ap_eNB_data_t *x2ap_eNB_data; MessageDef *msg; - int ue_id; DevAssert (pdu != NULL); x2SgNBReconfigurationComplete = &pdu->choice.initiatingMessage.value.choice.SgNBReconfigurationComplete; diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index 75ed01843467b001b3ac78ad190335f1c34a7de2..136c78f99dd462501625bd09bc51f9241f5d0f60 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -589,7 +589,7 @@ static void *UE_thread_synch(void *arg) LOG_I(PHY, "[UE thread Synch] Running Initial Synch (mode %d)\n",UE->mode); if (initial_sync( UE, UE->mode ) == 0) { - LOG_I( HW, "Got synch: hw_slot_offset %d, carrier off %d Hz, rxgain %d (DL %u, UL %u), UE_scan_carrier %d\n", + LOG_I( HW, "Got synch: hw_slot_offset %d, carrier off %d Hz, rxgain %d (DL %lu, UL %lu), UE_scan_carrier %d\n", (UE->rx_offset<<1) / UE->frame_parms.samples_per_tti, freq_offset, UE->rx_total_gain_dB, @@ -714,7 +714,7 @@ static void *UE_thread_synch(void *arg) } } - LOG_I(PHY, "[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)\n", + LOG_I(PHY, "[initial_sync] trying carrier off %d Hz, rxgain %d (DL %lu, UL %lu)\n", freq_offset, UE->rx_total_gain_dB, downlink_frequency[0][0]+freq_offset, @@ -2071,7 +2071,7 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, txdata = (int32_t **)malloc16( frame_parms->nb_antennas_tx*sizeof(int32_t *) ); for (i=0; i<frame_parms->nb_antennas_rx; i++) { - LOG_I(PHY, "Mapping UE CC_id %d, rx_ant %d, freq %u on card %d, chain %d\n", + LOG_I(PHY, "Mapping UE CC_id %d, rx_ant %d, freq %lu on card %d, chain %d\n", CC_id, i, downlink_frequency[CC_id][i], phy_vars_ue[CC_id]->rf_map.card, (phy_vars_ue[CC_id]->rf_map.chain)+i ); free( phy_vars_ue[CC_id]->common_vars.rxdata[i] ); rxdata[i] = (int32_t *)malloc16_clear( 307200*sizeof(int32_t) ); @@ -2079,7 +2079,7 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, } for (i=0; i<frame_parms->nb_antennas_tx; i++) { - LOG_I(PHY, "Mapping UE CC_id %d, tx_ant %d, freq %u on card %d, chain %d\n", + LOG_I(PHY, "Mapping UE CC_id %d, tx_ant %d, freq %lu on card %d, chain %d\n", CC_id, i, downlink_frequency[CC_id][i], phy_vars_ue[CC_id]->rf_map.card, (phy_vars_ue[CC_id]->rf_map.chain)+i ); free( phy_vars_ue[CC_id]->common_vars.txdata[i] ); txdata[i] = (int32_t *)malloc16_clear( 307200*sizeof(int32_t) );