From 4edcedd2b30840fb14c6306a56e8d1e553e481d3 Mon Sep 17 00:00:00 2001 From: Andre Puschmann Date: Wed, 8 May 2019 15:17:04 +0200 Subject: [PATCH] add helper to create cexp function for entire subframe --- lib/include/srslte/phy/utils/cexptab.h | 2 ++ lib/src/phy/utils/cexptab.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/include/srslte/phy/utils/cexptab.h b/lib/include/srslte/phy/utils/cexptab.h index 7d88d22ea..64bbda05a 100644 --- a/lib/include/srslte/phy/utils/cexptab.h +++ b/lib/include/srslte/phy/utils/cexptab.h @@ -53,4 +53,6 @@ SRSLTE_API void srslte_cexptab_gen_direct(cf_t *x, float freq, uint32_t len); +SRSLTE_API void srslte_cexptab_gen_sf(cf_t* x, float freq, uint32_t fft_size); + #endif // SRSLTE_CEXPTAB_H diff --git a/lib/src/phy/utils/cexptab.c b/lib/src/phy/utils/cexptab.c index 45a6cd529..a63d4d8b3 100644 --- a/lib/src/phy/utils/cexptab.c +++ b/lib/src/phy/utils/cexptab.c @@ -25,6 +25,7 @@ #include #include +#include "srslte/phy/common/phy_common.h" #include "srslte/phy/utils/cexptab.h" int srslte_cexptab_init(srslte_cexptab_t *h, uint32_t size) { @@ -76,3 +77,16 @@ void srslte_cexptab_gen_direct(cf_t *x, float freq, uint32_t len) { } } +void srslte_cexptab_gen_sf(cf_t* x, float freq, uint32_t fft_size) +{ + cf_t* ptr = x; + for (uint32_t n = 0; n < 2; n++) { + for (uint32_t i = 0; i < 7; i++) { + uint32_t cplen = SRSLTE_CP_LEN_NORM(i, fft_size); + for (uint32_t t = 0; t < fft_size + cplen; t++) { + ptr[t] = cexpf(I * 2 * M_PI * ((float)t - (float)cplen) * freq / fft_size); + } + ptr += fft_size + cplen; + } + } +}