From 9e4e75bfda2d6aa9c40fa73786f6cd63d4f09f66 Mon Sep 17 00:00:00 2001 From: Xavier Arteaga Date: Fri, 24 Dec 2021 12:56:58 +0100 Subject: [PATCH] Parametrize UE SYNC NR test --- lib/src/phy/ue/test/ue_sync_nr_test.c | 42 ++++++++++++++++----------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/src/phy/ue/test/ue_sync_nr_test.c b/lib/src/phy/ue/test/ue_sync_nr_test.c index 497b26231..32620faa0 100644 --- a/lib/src/phy/ue/test/ue_sync_nr_test.c +++ b/lib/src/phy/ue/test/ue_sync_nr_test.c @@ -21,10 +21,14 @@ #include // NR parameters -static uint32_t pci = 1; // Physical Cell Identifier -static uint32_t carrier_nof_prb = 52; // Carrier bandwidth -static srsran_subcarrier_spacing_t carrier_scs = srsran_subcarrier_spacing_15kHz; -static srsran_subcarrier_spacing_t ssb_scs = srsran_subcarrier_spacing_30kHz; +static uint32_t pci = 500; // Physical Cell Identifier +static uint32_t carrier_nof_prb = 52; // Carrier bandwidth +static srsran_subcarrier_spacing_t carrier_scs = srsran_subcarrier_spacing_15kHz; +static double center_frequency_hz = 3.5e9; +static srsran_subcarrier_spacing_t ssb_scs = srsran_subcarrier_spacing_15kHz; +static double ssb_frequency_hz = -960e3; +static srsran_ssb_patern_t ssb_pattern = SRSRAN_SSB_PATTERN_C; +static srsran_duplex_mode_t duplex_mode = SRSRAN_DUPLEX_MODE_TDD; // Test and channel parameters static uint32_t nof_sf = 1000; // Number of subframes to test @@ -35,7 +39,7 @@ static float delay_max_us = 1000.0f; // Maximum dynamic delay in microsecon static float delay_period_s = 60.0f; // Delay period in seconds // Test context -static double srate_hz = 0.0f; // Base-band sampling rate +static double srate_hz = 0.0; // Base-band sampling rate static uint32_t sf_len = 0; // Subframe length static cf_t* buffer = NULL; // Base-band buffer static cf_t* buffer2 = NULL; // Base-band buffer @@ -99,7 +103,7 @@ static int test_context_init(test_context_t* ctx) srsran_ssb_args_t ssb_args = {}; ssb_args.max_srate_hz = srate_hz; - ssb_args.min_scs = carrier_scs; + ssb_args.min_scs = ssb_scs; ssb_args.enable_encode = true; if (srsran_ssb_init(&ctx->ssb, &ssb_args) < SRSRAN_SUCCESS) { return SRSRAN_ERROR; @@ -108,10 +112,11 @@ static int test_context_init(test_context_t* ctx) srsran_ssb_cfg_t ssb_cfg = {}; ssb_cfg.srate_hz = srate_hz; ssb_cfg.srate_hz = srate_hz; - ssb_cfg.center_freq_hz = 3.5e9; - ssb_cfg.ssb_freq_hz = 3.5e9 - 960e3; + ssb_cfg.center_freq_hz = center_frequency_hz; + ssb_cfg.ssb_freq_hz = ssb_frequency_hz; ssb_cfg.scs = ssb_scs; - ssb_cfg.pattern = SRSRAN_SSB_PATTERN_C; + ssb_cfg.pattern = ssb_pattern; + ssb_cfg.duplex_mode = duplex_mode; if (srsran_ssb_set_cfg(&ctx->ssb, &ssb_cfg) < SRSRAN_SUCCESS) { return SRSRAN_ERROR; } @@ -241,10 +246,12 @@ int main(int argc, char** argv) int ret = SRSRAN_ERROR; parse_args(argc, argv); - srate_hz = (double)SRSRAN_SUBC_SPACING_NR(carrier_scs) * srsran_min_symbol_sz_rb(carrier_nof_prb); - sf_len = (uint32_t)ceil(srate_hz / 1000.0); - buffer = srsran_vec_cf_malloc(sf_len); - buffer2 = srsran_vec_cf_malloc(sf_len); + if (!isnormal(srate_hz)) { + srate_hz = (double)SRSRAN_SUBC_SPACING_NR(carrier_scs) * srsran_min_symbol_sz_rb(carrier_nof_prb); + } + sf_len = (uint32_t)ceil(srate_hz / 1000.0); + buffer = srsran_vec_cf_malloc(sf_len); + buffer2 = srsran_vec_cf_malloc(sf_len); test_context_t ctx = {}; srsran_ue_sync_nr_t ue_sync = {}; @@ -264,7 +271,7 @@ int main(int argc, char** argv) ue_sync_args.min_scs = carrier_scs; ue_sync_args.recv_obj = &ctx; ue_sync_args.recv_callback = &recv_callback; - ue_sync_args.disable_cfo = false; + ue_sync_args.disable_cfo = true; if (srsran_ue_sync_nr_init(&ue_sync, &ue_sync_args) < SRSRAN_SUCCESS) { ERROR("Init"); goto clean_exit; @@ -272,10 +279,11 @@ int main(int argc, char** argv) srsran_ue_sync_nr_cfg_t ue_sync_cfg = {}; ue_sync_cfg.ssb.srate_hz = srate_hz; - ue_sync_cfg.ssb.center_freq_hz = 3.5e9; - ue_sync_cfg.ssb.ssb_freq_hz = 3.5e9 - 960e3; + ue_sync_cfg.ssb.center_freq_hz = center_frequency_hz; + ue_sync_cfg.ssb.ssb_freq_hz = ssb_frequency_hz; ue_sync_cfg.ssb.scs = ssb_scs; - ue_sync_cfg.ssb.pattern = SRSRAN_SSB_PATTERN_C; + ue_sync_cfg.ssb.pattern = ssb_pattern; + ue_sync_cfg.ssb.duplex_mode = duplex_mode; ue_sync_cfg.N_id = pci; if (srsran_ue_sync_nr_set_cfg(&ue_sync, &ue_sync_cfg) < SRSRAN_SUCCESS) { ERROR("Init");