Merging test-x310, ci-dev-nr-add-gnb-nr-ur-uspr-testing and nr-mimo-mode-clean branches
This commit is contained in:
@@ -53,7 +53,7 @@ static void nr_polar_init(t_nrPolar_params * *polarParams,
|
||||
|
||||
// printf("currentPtr %p (polarParams %p)\n",currentPtr,polarParams);
|
||||
//Else, initialize and add node to the end of the linked list.
|
||||
t_nrPolar_params *newPolarInitNode = malloc(sizeof(t_nrPolar_params));
|
||||
t_nrPolar_params *newPolarInitNode = calloc(sizeof(t_nrPolar_params),1);
|
||||
|
||||
if (newPolarInitNode != NULL) {
|
||||
newPolarInitNode->idx = (messageType * messageLength * aggregation_prime);
|
||||
|
||||
@@ -369,7 +369,7 @@ void phy_config_harq_ue(module_id_t Mod_id,
|
||||
|
||||
for (num_of_threads=0;num_of_threads<RX_NB_TH_MAX;num_of_threads++)
|
||||
for (num_of_code_words=0;num_of_code_words<NR_MAX_NB_CODEWORDS;num_of_code_words++)
|
||||
phy_vars_ue->ulsch[eNB_id][num_of_threads][num_of_code_words]->Mlimit = max_harq_tx;
|
||||
phy_vars_ue->ulsch[num_of_threads][eNB_id][num_of_code_words]->Mlimit = max_harq_tx;
|
||||
}
|
||||
|
||||
extern uint16_t beta_cqi[16];
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
#include <syscall.h>
|
||||
#include "targets/RT/USER/rt_wrapper.h"
|
||||
|
||||
//#define DEBUG_DLSCH_CODING
|
||||
//#define DEBUG_DLSCH_FREE 1
|
||||
@@ -329,11 +328,6 @@ int dlsch_encoding_2threads0(te_params *tep) {
|
||||
|
||||
extern int oai_exit;
|
||||
void *te_thread(void *param) {
|
||||
cpu_set_t cpuset;
|
||||
CPU_ZERO(&cpuset);
|
||||
thread_top_init("te_thread",1,200000,250000,500000);
|
||||
pthread_setname_np( pthread_self(),"te processing");
|
||||
LOG_I(PHY,"thread te created id=%ld\n", syscall(__NR_gettid));
|
||||
te_params *tep = (te_params *)param;
|
||||
|
||||
//wait_sync("te_thread");
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
|
||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||
//#define DEBUG_ULSCH_DECODING
|
||||
#include "targets/RT/USER/rt_wrapper.h"
|
||||
#include "transport_proto.h"
|
||||
|
||||
extern WORKER_CONF_t get_thread_worker_conf(void);
|
||||
@@ -356,9 +355,7 @@ extern int oai_exit;
|
||||
void *td_thread(void *param) {
|
||||
PHY_VARS_eNB *eNB = ((td_params *)param)->eNB;
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
cpu_set_t cpuset;
|
||||
CPU_ZERO(&cpuset);
|
||||
thread_top_init("td_thread",1,200000,250000,500000);
|
||||
|
||||
pthread_setname_np( pthread_self(),"td processing");
|
||||
LOG_I(PHY,"thread td created id=%ld\n", syscall(__NR_gettid));
|
||||
//wait_sync("td_thread");
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
//#include "extern.h"
|
||||
#include "PHY/sse_intrin.h"
|
||||
#include "T.h"
|
||||
#include "openair1/PHY/NR_TRANSPORT/nr_dlsch.h"
|
||||
|
||||
#ifndef USER_MODE
|
||||
#define NOCYGWIN_STATIC static
|
||||
@@ -84,6 +85,20 @@ unsigned char offset_mumimo_llr_drange[29][3]={{8,8,8},{7,7,7},{7,7,7},{7,7,7},{
|
||||
|
||||
extern void print_shorts(char *s,int16_t *x);
|
||||
|
||||
static void nr_dlsch_dual_stream_correlation_core(int **dl_ch_estimates_ext,
|
||||
int **dl_ch_estimates_ext_i,
|
||||
int **dl_ch_rho_ext,
|
||||
unsigned char n_tx,
|
||||
unsigned char n_rx,
|
||||
unsigned char output_shift,
|
||||
int length,
|
||||
int start_point);
|
||||
|
||||
static void nr_dlsch_layer_demapping(int16_t **llr_cw,
|
||||
uint8_t Nl,
|
||||
uint8_t mod_order,
|
||||
uint16_t length,
|
||||
int16_t **llr_layers);
|
||||
|
||||
int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
PDSCH_t type,
|
||||
@@ -112,7 +127,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
uint8_t slot = 0;
|
||||
#endif
|
||||
|
||||
unsigned char aatx,aarx;
|
||||
unsigned char aatx=0,aarx=0;
|
||||
|
||||
unsigned short nb_rb = 0, round;
|
||||
int avgs = 0;// rb;
|
||||
@@ -993,10 +1008,10 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
|
||||
if (rx_type==rx_IC_dual_stream) {
|
||||
nr_dlsch_layer_demapping(pdsch_vars[eNB_id]->llr,
|
||||
dlsch[0]->harq_processes[harq_pid]->Nl,
|
||||
dlsch[0]->harq_processes[harq_pid]->Qm,
|
||||
dlsch[0]->harq_processes[harq_pid]->G,
|
||||
pdsch_vars[eNB_id]->layer_llr);
|
||||
dlsch[0]->harq_processes[harq_pid]->Nl,
|
||||
dlsch[0]->harq_processes[harq_pid]->Qm,
|
||||
dlsch[0]->harq_processes[harq_pid]->G,
|
||||
pdsch_vars[eNB_id]->layer_llr);
|
||||
}
|
||||
|
||||
#if UE_TIMING_TRACE
|
||||
@@ -2048,7 +2063,7 @@ void nr_dlsch_channel_level_median(int **dl_ch_estimates_ext,
|
||||
|
||||
}
|
||||
|
||||
void nr_dlsch_dual_stream_correlation_core(int **dl_ch_estimates_ext,
|
||||
static void nr_dlsch_dual_stream_correlation_core(int **dl_ch_estimates_ext,
|
||||
int **dl_ch_estimates_ext_i,
|
||||
int **dl_ch_rho_ext,
|
||||
unsigned char n_tx,
|
||||
@@ -2156,7 +2171,7 @@ void nr_dlsch_detection_mrc_core(int **rxdataF_comp,
|
||||
__m128i *rxdataF_comp128_0, *rxdataF_comp128_1, *rxdataF_comp128_2, *rxdataF_comp128_3;
|
||||
__m128i *dl_ch_mag128_0, *dl_ch_mag128_1, *dl_ch_mag128_2, *dl_ch_mag128_3;
|
||||
__m128i *dl_ch_mag128_0b, *dl_ch_mag128_1b, *dl_ch_mag128_2b, *dl_ch_mag128_3b;
|
||||
__m128i *rho128_0, *rho128_1, *rho128_2, *rho128_3;
|
||||
__m128i *rho128_0, *rho128_1, *rho128_2=NULL, *rho128_3=NULL;
|
||||
__m128i *rho128_i0, *rho128_i1, *rho128_i2, *rho128_i3;
|
||||
int length_mod4 = 0;
|
||||
int length2;
|
||||
@@ -2458,7 +2473,7 @@ unsigned short nr_dlsch_extract_rbs_dual(int **rxdataF,
|
||||
int prb,nb_rb=0;
|
||||
unsigned short k;
|
||||
int i,j,aarx;
|
||||
int32_t *dl_ch0,*dl_ch0p,*dl_ch0_ext,*dl_ch1,*dl_ch1p,*dl_ch1_ext,*rxF,*rxF_ext;
|
||||
int32_t *dl_ch0=NULL,*dl_ch0p=NULL,*dl_ch0_ext=NULL,*dl_ch1=NULL,*dl_ch1p=NULL,*dl_ch1_ext=NULL,*rxF=NULL,*rxF_ext=NULL;
|
||||
|
||||
k = frame_parms->first_carrier_offset + 516; //0
|
||||
|
||||
@@ -2533,11 +2548,12 @@ unsigned short nr_dlsch_extract_rbs_dual(int **rxdataF,
|
||||
return(nb_rb/frame_parms->nb_antennas_rx);
|
||||
}
|
||||
|
||||
void nr_dlsch_layer_demapping(int16_t **llr_cw,
|
||||
uint8_t Nl,
|
||||
uint8_t mod_order,
|
||||
uint16_t length,
|
||||
int16_t **llr_layers) {
|
||||
|
||||
static void nr_dlsch_layer_demapping(int16_t **llr_cw,
|
||||
uint8_t Nl,
|
||||
uint8_t mod_order,
|
||||
uint16_t length,
|
||||
int16_t **llr_layers) {
|
||||
|
||||
switch (Nl) {
|
||||
|
||||
|
||||
@@ -1803,21 +1803,6 @@ int nr_extract_dci_info(PHY_VARS_NR_UE *ue,
|
||||
uint16_t n_RB_DLBWP,
|
||||
uint16_t crc_scrambled_values[TOTAL_NBR_SCRAMBLED_VALUES]);
|
||||
|
||||
void nr_dlsch_dual_stream_correlation_core(int **dl_ch_estimates_ext,
|
||||
int **dl_ch_estimates_ext_i,
|
||||
int **dl_ch_rho_ext,
|
||||
unsigned char n_tx,
|
||||
unsigned char n_rx,
|
||||
unsigned char output_shift,
|
||||
int length,
|
||||
int start_point);
|
||||
|
||||
void nr_dlsch_layer_demapping(int16_t **llr_cw,
|
||||
uint8_t Nl,
|
||||
uint8_t mod_order,
|
||||
uint16_t length,
|
||||
int16_t **llr_layers);
|
||||
|
||||
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
@@ -35,8 +35,6 @@ float tput_time_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}};
|
||||
float tput_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}};
|
||||
float tput_ue_max[NUMBER_OF_UE_MAX] = {0};
|
||||
|
||||
extern int64_t *pss_corr_ue[3];
|
||||
|
||||
|
||||
static void ia_receiver_on_off( FL_OBJECT *button, long arg)
|
||||
{
|
||||
@@ -66,14 +64,14 @@ static void dl_traffic_on_off( FL_OBJECT *button, long arg)
|
||||
}
|
||||
}
|
||||
|
||||
FD_lte_phy_scope_enb *create_lte_phy_scope_enb( void )
|
||||
FD_phy_scope_gnb *create_phy_scope_gnb( void )
|
||||
{
|
||||
|
||||
FL_OBJECT *obj;
|
||||
FD_lte_phy_scope_enb *fdui = fl_malloc( sizeof *fdui );
|
||||
FD_phy_scope_gnb *fdui = fl_malloc( sizeof *fdui );
|
||||
|
||||
// Define form
|
||||
fdui->lte_phy_scope_enb = fl_bgn_form( FL_NO_BOX, 800, 800 );
|
||||
fdui->phy_scope_gnb = fl_bgn_form( FL_NO_BOX, 800, 800 );
|
||||
|
||||
// This the whole UI box
|
||||
obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 800, "" );
|
||||
@@ -146,19 +144,17 @@ FD_lte_phy_scope_enb *create_lte_phy_scope_enb( void )
|
||||
fl_set_object_callback(fdui->button_0, dl_traffic_on_off, 0 );
|
||||
|
||||
fl_end_form( );
|
||||
fdui->lte_phy_scope_enb->fdui = fdui;
|
||||
fdui->phy_scope_gnb->fdui = fdui;
|
||||
|
||||
return fdui;
|
||||
}
|
||||
|
||||
/*
|
||||
void phy_scope_eNB(FD_lte_phy_scope_enb *form,
|
||||
PHY_VARS_eNB *phy_vars_enb,
|
||||
void phy_scope_gNB(FD_phy_scope_gnb *form,
|
||||
PHY_VARS_gNB *phy_vars_gnb,
|
||||
int UE_id)
|
||||
{
|
||||
int eNB_id = 0;
|
||||
int i,i2,arx,atx,ind,k;
|
||||
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_enb->frame_parms;
|
||||
NR_DL_FRAME_PARMS *frame_parms = &phy_vars_gnb->frame_parms;
|
||||
int nsymb_ce = 12*frame_parms->N_RB_UL*frame_parms->symbols_per_tti;
|
||||
uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx;
|
||||
uint8_t nb_antennas_tx = 1; // frame_parms->nb_antennas_tx; // in LTE Rel. 8 and 9 only a single transmit antenna is assumed at the UE
|
||||
@@ -180,16 +176,18 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
|
||||
float time[FRAME_LENGTH_COMPLEX_SAMPLES];
|
||||
float time2[2048];
|
||||
float freq[nsymb_ce*nb_antennas_rx*nb_antennas_tx];
|
||||
int frame = phy_vars_enb->proc.proc_rxtx[0].frame_tx;
|
||||
uint32_t total_dlsch_bitrate = phy_vars_enb->total_dlsch_bitrate;
|
||||
uint32_t total_dlsch_bitrate = phy_vars_gnb->total_dlsch_bitrate;
|
||||
int coded_bits_per_codeword = 0;
|
||||
uint8_t harq_pid; // in TDD config 3 it is sf-2, i.e., can be 0,1,2
|
||||
int Qm = 2;
|
||||
|
||||
if (!RC.nrmac[0]->UE_list.active[UE_id])
|
||||
return;
|
||||
|
||||
// choose max MCS to compute coded_bits_per_codeword
|
||||
if (phy_vars_enb->ulsch[UE_id]!=NULL) {
|
||||
if (phy_vars_gnb->ulsch[UE_id][0]!=NULL) {
|
||||
for (harq_pid=0; harq_pid<3; harq_pid++) {
|
||||
Qm = cmax(phy_vars_enb->ulsch[UE_id]->harq_processes[harq_pid]->Qm,Qm);
|
||||
//Qm = cmax(phy_vars_gnb->ulsch[UE_id][0]->harq_processes->Qm,Qm);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,15 +197,15 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
|
||||
llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero
|
||||
bit = malloc(coded_bits_per_codeword*sizeof(float));
|
||||
|
||||
rxsig_t = (int16_t**) phy_vars_enb->common_vars.rxdata[eNB_id];
|
||||
//chest_t = (int16_t**) phy_vars_enb->pusch_vars[UE_id]->drs_ch_estimates_time[eNB_id];
|
||||
chest_t = (int16_t**) phy_vars_enb->srs_vars[UE_id].srs_ch_estimates[eNB_id];
|
||||
chest_f = (int16_t**) phy_vars_enb->pusch_vars[UE_id]->drs_ch_estimates[eNB_id];
|
||||
pusch_llr = (int16_t*) phy_vars_enb->pusch_vars[UE_id]->llr;
|
||||
pusch_comp = (int32_t*) phy_vars_enb->pusch_vars[UE_id]->rxdataF_comp[0];
|
||||
pucch1_comp = (int32_t*) phy_vars_enb->pucch1_stats[UE_id];
|
||||
pucch1_thres = (int32_t*) phy_vars_enb->pucch1_stats_thres[UE_id];
|
||||
pucch1ab_comp = (int32_t*) phy_vars_enb->pucch1ab_stats[UE_id];
|
||||
rxsig_t = (int16_t**) phy_vars_gnb->common_vars.rxdata;
|
||||
//chest_t = (int16_t**) phy_vars_gnb->pusch_vars[UE_id]->drs_ch_estimates_time[eNB_id];
|
||||
chest_t = (int16_t**) phy_vars_gnb->srs_vars[UE_id].srs_ch_estimates;
|
||||
chest_f = (int16_t**) phy_vars_gnb->pusch_vars[UE_id]->drs_ch_estimates;
|
||||
pusch_llr = (int16_t*) phy_vars_gnb->pusch_vars[UE_id]->llr;
|
||||
pusch_comp = (int32_t*) phy_vars_gnb->pusch_vars[UE_id]->rxdataF_comp;
|
||||
pucch1_comp = (int32_t*) phy_vars_gnb->pucch1_stats[UE_id];
|
||||
pucch1_thres = (int32_t*) phy_vars_gnb->pucch1_stats_thres[UE_id];
|
||||
pucch1ab_comp = (int32_t*) phy_vars_gnb->pucch1ab_stats[UE_id];
|
||||
|
||||
// Received signal in time domain of receive antenna 0
|
||||
if (rxsig_t != NULL) {
|
||||
@@ -363,7 +361,7 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
|
||||
memmove( tput_time_enb[UE_id], &tput_time_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) );
|
||||
memmove( tput_enb[UE_id], &tput_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) );
|
||||
|
||||
tput_time_enb[UE_id][TPUT_WINDOW_LENGTH-1] = (float) frame;
|
||||
tput_time_enb[UE_id][TPUT_WINDOW_LENGTH-1] = (float) 0;
|
||||
tput_enb[UE_id][TPUT_WINDOW_LENGTH-1] = ((float) total_dlsch_bitrate)/1000.0;
|
||||
|
||||
fl_set_xyplot_data(form->pusch_tput,tput_time_enb[UE_id],tput_enb[UE_id],TPUT_WINDOW_LENGTH,"","","");
|
||||
@@ -377,16 +375,15 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
|
||||
free(bit);
|
||||
free(chest_f_abs);
|
||||
}
|
||||
*/
|
||||
|
||||
FD_lte_phy_scope_ue *create_lte_phy_scope_ue( void )
|
||||
FD_phy_scope_nrue *create_phy_scope_nrue( void )
|
||||
{
|
||||
|
||||
FL_OBJECT *obj;
|
||||
FD_lte_phy_scope_ue *fdui = fl_malloc( sizeof *fdui );
|
||||
FD_phy_scope_nrue *fdui = fl_malloc( sizeof *fdui );
|
||||
|
||||
// Define form
|
||||
fdui->lte_phy_scope_ue = fl_bgn_form( FL_NO_BOX, 800, 900 );
|
||||
fdui->phy_scope_nrue = fl_bgn_form( FL_NO_BOX, 800, 900 );
|
||||
|
||||
// This the whole UI box
|
||||
obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 900, "" );
|
||||
@@ -477,12 +474,12 @@ FD_lte_phy_scope_ue *create_lte_phy_scope_ue( void )
|
||||
fl_hide_object(fdui->button_0);
|
||||
|
||||
fl_end_form( );
|
||||
fdui->lte_phy_scope_ue->fdui = fdui;
|
||||
fdui->phy_scope_nrue->fdui = fdui;
|
||||
|
||||
return fdui;
|
||||
}
|
||||
|
||||
void phy_scope_UE(FD_lte_phy_scope_ue *form,
|
||||
void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
||||
PHY_VARS_NR_UE *phy_vars_ue,
|
||||
int eNB_id,
|
||||
int UE_id,
|
||||
@@ -629,6 +626,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
|
||||
|
||||
if (phy_vars_ue->is_synchronized==0) {
|
||||
for (ind=0;ind<3;ind++) {
|
||||
/*
|
||||
if (pss_corr_ue[ind]) {
|
||||
for (i=0; i<samples_per_frame; i++) {
|
||||
corr[i] = (float) pss_corr_ue[ind][i];
|
||||
@@ -642,6 +640,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
|
||||
|
||||
overlay = 1;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -843,3 +842,91 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
|
||||
free(chest_t_abs);
|
||||
*/
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
FL_FORM *stats_form;
|
||||
void *vdata;
|
||||
char *cdata;
|
||||
long ldata;
|
||||
FL_OBJECT *stats_text;
|
||||
FL_OBJECT *stats_button;
|
||||
} FD_stats_form;
|
||||
|
||||
void reset_stats_gNB(FL_OBJECT *button, long arg) {
|
||||
PHY_VARS_gNB *phy_vars_gNB = RC.gNB[0][0];
|
||||
|
||||
for (int i=0; i<NUMBER_OF_UE_MAX; i++) {
|
||||
for (int k=0; k<8; k++) { //harq_processes
|
||||
/* for (j=0; j<phy_vars_gNB->dlsch[i][0]->Mlimit; j++) {
|
||||
phy_vars_gNB->UE_stats[i].dlsch_NAK[k][j]=0;
|
||||
phy_vars_gNB->UE_stats[i].dlsch_ACK[k][j]=0;
|
||||
phy_vars_gNB->UE_stats[i].dlsch_trials[k][j]=0;
|
||||
}*/
|
||||
phy_vars_gNB->UE_stats[i].dlsch_l2_errors[k]=0;
|
||||
phy_vars_gNB->UE_stats[i].ulsch_errors[k]=0;
|
||||
phy_vars_gNB->UE_stats[i].ulsch_consecutive_errors=0;
|
||||
phy_vars_gNB->UE_stats[i].dlsch_sliding_cnt=0;
|
||||
phy_vars_gNB->UE_stats[i].dlsch_NAK_round0=0;
|
||||
phy_vars_gNB->UE_stats[i].dlsch_mcs_offset=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static FD_phy_scope_gnb *form_gnb[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
||||
static void *scope_thread(void *arg) {
|
||||
int ue_cnt=0;
|
||||
while (!oai_exit) {
|
||||
ue_cnt=0;
|
||||
|
||||
for(int UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
|
||||
for(int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
if ((ue_cnt<scope_enb_num_ue))
|
||||
//this function needs to be written
|
||||
phy_scope_gNB(form_gnb[CC_id][ue_cnt], RC.gNB[0][CC_id], UE_id);
|
||||
ue_cnt++;
|
||||
}
|
||||
}
|
||||
sleep(1);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FD_stats_form * create_form_stats_form( void ) {
|
||||
FL_OBJECT *obj;
|
||||
FD_stats_form *fdui = fl_malloc( sizeof *fdui );
|
||||
fdui->vdata = fdui->cdata = NULL;
|
||||
fdui->ldata = 0;
|
||||
fdui->stats_form = fl_bgn_form( FL_NO_BOX, 1115, 900 );
|
||||
obj = fl_add_box( FL_UP_BOX, 0, 0, 1115, 900, "" );
|
||||
//fdui->stats_text = obj = fl_add_text( FL_NORMAL_TEXT, 60, 50, 1000, 810, "test" );
|
||||
//fl_set_object_lsize( obj, FL_TINY_SIZE );
|
||||
fdui->stats_text = obj = fl_add_browser( FL_NORMAL_BROWSER, 60, 50, 1000, 810, "test" );
|
||||
fl_set_browser_fontsize(obj,FL_TINY_SIZE);
|
||||
fdui->stats_button = obj = fl_add_button( FL_PUSH_BUTTON, 60, 10, 130, 30, "Reset Stats" );
|
||||
fl_set_object_lalign( obj, FL_ALIGN_CENTER );
|
||||
fl_set_object_color( obj, FL_GREEN, FL_GREEN);
|
||||
fl_end_form( );
|
||||
fdui->stats_form->fdui = fdui;
|
||||
return fdui;
|
||||
}
|
||||
|
||||
void startScope(scopeParms_t * p) {
|
||||
FD_stats_form *form_stats=NULL,*form_stats_l2=NULL;
|
||||
char title[255];
|
||||
fl_initialize (p->argc, p->argv, NULL, 0, 0);
|
||||
form_stats_l2 = create_form_stats_form();
|
||||
fl_show_form (form_stats_l2->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "l2 stats");
|
||||
form_stats = create_form_stats_form();
|
||||
fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
|
||||
|
||||
for(int UE_id=0; UE_id<scope_enb_num_ue; UE_id++) {
|
||||
for(int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
form_gnb[CC_id][UE_id] = create_phy_scope_gnb();
|
||||
sprintf (title, "LTE UL SCOPE eNB for CC_id %d, UE %d",CC_id,UE_id);
|
||||
fl_show_form (form_gnb[CC_id][UE_id]->phy_scope_gnb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
|
||||
} // CC_id
|
||||
} // UE_id
|
||||
|
||||
pthread_t forms_thread;
|
||||
threadCreate(&forms_thread, scope_thread, NULL, "scope", -1, OAI_PRIORITY_RT_LOW);
|
||||
}
|
||||
|
||||
@@ -21,19 +21,24 @@
|
||||
|
||||
/* Header file generated by fdesign on Tue Nov 13 09:42:50 2012 */
|
||||
|
||||
#ifndef FD_lte_scope_h_
|
||||
#define FD_lte_scope_h_
|
||||
|
||||
#ifndef FD_nr_scope_h_
|
||||
#define FD_nr_scope_h_
|
||||
#include <simple_executable.h>
|
||||
#include <common/utils/system.h>
|
||||
#include <openairinterface5g_limits.h>
|
||||
#include <openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h>
|
||||
#include "common/ran_context.h"
|
||||
#include <openair1/PHY/defs_gNB.h>
|
||||
#include <nr-softmodem.h>
|
||||
#include <forms.h>
|
||||
//#include "PHY/defs_eNB.h"
|
||||
//#include "PHY/defs_UE.h"
|
||||
#include "PHY/defs_gNB.h"
|
||||
//#include "PHY/defs_nrUE.h"
|
||||
//#include "PHY/impl_defs_top.h"
|
||||
#include "PHY/defs_nr_UE.h"
|
||||
|
||||
|
||||
/* Forms and Objects */
|
||||
typedef struct {
|
||||
FL_FORM * lte_phy_scope_enb;
|
||||
FL_FORM * phy_scope_gnb;
|
||||
FL_OBJECT * rxsig_t;
|
||||
FL_OBJECT * chest_f;
|
||||
FL_OBJECT * chest_t;
|
||||
@@ -43,10 +48,10 @@ typedef struct {
|
||||
FL_OBJECT * pusch_llr;
|
||||
FL_OBJECT * pusch_tput;
|
||||
FL_OBJECT * button_0;
|
||||
} FD_lte_phy_scope_enb;
|
||||
} FD_phy_scope_gnb;
|
||||
|
||||
typedef struct {
|
||||
FL_FORM * lte_phy_scope_ue;
|
||||
FL_FORM * phy_scope_nrue;
|
||||
FL_OBJECT * rxsig_t;
|
||||
FL_OBJECT * chest_f;
|
||||
FL_OBJECT * chest_t;
|
||||
@@ -61,24 +66,22 @@ typedef struct {
|
||||
FL_OBJECT * pdsch_tput;
|
||||
FL_OBJECT * button_0;
|
||||
|
||||
} FD_lte_phy_scope_ue;
|
||||
} FD_phy_scope_nrue;
|
||||
|
||||
FD_lte_phy_scope_enb * create_lte_phy_scope_enb( void );
|
||||
FD_lte_phy_scope_ue * create_lte_phy_scope_ue( void );
|
||||
extern unsigned char scope_enb_num_ue;
|
||||
FD_phy_scope_gnb * create_phy_scope_gnb( void );
|
||||
FD_phy_scope_nrue * create_phy_scope_nrue( void );
|
||||
|
||||
/*
|
||||
void phy_scope_eNB(FD_lte_phy_scope_enb *form,
|
||||
PHY_VARS_gNB *phy_vars_enb,
|
||||
|
||||
void phy_scope_gNB(FD_phy_scope_gnb *form,
|
||||
PHY_VARS_gNB *phy_vars_gnb,
|
||||
int UE_id);
|
||||
*/
|
||||
|
||||
void phy_scope_UE(FD_lte_phy_scope_ue *form,
|
||||
|
||||
void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
||||
PHY_VARS_NR_UE *phy_vars_ue,
|
||||
int eNB_id,
|
||||
int UE_id,
|
||||
uint8_t subframe);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* FD_lte_scope_h_ */
|
||||
extern RAN_CONTEXT_t RC;
|
||||
#endif
|
||||
|
||||
@@ -139,7 +139,7 @@ static inline void* malloc16_clear( size_t size )
|
||||
#include <pthread.h>
|
||||
|
||||
#include "targets/ARCH/COMMON/common_lib.h"
|
||||
#include "targets/COMMON/openairinterface5g_limits.h"
|
||||
#include "openairinterface5g_limits.h"
|
||||
|
||||
#define NUM_DCI_MAX_NB_IoT 32
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
#include "TOOLS/tools_defs.h"
|
||||
|
||||
#include "targets/COMMON/openairinterface5g_limits.h"
|
||||
#include "openairinterface5g_limits.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
|
||||
#include "types.h"
|
||||
|
||||
@@ -497,8 +497,8 @@ typedef struct RRU_config_s {
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
#include "targets/ARCH/COMMON/common_lib.h"
|
||||
#include "targets/COMMON/openairinterface5g_limits.h"
|
||||
#include "common_lib.h"
|
||||
#include "openairinterface5g_limits.h"
|
||||
|
||||
|
||||
#define NUMBER_OF_SUBBANDS_MAX 13
|
||||
|
||||
@@ -40,16 +40,9 @@ extern int number_of_cards;
|
||||
|
||||
extern short conjugate[8],conjugate2[8];
|
||||
|
||||
#ifndef OCP_FRAMEWORK
|
||||
//extern PHY_VARS_eNB ***PHY_vars_eNB_g;
|
||||
extern RAN_CONTEXT_t RC;
|
||||
extern LTE_DL_FRAME_PARMS *lte_frame_parms_g;
|
||||
#else
|
||||
#define MAX_UE 10
|
||||
#define MAX_eNB 20
|
||||
|
||||
extern PHY_VARS_eNB * PHY_vars_eNB_g[MAX_eNB][MAX_NUM_CCs];
|
||||
#endif
|
||||
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
extern short primary_synch0[144];
|
||||
extern short primary_synch1[144];
|
||||
|
||||
@@ -38,15 +38,7 @@ extern short conjugate[8],conjugate2[8];
|
||||
extern int number_of_cards;
|
||||
|
||||
|
||||
#ifndef OCP_FRAMEWORK
|
||||
extern PHY_VARS_NR_UE ***PHY_vars_UE_g;
|
||||
extern NR_DL_FRAME_PARMS *lte_frame_parms_g;
|
||||
#else
|
||||
#define MAX_UE 10
|
||||
#define MAX_eNB 20
|
||||
|
||||
extern PHY_VARS_NR_UE * PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs];
|
||||
#endif
|
||||
|
||||
extern short primary_synch0[144];
|
||||
extern short primary_synch1[144];
|
||||
|
||||
@@ -38,15 +38,8 @@ extern int number_of_cards;
|
||||
|
||||
extern short conjugate[8],conjugate2[8];
|
||||
|
||||
#ifndef OCP_FRAMEWORK
|
||||
extern PHY_VARS_UE ***PHY_vars_UE_g;
|
||||
extern LTE_DL_FRAME_PARMS *lte_frame_parms_g;
|
||||
#else
|
||||
#define MAX_UE 10
|
||||
#define MAX_eNB 20
|
||||
|
||||
extern PHY_VARS_UE * PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs];
|
||||
#endif
|
||||
extern PHY_VARS_UE ***PHY_vars_UE_g;
|
||||
|
||||
extern short primary_synch0[144];
|
||||
extern short primary_synch1[144];
|
||||
|
||||
+2
-11
@@ -41,20 +41,11 @@ int16_t *primary_synch2_time;
|
||||
#include "PHY/LTE_TRANSPORT/transport_vars.h"
|
||||
#include "PHY/MODULATION/modulation_vars.h"
|
||||
|
||||
//PHY_VARS *PHY_vars;
|
||||
#ifndef OCP_FRAMEWORK
|
||||
|
||||
|
||||
PHY_VARS_UE ***PHY_vars_UE_g;
|
||||
RAN_CONTEXT_t RC;
|
||||
|
||||
//PHY_VARS_eNB ***PHY_vars_eNB_g;
|
||||
//PHY_VARS_RN **PHY_vars_RN_g;
|
||||
LTE_DL_FRAME_PARMS *lte_frame_parms_g;
|
||||
#else
|
||||
PHY_VARS_UE * PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs]={NULL};
|
||||
PHY_VARS_eNB * PHY_vars_eNB_g[MAX_eNB][MAX_NUM_CCs]={NULL};
|
||||
#endif
|
||||
|
||||
|
||||
unsigned short rev[2048],rev_times4[8192],rev_half[1024];
|
||||
unsigned short rev256[256],rev512[512],rev1024[1024],rev4096[4096],rev2048[2048],rev8192[8192];
|
||||
|
||||
|
||||
@@ -40,16 +40,10 @@ int16_t *primary_synch2_time;
|
||||
|
||||
//#include "PHY/CODING/coding_vars.h"
|
||||
|
||||
//PHY_VARS *PHY_vars;
|
||||
#ifndef OCP_FRAMEWORK
|
||||
|
||||
|
||||
PHY_VARS_NR_UE ***PHY_vars_UE_g;
|
||||
PHY_VARS_eNB ***PHY_vars_eNB_g;
|
||||
NR_DL_FRAME_PARMS *lte_frame_parms_g;
|
||||
#else
|
||||
PHY_VARS_NR_UE * PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs]={NULL};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
unsigned short rev[2048],rev_times4[8192],rev_half[1024];
|
||||
unsigned short rev256[256],rev512[512],rev1024[1024],rev4096[4096],rev2048[2048],rev8192[8192];
|
||||
|
||||
@@ -37,17 +37,7 @@ int16_t *primary_synch0_time;
|
||||
int16_t *primary_synch1_time;
|
||||
int16_t *primary_synch2_time;
|
||||
|
||||
|
||||
|
||||
//PHY_VARS *PHY_vars;
|
||||
#ifndef OCP_FRAMEWORK
|
||||
PHY_VARS_UE ***PHY_vars_UE_g;
|
||||
LTE_DL_FRAME_PARMS *lte_frame_parms_g;
|
||||
#else
|
||||
PHY_VARS_UE *PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs]= {NULL};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
unsigned short rev[2048],rev_times4[8192],rev_half[1024];
|
||||
unsigned short rev256[256],rev512[512],rev1024[1024],rev4096[4096],rev2048[2048],rev8192[8192];
|
||||
|
||||
@@ -32,8 +32,6 @@ typedef struct {
|
||||
//pthread_t pthread_slot0_dl_processing;
|
||||
pthread_t pthread_slot1_dl_processing;
|
||||
/// pthread attributes for fep_slot1 processing thread
|
||||
// pthread_attr_t attr_slot0_dl_processing;
|
||||
pthread_attr_t attr_slot1_dl_processing;
|
||||
/// condition variable for UE fep_slot1 thread;
|
||||
//pthread_cond_t cond_slot0_dl_processing;
|
||||
pthread_cond_t cond_slot1_dl_processing;
|
||||
@@ -46,8 +44,6 @@ typedef struct {
|
||||
//pthread_t pthread_slot0_dl_processing;
|
||||
pthread_t pthread_dlsch_td;
|
||||
/// pthread attributes for fep_slot1 processing thread
|
||||
// pthread_attr_t attr_slot0_dl_processing;
|
||||
pthread_attr_t attr_dlsch_td;
|
||||
/// condition variable for UE fep_slot1 thread;
|
||||
//pthread_cond_t cond_slot0_dl_processing;
|
||||
pthread_cond_t cond_dlsch_td;
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "nfapi/oai_integration/vendor_ext.h"
|
||||
#include "fapi_l1.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
#include <common/utils/system.h>
|
||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||
|
||||
#include "assertions.h"
|
||||
@@ -1351,12 +1352,11 @@ extern void *td_thread (void *);
|
||||
void init_td_thread(PHY_VARS_eNB *eNB) {
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
proc->tdp.eNB = eNB;
|
||||
proc->instance_cnt_td = -1;
|
||||
pthread_attr_init( &proc->attr_td);
|
||||
pthread_mutex_init( &proc->mutex_td, NULL);
|
||||
pthread_cond_init( &proc->cond_td, NULL);
|
||||
pthread_create(&proc->pthread_td, &proc->attr_td, td_thread, (void *)&proc->tdp);
|
||||
proc->instance_cnt_td = -1;
|
||||
|
||||
threadCreate(&proc->pthread_td, td_thread, (void*)&proc->tdp, "TD", -1, OAI_PRIORITY_RT);
|
||||
}
|
||||
|
||||
void kill_td_thread(PHY_VARS_eNB *eNB) {
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
proc->instance_cnt_td = 0;
|
||||
@@ -1368,20 +1368,23 @@ void kill_td_thread(PHY_VARS_eNB *eNB) {
|
||||
|
||||
extern void *te_thread (void *);
|
||||
|
||||
void init_te_thread(PHY_VARS_eNB *eNB) {
|
||||
void init_te_thread(PHY_VARS_eNB *eNB)
|
||||
{
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
|
||||
for(int i=0; i<3 ; i++) {
|
||||
proc->tep[i].eNB = eNB;
|
||||
proc->tep[i].instance_cnt_te = -1;
|
||||
pthread_mutex_init( &proc->tep[i].mutex_te, NULL);
|
||||
pthread_cond_init( &proc->tep[i].cond_te, NULL);
|
||||
pthread_attr_init( &proc->tep[i].attr_te);
|
||||
proc->tep[i].instance_cnt_te = -1;
|
||||
|
||||
LOG_I(PHY,"Creating te_thread %d\n",i);
|
||||
pthread_create(&proc->tep[i].pthread_te, &proc->tep[i].attr_te, te_thread, (void *)&proc->tep[i]);
|
||||
char txt[128];
|
||||
sprintf(txt,"TE_%d", i);
|
||||
threadCreate(&proc->tep[i].pthread_te, te_thread, (void*)&proc->tep[i], txt, -1, OAI_PRIORITY_RT);
|
||||
}
|
||||
}
|
||||
void kill_te_thread(PHY_VARS_eNB *eNB) {
|
||||
|
||||
void kill_te_thread(PHY_VARS_eNB *eNB)
|
||||
{
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
|
||||
for(int i=0; i<3 ; i++) {
|
||||
@@ -1393,7 +1396,11 @@ void kill_te_thread(PHY_VARS_eNB *eNB) {
|
||||
}
|
||||
}
|
||||
|
||||
void fill_rx_indication(PHY_VARS_eNB *eNB,int UE_id,int frame,int subframe) {
|
||||
void fill_rx_indication(PHY_VARS_eNB *eNB,
|
||||
int UE_id,
|
||||
int frame,
|
||||
int subframe)
|
||||
{
|
||||
nfapi_rx_indication_pdu_t *pdu;
|
||||
int timing_advance_update;
|
||||
int sync_pos;
|
||||
|
||||
@@ -44,12 +44,11 @@
|
||||
|
||||
|
||||
#include "assertions.h"
|
||||
#include "common/utils/system.h"
|
||||
#include "msc.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "targets/RT/USER/rt_wrapper.h"
|
||||
|
||||
extern int oai_exit;
|
||||
|
||||
|
||||
@@ -131,17 +130,8 @@ static void *feptx_thread(void *param) {
|
||||
|
||||
RU_t *ru = (RU_t *)param;
|
||||
RU_proc_t *proc = &ru->proc;
|
||||
cpu_set_t cpuset;
|
||||
CPU_ZERO(&cpuset);
|
||||
|
||||
thread_top_init("feptx_thread",1,85000,120000,500000);
|
||||
pthread_setname_np( pthread_self(),"feptx processing");
|
||||
LOG_I(PHY,"thread feptx created id=%ld\n", syscall(__NR_gettid));
|
||||
//CPU_SET(6, &cpuset);
|
||||
//pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
|
||||
//wait_sync("feptx_thread");
|
||||
|
||||
|
||||
LOG_I(PHY,"thread feptx created \n");
|
||||
|
||||
while (!oai_exit) {
|
||||
|
||||
@@ -162,8 +152,6 @@ static void *feptx_thread(void *param) {
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
@@ -438,16 +426,6 @@ static void *fep_thread(void *param) {
|
||||
RU_t *ru = (RU_t *)param;
|
||||
RU_proc_t *proc = &ru->proc;
|
||||
|
||||
thread_top_init("fep_thread",1,100000,120000,5000000);
|
||||
pthread_setname_np( pthread_self(),"fep processing");
|
||||
LOG_I(PHY,"thread fep created id=%ld\n", syscall(__NR_gettid));
|
||||
|
||||
cpu_set_t cpuset;
|
||||
CPU_ZERO(&cpuset);
|
||||
//CPU_SET(2, &cpuset);
|
||||
//pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
|
||||
//wait_sync("fep_thread");
|
||||
|
||||
while (!oai_exit) {
|
||||
|
||||
if (wait_on_condition(&proc->mutex_fep,&proc->cond_fep,&proc->instance_cnt_fep,"fep thread")<0) break;
|
||||
@@ -483,7 +461,7 @@ void init_feptx_thread(RU_t *ru,pthread_attr_t *attr_feptx) {
|
||||
pthread_mutex_init( &proc->mutex_feptx, NULL);
|
||||
pthread_cond_init( &proc->cond_feptx, NULL);
|
||||
|
||||
pthread_create(&proc->pthread_feptx, attr_feptx, feptx_thread, (void*)ru);
|
||||
threadCreate(&proc->pthread_feptx, feptx_thread, (void*)ru, "feptx", -1, OAI_PRIORITY_RT);
|
||||
|
||||
|
||||
}
|
||||
@@ -497,7 +475,7 @@ void init_fep_thread(RU_t *ru,pthread_attr_t *attr_fep) {
|
||||
pthread_mutex_init( &proc->mutex_fep, NULL);
|
||||
pthread_cond_init( &proc->cond_fep, NULL);
|
||||
|
||||
pthread_create(&proc->pthread_fep, attr_fep, fep_thread, (void*)ru);
|
||||
threadCreate(&proc->pthread_fep, fep_thread, (void*)ru, "fep", -1, OAI_PRIORITY_RT);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "LAYER2/MAC/mac_extern.h"
|
||||
#include "LAYER2/MAC/mac.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
#include "common/utils/system.h"
|
||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||
|
||||
#include "T.h"
|
||||
@@ -49,9 +50,6 @@
|
||||
#include "msc.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "targets/RT/USER/rt_wrapper.h"
|
||||
|
||||
// RU OFDM Modulator gNodeB
|
||||
|
||||
extern openair0_config_t openair0_cfg[MAX_CARDS];
|
||||
@@ -179,7 +177,6 @@ static void *nr_feptx_thread(void *param) {
|
||||
RU_t *ru = (RU_t *)param;
|
||||
RU_proc_t *proc = &ru->proc;
|
||||
|
||||
thread_top_init("nr_feptx_thread",0,870000,1000000,1000000);
|
||||
|
||||
while (!oai_exit) {
|
||||
|
||||
@@ -196,7 +193,7 @@ static void *nr_feptx_thread(void *param) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
void nr_init_feptx_thread(RU_t *ru,pthread_attr_t *attr_feptx) {
|
||||
void nr_init_feptx_thread(RU_t *ru) {
|
||||
|
||||
RU_proc_t *proc = &ru->proc;
|
||||
|
||||
@@ -205,7 +202,7 @@ void nr_init_feptx_thread(RU_t *ru,pthread_attr_t *attr_feptx) {
|
||||
pthread_mutex_init( &proc->mutex_feptx, NULL);
|
||||
pthread_cond_init( &proc->cond_feptx, NULL);
|
||||
|
||||
pthread_create(&proc->pthread_feptx, attr_feptx, nr_feptx_thread, (void*)ru);
|
||||
threadCreate(&proc->pthread_feptx, nr_feptx_thread, (void*)ru, "feptx", -1, OAI_PRIORITY_RT);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -38,10 +38,13 @@ nr_slot_t nr_slot_select (nfapi_nr_config_request_t *cfg, unsigned char slot);
|
||||
void nr_set_ssb_first_subcarrier(nfapi_nr_config_request_t *cfg, NR_DL_FRAME_PARMS *fp);
|
||||
void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, gNB_L1_rxtx_proc_t *proc, int do_meas);
|
||||
void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot);
|
||||
void nr_init_feptx_thread(RU_t *ru,pthread_attr_t *attr_feptx);
|
||||
void nr_init_feptx_thread(RU_t *ru);
|
||||
void nr_feptx_ofdm(RU_t *ru);
|
||||
void nr_feptx_ofdm_2thread(RU_t *ru);
|
||||
void nr_feptx0(RU_t *ru,int first_symbol, int num_symbols);
|
||||
void fep_full(RU_t *ru);
|
||||
void feptx_prec(RU_t *ru);
|
||||
int nr_phy_init_RU(RU_t *ru);
|
||||
|
||||
void nr_configure_css_dci_initial(nfapi_nr_dl_config_pdcch_parameters_rel15_t* pdcch_params,
|
||||
nr_scs_e scs_common,
|
||||
|
||||
@@ -3155,36 +3155,42 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
|
||||
/*
|
||||
* This is the NR part
|
||||
*/
|
||||
|
||||
if ((dci_alloc_rx[i].format == format0_0))
|
||||
if ((dci_alloc_rx[i].format == format1_0) &&
|
||||
(dci_alloc_rx[i].rnti != crc_scrambled_values[_P_RNTI_]) &&
|
||||
(dci_alloc_rx[i].rnti != crc_scrambled_values[_SI_RNTI_]) &&
|
||||
(dci_alloc_rx[i].rnti != crc_scrambled_values[_RA_RNTI_])) ue->dlsch_received[eNB_id]++;
|
||||
|
||||
if ((dci_alloc_rx[i].rnti == crc_scrambled_values[_SI_RNTI_]) && (dci_alloc_rx[i].format == format1_0)) ue->dlsch_SI_received[eNB_id]++;
|
||||
if ((dci_alloc_rx[i].rnti == crc_scrambled_values[_P_RNTI_]) && (dci_alloc_rx[i].format == format1_0)) ue->dlsch_p_received[eNB_id]++;
|
||||
if ((dci_alloc_rx[i].rnti == crc_scrambled_values[_RA_RNTI_]) && (dci_alloc_rx[i].format == format1_0)) ue->dlsch_ra_received[eNB_id]++;
|
||||
if ((dci_alloc_rx[i].format == format2_0)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format2_1)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format2_2)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format2_3)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format0_1)){ // This format not implemented at a first time. FIXME
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format1_1)){ // This format not implemented at a first time. FIXME
|
||||
}
|
||||
|
||||
|
||||
if ((dci_alloc_rx[i].format == format0_0)){
|
||||
}
|
||||
|
||||
if (dci_alloc_rx[i].format == format1_0) {
|
||||
if ((dci_alloc_rx[i].rnti != crc_scrambled_values[_P_RNTI_]) &&
|
||||
(dci_alloc_rx[i].rnti != crc_scrambled_values[_SI_RNTI_]) &&
|
||||
(dci_alloc_rx[i].rnti != crc_scrambled_values[_RA_RNTI_]))
|
||||
ue->dlsch_received[eNB_id]++;
|
||||
|
||||
if (dci_alloc_rx[i].rnti == crc_scrambled_values[_SI_RNTI_])
|
||||
ue->dlsch_SI_received[eNB_id]++;
|
||||
if (dci_alloc_rx[i].rnti == crc_scrambled_values[_P_RNTI_])
|
||||
ue->dlsch_p_received[eNB_id]++;
|
||||
if (dci_alloc_rx[i].rnti == crc_scrambled_values[_RA_RNTI_])
|
||||
ue->dlsch_ra_received[eNB_id]++;
|
||||
}
|
||||
|
||||
if ((dci_alloc_rx[i].format == format2_0)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format2_1)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format2_2)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format2_3)){
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format0_1)){ // This format not implemented at a first time. FIXME
|
||||
}
|
||||
if ((dci_alloc_rx[i].format == format1_1)){ // This format not implemented at a first time. FIXME
|
||||
}
|
||||
|
||||
uint8_t status=0;
|
||||
|
||||
|
||||
LOG_D(PHY,"<-NR_PDCCH_PHY_PROCEDURES_UE (nr_ue_pdcch_procedures)-> dci_format=%d, rnti=%d, dci_length=%d, dci_pdu[0]=0x%lx, dci_pdu[1]=0x%lx\n",dci_alloc_rx[i].format,dci_alloc_rx[i].rnti,dci_alloc_rx[i].dci_length,dci_alloc_rx[i].dci_pdu[0],dci_alloc_rx[i].dci_pdu[1]);
|
||||
|
||||
|
||||
memset(&ue->dci_ind.dci_list[i].dci,0,sizeof(fapi_nr_dci_pdu_rel15_t));
|
||||
|
||||
|
||||
ue->dci_ind.dci_list[i].rnti = dci_alloc_rx[i].rnti;
|
||||
ue->dci_ind.dci_list[i].dci_format = dci_alloc_rx[i].format;
|
||||
ue->dci_ind.dci_list[i].n_CCE = dci_alloc_rx[i].firstCCE;
|
||||
@@ -3203,15 +3209,15 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
|
||||
pdcch_vars2->n_RB_BWP[nb_searchspace_active],
|
||||
pdcch_vars2->n_RB_BWP[nb_searchspace_active],
|
||||
crc_scrambled_values);
|
||||
|
||||
|
||||
if(status == 0) {
|
||||
LOG_W(PHY,"<-NR_PDCCH_PHY_PROCEDURES_UE (nr_ue_pdcch_procedures)-> bad DCI %d !!! \n",dci_alloc_rx[i].format);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
LOG_D(PHY,"<-NR_PDCCH_PHY_PROCEDURES_UE (nr_ue_pdcch_procedures)-> Ending function nr_extract_dci_info()\n");
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
nr_generate_ue_ul_dlsch_params_from_dci(ue,
|
||||
eNB_id,
|
||||
frame_rx,
|
||||
|
||||
Reference in New Issue
Block a user