From 9121541b3cb82f664785e293d699ce6260bc19d9 Mon Sep 17 00:00:00 2001 From: laurent <laurent Thomas> Date: Mon, 3 Jul 2023 11:52:25 +0200 Subject: [PATCH] only cleaning --- cmake_targets/tools/build_helper | 1 + common/utils/ocp_itti/intertask_interface.cpp | 2 +- common/utils/telnetsrv/telnetsrv.c | 3 - executables/nr-ue.c | 4 +- openair1/PHY/INIT/nr_init_ue.c | 81 ++++++------ openair1/PHY/INIT/nr_parms.c | 6 +- openair1/PHY/MODULATION/modulation_common.h | 2 +- openair1/PHY/MODULATION/nr_modulation.h | 4 +- openair1/PHY/MODULATION/ofdm_mod.c | 8 +- openair1/PHY/NR_REFSIG/sss_nr.h | 12 +- openair1/PHY/NR_TRANSPORT/nr_prach.h | 2 +- openair1/PHY/NR_TRANSPORT/nr_prach_common.c | 17 +-- .../NR_TRANSPORT/nr_transport_common_proto.h | 5 +- openair1/PHY/NR_UE_TRANSPORT/dci_nr.c | 6 +- .../NR_UE_TRANSPORT/nr_dlsch_demodulation.c | 17 ++- .../PHY/NR_UE_TRANSPORT/nr_initial_sync.c | 71 ++++------ openair1/PHY/NR_UE_TRANSPORT/nr_prach.c | 123 ++++++++---------- .../NR_UE_TRANSPORT/nr_transport_proto_ue.h | 19 +-- openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c | 41 ++---- openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c | 43 +++--- openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h | 41 +++--- .../PHY/NR_UE_TRANSPORT/srs_modulation_nr.c | 13 +- .../PHY/NR_UE_TRANSPORT/srs_modulation_nr.h | 2 +- openair1/PHY/NR_UE_TRANSPORT/sss_nr.c | 57 ++++---- openair1/PHY/TOOLS/cmult_sv.c | 45 +++++-- openair1/PHY/TOOLS/nr_phy_scope.c | 3 + openair1/PHY/TOOLS/phy_scope_interface.h | 2 + openair1/PHY/TOOLS/tools_defs.h | 7 +- openair1/PHY/defs_gNB.h | 2 +- openair1/PHY/defs_nr_UE.h | 24 +++- openair1/PHY/defs_nr_common.h | 6 +- openair1/PHY/thread_NR_UE.h | 70 ---------- openair1/SCHED_NR_UE/defs.h | 4 +- openair1/SCHED_NR_UE/fapi_nr_ue_l1.c | 14 +- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 93 +++++-------- openair1/SCHED_NR_UE/pucch_uci_ue_nr.c | 42 ++---- openair1/SCHED_NR_UE/pucch_uci_ue_nr.h | 5 +- openair1/SIMULATION/NR_PHY/dlsim.c | 12 +- openair1/SIMULATION/NR_PHY/prachsim.c | 2 +- openair1/SIMULATION/NR_PHY/ulsim.c | 32 ++--- openair2/LAYER2/NR_MAC_UE/mac_proto.h | 1 - openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c | 4 +- openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c | 5 +- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c | 40 +++--- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h | 1 - openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h | 1 - openair2/RRC/NR/rrc_gNB_UE_context.c | 2 +- 47 files changed, 430 insertions(+), 567 deletions(-) delete mode 100644 openair1/PHY/thread_NR_UE.h diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index d12c63486b7..3c5bea4a371 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -103,6 +103,7 @@ get_distribution_release() { check_supported_distribution() { local distribution=$(get_distribution_release) case "$distribution" in + "ubuntu23.10") return 0 ;; "ubuntu22.04") return 0 ;; "ubuntu21.04") return 0 ;; "ubuntu20.04") return 0 ;; diff --git a/common/utils/ocp_itti/intertask_interface.cpp b/common/utils/ocp_itti/intertask_interface.cpp index 897e6757afa..b0d05c6aca1 100644 --- a/common/utils/ocp_itti/intertask_interface.cpp +++ b/common/utils/ocp_itti/intertask_interface.cpp @@ -140,7 +140,7 @@ extern "C" { t->message_queue.insert(t->message_queue.begin(), message); eventfd_t sem_counter = 1; AssertFatal ( sizeof(sem_counter) == write(t->sem_fd, &sem_counter, sizeof(sem_counter)), ""); - LOG_D(ITTI,"sent messages id=%d to %s\n",message_id, t->admin.name); + LOG_D(ITTI, "sent messages id=%s messages_info to %s\n", messages_info[message_id].name, t->admin.name); return 0; } diff --git a/common/utils/telnetsrv/telnetsrv.c b/common/utils/telnetsrv/telnetsrv.c index d32cc88b2fd..1b250079780 100644 --- a/common/utils/telnetsrv/telnetsrv.c +++ b/common/utils/telnetsrv/telnetsrv.c @@ -339,9 +339,6 @@ int history_cmd(char *buff, int debug, telnet_printfunc_t prnt) { memset(cmds,0,sizeof(cmds)); sscanf(buff,"%9s %9s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4] ); - if (cmds[0] == NULL) - return CMDSTATUS_VARNOTFOUND; - if (strncasecmp(cmds[0],"list",4) == 0) { HIST_ENTRY **hist = history_list(); diff --git a/executables/nr-ue.c b/executables/nr-ue.c index 1b56dfccdb7..d80cc9359a6 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -505,8 +505,7 @@ static void RU_write(nr_rxtx_thread_data_t *rxtxD) { void *txp[NB_ANTENNAS_TX]; for (int i=0; i<UE->frame_parms.nb_antennas_tx; i++) - txp[i] = (void *)&UE->common_vars.txdata[i][UE->frame_parms.get_samples_slot_timestamp( - proc->nr_slot_tx, &UE->frame_parms, 0)]; + txp[i] = (void *)&UE->common_vars.txData[i][UE->frame_parms.get_samples_slot_timestamp(proc->nr_slot_tx, &UE->frame_parms, 0)]; radio_tx_burst_flag_t flags = TX_BURST_INVALID; @@ -868,7 +867,6 @@ void *UE_thread(void *arg) { nr_rxtx_thread_data_t curMsg = {0}; curMsg.UE=UE; // update thread index for received subframe - curMsg.proc.CC_id = UE->CC_id; curMsg.proc.nr_slot_rx = slot_nr; curMsg.proc.nr_slot_tx = (absolute_slot + DURATION_RX_TO_TX) % nb_slot_frame; curMsg.proc.frame_rx = (absolute_slot/nb_slot_frame) % MAX_FRAME_NUMBER; diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index 1fb9ca985f4..a09d00b2919 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -149,16 +149,16 @@ void init_nr_prs_ue_vars(PHY_VARS_NR_UE *ue) // PRS vars init for(int idx = 0; idx < NR_MAX_PRS_COMB_SIZE; idx++) { - prs_vars[idx] = (NR_UE_PRS *)malloc16_clear(sizeof(NR_UE_PRS)); + prs_vars[idx] = malloc16_clear(sizeof(NR_UE_PRS)); // PRS channel estimates for(int k = 0; k < NR_MAX_PRS_RESOURCES_PER_SET; k++) { - prs_vars[idx]->prs_resource[k].prs_meas = (prs_meas_t **)malloc16_clear( fp->nb_antennas_rx*sizeof(prs_meas_t *) ); + prs_vars[idx]->prs_resource[k].prs_meas = malloc16_clear(fp->nb_antennas_rx * sizeof(prs_meas_t *)); AssertFatal((prs_vars[idx]->prs_resource[k].prs_meas!=NULL), "%s: PRS measurements malloc failed for gNB_id %d\n", __FUNCTION__, idx); for (int j=0; j<fp->nb_antennas_rx; j++) { - prs_vars[idx]->prs_resource[k].prs_meas[j] = (prs_meas_t *)malloc16_clear(sizeof(prs_meas_t) ); + prs_vars[idx]->prs_resource[k].prs_meas[j] = malloc16_clear(sizeof(prs_meas_t)); AssertFatal((prs_vars[idx]->prs_resource[k].prs_meas[j]!=NULL), "%s: PRS measurements malloc failed for gNB_id %d, rx_ant %d\n", __FUNCTION__, idx, j); } } @@ -168,23 +168,23 @@ void init_nr_prs_ue_vars(PHY_VARS_NR_UE *ue) RCconfig_nrUE_prs(ue); //PRS sequence init - ue->nr_gold_prs = (uint32_t *****)malloc16(ue->prs_active_gNBs*sizeof(uint32_t ****)); + ue->nr_gold_prs = malloc16(ue->prs_active_gNBs * sizeof(uint32_t ****)); uint32_t *****prs = ue->nr_gold_prs; AssertFatal(prs!=NULL, "%s: positioning reference signal malloc failed\n", __FUNCTION__); for (int gnb = 0; gnb < ue->prs_active_gNBs; gnb++) { - prs[gnb] = (uint32_t ****)malloc16(ue->prs_vars[gnb]->NumPRSResources*sizeof(uint32_t ***)); + prs[gnb] = malloc16(ue->prs_vars[gnb]->NumPRSResources * sizeof(uint32_t ***)); AssertFatal(prs[gnb]!=NULL, "%s: positioning reference signal for gnb %d - malloc failed\n", __FUNCTION__, gnb); for (int rsc = 0; rsc < ue->prs_vars[gnb]->NumPRSResources; rsc++) { - prs[gnb][rsc] = (uint32_t ***)malloc16(fp->slots_per_frame*sizeof(uint32_t **)); + prs[gnb][rsc] = malloc16(fp->slots_per_frame * sizeof(uint32_t **)); AssertFatal(prs[gnb][rsc]!=NULL, "%s: positioning reference signal for gnb %d rsc %d- malloc failed\n", __FUNCTION__, gnb, rsc); for (int slot=0; slot<fp->slots_per_frame; slot++) { - prs[gnb][rsc][slot] = (uint32_t **)malloc16(fp->symbols_per_slot*sizeof(uint32_t *)); + prs[gnb][rsc][slot] = malloc16(fp->symbols_per_slot * sizeof(uint32_t *)); AssertFatal(prs[gnb][rsc][slot]!=NULL, "%s: positioning reference signal for gnb %d rsc %d slot %d - malloc failed\n", __FUNCTION__, gnb, rsc, slot); for (int symb=0; symb<fp->symbols_per_slot; symb++) { - prs[gnb][rsc][slot][symb] = (uint32_t *)malloc16(NR_MAX_PRS_INIT_LENGTH_DWORD*sizeof(uint32_t)); + prs[gnb][rsc][slot][symb] = malloc16(NR_MAX_PRS_INIT_LENGTH_DWORD * sizeof(uint32_t)); AssertFatal(prs[gnb][rsc][slot][symb]!=NULL, "%s: positioning reference signal for gnb %d rsc %d slot %d symbol %d - malloc failed\n", __FUNCTION__, gnb, rsc, slot, symb); } // for symb } // for slot @@ -251,19 +251,19 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) // ceil(((NB_RB*6(k)*2(QPSK)/32) // 3 RE *2(QPSK) int pusch_dmrs_init_length = ((fp->N_RB_UL*12)>>5)+1; - ue->nr_gold_pusch_dmrs = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***)); + ue->nr_gold_pusch_dmrs = malloc16(fp->slots_per_frame * sizeof(uint32_t ***)); uint32_t ****pusch_dmrs = ue->nr_gold_pusch_dmrs; for (slot=0; slot<fp->slots_per_frame; slot++) { - pusch_dmrs[slot] = (uint32_t ***)malloc16(fp->symbols_per_slot*sizeof(uint32_t **)); + pusch_dmrs[slot] = malloc16(fp->symbols_per_slot * sizeof(uint32_t **)); AssertFatal(pusch_dmrs[slot]!=NULL, "init_nr_ue_signal: pusch_dmrs for slot %d - malloc failed\n", slot); for (symb=0; symb<fp->symbols_per_slot; symb++) { - pusch_dmrs[slot][symb] = (uint32_t **)malloc16(NR_NB_NSCID*sizeof(uint32_t *)); + pusch_dmrs[slot][symb] = malloc16(NR_NB_NSCID * sizeof(uint32_t *)); AssertFatal(pusch_dmrs[slot][symb]!=NULL, "init_nr_ue_signal: pusch_dmrs for slot %d symbol %d - malloc failed\n", slot, symb); for (int q=0; q<NR_NB_NSCID; q++) { - pusch_dmrs[slot][symb][q] = (uint32_t *)malloc16(pusch_dmrs_init_length*sizeof(uint32_t)); + pusch_dmrs[slot][symb][q] = malloc16(pusch_dmrs_init_length * sizeof(uint32_t)); AssertFatal(pusch_dmrs[slot][symb][q]!=NULL, "init_nr_ue_signal: pusch_dmrs for slot %d symbol %d nscid %d - malloc failed\n", slot, symb, q); } } @@ -291,36 +291,34 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) ue->tx_power_dBm[i]=-127; // init TX buffers - common_vars->txdata = (c16_t **)malloc16(fp->nb_antennas_tx*sizeof(c16_t *)); - common_vars->txdataF = (c16_t **)malloc16(fp->nb_antennas_tx*sizeof(c16_t *)); + common_vars->txData = malloc16(fp->nb_antennas_tx * sizeof(c16_t *)); for (i=0; i<fp->nb_antennas_tx; i++) { - common_vars->txdata[i] = (c16_t *)malloc16_clear((fp->samples_per_frame) * sizeof(c16_t)); - common_vars->txdataF[i] = (c16_t *)malloc16_clear((fp->samples_per_frame) * sizeof(c16_t)); + common_vars->txData[i] = malloc16_clear((fp->samples_per_frame) * sizeof(c16_t)); } // init RX buffers - common_vars->rxdata = (c16_t **)malloc16( fp->nb_antennas_rx*sizeof(c16_t *)); - common_vars->rxdataF = (c16_t **)malloc16( fp->nb_antennas_rx*sizeof(c16_t *)); + common_vars->rxdata = malloc16(fp->nb_antennas_rx * sizeof(c16_t *)); + common_vars->rxdataF = malloc16(fp->nb_antennas_rx * sizeof(c16_t *)); for (i=0; i<fp->nb_antennas_rx; i++) { - common_vars->rxdata[i] = (c16_t *)malloc16_clear((2 * (fp->samples_per_frame)+fp->ofdm_symbol_size) * sizeof(c16_t)); - common_vars->rxdataF[i] = (c16_t *)malloc16_clear((2 * (fp->samples_per_frame)+fp->ofdm_symbol_size) * sizeof(c16_t)); + common_vars->rxdata[i] = malloc16_clear((2 * (fp->samples_per_frame) + fp->ofdm_symbol_size) * sizeof(c16_t)); + common_vars->rxdataF[i] = malloc16_clear((2 * (fp->samples_per_frame) + fp->ofdm_symbol_size) * sizeof(c16_t)); } // ceil(((NB_RB<<1)*3)/32) // 3 RE *2(QPSK) int pdcch_dmrs_init_length = (((fp->N_RB_DL<<1)*3)>>5)+1; //PDCCH DMRS init (gNB offset = 0) - ue->nr_gold_pdcch[0] = (uint32_t ***)malloc16(fp->slots_per_frame*sizeof(uint32_t **)); + ue->nr_gold_pdcch[0] = malloc16(fp->slots_per_frame * sizeof(uint32_t **)); uint32_t ***pdcch_dmrs = ue->nr_gold_pdcch[0]; AssertFatal(pdcch_dmrs!=NULL, "NR init: pdcch_dmrs malloc failed\n"); for (int slot=0; slot<fp->slots_per_frame; slot++) { - pdcch_dmrs[slot] = (uint32_t **)malloc16(fp->symbols_per_slot*sizeof(uint32_t *)); + pdcch_dmrs[slot] = malloc16(fp->symbols_per_slot * sizeof(uint32_t *)); AssertFatal(pdcch_dmrs[slot]!=NULL, "NR init: pdcch_dmrs for slot %d - malloc failed\n", slot); for (int symb=0; symb<fp->symbols_per_slot; symb++) { - pdcch_dmrs[slot][symb] = (uint32_t *)malloc16(pdcch_dmrs_init_length*sizeof(uint32_t)); + pdcch_dmrs[slot][symb] = malloc16(pdcch_dmrs_init_length * sizeof(uint32_t)); AssertFatal(pdcch_dmrs[slot][symb]!=NULL, "NR init: pdcch_dmrs for slot %d symbol %d - malloc failed\n", slot, symb); } } @@ -329,19 +327,19 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) int pdsch_dmrs_init_length = ((fp->N_RB_DL*12)>>5)+1; //PDSCH DMRS init (eNB offset = 0) - ue->nr_gold_pdsch[0] = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***)); + ue->nr_gold_pdsch[0] = malloc16(fp->slots_per_frame * sizeof(uint32_t ***)); uint32_t ****pdsch_dmrs = ue->nr_gold_pdsch[0]; for (int slot=0; slot<fp->slots_per_frame; slot++) { - pdsch_dmrs[slot] = (uint32_t ***)malloc16(fp->symbols_per_slot*sizeof(uint32_t **)); + pdsch_dmrs[slot] = malloc16(fp->symbols_per_slot * sizeof(uint32_t **)); AssertFatal(pdsch_dmrs[slot]!=NULL, "NR init: pdsch_dmrs for slot %d - malloc failed\n", slot); for (int symb=0; symb<fp->symbols_per_slot; symb++) { - pdsch_dmrs[slot][symb] = (uint32_t **)malloc16(NR_NB_NSCID*sizeof(uint32_t *)); + pdsch_dmrs[slot][symb] = malloc16(NR_NB_NSCID * sizeof(uint32_t *)); AssertFatal(pdsch_dmrs[slot][symb]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d - malloc failed\n", slot, symb); for (int q=0; q<NR_NB_NSCID; q++) { - pdsch_dmrs[slot][symb][q] = (uint32_t *)malloc16(pdsch_dmrs_init_length*sizeof(uint32_t)); + pdsch_dmrs[slot][symb][q] = malloc16(pdsch_dmrs_init_length * sizeof(uint32_t)); AssertFatal(pdsch_dmrs[slot][symb][q]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d nscid %d - malloc failed\n", slot, symb, q); } } @@ -349,10 +347,10 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) // DLSCH for (gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++) { - prach_vars[gNB_id] = (NR_UE_PRACH *)malloc16_clear(sizeof(NR_UE_PRACH)); - csiim_vars[gNB_id] = (NR_UE_CSI_IM *)malloc16_clear(sizeof(NR_UE_CSI_IM)); - csirs_vars[gNB_id] = (NR_UE_CSI_RS *)malloc16_clear(sizeof(NR_UE_CSI_RS)); - srs_vars[gNB_id] = (NR_UE_SRS *)malloc16_clear(sizeof(NR_UE_SRS)); + prach_vars[gNB_id] = malloc16_clear(sizeof(NR_UE_PRACH)); + csiim_vars[gNB_id] = malloc16_clear(sizeof(NR_UE_CSI_IM)); + csirs_vars[gNB_id] = malloc16_clear(sizeof(NR_UE_CSI_RS)); + srs_vars[gNB_id] = malloc16_clear(sizeof(NR_UE_SRS)); csiim_vars[gNB_id]->active = false; csirs_vars[gNB_id]->active = false; @@ -360,24 +358,23 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) // ceil((NB_RB*8(max allocation per RB)*2(QPSK))/32) int csi_dmrs_init_length = ((fp->N_RB_DL<<4)>>5)+1; - ue->nr_csi_info = (nr_csi_info_t *)malloc16_clear(sizeof(nr_csi_info_t)); - ue->nr_csi_info->nr_gold_csi_rs = (uint32_t ***)malloc16(fp->slots_per_frame * sizeof(uint32_t **)); + ue->nr_csi_info = malloc16_clear(sizeof(nr_csi_info_t)); + ue->nr_csi_info->nr_gold_csi_rs = malloc16(fp->slots_per_frame * sizeof(uint32_t **)); AssertFatal(ue->nr_csi_info->nr_gold_csi_rs != NULL, "NR init: csi reference signal malloc failed\n"); for (int slot=0; slot<fp->slots_per_frame; slot++) { - ue->nr_csi_info->nr_gold_csi_rs[slot] = (uint32_t **)malloc16(fp->symbols_per_slot * sizeof(uint32_t *)); + ue->nr_csi_info->nr_gold_csi_rs[slot] = malloc16(fp->symbols_per_slot * sizeof(uint32_t *)); AssertFatal(ue->nr_csi_info->nr_gold_csi_rs[slot] != NULL, "NR init: csi reference signal for slot %d - malloc failed\n", slot); for (int symb=0; symb<fp->symbols_per_slot; symb++) { - ue->nr_csi_info->nr_gold_csi_rs[slot][symb] = (uint32_t *)malloc16(csi_dmrs_init_length * sizeof(uint32_t)); + ue->nr_csi_info->nr_gold_csi_rs[slot][symb] = malloc16(csi_dmrs_init_length * sizeof(uint32_t)); AssertFatal(ue->nr_csi_info->nr_gold_csi_rs[slot][symb] != NULL, "NR init: csi reference signal for slot %d symbol %d - malloc failed\n", slot, symb); } } - ue->nr_csi_info->csi_rs_generated_signal = (int32_t **)malloc16(NR_MAX_NB_PORTS * sizeof(int32_t *) ); + ue->nr_csi_info->csi_rs_generated_signal = malloc16(NR_MAX_NB_PORTS * sizeof(int32_t *)); for (i=0; i<NR_MAX_NB_PORTS; i++) { - ue->nr_csi_info->csi_rs_generated_signal[i] = (int32_t *) malloc16_clear(fp->samples_per_frame_wCP * sizeof(int32_t)); + ue->nr_csi_info->csi_rs_generated_signal[i] = malloc16_clear(fp->samples_per_frame_wCP * sizeof(int32_t)); } - ue->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t)); - + ue->nr_srs_info = malloc16_clear(sizeof(nr_srs_info_t)); } ue->init_averaging = 1; @@ -411,12 +408,10 @@ void term_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) NR_UE_COMMON* common_vars = &ue->common_vars; for (int i = 0; i < fp->nb_antennas_tx; i++) { - free_and_zero(common_vars->txdata[i]); - free_and_zero(common_vars->txdataF[i]); + free_and_zero(common_vars->txData[i]); } - free_and_zero(common_vars->txdata); - free_and_zero(common_vars->txdataF); + free_and_zero(common_vars->txData); for (int i = 0; i < fp->nb_antennas_rx; i++) { free_and_zero(common_vars->rxdata[i]); diff --git a/openair1/PHY/INIT/nr_parms.c b/openair1/PHY/INIT/nr_parms.c index c444440451e..ca28d94ae19 100644 --- a/openair1/PHY/INIT/nr_parms.c +++ b/openair1/PHY/INIT/nr_parms.c @@ -173,7 +173,7 @@ void set_scs_parameters (NR_DL_FRAME_PARMS *fp, int mu, int N_RB_DL) N_RB_DL,fp->first_carrier_offset,fp->nb_prefix_samples,fp->nb_prefix_samples0, fp->ofdm_symbol_size); } -uint32_t get_samples_per_slot(int slot, NR_DL_FRAME_PARMS* fp) +uint32_t get_samples_per_slot(int slot, const NR_DL_FRAME_PARMS *fp) { uint32_t samp_count; @@ -185,7 +185,7 @@ uint32_t get_samples_per_slot(int slot, NR_DL_FRAME_PARMS* fp) return samp_count; } -uint32_t get_slot_from_timestamp(openair0_timestamp timestamp_rx, NR_DL_FRAME_PARMS* fp) +uint32_t get_slot_from_timestamp(openair0_timestamp timestamp_rx, const NR_DL_FRAME_PARMS *fp) { uint32_t slot_idx = 0; int samples_till_the_slot = fp->get_samples_per_slot(slot_idx,fp)-1; @@ -198,7 +198,7 @@ uint32_t get_slot_from_timestamp(openair0_timestamp timestamp_rx, NR_DL_FRAME_PA return slot_idx; } -uint32_t get_samples_slot_timestamp(int slot, NR_DL_FRAME_PARMS* fp, uint8_t sl_ahead) +uint32_t get_samples_slot_timestamp(int slot, const NR_DL_FRAME_PARMS *fp, uint8_t sl_ahead) { uint32_t samp_count = 0; diff --git a/openair1/PHY/MODULATION/modulation_common.h b/openair1/PHY/MODULATION/modulation_common.h index d1546da9b5c..06b595fbe32 100644 --- a/openair1/PHY/MODULATION/modulation_common.h +++ b/openair1/PHY/MODULATION/modulation_common.h @@ -49,7 +49,7 @@ void PHY_ofdm_mod(int *input, void normal_prefix_mod(int32_t *txdataF,int32_t *txdata,uint8_t nsymb,LTE_DL_FRAME_PARMS *frame_parms); -void nr_normal_prefix_mod(c16_t *txdataF, c16_t *txdata, uint8_t nsymb, NR_DL_FRAME_PARMS *frame_parms, uint32_t slot); +void nr_normal_prefix_mod(c16_t *txdataF, c16_t *txdata, uint8_t nsymb, const NR_DL_FRAME_PARMS *frame_parms, uint32_t slot); void do_OFDM_mod(c16_t **txdataF, c16_t **txdata, uint32_t frame,uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms); diff --git a/openair1/PHY/MODULATION/nr_modulation.h b/openair1/PHY/MODULATION/nr_modulation.h index 8c530676cda..be3cc33afc2 100644 --- a/openair1/PHY/MODULATION/nr_modulation.h +++ b/openair1/PHY/MODULATION/nr_modulation.h @@ -108,9 +108,9 @@ int nr_beam_precoding(c16_t **txdataF, int offset ); -void apply_nr_rotation_TX(NR_DL_FRAME_PARMS *fp, +void apply_nr_rotation_TX(const NR_DL_FRAME_PARMS *fp, c16_t *txdataF, - c16_t *symbol_rotation, + const c16_t *symbol_rotation, int slot, int nb_rb, int first_symbol, diff --git a/openair1/PHY/MODULATION/ofdm_mod.c b/openair1/PHY/MODULATION/ofdm_mod.c index 45261b1fdbe..7bd0c9d8393 100644 --- a/openair1/PHY/MODULATION/ofdm_mod.c +++ b/openair1/PHY/MODULATION/ofdm_mod.c @@ -64,7 +64,7 @@ void normal_prefix_mod(int32_t *txdataF,int32_t *txdata,uint8_t nsymb,LTE_DL_FRA } -void nr_normal_prefix_mod(c16_t *txdataF, c16_t *txdata, uint8_t nsymb, NR_DL_FRAME_PARMS *frame_parms, uint32_t slot) +void nr_normal_prefix_mod(c16_t *txdataF, c16_t *txdata, uint8_t nsymb, const NR_DL_FRAME_PARMS *frame_parms, uint32_t slot) { // This function works only slot wise. For more generic symbol generation refer nr_feptx0() if (frame_parms->numerology_index != 0) { // case where numerology != 0 @@ -334,9 +334,9 @@ void do_OFDM_mod(c16_t **txdataF, c16_t **txdata, uint32_t frame,uint16_t next_s } -void apply_nr_rotation_TX(NR_DL_FRAME_PARMS *fp, +void apply_nr_rotation_TX(const NR_DL_FRAME_PARMS *fp, c16_t *txdataF, - c16_t *symbol_rotation, + const c16_t *symbol_rotation, int slot, int nb_rb, int first_symbol, @@ -347,7 +347,7 @@ void apply_nr_rotation_TX(NR_DL_FRAME_PARMS *fp, symbol_rotation += symb_offset; for (int sidx = first_symbol; sidx < first_symbol + nsymb; sidx++) { - c16_t *this_rotation = symbol_rotation + sidx; + const c16_t *this_rotation = symbol_rotation + sidx; c16_t *this_symbol = (txdataF) + sidx * fp->ofdm_symbol_size; LOG_D(PHY,"Rotating symbol %d, slot %d, symbol_subframe_index %d (%d,%d)\n", diff --git a/openair1/PHY/NR_REFSIG/sss_nr.h b/openair1/PHY/NR_REFSIG/sss_nr.h index 38d6e728196..7292cc0f022 100644 --- a/openair1/PHY/NR_REFSIG/sss_nr.h +++ b/openair1/PHY/NR_REFSIG/sss_nr.h @@ -75,11 +75,11 @@ void free_context_sss_nr(void); void insert_sss_nr(int16_t *sss_time, NR_DL_FRAME_PARMS *frame_parms); -int rx_sss_nr(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - int32_t *tot_metric, - uint8_t *phase_max, - int *freq_offset_sss, - c16_t rxdataF[][ue->frame_parms.samples_per_slot_wCP]); +bool rx_sss_nr(PHY_VARS_NR_UE *ue, + UE_nr_rxtx_proc_t *proc, + int32_t *tot_metric, + uint8_t *phase_max, + int *freq_offset_sss, + c16_t rxdataF[][ue->frame_parms.samples_per_slot_wCP]); #endif /* SSS_NR_H */ diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach.h b/openair1/PHY/NR_TRANSPORT/nr_prach.h index 8df4ca9609b..ba170e593d0 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach.h +++ b/openair1/PHY/NR_TRANSPORT/nr_prach.h @@ -30,7 +30,7 @@ * \warning */ -extern int16_t nr_ru[2 * 839]; // quantized roots of unity +extern c16_t nr_ru[839]; // quantized roots of unity extern uint16_t nr_du[838]; static const char* const prachfmt[] = {"0", "1", "2", "3", "A1", "A2", "A3", "B1", "B4", "C0", "C2", "A1/B1", "A2/B2", "A3/B3"}; diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach_common.c b/openair1/PHY/NR_TRANSPORT/nr_prach_common.c index 0b32aac8496..5933e84cbbb 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach_common.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prach_common.c @@ -38,7 +38,7 @@ #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "T.h" -int16_t nr_ru[2 * 839]; // quantized roots of unity +c16_t nr_ru[839]; // quantized roots of unity static uint32_t nr_ZC_inv[839]; // multiplicative inverse for roots u uint16_t nr_du[838]; @@ -97,11 +97,8 @@ void nr_fill_du(uint16_t N_ZC, const 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(uint8_t short_sequence, uint8_t num_sequences, uint8_t rootSequenceIndex, c16_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) unsigned int k,inv_u,i; int N_ZC; @@ -147,7 +144,7 @@ void compute_nr_prach_seq(uint8_t short_sequence, for (k=0; k<N_ZC; k++) { // multiply by inverse of 2 (required since ru is exp[j 2\pi n]) - X_u[i][k] = ((uint32_t*)nr_ru)[(((k*(1+(inv_u*k)))%N_ZC)*nr_ZC_inv[2])%N_ZC]; + X_u[i][k] = nr_ru[(((k * (1 + (inv_u * k))) % N_ZC) * nr_ZC_inv[2]) % N_ZC]; } } @@ -181,12 +178,12 @@ void init_nr_prach_tables(int N_ZC) // Compute quantized roots of unity for (i=0; i<N_ZC; i++) { - nr_ru[i<<1] = (int16_t)(floor(32767.0*cos(2*M_PI*(double)i/N_ZC))); - nr_ru[1+(i<<1)] = (int16_t)(floor(32767.0*sin(2*M_PI*(double)i/N_ZC))); + nr_ru[i].r = (int16_t)(floor(32767.0 * cos(2 * M_PI * (double)i / N_ZC))); + nr_ru[i].i = (int16_t)(floor(32767.0 * sin(2 * M_PI * (double)i / N_ZC))); #ifdef PRACH_DEBUG if (i<16) - printf("i %d : runity %d,%d\n",i,nr_ru[i<<1],nr_ru[1+(i<<1)]); + printf("i %d : runity %d,%d\n", i, nr_ru[i].r, nr_ru[i].i); #endif } diff --git a/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h b/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h index 1174173202f..5437e2e8152 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h +++ b/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h @@ -59,10 +59,7 @@ uint32_t nr_get_G(uint16_t nb_rb, uint16_t nb_symb_sch, uint8_t nb_re_dmrs, uint uint32_t nr_get_E(uint32_t G, uint8_t C, uint8_t Qm, uint8_t Nl, uint8_t r); -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(uint8_t short_sequence, uint8_t num_sequences, uint8_t rootSequenceIndex, c16_t X_u[64][839]); void nr_fill_du(uint16_t N_ZC, const uint16_t *prach_root_sequence_map); diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c index 74e5f4ce300..baf06648ae7 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c @@ -889,7 +889,8 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue, break; } } - if (dci_found==1) continue; + if (dci_found == 1) + continue; int dci_length = rel15->dci_length_options[k]; uint64_t dci_estimation[2]= {0}; @@ -923,8 +924,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue, if (mb > (ue->dci_thres+30)) { LOG_W(PHY,"DCI false positive. Dropping DCI index %d. Mismatched bits: %d/%d. Current DCI threshold: %d\n",j,mb,L*108,ue->dci_thres); continue; - } - else { + } else { dci_ind->SFN = proc->frame_rx; dci_ind->slot = proc->nr_slot_rx; dci_ind->dci_list[dci_ind->number_of_dcis].rnti = n_rnti; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c index 942c6befdf2..0b63af4af72 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c @@ -515,15 +515,14 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, stop_meas(&ue->generic_stat_bis[slot]); } if (cpumeas(CPUMEAS_GETSTATE)) - LOG_D(PHY, - "[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f \n", - frame, - nr_slot_rx, - slot, - symbol, - *log2_maxh, - proc->channel_level, - ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0)); + LOG_D(PHY, + "[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d Channel Comp %5.2f \n", + frame, + nr_slot_rx, + slot, + symbol, + *log2_maxh, + ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0)); start_meas(&ue->generic_stat_bis[slot]); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c index 5a475b84aea..6a11ab86e6c 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c @@ -208,8 +208,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, int32_t sync_pos, sync_pos_frame; // k_ssb, N_ssb_crb, sync_pos2, int32_t metric_tdd_ncp=0; uint8_t phase_tdd_ncp; - double im, re; - int is; + int frame_id; NR_DL_FRAME_PARMS *fp = &ue->frame_parms; int ret=-1; @@ -244,14 +243,13 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, // initial sync performed on two successive frames, if pbch passes on first frame, no need to process second frame // only one frame is used for symulation tools - for(is=0; is<n_frames;is++) { + for (frame_id = 0; frame_id < n_frames; frame_id++) { + /* process pss search on received buffer */ + sync_pos = pss_synchro_nr(ue, frame_id, NO_RATE_CHANGE); + if (sync_pos < fp->nb_prefix_samples) + continue; - /* process pss search on received buffer */ - sync_pos = pss_synchro_nr(ue, is, NO_RATE_CHANGE); - if (sync_pos < fp->nb_prefix_samples) - continue; - - ue->ssb_offset = sync_pos - fp->nb_prefix_samples; + ue->ssb_offset = sync_pos - fp->nb_prefix_samples; #ifdef DEBUG_INITIAL_SYNCH LOG_I(PHY, "[UE%d] Initial sync : Estimated PSS position %d, Nid2 %d\n", ue->Mod_id, sync_pos, ue->common_vars.nid2); @@ -269,23 +267,17 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, // In SA we need to perform frequency offset correction until the end of buffer because we need to decode SIB1 // and we do not know yet in which slot it goes. - // start for offset correction - int start = is*fp->samples_per_frame; - - // loop over samples - int end = start + fp->samples_per_frame; - - for(int n=start; n<end; n++){ + for (int n = frame_id * fp->samples_per_frame; n < (frame_id + 1) * fp->samples_per_frame; n++) { for (int ar=0; ar<fp->nb_antennas_rx; ar++) { - re = ((double)(((short *)ue->common_vars.rxdata[ar]))[2*n]); - im = ((double)(((short *)ue->common_vars.rxdata[ar]))[2*n+1]); - ((short *)ue->common_vars.rxdata[ar])[2*n] = (short)(round(re*cos(n*off_angle) - im*sin(n*off_angle))); - ((short *)ue->common_vars.rxdata[ar])[2*n+1] = (short)(round(re*sin(n*off_angle) + im*cos(n*off_angle))); + const double re = ue->common_vars.rxdata[ar][n].r; + const double im = ue->common_vars.rxdata[ar][n].i; + ue->common_vars.rxdata[ar][n].r = (short)(round(re * cos(n * off_angle) - im * sin(n * off_angle))); + ue->common_vars.rxdata[ar][n].i = (short)(round(re * sin(n * off_angle) + im * cos(n * off_angle))); } } } - /* slop_fep function works for lte and takes into account begining of frame with prefix for subframe 0 */ + /* slot_fep function works for lte and takes into account begining of frame with prefix for subframe 0 */ /* for NR this is not the case but slot_fep is still used for computing FFT of samples */ /* in order to achieve correct processing for NR prefix samples is forced to 0 and then restored after function call */ /* symbol number are from beginning of SS/PBCH blocks as below: */ @@ -295,21 +287,15 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, /* rxdataF stores SS/PBCH from beginning of buffers in the same symbol order as in time domain */ for (int i = 0; i < NR_N_SYMBOLS_SSB; i++) - nr_slot_fep_init_sync(ue, - proc, - i, - is * fp->samples_per_frame + ue->ssb_offset, - false, - rxdataF, - link_type_dl); + nr_slot_fep_init_sync(ue, proc, i, frame_id * fp->samples_per_frame + ue->ssb_offset, false, rxdataF, link_type_dl); #ifdef DEBUG_INITIAL_SYNCH LOG_I(PHY,"Calling sss detection (normal CP)\n"); #endif int freq_offset_sss = 0; - ret = rx_sss_nr(ue, proc, &metric_tdd_ncp, &phase_tdd_ncp, &freq_offset_sss, rxdataF); - + bool ret_sss = rx_sss_nr(ue, proc, &metric_tdd_ncp, &phase_tdd_ncp, &freq_offset_sss, rxdataF); + ret = !ret_sss; // digital compensation of FFO for SSB symbols if (ue->UE_fo_compensation){ double s_time = 1/(1.0e3*fp->samples_per_subframe); // sampling time @@ -317,19 +303,12 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, // In SA we need to perform frequency offset correction until the end of buffer because we need to decode SIB1 // and we do not know yet in which slot it goes. - - // start for offset correction - int start = is*fp->samples_per_frame; - - // loop over samples - int end = start + fp->samples_per_frame; - - for(int n=start; n<end; n++){ + for (int n = frame_id * fp->samples_per_frame; n < (frame_id + 1) * fp->samples_per_frame; n++) { for (int ar=0; ar<fp->nb_antennas_rx; ar++) { - re = ((double)(((short *)ue->common_vars.rxdata[ar]))[2*n]); - im = ((double)(((short *)ue->common_vars.rxdata[ar]))[2*n+1]); - ((short *)ue->common_vars.rxdata[ar])[2*n] = (short)(round(re*cos(n*off_angle) - im*sin(n*off_angle))); - ((short *)ue->common_vars.rxdata[ar])[2*n+1] = (short)(round(re*sin(n*off_angle) + im*cos(n*off_angle))); + const double re = ue->common_vars.rxdata[ar][n].r; + const double im = ue->common_vars.rxdata[ar][n].i; + ue->common_vars.rxdata[ar][n].r = (short)(round(re * cos(n * off_angle) - im * sin(n * off_angle))); + ue->common_vars.rxdata[ar][n].i = (short)(round(re * sin(n * off_angle) + im * cos(n * off_angle))); } } @@ -351,7 +330,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, int n_symb_prefix0 = (ue->symbol_offset/(7*(1<<mu)))+1; sync_pos_frame = n_symb_prefix0*(fp->ofdm_symbol_size + fp->nb_prefix_samples0)+(ue->symbol_offset-n_symb_prefix0)*(fp->ofdm_symbol_size + fp->nb_prefix_samples); // for a correct computation of frame number to sync with the one decoded at MIB we need to take into account in which of the n_frames we got sync - ue->init_sync_frame = n_frames - 1 - is; + ue->init_sync_frame = n_frames - 1 - frame_id; // compute the scramblingID_pdcch and the gold pdcch ue->scramblingID_pdcch = fp->Nid_cell; @@ -409,7 +388,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, #endif } if (ret == 0) break; - } + } } else { ret = -1; @@ -533,7 +512,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, nr_slot_fep_init_sync(ue, proc, l, // the UE PHY has no notion of the symbols to be monitored in the search space - is*fp->samples_per_frame+phy_pdcch_config->sfn*fp->samples_per_frame+ue->rx_offset, + frame_id * fp->samples_per_frame + phy_pdcch_config->sfn * fp->samples_per_frame + ue->rx_offset, true, rxdataF, link_type_dl); @@ -560,7 +539,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, nr_slot_fep_init_sync(ue, proc, m, - is*fp->samples_per_frame+phy_pdcch_config->sfn*fp->samples_per_frame+ue->rx_offset, + frame_id * fp->samples_per_frame + phy_pdcch_config->sfn * fp->samples_per_frame + ue->rx_offset, true, rxdataF, link_type_dl); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c index 6ec4c3d4f2a..3ba71ed3ea9 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c @@ -62,20 +62,18 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t uint16_t rootSequenceIndex, prach_fmt_id, NCS, preamble_offset = 0; const uint16_t *prach_root_sequence_map; uint16_t preamble_shift = 0, preamble_index0, n_shift_ra, n_shift_ra_bar, d_start=INT16_MAX, numshift, N_ZC, u, offset, offset2, first_nonzero_root_idx; - int16_t prach_tmp[(4688+4*24576)*4*2] __attribute__((aligned(32))) = {0}; + c16_t prach[(4688 + 4 * 24576) * 2] __attribute__((aligned(32))) = {0}; int16_t prachF_tmp[(4688+4*24576)*4*2] __attribute__((aligned(32))) = {0}; - int16_t Ncp = 0, amp, *prach, *prach2, *prachF, *Xu; - int32_t Xu_re, Xu_im; + int16_t Ncp = 0; int prach_start, prach_sequence_length, i, prach_len, dftlen, mu, kbar, K, n_ra_prb, k, prachStartSymbol, sample_offset_slot; fd_occasion = 0; prach_len = 0; dftlen = 0; - first_nonzero_root_idx = 0; - prach = prach_tmp; - amp = ue->prach_vars[gNB_id]->amp; - prachF = prachF_tmp; + first_nonzero_root_idx = 0; + int16_t amp = ue->prach_vars[gNB_id]->amp; + int16_t *prachF = prachF_tmp; Mod_id = ue->Mod_id; prach_sequence_length = nrUE_config->prach_config.prach_sequence_length; N_ZC = (prach_sequence_length == 0) ? 839:139; @@ -390,9 +388,9 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t * *********************************************************/ - Xu = (int16_t*)ue->X_u[preamble_offset-first_nonzero_root_idx]; + c16_t *Xu = ue->X_u[preamble_offset - first_nonzero_root_idx]; - #if defined (PRACH_WRITE_OUTPUT_DEBUG) +#if defined (PRACH_WRITE_OUTPUT_DEBUG) LOG_M("X_u.m", "X_u", (int16_t*)ue->X_u[preamble_offset-first_nonzero_root_idx], N_ZC, 1, 1); #endif @@ -400,11 +398,10 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t if (offset2 >= N_ZC) offset2 -= N_ZC; - - Xu_re = (((int32_t)Xu[offset<<1]*amp)>>15); - Xu_im = (((int32_t)Xu[1+(offset<<1)]*amp)>>15); - prachF[k++]= ((Xu_re*nr_ru[offset2<<1]) - (Xu_im*nr_ru[1+(offset2<<1)]))>>15; - prachF[k++]= ((Xu_im*nr_ru[offset2<<1]) + (Xu_re*nr_ru[1+(offset2<<1)]))>>15; + const int32_t Xu_re = (Xu[offset].r * amp) >> 15; + const int32_t Xu_im = (Xu[offset].i * amp) >> 15; + prachF[k++] = (Xu_re * nr_ru[offset2].r - Xu_im * nr_ru[offset2].i) >> 15; + prachF[k++] = (Xu_im * nr_ru[offset2].r + Xu_re * nr_ru[offset2].i) >> 15; if (k==dftlen) k=0; } @@ -415,78 +412,78 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t #endif // This is after cyclic prefix - prach2 = prach+(2*Ncp); // times 2 for complex samples - const idft_size_idx_t idft_size = get_idft(dftlen); - idft(idft_size, prachF, prach, 1); - memmove(prach2, prach, (dftlen<<2)); - - if (prach_sequence_length == 0) { - if (prach_fmt_id == 0) { - // here we have | empty | Prach | - memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); - // here we have | Prefix | Prach | - prach_len = dftlen+Ncp; - } else if (prach_fmt_id == 1) { - // here we have | empty | Prach | empty | - memcpy(prach2+(dftlen<<1), prach2, (dftlen<<2)); - // here we have | empty | Prach | Prach | - memcpy(prach, prach+(dftlen<<2), (Ncp<<2)); - // here we have | Prefix | Prach | Prach | - prach_len = (dftlen*2)+Ncp; - } else if (prach_fmt_id == 2 || prach_fmt_id == 3) { - // here we have | empty | Prach | empty | empty | empty | - memcpy(prach2+(dftlen<<1), prach2, (dftlen<<2)); - // here we have | empty | Prach | Prach | empty | empty | - memcpy(prach2+(dftlen<<2), prach2, (dftlen<<3)); - // here we have | empty | Prach | Prach | Prach | Prach | - memcpy(prach, prach+(dftlen<<3), (Ncp<<2)); - // here we have | Prefix | Prach | Prach | Prach | Prach | - prach_len = (dftlen*4)+Ncp; - } + c16_t *prach2 = prach + Ncp; + const idft_size_idx_t idft_size = get_idft(dftlen); + idft(idft_size, prachF, (int16_t *)prach, 1); + memmove(prach2, prach, (dftlen << 2)); + + if (prach_sequence_length == 0) { + if (prach_fmt_id == 0) { + // here we have | empty | Prach | + memcpy(prach, prach + dftlen, (Ncp << 2)); + // here we have | Prefix | Prach | + prach_len = dftlen + Ncp; + } else if (prach_fmt_id == 1) { + // here we have | empty | Prach | empty | + memcpy(prach2 + dftlen, prach2, (dftlen << 2)); + // here we have | empty | Prach | Prach | + memcpy(prach, prach + dftlen * 2, (Ncp << 2)); + // here we have | Prefix | Prach | Prach | + prach_len = (dftlen * 2) + Ncp; + } else if (prach_fmt_id == 2 || prach_fmt_id == 3) { + // here we have | empty | Prach | empty | empty | empty | + memcpy(prach2 + dftlen, prach2, (dftlen << 2)); + // here we have | empty | Prach | Prach | empty | empty | + memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); + // here we have | empty | Prach | Prach | Prach | Prach | + memcpy(prach, prach + dftlen * 4, (Ncp << 2)); + // here we have | Prefix | Prach | Prach | Prach | Prach | + prach_len = (dftlen * 4) + Ncp; + } } else { // short PRACH sequence if (prach_fmt_id == 9) { // here we have | empty | Prach | - memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); + memcpy(prach, prach + dftlen, (Ncp << 2)); // here we have | Prefix | Prach | prach_len = (dftlen*1)+Ncp; } else if (prach_fmt_id == 4 || prach_fmt_id == 7) { // here we have | empty | Prach | empty | - memcpy(prach2+(dftlen<<1), prach2, (dftlen<<2)); + memcpy(prach2 + dftlen, prach2, (dftlen << 2)); // here we have | empty | Prach | Prach | memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); // here we have | Prefix | Prach | Prach | prach_len = (dftlen*2)+Ncp; } else if (prach_fmt_id == 5 || prach_fmt_id == 10) { // 4xdftlen // here we have | empty | Prach | empty | empty | empty | - memcpy(prach2+(dftlen<<1), prach2, (dftlen<<2)); + memcpy(prach2 + dftlen, prach2, (dftlen << 2)); // here we have | empty | Prach | Prach | empty | empty | - memcpy(prach2+(dftlen<<2), prach2, (dftlen<<3)); + memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); // here we have | empty | Prach | Prach | Prach | Prach | - memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); + memcpy(prach, prach + dftlen, (Ncp << 2)); // here we have | Prefix | Prach | Prach | Prach | Prach | prach_len = (dftlen*4)+Ncp; } else if (prach_fmt_id == 6) { // 6xdftlen // here we have | empty | Prach | empty | empty | empty | empty | empty | - memcpy(prach2+(dftlen<<1), prach2, (dftlen<<2)); + memcpy(prach2 + dftlen, prach2, (dftlen << 2)); // here we have | empty | Prach | Prach | empty | empty | empty | empty | - memcpy(prach2+(dftlen<<2), prach2, (dftlen<<3)); + memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); // here we have | empty | Prach | Prach | Prach | Prach | empty | empty | - memcpy(prach2+(dftlen<<3), prach2, (dftlen<<3)); + memcpy(prach2 + dftlen * 4, prach2, (dftlen << 3)); // here we have | empty | Prach | Prach | Prach | Prach | Prach | Prach | - memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); + memcpy(prach, prach + dftlen, (Ncp << 2)); // here we have | Prefix | Prach | Prach | Prach | Prach | Prach | Prach | prach_len = (dftlen*6)+Ncp; } else if (prach_fmt_id == 8) { // 12xdftlen // here we have | empty | Prach | empty | empty | empty | empty | empty | empty | empty | empty | empty | empty | empty | - memcpy(prach2+(dftlen<<1), prach2, (dftlen<<2)); + memcpy(prach2 + dftlen, prach2, (dftlen << 2)); // here we have | empty | Prach | Prach | empty | empty | empty | empty | empty | empty | empty | empty | empty | empty | - memcpy(prach2+(dftlen<<2), prach2, (dftlen<<3)); + memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); // here we have | empty | Prach | Prach | Prach | Prach | empty | empty | empty | empty | empty | empty | empty | empty | - memcpy(prach2+(dftlen<<3), prach2, (dftlen<<3)); + memcpy(prach2 + dftlen * 4, prach2, (dftlen << 3)); // here we have | empty | Prach | Prach | Prach | Prach | Prach | Prach | empty | empty | empty | empty | empty | empty | - memcpy(prach2+(dftlen<<1)*6, prach2, (dftlen<<2)*6); + memcpy(prach2 + dftlen * 6, prach2, (dftlen << 2) * 6); // here we have | empty | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | - memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); + memcpy(prach, prach + dftlen, (Ncp << 2)); // here we have | Prefix | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | prach_len = (dftlen*12)+Ncp; } @@ -499,18 +496,10 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t prach_len); #endif - for (i=0; i<prach_len; i++) { - ((int16_t*)(&ue->common_vars.txdata[0][prach_start]))[2*i] = prach[2*i]; - ((int16_t*)(&ue->common_vars.txdata[0][prach_start]))[2*i+1] = prach[2*i+1]; - } - - //printf("----------------------\n"); - //for(int ii = prach_start; ii<2*(prach_start + prach_len); ii++){ - // printf("PRACH rx data[%d] = %d\n", ii, ue->common_vars.txdata[0][ii]); - //} - //printf(" \n"); + for (i = 0; i < prach_len; i++) + ue->common_vars.txData[0][prach_start + i] = prach[i]; - #ifdef PRACH_WRITE_OUTPUT_DEBUG +#ifdef PRACH_WRITE_OUTPUT_DEBUG LOG_M("prach_tx0.m", "prachtx0", prach+(Ncp<<1), prach_len-Ncp, 1, 1); LOG_M("Prach_txsig.m","txs",(int16_t*)(&ue->common_vars.txdata[0][prach_start]), 2*(prach_start+prach_len), 1, 1) #endif diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h index cb777c35155..6b40f0f54ca 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h @@ -238,20 +238,21 @@ void nr_pusch_codeword_scrambling(uint8_t *in, */ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, - unsigned char harq_pid, - uint32_t frame, - uint8_t slot, - int gNB_id, - nr_phy_data_tx_t *phy_data); - + const unsigned char harq_pid, + const uint32_t frame, + const uint8_t slot, + const int gNB_id, + nr_phy_data_tx_t *phy_data, + c16_t **txdataF); /** \brief This function does IFFT for PUSCH */ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, - uint8_t slot, - NR_DL_FRAME_PARMS *frame_parms, - uint8_t Nl); + const uint8_t slot, + const NR_DL_FRAME_PARMS *frame_parms, + const uint8_t n_antenna_ports, + c16_t **txdataF); int8_t clean_UE_ulsch(PHY_VARS_NR_UE *UE, uint8_t gNB_id); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index b27b7385239..0d4806f74e9 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -107,12 +107,13 @@ void nr_pusch_codeword_scrambling(uint8_t *in, } void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, - unsigned char harq_pid, - uint32_t frame, - uint8_t slot, - int gNB_id, - nr_phy_data_tx_t *phy_data) { - + const unsigned char harq_pid, + const uint32_t frame, + const uint8_t slot, + const int gNB_id, + nr_phy_data_tx_t *phy_data, + c16_t **txdataF) +{ LOG_D(PHY,"nr_ue_ulsch_procedures hard_id %d %d.%d\n",harq_pid,frame,slot); int8_t Wf[2], Wt[2]; @@ -122,14 +123,13 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, int sample_offsetF, N_RE_prime; NR_DL_FRAME_PARMS *frame_parms = &UE->frame_parms; - c16_t **txdataF = UE->common_vars.txdataF; int N_PRB_oh = 0; // higher layer (RRC) parameter xOverhead in PUSCH-ServingCellConfig uint16_t number_dmrs_symbols = 0; NR_UE_ULSCH_t *ulsch_ue = &phy_data->ulsch; NR_UL_UE_HARQ_t *harq_process_ul_ue = &UE->ul_harq_processes[harq_pid]; - nfapi_nr_ue_pusch_pdu_t *pusch_pdu = &ulsch_ue->pusch_pdu; + const nfapi_nr_ue_pusch_pdu_t *pusch_pdu = &ulsch_ue->pusch_pdu; int start_symbol = pusch_pdu->start_symbol_index; uint16_t ul_dmrs_symb_pos = pusch_pdu->ul_dmrs_symb_pos; @@ -585,30 +585,17 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, /////////// //////////////////////////////////////////////////////////////////////// - } - uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, - uint8_t slot, - NR_DL_FRAME_PARMS *frame_parms, - uint8_t n_antenna_ports) + const uint8_t slot, + const NR_DL_FRAME_PARMS *frame_parms, + const uint8_t n_antenna_ports, + c16_t **txdataF) { - /////////////////////////IFFT/////////////////////// - /////////// - - int tx_offset = frame_parms->get_samples_slot_timestamp(slot, frame_parms, 0); - - // clear the transmit data array for the current subframe - /*for (int aa=0; aa<UE->frame_parms.nb_antennas_tx; aa++) { - memset(&UE->common_vars.txdata[aa][tx_offset],0,UE->frame_parms.samples_per_slot*sizeof(int32_t)); - //memset(&UE->common_vars.txdataF[aa][tx_offset],0,UE->frame_parms.samples_per_slot*sizeof(int32_t)); - }*/ - - - c16_t **txdata = UE->common_vars.txdata; - c16_t **txdataF = UE->common_vars.txdataF; + const int tx_offset = frame_parms->get_samples_slot_timestamp(slot, frame_parms, 0); + c16_t **txdata = UE->common_vars.txData; for(int ap = 0; ap < n_antenna_ports; ap++) { apply_nr_rotation_TX(frame_parms, txdataF[ap], diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c index 818954bc298..23285c3a87c 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c @@ -50,12 +50,12 @@ //#define ONE_OVER_SQRT2 23170 // 32767/sqrt(2) = 23170 (ONE_OVER_SQRT2) -void nr_generate_pucch0(PHY_VARS_NR_UE *ue, +void nr_generate_pucch0(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu) + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu) { #ifdef DEBUG_NR_PUCCH_TX printf("\t [nr_generate_pucch0] start function at slot(nr_slot_tx)=%d\n",nr_slot_tx); @@ -168,12 +168,12 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue, } } -void nr_generate_pucch1(PHY_VARS_NR_UE *ue, +void nr_generate_pucch1(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu) + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu) { uint16_t m0 = pucch_pdu->initial_cyclic_shift; uint64_t payload = pucch_pdu->payload; @@ -652,12 +652,13 @@ static void nr_uci_encoding(uint64_t payload, } //#if 0 -void nr_generate_pucch2(PHY_VARS_NR_UE *ue, +void nr_generate_pucch2(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu) { + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu) +{ #ifdef DEBUG_NR_PUCCH_TX printf("\t [nr_generate_pucch2] start function at slot(nr_slot_tx)=%d with payload=%lu and nr_bit=%d\n",nr_slot_tx, pucch_pdu->payload, pucch_pdu->n_bit); #endif @@ -848,12 +849,13 @@ void nr_generate_pucch2(PHY_VARS_NR_UE *ue, free(btilde); } //#if 0 -void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue, +void nr_generate_pucch3_4(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu) { + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu) +{ #ifdef DEBUG_NR_PUCCH_TX printf("\t [nr_generate_pucch3_4] start function at slot(nr_slot_tx)=%d with payload=%lu and nr_bit=%d\n", nr_slot_tx, pucch_pdu->payload, pucch_pdu->n_bit); #endif @@ -1317,4 +1319,3 @@ void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue, free(z_im); free(btilde); } - diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h index 7eb836505ee..54620f1ba0b 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h +++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h @@ -44,34 +44,33 @@ #include "T.h" #define ONE_OVER_SQRT2 23170 // 32767/sqrt(2) = 23170 (ONE_OVER_SQRT2) - -void nr_generate_pucch0(PHY_VARS_NR_UE *ue, +void nr_generate_pucch0(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu); + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu); -void nr_generate_pucch1(PHY_VARS_NR_UE *ue, +void nr_generate_pucch1(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu); + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu); -void nr_generate_pucch2(PHY_VARS_NR_UE *ue, +void nr_generate_pucch2(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu); + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu); -void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue, +void nr_generate_pucch3_4(const PHY_VARS_NR_UE *ue, c16_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - int16_t amp, - int nr_slot_tx, - fapi_nr_ul_config_pucch_pdu *pucch_pdu); + const NR_DL_FRAME_PARMS *frame_parms, + const int16_t amp, + const int nr_slot_tx, + const fapi_nr_ul_config_pucch_pdu *pucch_pdu); // tables for mcs values for different payloads static const uint8_t table1_mcs[]={0,6,3,9}; diff --git a/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c b/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c index 2cbd2afbd52..a856be768ff 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c @@ -432,7 +432,7 @@ int generate_srs_nr(nfapi_nr_srs_pdu_t *srs_config_pdu, * send srs according to current configuration * *********************************************************************/ -int ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc) +int ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, c16_t **txdataF) { if(!ue->srs_vars[0]->active) { return -1; @@ -471,8 +471,15 @@ int ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc) NR_DL_FRAME_PARMS *frame_parms = &(ue->frame_parms); uint16_t symbol_offset = (frame_parms->symbols_per_slot - 1 - srs_config_pdu->time_start_position)*frame_parms->ofdm_symbol_size; - if (generate_srs_nr(srs_config_pdu, frame_parms, (int32_t **)ue->common_vars.txdataF, symbol_offset, ue->nr_srs_info, - AMP, proc->frame_tx, proc->nr_slot_tx) == 0) { + if (generate_srs_nr(srs_config_pdu, + frame_parms, + (int32_t **)txdataF, + symbol_offset, + ue->nr_srs_info, + AMP, + proc->frame_tx, + proc->nr_slot_tx) + == 0) { return 0; } else { return -1; diff --git a/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.h b/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.h index 803aada84ac..b44914695ef 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.h +++ b/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.h @@ -177,7 +177,7 @@ int is_srs_period_nr(SRS_Resource_t *p_SRS_Resource, @param current gNB_id identifier @returns 0 if srs is transmitted -1 otherwise */ -int ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc); +int ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, c16_t **txdataF); #undef EXTERN #undef INIT_VARIABLES_SRS_MODULATION_NR_H diff --git a/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c index cb8e4f40e93..6df24949a9b 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/sss_nr.c @@ -350,24 +350,23 @@ static int pss_sss_extract_nr(PHY_VARS_NR_UE *phy_vars_ue, } /******************************************************************* -* -* NAME : rx_sss_nr -* -* PARAMETERS : none -* -* RETURN : Set Nid_cell in ue context -* -* DESCRIPTION : Determine element Nid1 of cell identity -* so Nid_cell in ue context is set according to Nid1 & Nid2 -* -*********************************************************************/ - -int rx_sss_nr(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - int32_t *tot_metric, - uint8_t *phase_max, - int *freq_offset_sss, - c16_t rxdataF[][ue->frame_parms.samples_per_slot_wCP]) + * + * NAME : rx_sss_nr + * + * PARAMETERS : none + * + * RETURN : Set Nid_cell in ue context, return true if cell detected + * + * DESCRIPTION : Determine element Nid1 of cell identity + * so Nid_cell in ue context is set according to Nid1 & Nid2 + * + *********************************************************************/ +bool rx_sss_nr(PHY_VARS_NR_UE *ue, + UE_nr_rxtx_proc_t *proc, + int32_t *tot_metric, + uint8_t *phase_max, + int *freq_offset_sss, + c16_t rxdataF[][ue->frame_parms.samples_per_slot_wCP]) { uint8_t i; c16_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR]; @@ -506,13 +505,13 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, //#endif if (Nid1==N_ID_1_NUMBER) - return -1; - + return false; + int re = 0; int im = 0; if (Nid1 == N_ID_1_NUMBER) { LOG_I(PHY,"Failed to detect SSS after PSS\n"); - return -1; + return false; } d = (int16_t *)&d_sss[Nid2][Nid1]; for(i = 0; i<LENGTH_SSS_NR; i++) { @@ -523,8 +522,16 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, *freq_offset_sss = (int)(ffo_sss*frame_parms->subcarrier_spacing); double ffo_pss = ((double)ue->common_vars.freq_offset)/frame_parms->subcarrier_spacing; - LOG_I(NR_PHY, "ffo_pss %f (%i Hz), ffo_sss %f (%i Hz), ffo_pss+ffo_sss %f (%i Hz)\n", - ffo_pss, (int)(ffo_pss*frame_parms->subcarrier_spacing), ffo_sss, *freq_offset_sss, ffo_pss+ffo_sss, (int)((ffo_pss+ffo_sss)*frame_parms->subcarrier_spacing)); - - return(0); + LOG_W(NR_PHY, + "ffo_pss %f (%i Hz), ffo_sss %f (%i Hz), ffo_pss+ffo_sss %f (%i Hz), nid1: %d, nid2: %d\n", + ffo_pss, + (int)(ffo_pss * frame_parms->subcarrier_spacing), + ffo_sss, + *freq_offset_sss, + ffo_pss + ffo_sss, + (int)((ffo_pss + ffo_sss) * frame_parms->subcarrier_spacing), + Nid1, + Nid2); + + return true; } diff --git a/openair1/PHY/TOOLS/cmult_sv.c b/openair1/PHY/TOOLS/cmult_sv.c index e321ba706f2..405f5807142 100644 --- a/openair1/PHY/TOOLS/cmult_sv.c +++ b/openair1/PHY/TOOLS/cmult_sv.c @@ -83,11 +83,7 @@ void multadd_real_vector_complex_scalar(const int16_t *x, const int16_t *alpha, } } -void rotate_cpx_vector(c16_t *x, - c16_t *alpha, - c16_t *y, - uint32_t N, - uint16_t output_shift) +void rotate_cpx_vector(const c16_t *const x, const c16_t *const alpha, c16_t *y, uint32_t N, uint16_t output_shift) { // multiply a complex vector with a complex value (alpha) // stores result in y @@ -98,12 +94,41 @@ void rotate_cpx_vector(c16_t *x, // output is 32 bytes aligned, but not the input const c16_t for_re={alpha->r, -alpha->i}; - __m256i const alpha_for_real = simde_mm256_set1_epi32(*(uint32_t*)&for_re); + const __m256i alpha_for_real = simde_mm256_set1_epi32(*(uint32_t *)&for_re); const c16_t for_im={alpha->i, alpha->r}; - __m256i const alpha_for_im= simde_mm256_set1_epi32(*(uint32_t*)&for_im); - __m256i const perm_mask = - simde_mm256_set_epi8(31,30,23,22,29,28,21,20,27,26,19,18,25,24,17,16, - 15,14,7,6,13,12,5,4,11,10,3,2,9,8,1,0); + const __m256i alpha_for_im = simde_mm256_set1_epi32(*(uint32_t *)&for_im); + const __m256i perm_mask = simde_mm256_set_epi8(31, + 30, + 23, + 22, + 29, + 28, + 21, + 20, + 27, + 26, + 19, + 18, + 25, + 24, + 17, + 16, + 15, + 14, + 7, + 6, + 13, + 12, + 5, + 4, + 11, + 10, + 3, + 2, + 9, + 8, + 1, + 0); __m256i* xd= (__m256i*)x; const __m256i *end=xd+N/8; for( __m256i* yd = (__m256i *)y; xd<end ; yd++, xd++) { diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c index 6d3a2473380..bc202590ed1 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.c +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -455,6 +455,9 @@ static void timeSignal (OAIgraph_t *graph, PHY_VARS_gNB *phy_vars_gnb, RU_t *phy static void timeResponse (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { const int len = p->gNB->frame_parms.ofdm_symbol_size; + if (!len) + // gnb not yet initialized, many race conditions in the scope + return; #ifdef WEBSRVSCOPE websrv_scopedata_msg_t *msg = NULL; websrv_nf_getdata(graph->graph, 0, &msg); diff --git a/openair1/PHY/TOOLS/phy_scope_interface.h b/openair1/PHY/TOOLS/phy_scope_interface.h index 19395891ada..d0e3bf7dac7 100644 --- a/openair1/PHY/TOOLS/phy_scope_interface.h +++ b/openair1/PHY/TOOLS/phy_scope_interface.h @@ -34,8 +34,10 @@ #ifdef __cplusplus #include <atomic> +#ifndef _Atomic #define _Atomic(X) std::atomic< X > #endif +#endif #include <openair1/PHY/defs_gNB.h> #include <openair1/PHY/defs_nr_UE.h> diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h index 060b85f94e7..9c5b58f851b 100644 --- a/openair1/PHY/TOOLS/tools_defs.h +++ b/openair1/PHY/TOOLS/tools_defs.h @@ -741,12 +741,7 @@ This function performs componentwise multiplication of a vector with a complex s The function implemented is : \f$\mathbf{y} = \alpha\mathbf{x}\f$ */ -void rotate_cpx_vector(c16_t *x, - c16_t *alpha, - c16_t *y, - uint32_t N, - uint16_t output_shift); - +void rotate_cpx_vector(const c16_t *const x, const c16_t *const alpha, c16_t *y, uint32_t N, uint16_t output_shift); //cadd_sv.c diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h index 4066550d76e..20322a2d737 100644 --- a/openair1/PHY/defs_gNB.h +++ b/openair1/PHY/defs_gNB.h @@ -679,7 +679,7 @@ typedef struct PHY_VARS_gNB_s { uint32_t ****nr_gold_prs; /// PRACH root sequence - uint32_t X_u[64][839]; + c16_t X_u[64][839]; /// OFDM symbol offset divisor for UL uint32_t ofdm_offset_divisor; diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h index d4c5a2da49a..93ff036d4fc 100644 --- a/openair1/PHY/defs_nr_UE.h +++ b/openair1/PHY/defs_nr_UE.h @@ -221,7 +221,7 @@ typedef struct { /// For IFFT_FPGA this points to the same memory as PHY_vars->tx_vars[a].TX_DMA_BUFFER. /// - first index: tx antenna [0..nb_antennas_tx[ /// - second index: sample [0..FRAME_LENGTH_COMPLEX_SAMPLES[ - c16_t **txdata; + c16_t **txData; /// \brief Holds the transmit data in the frequency domain. /// For IFFT_FPGA this points to the same memory as PHY_vars->rx_vars[a].RX_DMA_BUFFER. /// - first index: tx antenna [0..nb_antennas_tx[ @@ -485,8 +485,8 @@ typedef struct { // PRS sequence per gNB, per resource uint32_t *****nr_gold_prs; - - uint32_t X_u[64][839]; + + c16_t X_u[64][839]; // flag to activate PRB based averaging of channel estimates // when off, defaults to frequency domain interpolation @@ -664,6 +664,24 @@ typedef struct { int tx_wait_for_dlsch[NR_MAX_SLOTS_PER_FRAME]; } PHY_VARS_NR_UE; +typedef struct { + openair0_timestamp timestamp_tx; + int gNB_id; + /// NR slot index within frame_tx [0 .. slots_per_frame - 1] to act upon for transmission + int nr_slot_tx; + int rx_slot_type; + /// NR slot index within frame_rx [0 .. slots_per_frame - 1] to act upon for transmission + int nr_slot_rx; + int tx_slot_type; + //#endif + /// frame to act upon for transmission + int frame_tx; + /// frame to act upon for reception + int frame_rx; + int frame_number_4lsb; + int decoded_frame_rx; +} UE_nr_rxtx_proc_t; + typedef struct nr_phy_data_tx_s { NR_UE_ULSCH_t ulsch; NR_UE_PUCCH pucch_vars; diff --git a/openair1/PHY/defs_nr_common.h b/openair1/PHY/defs_nr_common.h index 2b0a07fda78..7e007f8d4ed 100644 --- a/openair1/PHY/defs_nr_common.h +++ b/openair1/PHY/defs_nr_common.h @@ -131,10 +131,10 @@ typedef struct { typedef struct NR_DL_FRAME_PARMS NR_DL_FRAME_PARMS; -typedef uint32_t (*get_samples_per_slot_t)(int slot, NR_DL_FRAME_PARMS* fp); -typedef uint32_t (*get_slot_from_timestamp_t)(openair0_timestamp timestamp_rx, NR_DL_FRAME_PARMS* fp); +typedef uint32_t (*get_samples_per_slot_t)(int slot, const NR_DL_FRAME_PARMS *fp); +typedef uint32_t (*get_slot_from_timestamp_t)(openair0_timestamp timestamp_rx, const NR_DL_FRAME_PARMS *fp); -typedef uint32_t (*get_samples_slot_timestamp_t)(int slot, NR_DL_FRAME_PARMS* fp, uint8_t sl_ahead); +typedef uint32_t (*get_samples_slot_timestamp_t)(int slot, const NR_DL_FRAME_PARMS *fp, uint8_t sl_ahead); struct NR_DL_FRAME_PARMS { /// frequency range diff --git a/openair1/PHY/thread_NR_UE.h b/openair1/PHY/thread_NR_UE.h deleted file mode 100644 index aadb4aaf500..00000000000 --- a/openair1/PHY/thread_NR_UE.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef __thread_NR_UE__ -#define __thread_NR_UE__ -#include <pthread.h> -#include <radio/COMMON/common_lib.h> -/// Context data structure for RX/TX portion of subframe processing -typedef struct { - /// Component Carrier index - uint8_t CC_id; - /// timestamp transmitted to HW - openair0_timestamp timestamp_tx; - //#ifdef UE_NR_PHY_DEMO - int gNB_id; - /// NR slot index within frame_tx [0 .. slots_per_frame - 1] to act upon for transmission - int nr_slot_tx; - int rx_slot_type; - /// NR slot index within frame_rx [0 .. slots_per_frame - 1] to act upon for transmission - int nr_slot_rx; - int tx_slot_type; - //#endif - /// frame to act upon for transmission - int frame_tx; - /// frame to act upon for reception - int frame_rx; - int decoded_frame_rx; - /// internal This variable is protected by ref mutex_fep_slot1. - //int instance_cnt_slot0_dl_processing; - int instance_cnt_slot1_dl_processing; - /// pthread descriptor fep_slot1 thread - //pthread_t pthread_slot0_dl_processing; - pthread_t pthread_slot1_dl_processing; - /// pthread attributes for fep_slot1 processing thread - /// condition variable for UE fep_slot1 thread; - //pthread_cond_t cond_slot0_dl_processing; - pthread_cond_t cond_slot1_dl_processing; - /// mutex for UE synch thread - //pthread_mutex_t mutex_slot0_dl_processing; - pthread_mutex_t mutex_slot1_dl_processing; - //int instance_cnt_slot0_dl_processing; - int instance_cnt_dlsch_td; - /// pthread descriptor fep_slot1 thread - //pthread_t pthread_slot0_dl_processing; - pthread_t pthread_dlsch_td; - /// pthread attributes for fep_slot1 processing thread - /// condition variable for UE fep_slot1 thread; - //pthread_cond_t cond_slot0_dl_processing; - pthread_cond_t cond_dlsch_td; - /// mutex for UE synch thread - uint8_t chan_est_pilot0_slot1_available; - uint8_t chan_est_slot1_available; - uint8_t llr_slot1_available; - uint8_t dci_slot0_available; - uint8_t first_symbol_available; - uint8_t decoder_thread_available; - uint8_t decoder_main_available; - uint8_t decoder_switch; - int num_seg; - uint8_t channel_level; - int eNB_id; - int harq_pid; - int llr8_flag; - /// scheduling parameters for fep_slot1 thread - struct sched_param sched_param_fep_slot1; - - int sub_frame_start; - int sub_frame_step; - uint8_t decoder_thread_available1; - int dci_err_cnt; -} UE_nr_rxtx_proc_t; - -#endif diff --git a/openair1/SCHED_NR_UE/defs.h b/openair1/SCHED_NR_UE/defs.h index 679cb771f97..30da87a3521 100644 --- a/openair1/SCHED_NR_UE/defs.h +++ b/openair1/SCHED_NR_UE/defs.h @@ -96,7 +96,7 @@ typedef struct { @param proc Pointer to RXn-TXnp4 proc information @param eNB_id Local id of eNB on which to act */ -void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, nr_phy_data_tx_t *phy_data); +void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_data_tx_t *phy_data); void send_slot_ind(notifiedFIFO_t *nf, int slot); @@ -117,7 +117,7 @@ void processSlotTX(void *arg); @param @param */ -void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc); +void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc); int8_t nr_find_ue(uint16_t rnti, PHY_VARS_eNB *phy_vars_eNB); diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c index 3b9bb25d754..e2071f059f5 100644 --- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c +++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c @@ -301,13 +301,12 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response return 0; } - -void configure_dlsch(NR_UE_DLSCH_t *dlsch0, - NR_DL_UE_HARQ_t *harq_list, - fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu, - module_id_t module_id, - int rnti) { - +static void configure_dlsch(NR_UE_DLSCH_t *dlsch0, + NR_DL_UE_HARQ_t *harq_list, + fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu, + module_id_t module_id, + int rnti) +{ const uint8_t current_harq_pid = dlsch_config_pdu->harq_process_nbr; dlsch0->active = true; dlsch0->rnti = rnti; @@ -331,7 +330,6 @@ void configure_dlsch(NR_UE_DLSCH_t *dlsch0, } } - void configure_ta_command(PHY_VARS_NR_UE *ue, fapi_nr_ta_command_pdu *ta_command_pdu) { diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index c903df6f6dd..b189099ff0e 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -54,7 +54,6 @@ #include <openair1/PHY/TOOLS/phy_scope_interface.h> //#define DEBUG_PHY_PROC -#define NR_PDCCH_SCHED //#define NR_PDCCH_SCHED_DEBUG //#define NR_PUCCH_SCHED //#define NR_PUCCH_SCHED_DEBUG @@ -264,43 +263,43 @@ void ue_ta_procedures(PHY_VARS_NR_UE *ue, int slot_tx, int frame_tx) } } -void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - nr_phy_data_tx_t *phy_data) { - - int slot_tx = proc->nr_slot_tx; - int frame_tx = proc->frame_tx; - int gNB_id = proc->gNB_id; +void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_data_tx_t *phy_data) +{ + const int slot_tx = proc->nr_slot_tx; + const int frame_tx = proc->frame_tx; + const int gNB_id = proc->gNB_id; AssertFatal(ue->CC_id == 0, "Transmission on secondary CCs is not supported yet\n"); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX,VCD_FUNCTION_IN); + const int samplesF_per_slot = NR_SYMBOLS_PER_SLOT * ue->frame_parms.ofdm_symbol_size; + c16_t txdataF_buf[ue->frame_parms.nb_antennas_tx * samplesF_per_slot] __attribute__((aligned(32))); + memset(txdataF_buf, 0, sizeof(txdataF_buf)); + c16_t *txdataF[ue->frame_parms.nb_antennas_tx]; /* workaround to be compatible with current txdataF usage in all tx procedures. */ for(int i=0; i< ue->frame_parms.nb_antennas_tx; ++i) - memset(ue->common_vars.txdataF[i], 0, sizeof(int)*14*ue->frame_parms.ofdm_symbol_size); + txdataF[i] = &txdataF_buf[i * samplesF_per_slot]; LOG_D(PHY,"****** start TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, slot_tx); start_meas(&ue->phy_proc_tx); for (uint8_t harq_pid = 0; harq_pid < NR_MAX_ULSCH_HARQ_PROCESSES; harq_pid++) { - if (ue->ul_harq_processes[harq_pid].status == ACTIVE) - nr_ue_ulsch_procedures(ue, harq_pid, frame_tx, slot_tx, gNB_id, phy_data); + if (ue->ul_harq_processes[harq_pid].status == ACTIVE) { + nr_ue_ulsch_procedures(ue, harq_pid, frame_tx, slot_tx, gNB_id, phy_data, (c16_t **)&txdataF); + } } - ue_srs_procedures_nr(ue, proc); + ue_srs_procedures_nr(ue, proc, (c16_t **)&txdataF); - pucch_procedures_ue_nr(ue, proc, phy_data); + pucch_procedures_ue_nr(ue, proc, phy_data, (c16_t **)&txdataF); LOG_D(PHY, "Sending Uplink data \n"); - nr_ue_pusch_common_procedures(ue, - proc->nr_slot_tx, - &ue->frame_parms, - ue->frame_parms.nb_antennas_tx); + nr_ue_pusch_common_procedures(ue, proc->nr_slot_tx, &ue->frame_parms, ue->frame_parms.nb_antennas_tx, (c16_t **)txdataF); nr_ue_prach_procedures(ue, proc); - LOG_D(PHY,"****** end TX-Chain for AbsSubframe %d.%d ******\n", proc->frame_tx, proc->nr_slot_tx); + LOG_D(PHY, "****** end TX-Chain for AbsSubframe %d.%d ******\n", proc->frame_tx, proc->nr_slot_tx); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT); stop_meas(&ue->phy_proc_tx); @@ -402,37 +401,12 @@ static int nr_ue_pbch_procedures(PHY_VARS_NR_UE *ue, #endif } else { - LOG_E(PHY,"[UE %d] frame %d, nr_slot_rx %d, Error decoding PBCH!\n", - ue->Mod_id,frame_rx, nr_slot_rx); - /*FILE *fd; - if ((fd = fopen("rxsig_frame0.dat","w")) != NULL) { - fwrite((void *)&ue->common_vars.rxdata[0][0], - sizeof(int32_t), - ue->frame_parms.samples_per_frame, - fd); - LOG_I(PHY,"Dummping Frame ... bye bye \n"); - fclose(fd); - exit(0); - }*/ - - /* - write_output("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_subframe,1,1); - - - write_output("H00.m","h00",&(ue->common_vars.dl_ch_estimates[0][0][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1); - write_output("H10.m","h10",&(ue->common_vars.dl_ch_estimates[0][2][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1); - - write_output("rxsigF0.m","rxsF0", ue->common_vars.rxdataF[0],8*ue->frame_parms.ofdm_symbol_size,1,1); - exit(-1); - */ - + LOG_E(PHY, "[UE %d] frame %d, nr_slot_rx %d, Error decoding PBCH!\n", ue->Mod_id, frame_rx, nr_slot_rx); } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_OUT); return ret; } - - unsigned int nr_get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb) { @@ -450,8 +424,6 @@ unsigned int nr_get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb return(0); } -#ifdef NR_PDCCH_SCHED - int nr_ue_pdcch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int32_t pdcch_est_size, @@ -478,7 +450,7 @@ int nr_ue_pdcch_procedures(PHY_VARS_NR_UE *ue, VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN); nr_rx_pdcch(ue, proc, pdcch_est_size, pdcch_dl_ch_estimates, pdcch_e_rx, rel15, rxdataF); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_OUT); - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING, VCD_FUNCTION_IN); @@ -492,9 +464,8 @@ int nr_ue_pdcch_procedures(PHY_VARS_NR_UE *ue, #ifdef NR_PDCCH_SCHED_DEBUG LOG_I(PHY,"<-NR_PDCCH_PHY_PROCEDURES_LTE_UE (nr_ue_pdcch_procedures)-> Ending function nr_dci_decoding_procedure() -> dci_cnt=%u\n",dci_cnt); #endif - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING, VCD_FUNCTION_OUT); - //LOG_D(PHY,"[UE %d][PUSCH] Frame %d nr_slot_rx %d PHICH RX\n",ue->Mod_id,frame_rx,nr_slot_rx); for (int i=0; i<dci_cnt; i++) { LOG_D(PHY,"[UE %d] AbsSubFrame %d.%d: DCI %i of %d total DCIs found --> rnti %x : format %d\n", @@ -512,13 +483,11 @@ int nr_ue_pdcch_procedures(PHY_VARS_NR_UE *ue, // send to mac ue->if_inst->dl_indication(&dl_indication); - stop_meas(&ue->dlsch_rx_pdcch_stats); - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_OUT); return(dci_cnt); } -#endif // NR_PDCCH_SCHED int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, @@ -658,10 +627,12 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, stop_meas(&ue->dlsch_llr_stats_parallelization[slot]); if (cpumeas(CPUMEAS_GETSTATE)) - LOG_D(PHY, "[AbsSFN %d.%d] LLR Computation Symbol %d %5.2f \n",frame_rx,nr_slot_rx,m,ue->dlsch_llr_stats_parallelization[slot].p_time/(cpuf*1000.0)); - if(first_symbol_flag) { - proc->first_symbol_available = 1; - } + LOG_D(PHY, + "[AbsSFN %d.%d] LLR Computation Symbol %d %5.2f \n", + frame_rx, + nr_slot_rx, + m, + ue->dlsch_llr_stats_parallelization[slot].p_time / (cpuf * 1000.0)); } // CRNTI active stop_meas(&ue->rx_pdsch_stats); } @@ -1004,8 +975,6 @@ void pbch_pdcch_processing(PHY_VARS_NR_UE *ue, LOG_I(NR_PHY,"============================================\n"); } -#ifdef NR_PDCCH_SCHED - LOG_D(PHY," ------ --> PDCCH ChannelComp/LLR Frame.slot %d.%d ------ \n", frame_rx%1024, nr_slot_rx); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PDCCH, VCD_FUNCTION_IN); @@ -1058,7 +1027,6 @@ void pdsch_processing(PHY_VARS_NR_UE *ue, int gNB_id = proc->gNB_id; NR_UE_DLSCH_t *dlsch = &phy_data->dlsch[0]; -#endif //NR_PDCCH_SCHED start_meas(&ue->generic_stat); // do procedures for C-RNTI int ret_pdsch = 0; @@ -1199,7 +1167,7 @@ void pdsch_processing(PHY_VARS_NR_UE *ue, stop_meas(&ue->generic_stat); if (cpumeas(CPUMEAS_GETSTATE)) - LOG_D(PHY,"after tubo until end of Rx %5.2f \n",ue->generic_stat.p_time/(cpuf*1000.0)); + LOG_D(PHY, "after ldpc decode until end of Rx %5.2f \n", ue->generic_stat.p_time / (cpuf * 1000.0)); #ifdef EMOS phy_procedures_emos_UE_RX(ue,slot,gNB_id); @@ -1219,8 +1187,8 @@ void pdsch_processing(PHY_VARS_NR_UE *ue, // todo: // - power control as per 38.213 ch 7.4 -void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc) { - +void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc) +{ int gNB_id = proc->gNB_id; int frame_tx = proc->frame_tx, nr_slot_tx = proc->nr_slot_tx, prach_power; // tx_amp uint8_t mod_id = ue->Mod_id; @@ -1228,7 +1196,6 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH, VCD_FUNCTION_IN); if (ue->prach_vars[gNB_id]->active) { - fapi_nr_ul_config_prach_pdu *prach_pdu = &ue->prach_vars[gNB_id]->prach_pdu; ue->tx_power_dBm[nr_slot_tx] = prach_pdu->prach_tx_power; diff --git a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c index 7871b34f321..2023d7dec30 100644 --- a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c +++ b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c @@ -198,18 +198,14 @@ void nr_generate_pucch3_4(int32_t **txdataF, * *********************************************************************/ -void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - nr_phy_data_tx_t *phy_data) { - - int nr_slot_tx = proc->nr_slot_tx; - fapi_nr_ul_config_pucch_pdu *pucch_pdu; +void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_data_tx_t *phy_data, c16_t **txdataF) +{ + const int nr_slot_tx = proc->nr_slot_tx; NR_UE_PUCCH *pucch_vars = &phy_data->pucch_vars; for (int i=0; i<2; i++) { if(pucch_vars->active[i]) { - - pucch_pdu = &pucch_vars->pucch_pdu[i]; + const fapi_nr_ul_config_pucch_pdu *pucch_pdu = &pucch_vars->pucch_pdu[i]; uint16_t nb_of_prbs = pucch_pdu->prb_size; /* Generate PUCCH signal according to its format and parameters */ @@ -238,37 +234,17 @@ void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, switch(pucch_pdu->format_type) { case 0: - nr_generate_pucch0(ue, - ue->common_vars.txdataF, - &ue->frame_parms, - tx_amp, - nr_slot_tx, - pucch_pdu); + nr_generate_pucch0(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu); break; case 1: - nr_generate_pucch1(ue, - ue->common_vars.txdataF, - &ue->frame_parms, - tx_amp, - nr_slot_tx, - pucch_pdu); + nr_generate_pucch1(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu); break; case 2: - nr_generate_pucch2(ue, - ue->common_vars.txdataF, - &ue->frame_parms, - tx_amp, - nr_slot_tx, - pucch_pdu); + nr_generate_pucch2(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu); break; case 3: case 4: - nr_generate_pucch3_4(ue, - ue->common_vars.txdataF, - &ue->frame_parms, - tx_amp, - nr_slot_tx, - pucch_pdu); + nr_generate_pucch3_4(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu); break; } } @@ -276,8 +252,6 @@ void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, } } - - int dummy_csi_status = 0; uint32_t dummy_csi_payload = 0; diff --git a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h index 8bfb692e46f..c3fa990eebd 100644 --- a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h +++ b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h @@ -58,10 +58,7 @@ /*************** FUNCTIONS ****************************************/ -void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - nr_phy_data_tx_t *phy_data); - +void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_data_tx_t *phy_data, c16_t **txdataF); void set_csi_nr(int csi_status, uint32_t csi_payload); diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index daa1b2531cd..8a25a1a1738 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -708,13 +708,11 @@ int main(int argc, char **argv) N_RB_DL,g_mcsTableIdx,0); // TODO do a UECAP for phy-sim - const gNB_RrcConfigurationReq conf = { - .pdsch_AntennaPorts = pdsch_AntennaPorts, - .minRXTXTIME = 6, - .do_CSIRS = 0, - .do_SRS = 0, - .force_256qam_off = false - }; + const gNB_RrcConfigurationReq conf = {.pdsch_AntennaPorts = pdsch_AntennaPorts, + .minRXTXTIME = 6, + .do_CSIRS = 0, + .do_SRS = 0, + .force_256qam_off = false}; NR_CellGroupConfig_t *secondaryCellGroup = get_default_secondaryCellGroup(scc, scd, UE_Capability_nr, 0, 1, &conf, 0); /* RRC parameter validation for secondaryCellGroup */ diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c index 3938eef12de..a39c45b3e6f 100644 --- a/openair1/SIMULATION/NR_PHY/prachsim.c +++ b/openair1/SIMULATION/NR_PHY/prachsim.c @@ -597,7 +597,7 @@ int main(int argc, char **argv){ ue_prach_pdu = &UE->prach_vars[0]->prach_pdu; ue_prach_config = &UE->nrUE_config.prach_config; - txdata = UE->common_vars.txdata; + txdata = UE->common_vars.txData; UE->prach_vars[0]->amp = AMP; ue_prach_pdu->root_seq_id = rootSequenceIndex; diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index 53c691afa38..0c4e2fd83c6 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -634,14 +634,12 @@ int main(int argc, char **argv) N_RB_UL,0,mcs_table); // TODO do a UECAP for phy-sim - const gNB_RrcConfigurationReq conf = { - .pdsch_AntennaPorts = { .N1 = 1, .N2 = 1, .XP = 1 }, - .pusch_AntennaPorts = n_rx, - .minRXTXTIME = 0, - .do_CSIRS = 0, - .do_SRS = 0, - .force_256qam_off = false - }; + const gNB_RrcConfigurationReq conf = {.pdsch_AntennaPorts = {.N1 = 1, .N2 = 1, .XP = 1}, + .pusch_AntennaPorts = n_rx, + .minRXTXTIME = 0, + .do_CSIRS = 0, + .do_SRS = 0, + .force_256qam_off = false}; NR_CellGroupConfig_t *secondaryCellGroup = get_default_secondaryCellGroup(scc, scd, UE_Capability_nr, 0, 1, &conf, 0); @@ -1186,14 +1184,14 @@ int main(int argc, char **argv) phy_procedures_nrUE_TX(UE, &UE_proc, &phy_data); if (n_trials == 1) { - LOG_M("txsig0.m", "txs0", &UE->common_vars.txdata[0][slot_offset], slot_length, 1, 1); + LOG_M("txsig0.m", "txs0", &UE->common_vars.txData[0][slot_offset], slot_length, 1, 1); LOG_M("txsig0F.m", "txs0F", UE->common_vars.txdataF[0], frame_parms->ofdm_symbol_size * 14, 1, 1); if (precod_nbr_layers > 1) { - LOG_M("txsig1.m", "txs1", &UE->common_vars.txdata[1][slot_offset], slot_length, 1, 1); + LOG_M("txsig1.m", "txs1", &UE->common_vars.txData[1][slot_offset], slot_length, 1, 1); LOG_M("txsig1F.m", "txs1F", UE->common_vars.txdataF[1], frame_parms->ofdm_symbol_size * 14, 1, 1); if (precod_nbr_layers == 4) { - LOG_M("txsig2.m", "txs2", &UE->common_vars.txdata[2][slot_offset], slot_length, 1, 1); - LOG_M("txsig3.m", "txs3", &UE->common_vars.txdata[3][slot_offset], slot_length, 1, 1); + LOG_M("txsig2.m", "txs2", &UE->common_vars.txData[2][slot_offset], slot_length, 1, 1); + LOG_M("txsig3.m", "txs3", &UE->common_vars.txData[3][slot_offset], slot_length, 1, 1); LOG_M("txsig2F.m", "txs2F", UE->common_vars.txdataF[2], frame_parms->ofdm_symbol_size * 14, 1, 1); LOG_M("txsig3F.m", "txs3F", UE->common_vars.txdataF[3], frame_parms->ofdm_symbol_size * 14, 1, 1); } @@ -1204,8 +1202,10 @@ int main(int argc, char **argv) tx_offset = frame_parms->get_samples_slot_timestamp(slot, frame_parms, 0); txlev_sum = 0; for (int aa = 0; aa < UE->frame_parms.nb_antennas_tx; aa++) { - atxlev[aa] = signal_energy((int32_t *)&UE->common_vars.txdata[aa][tx_offset + 5 * frame_parms->ofdm_symbol_size + 4 * frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], - frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); + atxlev[aa] = signal_energy( + (int32_t *)&UE->common_vars.txData[aa][tx_offset + 5 * frame_parms->ofdm_symbol_size + + 4 * frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], + frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); txlev_sum += atxlev[aa]; @@ -1226,8 +1226,8 @@ int main(int argc, char **argv) for (i = 0; i < slot_length; i++) { for (int aa = 0; aa < UE->frame_parms.nb_antennas_tx; aa++) { - s_re[aa][i] = ((double)(((short *)&UE->common_vars.txdata[aa][slot_offset]))[(i << 1)]); - s_im[aa][i] = ((double)(((short *)&UE->common_vars.txdata[aa][slot_offset]))[(i << 1) + 1]); + s_re[aa][i] = (double)UE->common_vars.txData[aa][slot_offset + i].r; + s_im[aa][i] = (double)UE->common_vars.txData[aa][slot_offset + i].i; } } diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h index 9eb332109eb..dcce4c19b7c 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h @@ -324,7 +324,6 @@ and fills the PRACH PDU per each FD occasion. @param slotP Slot index @returns void */ -void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP); void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, void *phy_data); void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot); void nr_schedule_csi_for_im(NR_UE_MAC_INST_t *mac, int frame, int slot); diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c index 1c09ec574dc..9820e60107c 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -738,9 +738,7 @@ uint8_t nr_ue_get_rach(module_id_t mod_id, ((NR_MAC_SUBHEADER_FIXED *) pdu)->R = 0; ((NR_MAC_SUBHEADER_FIXED *) pdu)->LCID = UL_SCH_LCID_PADDING; pdu += sizeof(NR_MAC_SUBHEADER_FIXED); - for (int j = 0; j < TBS_max - ra->Msg3_size - sizeof(NR_MAC_SUBHEADER_FIXED); j++) { - pdu[j] = 0; - } + memset(pdu, 0, TBS_max - ra->Msg3_size - sizeof(NR_MAC_SUBHEADER_FIXED)); } // Dumping ULSCH payload diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 81771629f2c..cad9bc0ac3f 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -59,6 +59,7 @@ static prach_association_pattern_t prach_assoc_pattern; static ssb_list_info_t ssb_list; +static void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP); void fill_ul_config(fapi_nr_ul_config_request_t *ul_config, frame_t frame_tx, int slot_tx, uint8_t pdu_type){ @@ -2488,8 +2489,8 @@ void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot) { // PRACH formats 9, 10, 11 are corresponding to dual PRACH format configurations A1/B1, A2/B2, A3/B3. // - todo: // - Partial configuration is actually already stored in (fapi_nr_prach_config_t) &mac->phy_config.config_req->prach_config -void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) { - +static void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) +{ NR_UE_MAC_INST_t *mac = get_mac_inst(module_idP); RA_config_t *ra = &mac->ra; ra->RA_offset = 2; // to compensate the rx frame offset at the gNB diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 4f3becb8f5a..08b3a27cbb7 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -674,6 +674,7 @@ static void fill_dci_from_dl_config(nr_downlink_indication_t*dl_ind, fapi_nr_dl_ } } +// This piece of code is not used in "normal" ue, but in "fapi mode" void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request, nfapi_nr_tx_data_request_t *tx_data_request, nfapi_nr_ul_dci_request_t *ul_dci_request, @@ -734,25 +735,24 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request, nr_ue_dl_scheduler(&mac->dl_info); nr_ue_dl_indication(&mac->dl_info); - if (pthread_mutex_unlock(&mac->mutex_dl_info)) abort(); - - // If we filled dl_info AFTER we got the slot indication, we want to check if we should fill tx_req: - nr_uplink_indication_t ul_info; - memset(&ul_info, 0, sizeof(ul_info)); + if (pthread_mutex_unlock(&mac->mutex_dl_info)) + abort(); int slots_per_frame = 20; //30 kHZ subcarrier spacing int slot_ahead = 2; // TODO: Make this dynamic - ul_info.frame_rx = frame; - ul_info.slot_rx = slot; - ul_info.slot_tx = (slot + slot_ahead) % slots_per_frame; - ul_info.frame_tx = (ul_info.slot_rx + slot_ahead >= slots_per_frame) ? ul_info.frame_rx + 1 : ul_info.frame_rx; + if (mac->scc || mac->scc_SIB) { - if (is_nr_UL_slot(mac->scc ? - mac->scc->tdd_UL_DL_ConfigurationCommon : - mac->scc_SIB->tdd_UL_DL_ConfigurationCommon, - ul_info.slot_tx, - mac->frame_type) && mac->ra.ra_state != RA_SUCCEEDED) { - nr_ue_ul_scheduler(&ul_info); - } + if (is_nr_UL_slot(mac->scc ? mac->scc->tdd_UL_DL_ConfigurationCommon : mac->scc_SIB->tdd_UL_DL_ConfigurationCommon, + (slot + slot_ahead) % slots_per_frame, + mac->frame_type) + && mac->ra.ra_state != RA_SUCCEEDED) { + // If we filled dl_info AFTER we got the slot indication, we want to check if we should fill tx_req: + nr_uplink_indication_t ul_info = { + .frame_rx = frame, + .slot_rx = slot, + .slot_tx = (slot + slot_ahead) % slots_per_frame, + .frame_tx = (ul_info.slot_rx + slot_ahead >= slots_per_frame) ? ul_info.frame_rx + 1 : ul_info.frame_rx}; + nr_ue_ul_scheduler(&ul_info); + } } } @@ -1131,7 +1131,9 @@ int nr_ue_ul_indication(nr_uplink_indication_t *ul_info) LOG_T(NR_MAC, "In %s():%d not calling scheduler mac->ra.ra_state = %d\n", __FUNCTION__, __LINE__, mac->ra.ra_state); - NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon = mac->scc != NULL ? mac->scc->tdd_UL_DL_ConfigurationCommon : mac->scc_SIB->tdd_UL_DL_ConfigurationCommon; + NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon = + mac->scc != NULL ? mac->scc->tdd_UL_DL_ConfigurationCommon + : (mac->scc_SIB ? mac->scc_SIB->tdd_UL_DL_ConfigurationCommon : NULL); if (mac->phy_config_request_sent && is_nr_UL_slot(tdd_UL_DL_ConfigurationCommon, ul_info->slot_tx, mac->frame_type)) nr_ue_ul_scheduler(ul_info); @@ -1227,6 +1229,10 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info) break; case FAPI_NR_RX_PDU_TYPE_RAR: ret_mask |= (handle_dlsch(dl_info, i)) << FAPI_NR_RX_PDU_TYPE_RAR; + if (!dl_info->rx_ind->rx_indication_body[i].pdsch_pdu.ack_nack) + LOG_W(PHY, "Received a RAR-Msg2 but LDPC decode failed\n"); + else + LOG_I(PHY, "RAR-Msg2 decoded\n"); break; case FAPI_NR_CSIRS_IND: ret_mask |= (handle_csirs_measurements(dl_info->module_id, diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h index 534279e2e22..207efc0546a 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h @@ -34,7 +34,6 @@ #define __NR_IF_MODULE_H__ #include "platform_types.h" -#include <openair1/PHY/thread_NR_UE.h> #include <semaphore.h> #include "fapi_nr_ue_interface.h" #include "openair2/PHY_INTERFACE/queue_t.h" diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h b/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h index 340d07fb48c..cff783739e2 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h +++ b/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h @@ -23,7 +23,6 @@ #include <platform_types.h> #include <nfapi_nr_interface_scf.h> -#include <openair1/PHY/thread_NR_UE.h> #include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h" #define NR_NUM_MCS 29 diff --git a/openair2/RRC/NR/rrc_gNB_UE_context.c b/openair2/RRC/NR/rrc_gNB_UE_context.c index b7f7e189ae7..2d2742aa4aa 100644 --- a/openair2/RRC/NR/rrc_gNB_UE_context.c +++ b/openair2/RRC/NR/rrc_gNB_UE_context.c @@ -101,8 +101,8 @@ rrc_gNB_ue_context_t *rrc_gNB_get_ue_context_by_rnti(gNB_RRC_INST *rrc_instance_ void rrc_gNB_free_mem_ue_context(rrc_gNB_ue_context_t *const ue_context_pP) //----------------------------------------------------------------------------- { - free(ue_context_pP); LOG_T(NR_RRC, " Clearing UE context 0x%p (free internal structs)\n", ue_context_pP); + free(ue_context_pP); } //------------------------------------------------------------------------------ -- GitLab