From eb7f3193aa73b94ed7078729a71a6283bee281ed Mon Sep 17 00:00:00 2001 From: cig Date: Tue, 24 Mar 2020 19:30:32 +0100 Subject: [PATCH] Enabled compute_nr_prach_seq to be used at both gNB and UE side: - now the function gets more input arguments but can be used from both UE and gNB - this change was needed because the prach fapi of UE differs from the gNB one --- openair1/PHY/INIT/nr_init.c | 9 ++++++++- openair1/PHY/NR_TRANSPORT/nr_prach_common.c | 20 +++++-------------- .../NR_TRANSPORT/nr_transport_proto_common.h | 8 ++++---- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index dc865aaed9..a74b90749a 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -418,6 +418,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB, void nr_phy_config_request(NR_PHY_Config_t *phy_config) { uint8_t Mod_id = phy_config->Mod_id; + uint8_t short_sequence, num_sequences, rootSequenceIndex, fd_occasion; NR_DL_FRAME_PARMS *fp = &RC.gNB[Mod_id]->frame_parms; nfapi_nr_config_request_scf_t *gNB_config = &RC.gNB[Mod_id]->gNB_config; @@ -481,7 +482,13 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config) { return; } - compute_nr_prach_seq(gNB_config,0,RC.gNB[Mod_id]->X_u); + fd_occasion = 0; + nfapi_nr_prach_config_t *prach_config = &gNB_config->prach_config; + short_sequence = prach_config->prach_sequence_length.value; + num_sequences = prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value; + rootSequenceIndex = prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index.value; + + compute_nr_prach_seq(short_sequence, num_sequences, rootSequenceIndex, RC.gNB[Mod_id]->X_u); RC.gNB[Mod_id]->configured = 1; LOG_I(PHY,"gNB %d configured\n",Mod_id); diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach_common.c b/openair1/PHY/NR_TRANSPORT/nr_prach_common.c index e881b91b84..e824928dbe 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach_common.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prach_common.c @@ -97,28 +97,21 @@ void nr_fill_du(uint16_t N_ZC,uint16_t *prach_root_sequence_map) } +void compute_nr_prach_seq(uint8_t short_sequence, + uint8_t num_sequences, + uint8_t rootSequenceIndex, + uint32_t X_u[64][839]){ -void compute_nr_prach_seq(nfapi_nr_config_request_scf_t *config, - uint8_t fd_occasion, - uint32_t X_u[64][839]) -{ // Compute DFT of x_u => X_u[k] = x_u(inv(u)*k)^* X_u[k] = exp(j\pi u*inv(u)*k*(inv(u)*k+1)/N_ZC) - nfapi_nr_prach_config_t prach_config = config->prach_config; unsigned int k,inv_u,i; int N_ZC; uint16_t *prach_root_sequence_map; uint16_t u; - uint8_t short_sequence = prach_config.prach_sequence_length.value; - uint8_t num_sequences = prach_config.num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value; - uint8_t rootSequenceIndex = prach_config.num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index.value; VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_UE_COMPUTE_PRACH, VCD_FUNCTION_IN); - - LOG_D(PHY,"compute_prach_seq: NCS_config %d, prach short sequence %x, num_Seqeuences %d, rootSequenceIndex %d\n",prach_config.num_prach_fd_occasions_list[fd_occasion].prach_zero_corr_conf.value, short_sequence, num_sequences, rootSequenceIndex); - - + LOG_D(PHY,"compute_prach_seq: prach short sequence %x, num_sequences %d, rootSequenceIndex %d\n", short_sequence, num_sequences, rootSequenceIndex); N_ZC = (short_sequence) ? 139 : 839; //init_prach_tables(N_ZC); //moved to phy_init_lte_ue/eNB, since it takes to long in real-time @@ -132,11 +125,8 @@ void compute_nr_prach_seq(nfapi_nr_config_request_scf_t *config, prach_root_sequence_map = prach_root_sequence_map_0_3; } - - LOG_D( PHY, "compute_prach_seq: done init prach_tables\n" ); - for (i=0; i