Merge remote-tracking branch 'origin/nb_antennas_rx_hardcode' into integration_2026_w10 (!3946)
UE L1 cleanup Mostly related to remove dependence from NB_ANTENNAS_RX parameter
This commit is contained in:
+1
-1
@@ -726,7 +726,6 @@ void *UE_thread(void *arg)
|
||||
PHY_VARS_NR_UE *UE = (PHY_VARS_NR_UE *)arg;
|
||||
const NR_DL_FRAME_PARMS *fp = &UE->frame_parms;
|
||||
// int tx_enabled = 0;
|
||||
c16_t *rxp[fp->nb_antennas_rx];
|
||||
enum stream_status_e stream_status = STREAM_STATUS_UNSYNC;
|
||||
fapi_nr_config_request_t *cfg = &UE->nrUE_config;
|
||||
sl_nr_phy_config_request_t *sl_cfg = NULL;
|
||||
@@ -780,6 +779,7 @@ void *UE_thread(void *arg)
|
||||
readFrame(UE, &tmp, duration_rx_to_tx, true);
|
||||
}
|
||||
|
||||
c16_t *rxp[fp->nb_antennas_rx];
|
||||
while (!oai_exit) {
|
||||
if (syncRunning) {
|
||||
notifiedFIFO_elt_t *res = pollNotifiedFIFO(&nf);
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
author: Hongzhi WANG (TCL)
|
||||
date: 12.09.2017
|
||||
*/
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
//#include "SCHED/extern.h"
|
||||
|
||||
#include "common/utils/LOG/log.h"
|
||||
#include "openair1/PHY/CODING/coding_defs.h"
|
||||
//#define DEBUG_SEGMENTATION
|
||||
|
||||
int32_t nr_segmentation(unsigned char *input_buffer,
|
||||
@@ -174,8 +174,6 @@ else
|
||||
return Kb;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef MAIN
|
||||
main()
|
||||
{
|
||||
|
||||
@@ -19,12 +19,10 @@
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
#include "PHY/defs_gNB.h"
|
||||
#include "PHY/defs_nr_common.h"
|
||||
#include "modulation_UE.h"
|
||||
#include "nr_modulation.h"
|
||||
#include "PHY/LTE_ESTIMATION/lte_estimation.h"
|
||||
#include "PHY/NR_UE_ESTIMATION/nr_estimation.h"
|
||||
#include "PHY/nr_phy_common/inc/nr_phy_common.h"
|
||||
#include <common/utils/LOG/log.h>
|
||||
|
||||
@@ -33,24 +33,11 @@
|
||||
#ifndef DMRS_NR_H
|
||||
#define DMRS_NR_H
|
||||
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
#include "PHY/types.h"
|
||||
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
|
||||
#include "PHY/NR_REFSIG/pss_nr.h"
|
||||
#include "PHY/NR_REFSIG/sss_nr.h"
|
||||
|
||||
/************** CODE GENERATION ***********************************/
|
||||
|
||||
/************** DEFINE ********************************************/
|
||||
|
||||
|
||||
/************* STRUCTURES *****************************************/
|
||||
|
||||
|
||||
/************** VARIABLES *****************************************/
|
||||
|
||||
/************** FUNCTION ******************************************/
|
||||
|
||||
int pseudo_random_sequence(int M_PN, uint32_t *c, uint32_t cinit);
|
||||
void lte_gold_new(LTE_DL_FRAME_PARMS *frame_parms, uint32_t lte_gold_table[20][2][14], uint16_t Nid_cell);
|
||||
uint16_t get_dmrs_freq_idx_ul(uint16_t n, uint8_t k_prime, uint8_t delta, uint8_t dmrs_type);
|
||||
|
||||
@@ -32,9 +32,8 @@
|
||||
#ifndef PSS_NR_H
|
||||
#define PSS_NR_H
|
||||
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
#include "PHY/defs_nr_common.h"
|
||||
#include "PHY/types.h"
|
||||
|
||||
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
|
||||
|
||||
/************** CODE GENERATION ***********************************/
|
||||
|
||||
@@ -33,20 +33,6 @@
|
||||
#ifndef PTRS_NR_H
|
||||
#define PTRS_NR_H
|
||||
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
|
||||
/************** CODE GENERATION ***********************************/
|
||||
|
||||
/************** DEFINE ********************************************/
|
||||
|
||||
|
||||
/************* STRUCTURES *****************************************/
|
||||
|
||||
|
||||
/************** VARIABLES *****************************************/
|
||||
|
||||
/************** FUNCTION ******************************************/
|
||||
|
||||
void set_ptrs_symb_idx(uint16_t *ptrs_symbols,
|
||||
uint8_t duration_in_symbols,
|
||||
uint8_t start_symbol,
|
||||
@@ -86,8 +72,8 @@ int8_t nr_ptrs_process_slot(uint16_t dmrsSymbPos,
|
||||
uint16_t ptrsSymbPos,
|
||||
int16_t *estPerSymb,
|
||||
uint16_t startSymbIdx,
|
||||
uint16_t noSymb
|
||||
);
|
||||
uint16_t noSymb);
|
||||
|
||||
/* general function to estimate common phase error based upon PTRS */
|
||||
void nr_ptrs_cpe_estimation(uint8_t K_ptrs,
|
||||
uint8_t ptrsReOffset,
|
||||
|
||||
@@ -33,9 +33,7 @@
|
||||
#define SSS_NR_H
|
||||
|
||||
#include "limits.h"
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
#include "PHY/types.h"
|
||||
|
||||
#include "pss_nr.h"
|
||||
|
||||
/************** DEFINE ********************************************/
|
||||
|
||||
@@ -33,11 +33,8 @@
|
||||
#ifndef LOWPAPR_SEQUENCES_NR_H
|
||||
#define LOWPAPR_SEQUENCES_NR_H
|
||||
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
#include "PHY/types.h"
|
||||
|
||||
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
|
||||
|
||||
#include "PHY/defs_nr_common.h"
|
||||
#include "PHY/defs_gNB.h"
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "PHY/NR_REFSIG/dmrs_nr.h"
|
||||
#include "PHY/NR_REFSIG/ptrs_nr.h"
|
||||
#include "common/utils/nr/nr_common.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
|
||||
#include "executables/softmodem-common.h"
|
||||
#include "SCHED_NR/sched_nr.h"
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue,
|
||||
typedef struct {
|
||||
UE_nr_rxtx_proc_t proc;
|
||||
PHY_VARS_NR_UE *ue;
|
||||
c16_t *rxdata[NB_ANTENNAS_RX];
|
||||
c16_t **rxdata;
|
||||
uint32_t rxdata_size;
|
||||
c16_t rxdata_ant[];
|
||||
} nr_meas_task_args_t;
|
||||
|
||||
@@ -81,32 +81,21 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
|
||||
false);
|
||||
|
||||
// signal measurements
|
||||
for (gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++){
|
||||
|
||||
for (gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++) {
|
||||
ue->measurements.rx_power_tot[gNB_id] = 0;
|
||||
|
||||
for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++){
|
||||
|
||||
ue->measurements.rx_power[gNB_id][aarx] = 0;
|
||||
|
||||
for (aatx = 0; aatx < frame_parms->nb_antenna_ports_gNB; aatx++){
|
||||
for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
|
||||
int rx_power = 0;
|
||||
for (aatx = 0; aatx < frame_parms->nb_antenna_ports_gNB; aatx++) {
|
||||
const int z = signal_energy_nodc((c16_t*)&dl_ch_estimates[gNB_id][ch_offset], number_rbs * NR_NB_SC_PER_RB);
|
||||
rx_spatial_power[gNB_id][aatx][aarx] = z;
|
||||
|
||||
if (rx_spatial_power[gNB_id][aatx][aarx] < 0)
|
||||
rx_spatial_power[gNB_id][aatx][aarx] = 0;
|
||||
|
||||
rx_spatial_power_dB[gNB_id][aatx][aarx] = (unsigned short)dB_fixed(rx_spatial_power[gNB_id][aatx][aarx]);
|
||||
ue->measurements.rx_power[gNB_id][aarx] += rx_spatial_power[gNB_id][aatx][aarx];
|
||||
rx_power += rx_spatial_power[gNB_id][aatx][aarx];
|
||||
}
|
||||
|
||||
ue->measurements.rx_power_dB[gNB_id][aarx] = (unsigned short) dB_fixed(ue->measurements.rx_power[gNB_id][aarx]);
|
||||
ue->measurements.rx_power_tot[gNB_id] += ue->measurements.rx_power[gNB_id][aarx];
|
||||
|
||||
ue->measurements.rx_power_tot[gNB_id] += rx_power;
|
||||
}
|
||||
|
||||
ue->measurements.rx_power_tot_dB[gNB_id] = (unsigned short) dB_fixed(ue->measurements.rx_power_tot[gNB_id]);
|
||||
|
||||
}
|
||||
|
||||
// filter to remove jitter
|
||||
@@ -533,9 +522,9 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
|
||||
|
||||
LOG_D(PHY, "In %s doing measurements for ssb_offset %d l_sss %d \n", __FUNCTION__, ssb_offset, l_sss);
|
||||
|
||||
for (aarx = 0; aarx<ue->frame_parms.nb_antennas_rx; aarx++) {
|
||||
for (aarx = 0; aarx < ue->frame_parms.nb_antennas_rx; aarx++) {
|
||||
|
||||
ue->measurements.n0_power[aarx] = 0;
|
||||
uint32_t n0_power = 0;
|
||||
rxF_sss = (int16_t *)&rxdataF[aarx][l_sss*ue->frame_parms.ofdm_symbol_size];
|
||||
|
||||
//-ve spectrum from SSS
|
||||
@@ -547,8 +536,7 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
|
||||
LOG_I(PHY, "In %s -rxF_sss %d %d\n", __FUNCTION__, rxF_sss[re*2], rxF_sss[re*2 + 1]);
|
||||
#endif
|
||||
|
||||
ue->measurements.n0_power[aarx] += (((int32_t)rxF_sss[re*2]*rxF_sss[re*2]) + ((int32_t)rxF_sss[re*2 + 1]*rxF_sss[re*2 + 1]));
|
||||
|
||||
n0_power += (((int32_t)rxF_sss[re * 2] * rxF_sss[re * 2]) + ((int32_t)rxF_sss[re * 2 + 1] * rxF_sss[re * 2 + 1]));
|
||||
}
|
||||
|
||||
//+ve spectrum from SSS
|
||||
@@ -560,14 +548,11 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
|
||||
LOG_I(PHY, "In %s +rxF_sss %d %d\n", __FUNCTION__, rxF_sss[re*2], rxF_sss[re*2 + 1]);
|
||||
#endif
|
||||
|
||||
ue->measurements.n0_power[aarx] += (((int32_t)rxF_sss[re*2]*rxF_sss[re*2]) + ((int32_t)rxF_sss[re*2 + 1]*rxF_sss[re*2 + 1]));
|
||||
|
||||
n0_power += (((int32_t)rxF_sss[re * 2]*rxF_sss[re * 2]) + ((int32_t)rxF_sss[re * 2 + 1] * rxF_sss[re * 2 + 1]));
|
||||
}
|
||||
|
||||
ue->measurements.n0_power[aarx] /= 2*k_length;
|
||||
ue->measurements.n0_power_dB[aarx] = (unsigned short) dB_fixed(ue->measurements.n0_power[aarx]);
|
||||
ue->measurements.n0_power_tot += ue->measurements.n0_power[aarx];
|
||||
|
||||
n0_power /= 2 * k_length;
|
||||
ue->measurements.n0_power_tot += n0_power;
|
||||
}
|
||||
|
||||
ue->measurements.n0_power_tot_dB = (unsigned short) dB_fixed(ue->measurements.n0_power_tot);
|
||||
|
||||
@@ -141,7 +141,6 @@ static void nr_dlsch_channel_level_median(uint32_t rx_size_symbol,
|
||||
@param rho Cross-correlation between two spatial channels on each RX antenna
|
||||
@param frame_parms Pointer to frame descriptor
|
||||
@param symbol Symbol on which to operate
|
||||
@param first_symbol_flag set to 1 on first DLSCH symbol
|
||||
@param mod_order Modulation order of allocation
|
||||
@param nb_rb Number of RBs in allocation
|
||||
@param output_shift Rescaling for compensated output (should be energy-normalizing)
|
||||
@@ -161,7 +160,6 @@ static void nr_dlsch_channel_compensation(uint32_t rx_size_symbol,
|
||||
uint8_t n_layers,
|
||||
unsigned char symbol,
|
||||
int length,
|
||||
bool first_symbol_flag,
|
||||
unsigned char mod_order,
|
||||
unsigned short nb_rb,
|
||||
unsigned char output_shift,
|
||||
@@ -555,7 +553,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
nl,
|
||||
symbol,
|
||||
nb_re_pdsch,
|
||||
first_symbol_flag,
|
||||
dlsch_config->qamModOrder,
|
||||
nb_rb_pdsch,
|
||||
*log2_maxh,
|
||||
@@ -769,7 +766,6 @@ static void nr_dlsch_channel_compensation(uint32_t rx_size_symbol,
|
||||
uint8_t n_layers,
|
||||
unsigned char symbol,
|
||||
int length,
|
||||
bool first_symbol_flag,
|
||||
unsigned char mod_order,
|
||||
unsigned short nb_rb,
|
||||
unsigned char output_shift,
|
||||
@@ -868,24 +864,11 @@ static void nr_dlsch_channel_compensation(uint32_t rx_size_symbol,
|
||||
for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
|
||||
for (int l = 0; l < n_layers; l++) {
|
||||
for (int atx = 0; atx < n_layers; atx++) {
|
||||
rho128 = (simde__m128i *)&rho[aarx][l * n_layers + atx][symbol * nb_rb * 12];
|
||||
dl_ch128 = (simde__m128i *)dl_ch_estimates_ext[l * frame_parms->nb_antennas_rx + aarx];
|
||||
dl_ch128_2 = (simde__m128i *)dl_ch_estimates_ext[atx * frame_parms->nb_antennas_rx + aarx];
|
||||
|
||||
// multiply by conjugated channel
|
||||
mult_cpx_conj_vector((c16_t *)dl_ch128, (c16_t *)dl_ch128_2, (c16_t *)rho128, 12 * nb_rb_0, output_shift);
|
||||
|
||||
if (first_symbol_flag) {
|
||||
// rho_nm = H_arx_n.conj(H_arx_m)
|
||||
// rho_rx_corr[arx][nm] = |H_arx_n|^2.|H_arx_m|^2 &rho[aarx][l*n_layers+atx][symbol*nb_rb*12]
|
||||
measurements->rx_correlation[0][aarx][l * n_layers + atx] =
|
||||
signal_energy(&rho[aarx][l * n_layers + atx][symbol * nb_rb * 12], length);
|
||||
// avg_rho_re[aarx][l*n_layers+atx] = 16*avg_rho_re[aarx][l*n_layers+atx]/length;
|
||||
// avg_rho_im[aarx][l*n_layers+atx] = 16*avg_rho_im[aarx][l*n_layers+atx]/length;
|
||||
// printf("rho[rx]%d tx%d tx%d = Re: %d Im: %d\n",aarx, l,atx, avg_rho_re[aarx][l*n_layers+atx],
|
||||
// avg_rho_im[aarx][l*n_layers+atx]); printf("rho_corr[rx]%d tx%d tx%d = %d ...\n",aarx, l,atx,
|
||||
// measurements->rx_correlation[0][aarx][l*n_layers+atx]);
|
||||
}
|
||||
rho128 = (simde__m128i *)&rho[aarx][l * n_layers + atx][symbol * nb_rb * 12];
|
||||
dl_ch128 = (simde__m128i *)dl_ch_estimates_ext[l * frame_parms->nb_antennas_rx + aarx];
|
||||
dl_ch128_2 = (simde__m128i *)dl_ch_estimates_ext[atx * frame_parms->nb_antennas_rx + aarx];
|
||||
// multiply by conjugated channel
|
||||
mult_cpx_conj_vector((c16_t *)dl_ch128, (c16_t *)dl_ch128_2, (c16_t *)rho128, 12 * nb_rb_0, output_shift);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,8 +189,8 @@ void insert_sss_nr(int16_t *sss_time,
|
||||
|
||||
static int pss_ch_est_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
int nid2,
|
||||
c16_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[NB_ANTENNAS_RX][LENGTH_SSS_NR])
|
||||
c16_t pss_ext[frame_parms->nb_antennas_rx][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[frame_parms->nb_antennas_rx][LENGTH_SSS_NR])
|
||||
{
|
||||
int16_t *pss = get_primary_synchro_nr2(nid2);
|
||||
|
||||
@@ -250,15 +250,14 @@ static int pss_ch_est_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
*
|
||||
*********************************************************************/
|
||||
|
||||
static int do_pss_sss_extract_nr(
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
c16_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[NB_ANTENNAS_RX][LENGTH_SSS_NR],
|
||||
uint8_t doPss,
|
||||
uint8_t doSss,
|
||||
uint8_t subframe,
|
||||
int ssb_start_subcarrier,
|
||||
c16_t rxdataF[][frame_parms->samples_per_slot_wCP]) // add flag to indicate extracting only PSS, only SSS, or both
|
||||
static int do_pss_sss_extract_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
c16_t pss_ext[frame_parms->nb_antennas_rx][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[frame_parms->nb_antennas_rx][LENGTH_SSS_NR],
|
||||
uint8_t doPss,
|
||||
uint8_t doSss,
|
||||
uint8_t subframe,
|
||||
int ssb_start_subcarrier,
|
||||
c16_t rxdataF[][frame_parms->samples_per_slot_wCP]) // add flag to indicate extracting only PSS, only SSS, or both
|
||||
{
|
||||
AssertFatal(frame_parms->nb_antennas_rx > 0, "UB as sss_ext is not set to any value\n");
|
||||
|
||||
@@ -331,8 +330,8 @@ static int do_pss_sss_extract_nr(
|
||||
*********************************************************************/
|
||||
|
||||
static int pss_sss_extract_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
c16_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[NB_ANTENNAS_RX][LENGTH_SSS_NR],
|
||||
c16_t pss_ext[frame_parms->nb_antennas_rx][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[frame_parms->nb_antennas_rx][LENGTH_SSS_NR],
|
||||
uint8_t subframe,
|
||||
int ssb_start_subcarrier,
|
||||
c16_t rxdataF[][frame_parms->samples_per_slot_wCP])
|
||||
@@ -371,8 +370,8 @@ bool rx_sss_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
c16_t rxdataF[][frame_parms->samples_per_slot_wCP])
|
||||
{
|
||||
uint8_t i;
|
||||
c16_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR] = {0};
|
||||
c16_t sss_ext[NB_ANTENNAS_RX][LENGTH_SSS_NR] = {0};
|
||||
c16_t pss_ext[frame_parms->nb_antennas_rx][LENGTH_PSS_NR];
|
||||
c16_t sss_ext[frame_parms->nb_antennas_rx][LENGTH_SSS_NR];
|
||||
uint8_t Nid2 = GET_NID2(nid2);
|
||||
uint16_t Nid1;
|
||||
uint8_t phase;
|
||||
|
||||
+10
-95
@@ -104,18 +104,11 @@
|
||||
/// Context data structure for gNB subframe processing
|
||||
typedef struct {
|
||||
/// Component Carrier index
|
||||
uint8_t CC_id;
|
||||
uint8_t CC_id;
|
||||
/// Last RX timestamp
|
||||
openair0_timestamp_t timestamp_rx;
|
||||
} UE_nr_proc_t;
|
||||
|
||||
typedef enum {
|
||||
NR_PBCH_EST=0,
|
||||
NR_PDCCH_EST,
|
||||
NR_PDSCH_EST,
|
||||
NR_SSS_EST,
|
||||
} NR_CHANNEL_EST_t;
|
||||
|
||||
#define debug_msg if (((mac_xface->frame%100) == 0) || (mac_xface->frame < 50)) msg
|
||||
|
||||
#define NEIGHBOR_CELL_MAX_CONSECUTIVE_FAILURES 10
|
||||
@@ -144,10 +137,6 @@ typedef struct {
|
||||
int ssb_rsrp_dBm[64];
|
||||
float ssb_sinr_dB[64];
|
||||
// common measurements
|
||||
//! estimated noise power (linear)
|
||||
unsigned int n0_power[NB_ANTENNAS_RX];
|
||||
//! estimated noise power (dB)
|
||||
unsigned short n0_power_dB[NB_ANTENNAS_RX];
|
||||
//! total estimated noise power (linear)
|
||||
unsigned int n0_power_tot;
|
||||
//! total estimated noise power (dB)
|
||||
@@ -165,59 +154,27 @@ typedef struct {
|
||||
//! estimated received spatial signal power (dB)
|
||||
fourDimArray_t *rx_spatial_power_dB;
|
||||
|
||||
/// estimated received signal power (sum over all TX antennas)
|
||||
int rx_power[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX];
|
||||
/// estimated received signal power (sum over all TX antennas)
|
||||
unsigned short rx_power_dB[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX];
|
||||
|
||||
/// estimated received signal power (sum over all TX/RX antennas)
|
||||
int rx_power_tot[NUMBER_OF_CONNECTED_gNB_MAX]; //NEW
|
||||
int rx_power_tot[NUMBER_OF_CONNECTED_gNB_MAX]; //NEW
|
||||
/// estimated received signal power (sum over all TX/RX antennas)
|
||||
unsigned short rx_power_tot_dB[NUMBER_OF_CONNECTED_gNB_MAX]; //NEW
|
||||
|
||||
//! estimated received signal power (sum of all TX/RX antennas, time average)
|
||||
int rx_power_avg[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int rx_power_avg[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
//! estimated received signal power (sum of all TX/RX antennas, time average, in dB)
|
||||
unsigned short rx_power_avg_dB[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
|
||||
/// SINR (sum of all TX/RX antennas, in dB)
|
||||
int wideband_cqi_tot[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int wideband_cqi_tot[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
/// SINR (sum of all TX/RX antennas, time average, in dB)
|
||||
int wideband_cqi_avg[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int wideband_cqi_avg[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
|
||||
//! estimated rssi (dBm)
|
||||
short rx_rssi_dBm[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
//! estimated correlation (wideband linear) between spatial channels (computed in dlsch_demodulation)
|
||||
int rx_correlation[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX][NR_MAX_NB_LAYERS*NR_MAX_NB_LAYERS];//
|
||||
//! estimated correlation (wideband dB) between spatial channels (computed in dlsch_demodulation)
|
||||
int rx_correlation_dB[NUMBER_OF_CONNECTED_gNB_MAX][2];
|
||||
short rx_rssi_dBm[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
|
||||
/// Wideband CQI (sum of all RX antennas, in dB, for precoded transmission modes (3,4,5,6), up to 4 spatial streams)
|
||||
int precoded_cqi_dB[NUMBER_OF_CONNECTED_gNB_MAX+1][4];
|
||||
/// Subband CQI per RX antenna (= SINR)
|
||||
int subband_cqi[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX][NUMBER_OF_SUBBANDS_MAX];
|
||||
/// Total Subband CQI (= SINR)
|
||||
int subband_cqi_tot[NUMBER_OF_CONNECTED_gNB_MAX][NUMBER_OF_SUBBANDS_MAX];
|
||||
/// Subband CQI in dB (= SINR dB)
|
||||
int subband_cqi_dB[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX][NUMBER_OF_SUBBANDS_MAX];
|
||||
/// Total Subband CQI
|
||||
int subband_cqi_tot_dB[NUMBER_OF_CONNECTED_gNB_MAX][NUMBER_OF_SUBBANDS_MAX];
|
||||
/// Wideband PMI for each RX antenna
|
||||
int wideband_pmi_re[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX];
|
||||
/// Wideband PMI for each RX antenna
|
||||
int wideband_pmi_im[NUMBER_OF_CONNECTED_gNB_MAX][NB_ANTENNAS_RX];
|
||||
///Subband PMI for each RX antenna
|
||||
int subband_pmi_re[NUMBER_OF_CONNECTED_gNB_MAX][NUMBER_OF_SUBBANDS_MAX][NB_ANTENNAS_RX];
|
||||
///Subband PMI for each RX antenna
|
||||
int subband_pmi_im[NUMBER_OF_CONNECTED_gNB_MAX][NUMBER_OF_SUBBANDS_MAX][NB_ANTENNAS_RX];
|
||||
/// chosen RX antennas (1=Rx antenna 1, 2=Rx antenna 2, 3=both Rx antennas)
|
||||
unsigned char selected_rx_antennas[NUMBER_OF_CONNECTED_gNB_MAX][NUMBER_OF_SUBBANDS_MAX];
|
||||
/// Wideband Rank indication
|
||||
unsigned char rank[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
/// Number of RX Antennas
|
||||
unsigned char nb_antennas_rx;
|
||||
/// DLSCH error counter
|
||||
// short dlsch_errors;
|
||||
|
||||
/// Info about neighboring cells to perform the measurements
|
||||
neighboring_cell_info_t neighboring_cell_info[NUMBER_OF_NEIGHBORING_CELLS_MAX];
|
||||
bool meas_request_pending;
|
||||
@@ -263,17 +220,6 @@ typedef struct {
|
||||
|
||||
#define MAX_NR_DCI_DECODED_SLOT 10 // This value is not specified
|
||||
|
||||
typedef enum {
|
||||
_format_0_0_found = 0,
|
||||
_format_0_1_found = 1,
|
||||
_format_1_0_found = 2,
|
||||
_format_1_1_found = 3,
|
||||
_format_2_0_found = 4,
|
||||
_format_2_1_found = 5,
|
||||
_format_2_2_found = 6,
|
||||
_format_2_3_found = 7
|
||||
} format_found_t;
|
||||
|
||||
#endif
|
||||
typedef struct {
|
||||
int nb_search_space;
|
||||
@@ -282,18 +228,6 @@ typedef struct {
|
||||
|
||||
#define NR_PSBCH_DMRS_LENGTH 297 // in mod symbols
|
||||
#define NR_PSBCH_DMRS_LENGTH_DWORD 20 // ceil(2(QPSK)*NR_PBCH_DMRS_LENGTH/32)
|
||||
|
||||
/* NR Sidelink PSBCH payload fields
|
||||
TODO: This will be removed in the future and
|
||||
filled in by the upper layers once developed. */
|
||||
typedef struct {
|
||||
uint32_t coverageIndicator : 1;
|
||||
uint32_t tddConfig : 12;
|
||||
uint32_t DFN : 10;
|
||||
uint32_t slotIndex : 7;
|
||||
uint32_t reserved : 2;
|
||||
} PSBCH_payload;
|
||||
|
||||
#define PBCH_A 24
|
||||
|
||||
typedef struct {
|
||||
@@ -426,15 +360,11 @@ typedef struct PHY_VARS_NR_UE_s {
|
||||
fapi_nr_config_request_t nrUE_config;
|
||||
nr_synch_request_t synch_request;
|
||||
|
||||
NR_UE_PRACH *prach_vars[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
NR_UE_PRS *prs_vars[NR_MAX_PRS_COMB_SIZE];
|
||||
uint8_t prs_active_gNBs;
|
||||
NR_UE_PRACH *prach_vars[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
NR_UE_PRS *prs_vars[NR_MAX_PRS_COMB_SIZE];
|
||||
uint8_t prs_active_gNBs;
|
||||
NR_DL_UE_HARQ_t dl_harq_processes[2][NR_MAX_DLSCH_HARQ_PROCESSES];
|
||||
NR_UL_UE_HARQ_t ul_harq_processes[NR_MAX_ULSCH_HARQ_PROCESSES];
|
||||
//Paging parameters
|
||||
uint32_t IMSImod1024;
|
||||
uint32_t PF;
|
||||
uint32_t PO;
|
||||
|
||||
// Scrambling IDs used in PUSCH DMRS
|
||||
c16_t X_u[64][839];
|
||||
@@ -463,21 +393,6 @@ typedef struct PHY_VARS_NR_UE_s {
|
||||
int dlsch_received[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_received_last[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_fer[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_SI_received[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_SI_errors[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_ra_received[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_ra_errors[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_p_received[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_p_errors[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mch_received[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int current_dlsch_cqi[NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mch_received_sf[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mcch_received[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mtch_received[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mcch_errors[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mtch_errors[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mcch_trials[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
int dlsch_mtch_trials[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX];
|
||||
uint8_t init_sync_frame;
|
||||
/// temporary offset during cell search prior to MIB decoding
|
||||
int ssb_offset;
|
||||
|
||||
Reference in New Issue
Block a user