From 51d60c2daec3d2b1e0fc61965b878f9e08e9a3da Mon Sep 17 00:00:00 2001 From: francescomani <email@francescomani.it> Date: Thu, 14 Mar 2024 13:54:23 +0100 Subject: [PATCH] let the gNB print a LOG with the UE command line parameters to simplfy the life of the users --- doc/RUNMODEM.md | 6 ++++ openair1/PHY/INIT/nr_parms.c | 13 +++----- openair1/PHY/INIT/nr_phy_init.h | 2 +- openair1/PHY/defs_nr_common.h | 1 + openair1/SCHED_NR/phy_procedures_nr_gNB.c | 40 +++++++++++++++++------ 5 files changed, 43 insertions(+), 19 deletions(-) diff --git a/doc/RUNMODEM.md b/doc/RUNMODEM.md index e3790114a39..d6f504af1b5 100644 --- a/doc/RUNMODEM.md +++ b/doc/RUNMODEM.md @@ -102,6 +102,12 @@ Command line parameters for UE in `--sa` mode: - `--band` : NR band number (default value 78) - `--ssb` : SSB start subcarrier (default value 516) +To simplify the configuration for the user testing OAI UE with OAI gNB, the latter prints the following LOG that guides the user to correctly set the UE command line parameters. + +``` +[PHY] Command line parameters for the UE: -C 3319680000 -r 106 --numerology 1 --band 78 --ssb 516 +``` + You can run this, using USRPs, on two separate machines: ``` diff --git a/openair1/PHY/INIT/nr_parms.c b/openair1/PHY/INIT/nr_parms.c index 02141f4ff36..5b45bbc8f9d 100644 --- a/openair1/PHY/INIT/nr_parms.c +++ b/openair1/PHY/INIT/nr_parms.c @@ -212,22 +212,20 @@ uint32_t get_samples_slot_timestamp(int slot, const NR_DL_FRAME_PARMS *fp, uint8 return samp_count; } -int nr_init_frame_parms(nfapi_nr_config_request_scf_t* cfg, - NR_DL_FRAME_PARMS *fp) +void nr_init_frame_parms(nfapi_nr_config_request_scf_t* cfg, NR_DL_FRAME_PARMS *fp) { - AssertFatal (cfg != NULL, "%s %s:%i Null pointer to cfg %p!\n", __FUNCTION__, __FILE__, __LINE__, cfg); + AssertFatal (cfg, "Null pointer to cfg!\n"); fp->frame_type = cfg->cell_config.frame_duplex_type.value; - fp->L_ssb = (((uint64_t) cfg->ssb_table.ssb_mask_list[0].ssb_mask.value)<<32) | cfg->ssb_table.ssb_mask_list[1].ssb_mask.value ; + fp->L_ssb = (((uint64_t) cfg->ssb_table.ssb_mask_list[0].ssb_mask.value) << 32) | cfg->ssb_table.ssb_mask_list[1].ssb_mask.value; fp->N_RB_DL = cfg->carrier_config.dl_grid_size[cfg->ssb_config.scs_common.value].value; fp->N_RB_UL = cfg->carrier_config.ul_grid_size[cfg->ssb_config.scs_common.value].value; int Ncp = NFAPI_CP_NORMAL; int mu = cfg->ssb_config.scs_common.value; - - LOG_I(PHY,"Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, fp->N_RB_DL, Ncp); + LOG_I(PHY,"Initializing frame parms for mu %d, N_RB %d, Ncp %d\n", mu, fp->N_RB_DL, Ncp); if (Ncp == NFAPI_CP_EXTENDED) AssertFatal(mu == NR_MU_2,"Invalid cyclic prefix %d for numerology index %d\n", Ncp, mu); @@ -266,8 +264,7 @@ int nr_init_frame_parms(nfapi_nr_config_request_scf_t* cfg, for (int p=0; p<num_tx_ant; p++) fp->N_ssb += ((fp->L_ssb >> (63-p)) & 0x01); - return 0; - + fp->print_ue_help_cmdline_log = true; } int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *fp, diff --git a/openair1/PHY/INIT/nr_phy_init.h b/openair1/PHY/INIT/nr_phy_init.h index 0d5170b05e8..5e36558e2b8 100644 --- a/openair1/PHY/INIT/nr_phy_init.h +++ b/openair1/PHY/INIT/nr_phy_init.h @@ -26,7 +26,7 @@ #include "PHY/defs_nr_UE.h" int nr_get_ssb_start_symbol(NR_DL_FRAME_PARMS *fp,uint8_t i_ssb); -int nr_init_frame_parms(nfapi_nr_config_request_scf_t *config, NR_DL_FRAME_PARMS *frame_parms); +void nr_init_frame_parms(nfapi_nr_config_request_scf_t *config, NR_DL_FRAME_PARMS *frame_parms); int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *frame_parms, fapi_nr_config_request_t *config, uint16_t nr_band); void nr_init_frame_parms_ue_sa(NR_DL_FRAME_PARMS *frame_parms, uint64_t downlink_frequency, int32_t uplink_frequency_offset, uint8_t mu, uint16_t nr_band); void nr_init_frame_parms_ue_sl(NR_DL_FRAME_PARMS *frame_parms, uint64_t sidelink_frequency, uint16_t nr_band); diff --git a/openair1/PHY/defs_nr_common.h b/openair1/PHY/defs_nr_common.h index 72233f58cf2..e99bcddabab 100644 --- a/openair1/PHY/defs_nr_common.h +++ b/openair1/PHY/defs_nr_common.h @@ -261,6 +261,7 @@ struct NR_DL_FRAME_PARMS { uint32_t ofdm_offset_divisor; uint16_t tdd_slot_config; uint8_t tdd_period; + bool print_ue_help_cmdline_log; }; // PRS config structures diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index 87cdff15abf..a7b9e5d1205 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -45,26 +45,25 @@ extern uint8_t nfapi_mode; -void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_dl_tti_ssb_pdu ssb_pdu) { - - NR_DL_FRAME_PARMS *fp=&gNB->frame_parms; +void nr_common_signal_procedures(PHY_VARS_gNB *gNB,int frame,int slot, nfapi_nr_dl_tti_ssb_pdu ssb_pdu) +{ + NR_DL_FRAME_PARMS *fp = &gNB->frame_parms; nfapi_nr_config_request_scf_t *cfg = &gNB->gNB_config; c16_t **txdataF = gNB->common_vars.txdataF; - uint8_t ssb_index, n_hf; - uint16_t ssb_start_symbol; + uint8_t n_hf; int txdataF_offset = slot*fp->samples_per_slot_wCP; - uint16_t slots_per_hf = (fp->slots_per_frame)>>1; + uint16_t slots_per_hf = (fp->slots_per_frame) >> 1; if (slot<slots_per_hf) n_hf=0; else n_hf=1; - ssb_index = ssb_pdu.ssb_pdu_rel15.SsbBlockIndex; - LOG_D(PHY,"common_signal_procedures: frame %d, slot %d ssb index %d\n",frame,slot,ssb_index); + uint8_t ssb_index = ssb_pdu.ssb_pdu_rel15.SsbBlockIndex; + LOG_D(PHY,"common_signal_procedures: frame %d, slot %d ssb index %d\n", frame, slot, ssb_index); - int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp,ssb_index); // computing the starting symbol for current ssb - ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot; // start symbol wrt slot + int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp, ssb_index); // computing the starting symbol for current ssb + uint16_t ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot; // start symbol wrt slot // Setting the first subcarrier // 3GPP TS 38.211 sections 7.4.3.1 and 4.4.4.2 @@ -77,6 +76,27 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_ const int sc_offset = (fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset >> scs : ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset; fp->ssb_start_subcarrier = (12 * prb_offset + sc_offset); + + if (fp->print_ue_help_cmdline_log && get_softmodem_params()->sa) { + fp->print_ue_help_cmdline_log = false; + if (fp->dl_CarrierFreq != fp->ul_CarrierFreq) + LOG_A(PHY, + "Command line parameters for the UE: -C %lu --CO %lu -r %d --numerology %d --band %d --ssb %d\n", + fp->dl_CarrierFreq, + fp->dl_CarrierFreq - fp->ul_CarrierFreq, + fp->N_RB_DL, + scs, + fp->nr_band, + fp->ssb_start_subcarrier); + else + LOG_A(PHY, + "Command line parameters for the UE: -C %lu -r %d --numerology %d --band %d --ssb %d\n", + fp->dl_CarrierFreq, + fp->N_RB_DL, + scs, + fp->nr_band, + fp->ssb_start_subcarrier); + } LOG_D(PHY, "ssbOffsetPointA %d SSB SsbSubcarrierOffset %d prb_offset %d sc_offset %d scs %d ssb_start_subcarrier %d\n", ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA, -- GitLab