From 7306d88f8316b5c48e265af5feaca4b6f11508bd Mon Sep 17 00:00:00 2001 From: ismagom Date: Fri, 25 Sep 2015 22:44:36 +0200 Subject: [PATCH] Fixed file tests with new fft size --- srslte/include/srslte/common/phy_common.h | 2 ++ srslte/include/srslte/dft/ofdm.h | 6 ++++ srslte/lib/common/src/phy_common.c | 37 ++++++++++++++--------- srslte/lib/dft/src/ofdm.c | 22 +++++++++----- srslte/lib/phch/test/pbch_file_test.c | 2 +- srslte/lib/phch/test/pcfich_file_test.c | 2 +- srslte/lib/phch/test/pdcch_file_test.c | 2 +- srslte/lib/phch/test/phich_file_test.c | 2 +- 8 files changed, 48 insertions(+), 27 deletions(-) diff --git a/srslte/include/srslte/common/phy_common.h b/srslte/include/srslte/common/phy_common.h index 1cc5baf8f..39c673669 100644 --- a/srslte/include/srslte/common/phy_common.h +++ b/srslte/include/srslte/common/phy_common.h @@ -209,6 +209,8 @@ SRSLTE_API bool srslte_symbol_sz_isvalid(uint32_t symbol_sz); SRSLTE_API int srslte_symbol_sz(uint32_t nof_prb); +SRSLTE_API int srslte_symbol_sz_power2(uint32_t nof_prb); + SRSLTE_API int srslte_nof_prb(uint32_t symbol_sz); SRSLTE_API int srslte_sampling_freq_hz(uint32_t nof_prb); diff --git a/srslte/include/srslte/dft/ofdm.h b/srslte/include/srslte/dft/ofdm.h index e87920ff3..6948b1efa 100644 --- a/srslte/include/srslte/dft/ofdm.h +++ b/srslte/include/srslte/dft/ofdm.h @@ -60,6 +60,12 @@ typedef struct SRSLTE_API{ cf_t *shift_buffer; }srslte_ofdm_t; +SRSLTE_API int srslte_ofdm_init_(srslte_ofdm_t *q, + srslte_cp_t cp, + int symbol_sz, + int nof_prb, + srslte_dft_dir_t dir); + SRSLTE_API int srslte_ofdm_rx_init(srslte_ofdm_t *q, srslte_cp_t cp_type, uint32_t nof_prb); diff --git a/srslte/lib/common/src/phy_common.c b/srslte/lib/common/src/phy_common.c index f79c96bf5..0bfaf5bb0 100644 --- a/srslte/lib/common/src/phy_common.c +++ b/srslte/lib/common/src/phy_common.c @@ -36,7 +36,7 @@ #include "srslte/common/sequence.h" -#define USE_REDUCED_SAMPLING_RATES +//#define USE_REDUCED_SAMPLING_RATES @@ -197,6 +197,24 @@ int srslte_sampling_freq_hz(uint32_t nof_prb) { } } +int srslte_symbol_sz_power2(uint32_t nof_prb) { + if (nof_prb<=6) { + return 128; + } else if (nof_prb<=15) { + return 256; + } else if (nof_prb<=25) { + return 512; + } else if (nof_prb<=50) { + return 1024; + } else if (nof_prb<=75) { + return 1536; + } else if (nof_prb<=100) { + return 2048; + } else { + return -1; + } +} + int srslte_symbol_sz(uint32_t nof_prb) { if (nof_prb<=0) { return SRSLTE_ERROR; @@ -214,23 +232,12 @@ int srslte_symbol_sz(uint32_t nof_prb) { return 1024; } else if (nof_prb<=100) { return 1536; + } else { + return SRSLTE_ERROR; } #else - if (nof_prb<=6) { - return 128; - } else if (nof_prb<=15) { - return 256; - } else if (nof_prb<=25) { - return 512; - } else if (nof_prb<=50) { - return 1024; - } else if (nof_prb<=75) { - return 1536; - } else if (nof_prb<=100) { - return 2048; - } + return srslte_symbol_sz_power2(nof_prb); #endif - return SRSLTE_ERROR; } int srslte_nof_prb(uint32_t symbol_sz) diff --git a/srslte/lib/dft/src/ofdm.c b/srslte/lib/dft/src/ofdm.c index 2a60b92e5..54e0934fb 100644 --- a/srslte/lib/dft/src/ofdm.c +++ b/srslte/lib/dft/src/ofdm.c @@ -37,13 +37,8 @@ #include "srslte/utils/debug.h" #include "srslte/utils/vector.h" -int srslte_ofdm_init_(srslte_ofdm_t *q, srslte_cp_t cp, uint32_t nof_prb, srslte_dft_dir_t dir) { - int symbol_sz = srslte_symbol_sz(nof_prb); +int srslte_ofdm_init_(srslte_ofdm_t *q, srslte_cp_t cp, int symbol_sz, int nof_prb, srslte_dft_dir_t dir) { - if (symbol_sz < 0) { - fprintf(stderr, "Error: Invalid nof_prb=%d\n", nof_prb); - return -1; - } if (srslte_dft_plan_c(&q->fft_plan, symbol_sz, dir)) { fprintf(stderr, "Error: Creating DFT plan\n"); return -1; @@ -85,7 +80,12 @@ void srslte_ofdm_free_(srslte_ofdm_t *q) { } int srslte_ofdm_rx_init(srslte_ofdm_t *q, srslte_cp_t cp, uint32_t nof_prb) { - return srslte_ofdm_init_(q, cp, nof_prb, SRSLTE_DFT_FORWARD); + int symbol_sz = srslte_symbol_sz(nof_prb); + if (symbol_sz < 0) { + fprintf(stderr, "Error: Invalid nof_prb=%d\n", nof_prb); + return -1; + } + return srslte_ofdm_init_(q, cp, symbol_sz, nof_prb, SRSLTE_DFT_FORWARD); } void srslte_ofdm_rx_free(srslte_ofdm_t *q) { @@ -96,7 +96,13 @@ int srslte_ofdm_tx_init(srslte_ofdm_t *q, srslte_cp_t cp, uint32_t nof_prb) { uint32_t i; int ret; - ret = srslte_ofdm_init_(q, cp, nof_prb, SRSLTE_DFT_BACKWARD); + int symbol_sz = srslte_symbol_sz(nof_prb); + if (symbol_sz < 0) { + fprintf(stderr, "Error: Invalid nof_prb=%d\n", nof_prb); + return -1; + } + + ret = srslte_ofdm_init_(q, cp, symbol_sz, nof_prb, SRSLTE_DFT_BACKWARD); if (ret == SRSLTE_SUCCESS) { srslte_dft_plan_set_norm(&q->fft_plan, false); diff --git a/srslte/lib/phch/test/pbch_file_test.c b/srslte/lib/phch/test/pbch_file_test.c index c5c15c8d3..4392a757c 100644 --- a/srslte/lib/phch/test/pbch_file_test.c +++ b/srslte/lib/phch/test/pbch_file_test.c @@ -138,7 +138,7 @@ int base_init() { return -1; } - if (srslte_ofdm_rx_init(&fft, cell.cp, cell.nof_prb)) { + if (srslte_ofdm_init_(&fft, cell.cp, srslte_symbol_sz_power2(cell.nof_prb), cell.nof_prb, SRSLTE_DFT_FORWARD)) { fprintf(stderr, "Error initializing FFT\n"); return -1; } diff --git a/srslte/lib/phch/test/pcfich_file_test.c b/srslte/lib/phch/test/pcfich_file_test.c index a6a15e6d7..564013c25 100644 --- a/srslte/lib/phch/test/pcfich_file_test.c +++ b/srslte/lib/phch/test/pcfich_file_test.c @@ -149,7 +149,7 @@ int base_init() { return -1; } - if (srslte_ofdm_rx_init(&fft, cell.cp, cell.nof_prb)) { + if (srslte_ofdm_init_(&fft, cell.cp, srslte_symbol_sz_power2(cell.nof_prb), cell.nof_prb, SRSLTE_DFT_FORWARD)) { fprintf(stderr, "Error initializing FFT\n"); return -1; } diff --git a/srslte/lib/phch/test/pdcch_file_test.c b/srslte/lib/phch/test/pdcch_file_test.c index 0fe44006a..e5834f290 100644 --- a/srslte/lib/phch/test/pdcch_file_test.c +++ b/srslte/lib/phch/test/pdcch_file_test.c @@ -157,7 +157,7 @@ int base_init() { return -1; } - if (srslte_ofdm_rx_init(&fft, cell.cp, cell.nof_prb)) { + if (srslte_ofdm_init_(&fft, cell.cp, srslte_symbol_sz_power2(cell.nof_prb), cell.nof_prb, SRSLTE_DFT_FORWARD)) { fprintf(stderr, "Error initializing FFT\n"); return -1; } diff --git a/srslte/lib/phch/test/phich_file_test.c b/srslte/lib/phch/test/phich_file_test.c index 91131e16c..c027888f7 100644 --- a/srslte/lib/phch/test/phich_file_test.c +++ b/srslte/lib/phch/test/phich_file_test.c @@ -172,7 +172,7 @@ int base_init() { return -1; } - if (srslte_ofdm_rx_init(&fft, cell.cp, cell.nof_prb)) { + if (srslte_ofdm_init_(&fft, cell.cp, srslte_symbol_sz_power2(cell.nof_prb), cell.nof_prb, SRSLTE_DFT_FORWARD)) { fprintf(stderr, "Error initializing FFT\n"); return -1; }