diff --git a/openair1/PHY/MODULATION/slot_fep_nr.c b/openair1/PHY/MODULATION/slot_fep_nr.c index eb26dfc02bfb6e3b6a222521ec70d3f64ec6e487..139b730ce1bb515046340fef8fc6394d5c22451a 100644 --- a/openair1/PHY/MODULATION/slot_fep_nr.c +++ b/openair1/PHY/MODULATION/slot_fep_nr.c @@ -34,47 +34,6 @@ #define LOG_I(A,B...) printf(A) #endif*/ -dft_size_idx_t get_dft_size_idx(uint16_t ofdm_symbol_size) -{ - switch (ofdm_symbol_size) { - case 128: - return DFT_128; - - case 256: - return DFT_256; - - case 512: - return DFT_512; - - case 1024: - return DFT_1024; - - case 1536: - return DFT_1536; - - case 2048: - return DFT_2048; - - case 3072: - return DFT_3072; - - case 4096: - return DFT_4096; - - case 6144: - return DFT_6144; - - case 8192: - return DFT_8192; - - default: - printf("unsupported ofdm symbol size \n"); - assert(0); - } - - return DFT_SIZE_IDXTABLESIZE; -} - int nr_slot_fep(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, unsigned char symbol, @@ -96,7 +55,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, nb_prefix_samples0 = frame_parms->nb_prefix_samples; } - dft_size_idx_t dftsize = get_dft_size_idx(frame_parms->ofdm_symbol_size); + dft_size_idx_t dftsize = get_dft(frame_parms->ofdm_symbol_size); // This is for misalignment issues int32_t tmp_dft_in[8192] __attribute__ ((aligned (32))); @@ -195,7 +154,7 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, } unsigned int frame_length_samples = frame_parms->samples_per_frame; - dft_size_idx_t dftsize = get_dft_size_idx(frame_parms->ofdm_symbol_size); + dft_size_idx_t dftsize = get_dft(frame_parms->ofdm_symbol_size); // This is for misalignment issues int32_t tmp_dft_in[8192] __attribute__ ((aligned (32))); @@ -289,7 +248,7 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, unsigned int nb_prefix_samples = frame_parms->nb_prefix_samples; unsigned int nb_prefix_samples0 = frame_parms->nb_prefix_samples0; - dft_size_idx_t dftsize = get_dft_size_idx(frame_parms->ofdm_symbol_size); + dft_size_idx_t dftsize = get_dft(frame_parms->ofdm_symbol_size); // This is for misalignment issues int32_t tmp_dft_in[8192] __attribute__ ((aligned (32))); diff --git a/openair1/PHY/NR_REFSIG/pss_nr.h b/openair1/PHY/NR_REFSIG/pss_nr.h index b32d48a2e9f95e126e6dd3d77b2b8c9517a7fd76..1259cbe7900a4eb19fc36a406c756d70f11e64cc 100644 --- a/openair1/PHY/NR_REFSIG/pss_nr.h +++ b/openair1/PHY/NR_REFSIG/pss_nr.h @@ -126,8 +126,6 @@ EXTERN time_stats_t generic_time[TIME_LAST]; /************** FUNCTION ******************************************/ -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_UE_TRANSPORT/pss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c index 88bdc3a9cd1392dbfdef6adacc0e9b75041fa8c0..158c82e585c0172fb2fa18883cb2010f7f40d050 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c @@ -48,126 +48,8 @@ #include "PHY/NR_REFSIG/sss_nr.h" #include "PHY/NR_UE_TRANSPORT/cic_filter_nr.h" -/******************************************************************* -* -* NAME : get_idft -* -* PARAMETERS : size of ofdm symbol -* -* RETURN : index pointing to the dft func in the dft library -* -* DESCRIPTION : get idft function depending of ofdm size -* -*********************************************************************/ - //#define DBG_PSS_NR -idft_size_idx_t get_idft(int ofdm_symbol_size) -{ - - - switch (ofdm_symbol_size) { - case 128: - return IDFT_128; - break; - - case 256: - return IDFT_256; - break; - - case 512: - return IDFT_512; - break; - - case 1024: - return IDFT_1024; - break; - - case 1536: - return IDFT_1536; - break; - - case 2048: - return IDFT_2048; - break; - - case 3072: - return IDFT_3072; - break; - - case 4096: - return IDFT_4096; - break; - - case 8192: - return IDFT_8192; - break; - - default: - printf("function get_idft : unsupported ofdm symbol size \n"); - assert(0); - break; - } - return IDFT_SIZE_IDXTABLESIZE; // never reached and will trigger assertion in idft function -} - -/******************************************************************* -* -* NAME : get_dft -* -* PARAMETERS : size of ofdm symbol -* -* RETURN : function for discrete fourier transform -* -* DESCRIPTION : get dft function depending of ofdm size -* -*********************************************************************/ - -dft_size_idx_t get_dft(int ofdm_symbol_size) -{ - - - switch (ofdm_symbol_size) { - case 128: - return DFT_128; - break; - - case 256: - return DFT_256; - break; - - case 512: - return DFT_512; - break; - - case 1024: - return DFT_1024; - break; - - case 1536: - return DFT_1536; - break; - - case 2048: - return DFT_2048; - break; - - case 4096: - return DFT_4096; - break; - - case 8192: - return DFT_8192; - break; - - default: - printf("function get_dft : unsupported ofdm symbol size \n"); - assert(0); - break; - } - return DFT_SIZE_IDXTABLESIZE; // never reached and will trigger assertion in idft function; -} - /******************************************************************* * * NAME : generate_pss_nr diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h index 966e93440e9b017752734da7f4b4cc9398dc5019..55cbcf6645859e244bb0303f408d744df5a0a2e4 100644 --- a/openair1/PHY/TOOLS/tools_defs.h +++ b/openair1/PHY/TOOLS/tools_defs.h @@ -33,7 +33,9 @@ extern "C" { #endif +#include <stdio.h> #include <stdint.h> +#include <assert.h> #include "PHY/sse_intrin.h" #define CEILIDIV(a,b) ((a+b-1)/b) @@ -322,6 +324,65 @@ adftfunc_t dft_ftab[]={ }; #endif +/******************************************************************* +* +* NAME : get_dft +* +* PARAMETERS : size of ofdm symbol +* +* RETURN : function for discrete fourier transform +* +* DESCRIPTION : get dft function depending of ofdm size +* +*********************************************************************/ +static inline +dft_size_idx_t get_dft(int ofdm_symbol_size) +{ + switch (ofdm_symbol_size) { + case 128: + return DFT_128; + case 256: + return DFT_256; + case 512: + return DFT_512; + case 1024: + return DFT_1024; + case 1536: + return DFT_1536; + case 2048: + return DFT_2048; + case 3072: + return DFT_3072; + case 4096: + return DFT_4096; + case 6144: + return DFT_6144; + case 8192: + return DFT_8192; + case 9216: + return DFT_9216; + case 12288: + return DFT_12288; + case 18432: + return DFT_18432; + case 24576: + return DFT_24576; + case 36864: + return DFT_36864; + case 49152: + return DFT_49152; + case 73728: + return DFT_73728; + case 98304: + return DFT_98304; + default: + printf("function get_dft : unsupported ofdm symbol size \n"); + assert(0); + break; + } + return DFT_SIZE_IDXTABLESIZE; // never reached and will trigger assertion in idft function; +} + 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, @@ -336,6 +397,64 @@ aidftfunc_t idft_ftab[]={ }; #endif +/******************************************************************* +* +* NAME : get_idft +* +* PARAMETERS : size of ofdm symbol +* +* RETURN : index pointing to the dft func in the dft library +* +* DESCRIPTION : get idft function depending of ofdm size +* +*********************************************************************/ +static inline +idft_size_idx_t get_idft(int ofdm_symbol_size) +{ + switch (ofdm_symbol_size) { + case 128: + return IDFT_128; + case 256: + return IDFT_256; + case 512: + return IDFT_512; + case 1024: + return IDFT_1024; + case 1536: + return IDFT_1536; + case 2048: + return IDFT_2048; + case 3072: + return IDFT_3072; + case 4096: + return IDFT_4096; + case 6144: + return IDFT_6144; + case 8192: + return IDFT_8192; + case 9216: + return IDFT_9216; + case 12288: + return IDFT_12288; + case 18432: + return IDFT_18432; + case 24576: + return IDFT_24576; + case 36864: + return IDFT_36864; + case 49152: + return IDFT_49152; + case 73728: + return IDFT_73728; + case 98304: + return IDFT_98304; + default: + printf("function get_idft : unsupported ofdm symbol size \n"); + assert(0); + break; + } + return IDFT_SIZE_IDXTABLESIZE; // never reached and will trigger assertion in idft function +} /*!\fn int32_t rotate_cpx_vector(int16_t *x,int16_t *alpha,int16_t *y,uint32_t N,uint16_t output_shift)