Pushing changes before incorporating new merges into develop and develop-nr
This commit is contained in:
@@ -2745,7 +2745,7 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr
|
|||||||
add_executable(${myExe}
|
add_executable(${myExe}
|
||||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
||||||
${OPENAIR_DIR}/common/utils/backtrace.c
|
${OPENAIR_DIR}/common/utils/backtrace.c
|
||||||
${OPENAIR_DIR}/common/utils/system.c
|
${OPENAIR_DIR}/common/utils/system.c
|
||||||
${XFORMS_SOURCE}
|
${XFORMS_SOURCE}
|
||||||
${T_SOURCE}
|
${T_SOURCE}
|
||||||
${CONFIG_SOURCES}
|
${CONFIG_SOURCES}
|
||||||
|
|||||||
+9
-6
@@ -87,11 +87,15 @@
|
|||||||
unsigned short config_frames[4] = {2,9,11,13};
|
unsigned short config_frames[4] = {2,9,11,13};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* these variables have to be defined before including ENB_APP/enb_paramdef.h */
|
/* these variables have to be defined before including ENB_APP/enb_paramdef.h and GNB_APP/gnb_paramdef.h */
|
||||||
static int DEFBANDS[] = {7};
|
static int DEFBANDS[] = {7};
|
||||||
static int DEFENBS[] = {0};
|
static int DEFENBS[] = {0};
|
||||||
|
|
||||||
|
static int DEFNRBANDS[] = {7};
|
||||||
|
static int DEFGNBS[] = {0};
|
||||||
|
|
||||||
#include "ENB_APP/enb_paramdef.h"
|
#include "ENB_APP/enb_paramdef.h"
|
||||||
|
#include "GNB_APP/gnb_paramdef.h"
|
||||||
#include "common/config/config_userapi.h"
|
#include "common/config/config_userapi.h"
|
||||||
|
|
||||||
#ifndef OPENAIR2
|
#ifndef OPENAIR2
|
||||||
@@ -1660,7 +1664,7 @@ void init_RU_proc(RU_t *ru) {
|
|||||||
if (opp_enabled == 1) threadCreate(&ru->ru_stats_thread,ru_stats_thread,(void *)ru, "emulateRF", -1, OAI_PRIORITY_RT_LOW);
|
if (opp_enabled == 1) threadCreate(&ru->ru_stats_thread,ru_stats_thread,(void *)ru, "emulateRF", -1, OAI_PRIORITY_RT_LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kill_RU_proc(int inst) {
|
void kill_NR_RU_proc(int inst) {
|
||||||
RU_t *ru = RC.ru[inst];
|
RU_t *ru = RC.ru[inst];
|
||||||
RU_proc_t *proc = &ru->proc;
|
RU_proc_t *proc = &ru->proc;
|
||||||
pthread_mutex_lock(&proc->mutex_FH);
|
pthread_mutex_lock(&proc->mutex_FH);
|
||||||
@@ -2136,7 +2140,7 @@ void init_RU(char *rf_config_file) {
|
|||||||
void stop_RU(int nb_ru) {
|
void stop_RU(int nb_ru) {
|
||||||
for (int inst = 0; inst < nb_ru; inst++) {
|
for (int inst = 0; inst < nb_ru; inst++) {
|
||||||
LOG_I(PHY, "Stopping RU %d processing threads\n", inst);
|
LOG_I(PHY, "Stopping RU %d processing threads\n", inst);
|
||||||
kill_RU_proc(inst);
|
kill_NR_RU_proc(inst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2144,11 +2148,10 @@ void stop_RU(int nb_ru) {
|
|||||||
/* --------------------------------------------------------*/
|
/* --------------------------------------------------------*/
|
||||||
/* from here function to use configuration module */
|
/* from here function to use configuration module */
|
||||||
void RCconfig_RU(void) {
|
void RCconfig_RU(void) {
|
||||||
int j = 0;
|
int i = 0, j = 0;
|
||||||
int i = 0;
|
|
||||||
paramdef_t RUParams[] = GNBRUPARAMS_DESC;
|
paramdef_t RUParams[] = GNBRUPARAMS_DESC;
|
||||||
paramlist_def_t RUParamList = {CONFIG_STRING_RU_LIST,NULL,0};
|
paramlist_def_t RUParamList = {CONFIG_STRING_RU_LIST,NULL,0};
|
||||||
config_getlist( &RUParamList,RUParams,sizeof(RUParams)/sizeof(paramdef_t), NULL);
|
config_getlist( &RUParamList, RUParams, sizeof(RUParams)/sizeof(paramdef_t), NULL);
|
||||||
|
|
||||||
if ( RUParamList.numelt > 0) {
|
if ( RUParamList.numelt > 0) {
|
||||||
RC.ru = (RU_t **)malloc(RC.nb_RU*sizeof(RU_t *));
|
RC.ru = (RU_t **)malloc(RC.nb_RU*sizeof(RU_t *));
|
||||||
|
|||||||
@@ -48,12 +48,12 @@
|
|||||||
#include "PHY/phy_vars.h"
|
#include "PHY/phy_vars.h"
|
||||||
#include "SCHED/sched_common_vars.h"
|
#include "SCHED/sched_common_vars.h"
|
||||||
#include "LAYER2/MAC/mac_vars.h"
|
#include "LAYER2/MAC/mac_vars.h"
|
||||||
|
|
||||||
#include "LAYER2/MAC/mac.h"
|
#include "LAYER2/MAC/mac.h"
|
||||||
#include "LAYER2/MAC/mac_proto.h"
|
#include "LAYER2/MAC/mac_proto.h"
|
||||||
#include "RRC/LTE/rrc_vars.h"
|
#include "RRC/LTE/rrc_vars.h"
|
||||||
#include "PHY_INTERFACE/phy_interface_vars.h"
|
#include "PHY_INTERFACE/phy_interface_vars.h"
|
||||||
#include "gnb_config.h"
|
#include "gnb_config.h"
|
||||||
|
#include "SIMULATION/TOOLS/sim.h"
|
||||||
|
|
||||||
#ifdef SMBV
|
#ifdef SMBV
|
||||||
#include "PHY/TOOLS/smbv.h"
|
#include "PHY/TOOLS/smbv.h"
|
||||||
@@ -91,7 +91,7 @@ unsigned short config_frames[4] = {2,9,11,13};
|
|||||||
// current status is that every UE has a DL scope for a SINGLE eNB (gnb_id=0)
|
// current status is that every UE has a DL scope for a SINGLE eNB (gnb_id=0)
|
||||||
// at eNB 0, an UL scope for every UE
|
// at eNB 0, an UL scope for every UE
|
||||||
|
|
||||||
FD_phy_scope_gnb *form_gnb[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
FD_phy_scope_gnb *form_gnb[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
||||||
FD_stats_form *form_stats=NULL,*form_stats_l2=NULL;
|
FD_stats_form *form_stats=NULL,*form_stats_l2=NULL;
|
||||||
char title[255];
|
char title[255];
|
||||||
unsigned char scope_enb_num_ue = 2;
|
unsigned char scope_enb_num_ue = 2;
|
||||||
@@ -144,11 +144,11 @@ FILE *input_fd=NULL;
|
|||||||
|
|
||||||
|
|
||||||
#if MAX_NUM_CCs == 1
|
#if MAX_NUM_CCs == 1
|
||||||
rx_gain_t rx_gain_mode[MAX_NUM_CCs][4] = {{max_gain,max_gain,max_gain,max_gain}};
|
rx_gain_t rx_gain_mode[MAX_NUM_CCs][4] = {{max_gain,max_gain,max_gain,max_gain}};
|
||||||
double tx_gain[MAX_NUM_CCs][4] = {{20,0,0,0}};
|
double tx_gain[MAX_NUM_CCs][4] = {{20,0,0,0}};
|
||||||
double rx_gain[MAX_NUM_CCs][4] = {{110,0,0,0}};
|
double rx_gain[MAX_NUM_CCs][4] = {{110,0,0,0}};
|
||||||
#else
|
#else
|
||||||
rx_gain_t rx_gain_mode[MAX_NUM_CCs][4] = {{max_gain,max_gain,max_gain,max_gain},{max_gain,max_gain,max_gain,max_gain}};
|
rx_gain_t rx_gain_mode[MAX_NUM_CCs][4] = {{max_gain,max_gain,max_gain,max_gain},{max_gain,max_gain,max_gain,max_gain}};
|
||||||
double tx_gain[MAX_NUM_CCs][4] = {{20,0,0,0},{20,0,0,0}};
|
double tx_gain[MAX_NUM_CCs][4] = {{20,0,0,0},{20,0,0,0}};
|
||||||
double rx_gain[MAX_NUM_CCs][4] = {{110,0,0,0},{20,0,0,0}};
|
double rx_gain[MAX_NUM_CCs][4] = {{110,0,0,0},{20,0,0,0}};
|
||||||
#endif
|
#endif
|
||||||
@@ -574,8 +574,8 @@ static void get_options(void) {
|
|||||||
uint32_t online_log_messages;
|
uint32_t online_log_messages;
|
||||||
uint32_t glog_level, glog_verbosity;
|
uint32_t glog_level, glog_verbosity;
|
||||||
uint32_t start_telnetsrv;
|
uint32_t start_telnetsrv;
|
||||||
paramdef_t cmdline_params[] =CMDLINE_PARAMS_DESC ;
|
paramdef_t cmdline_params[] = CMDLINE_PARAMS_DESC ;
|
||||||
paramdef_t cmdline_logparams[] =CMDLINE_LOGPARAMS_DESC ;
|
paramdef_t cmdline_logparams[] = CMDLINE_LOGPARAMS_DESC ;
|
||||||
config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
|
config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
|
||||||
|
|
||||||
if (strlen(in_path) > 0) {
|
if (strlen(in_path) > 0) {
|
||||||
@@ -858,8 +858,8 @@ int stop_L1L2(module_id_t gnb_id) {
|
|||||||
terminate_task(TASK_L2L1, gnb_id);
|
terminate_task(TASK_L2L1, gnb_id);
|
||||||
LOG_I(ENB_APP, "calling kill_gNB_proc() for instance %d\n", gnb_id);
|
LOG_I(ENB_APP, "calling kill_gNB_proc() for instance %d\n", gnb_id);
|
||||||
kill_gNB_proc(gnb_id);
|
kill_gNB_proc(gnb_id);
|
||||||
LOG_I(ENB_APP, "calling kill_RU_proc() for instance %d\n", gnb_id);
|
LOG_I(ENB_APP, "calling kill_NR_RU_proc() for instance %d\n", gnb_id);
|
||||||
kill_RU_proc(gnb_id);
|
kill_NR_RU_proc(gnb_id);
|
||||||
oai_exit = 0;
|
oai_exit = 0;
|
||||||
|
|
||||||
for (int cc_id = 0; cc_id < RC.nb_nr_CC[gnb_id]; cc_id++) {
|
for (int cc_id = 0; cc_id < RC.nb_nr_CC[gnb_id]; cc_id++) {
|
||||||
|
|||||||
+33
-32
@@ -123,34 +123,35 @@
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
/* command line parameters common to eNodeB and UE */
|
/* command line parameters common to eNodeB and UE */
|
||||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
#define CMDLINE_PARAMS_DESC { \
|
#define CMDLINE_PARAMS_DESC { \
|
||||||
{"rf-config-file", CONFIG_HLP_RFCFGF, 0, strptr:(char **)&rf_config_file, defstrval:NULL, TYPE_STRING, sizeof(rf_config_file)}, \
|
{"rf-config-file", CONFIG_HLP_RFCFGF, 0, strptr:(char **)&rf_config_file, defstrval:NULL, TYPE_STRING, sizeof(rf_config_file)}, \
|
||||||
{"ulsch-max-errors", CONFIG_HLP_ULMAXE, 0, uptr:&ULSCH_max_consecutive_errors, defuintval:0, TYPE_UINT, 0}, \
|
{"ulsch-max-errors", CONFIG_HLP_ULMAXE, 0, uptr:&ULSCH_max_consecutive_errors, defuintval:0, TYPE_UINT, 0}, \
|
||||||
{"phy-test", CONFIG_HLP_PHYTST, PARAMFLAG_BOOL, iptr:&phy_test, defintval:0, TYPE_INT, 0}, \
|
{"phy-test", CONFIG_HLP_PHYTST, PARAMFLAG_BOOL, iptr:&phy_test, defintval:0, TYPE_INT, 0}, \
|
||||||
{"usim-test", CONFIG_HLP_USIM, PARAMFLAG_BOOL, u8ptr:&usim_test, defintval:0, TYPE_UINT8, 0}, \
|
{"usim-test", CONFIG_HLP_USIM, PARAMFLAG_BOOL, u8ptr:&usim_test, defintval:0, TYPE_UINT8, 0}, \
|
||||||
{"mmapped-dma", CONFIG_HLP_DMAMAP, PARAMFLAG_BOOL, uptr:&mmapped_dma, defintval:0, TYPE_INT, 0}, \
|
{"mmapped-dma", CONFIG_HLP_DMAMAP, PARAMFLAG_BOOL, uptr:&mmapped_dma, defintval:0, TYPE_INT, 0}, \
|
||||||
{"external-clock", CONFIG_HLP_EXCCLK, PARAMFLAG_BOOL, uptr:&clock_source, defintval:0, TYPE_INT, 0}, \
|
{"external-clock", CONFIG_HLP_EXCCLK, PARAMFLAG_BOOL, uptr:&clock_source, defintval:0, TYPE_INT, 0}, \
|
||||||
{"wait-for-sync", NULL, PARAMFLAG_BOOL, iptr:&wait_for_sync, defintval:0, TYPE_INT, 0}, \
|
{"wait-for-sync", NULL, PARAMFLAG_BOOL, iptr:&wait_for_sync, defintval:0, TYPE_INT, 0}, \
|
||||||
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
|
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
|
||||||
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
|
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"C" , CONFIG_HLP_DLF, 0, uptr:&(downlink_frequency[0][0]), defuintval:DEFAULT_DLF, TYPE_UINT, 0}, \
|
{"C" , CONFIG_HLP_DLF, 0, uptr:&(downlink_frequency[0][0]), defuintval:DEFAULT_DLF, TYPE_UINT, 0}, \
|
||||||
{"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \
|
{"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \
|
||||||
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:(uint32_t *)&do_forms, defintval:0, TYPE_INT8, 0}, \
|
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:(uint32_t *)&do_forms, defintval:0, TYPE_INT8, 0}, \
|
||||||
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \
|
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \
|
||||||
{"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \
|
{"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \
|
||||||
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
|
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
|
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"W" , CONFIG_HLP_L2MONW, 0, strptr:(char **)&in_ip, defstrval:"127.0.0.1", TYPE_STRING, sizeof(in_ip)}, \
|
{"W" , CONFIG_HLP_L2MONW, 0, strptr:(char **)&in_ip, defstrval:"127.0.0.1", TYPE_STRING, sizeof(in_ip)}, \
|
||||||
{"P" , CONFIG_HLP_L2MONP, 0, strptr:(char **)&in_path, defstrval:"/tmp/oai_opt.pcap", TYPE_STRING, sizeof(in_path)}, \
|
{"P" , CONFIG_HLP_L2MONP, 0, strptr:(char **)&in_path, defstrval:"/tmp/oai_opt.pcap", TYPE_STRING, sizeof(in_path)}, \
|
||||||
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
|
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
|
||||||
{"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \
|
{"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \
|
||||||
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, {"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
|
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
|
||||||
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
|
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
|
||||||
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \
|
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
|
||||||
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \
|
{"parallel-config", CONFIG_HLP_PARALLEL_CMD, 0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \
|
||||||
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT,PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0} \
|
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \
|
||||||
|
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CONFIG_HLP_FLOG "Enable online log \n"
|
#define CONFIG_HLP_FLOG "Enable online log \n"
|
||||||
@@ -162,10 +163,10 @@
|
|||||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
#define CMDLINE_LOGPARAMS_DESC { \
|
#define CMDLINE_LOGPARAMS_DESC { \
|
||||||
{"R" , CONFIG_HLP_FLOG, 0, uptr:&online_log_messages, defintval:1, TYPE_INT, 0}, \
|
{"R" , CONFIG_HLP_FLOG, 0, uptr:&online_log_messages, defintval:1, TYPE_INT, 0}, \
|
||||||
{"g" , CONFIG_HLP_LOGL, 0, uptr:&glog_level, defintval:0, TYPE_UINT, 0}, \
|
{"g" , CONFIG_HLP_LOGL, 0, uptr:&glog_level, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"G" , CONFIG_HLP_LOGV, 0, uptr:&glog_verbosity, defintval:0, TYPE_UINT16, 0}, \
|
{"G" , CONFIG_HLP_LOGV, 0, uptr:&glog_verbosity, defintval:0, TYPE_UINT16, 0}, \
|
||||||
{"telnetsrv", CONFIG_HLP_TELN, PARAMFLAG_BOOL, uptr:&start_telnetsrv, defintval:0, TYPE_UINT, 0}, \
|
{"telnetsrv", CONFIG_HLP_TELN, PARAMFLAG_BOOL, uptr:&start_telnetsrv, defintval:0, TYPE_UINT, 0}, \
|
||||||
}
|
}
|
||||||
#define CMDLINE_ONLINELOG_IDX 0
|
#define CMDLINE_ONLINELOG_IDX 0
|
||||||
#define CMDLINE_GLOGLEVEL_IDX 1
|
#define CMDLINE_GLOGLEVEL_IDX 1
|
||||||
@@ -220,10 +221,10 @@ extern void stop_gNB(int);
|
|||||||
extern void kill_gNB_proc(int inst);
|
extern void kill_gNB_proc(int inst);
|
||||||
|
|
||||||
// In nr-ru.c
|
// In nr-ru.c
|
||||||
extern void init_RU(const char *);
|
extern void init_RU(char *);
|
||||||
extern void init_RU_proc(RU_t *ru);
|
extern void init_RU_proc(RU_t *ru);
|
||||||
extern void stop_RU(int nb_ru);
|
extern void stop_RU(int nb_ru);
|
||||||
extern void kill_RU_proc(int inst);
|
extern void kill_NR_RU_proc(int inst);
|
||||||
extern void set_function_spec_param(RU_t *ru);
|
extern void set_function_spec_param(RU_t *ru);
|
||||||
|
|
||||||
extern void reset_opp_meas(void);
|
extern void reset_opp_meas(void);
|
||||||
|
|||||||
@@ -105,9 +105,9 @@
|
|||||||
/// Context data structure for RX/TX portion of subframe processing
|
/// Context data structure for RX/TX portion of subframe processing
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/// index of the current UE RX/TX proc
|
/// index of the current UE RX/TX proc
|
||||||
int proc_id;
|
int proc_id;
|
||||||
/// Component Carrier index
|
/// Component Carrier index
|
||||||
uint8_t CC_id;
|
uint8_t CC_id;
|
||||||
/// timestamp transmitted to HW
|
/// timestamp transmitted to HW
|
||||||
openair0_timestamp timestamp_tx;
|
openair0_timestamp timestamp_tx;
|
||||||
/// subframe to act upon for transmission
|
/// subframe to act upon for transmission
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
#else
|
#else
|
||||||
#ifdef OPENAIR2
|
#ifdef OPENAIR2
|
||||||
#if ENABLE_RAL
|
#if ENABLE_RAL
|
||||||
#include "collection/hashtable/hashtable.h"
|
#include "common/utils/hashtable/hashtable.h"
|
||||||
#include "COMMON/ral_messages_types.h"
|
#include "COMMON/ral_messages_types.h"
|
||||||
#include "UTIL/queue.h"
|
#include "UTIL/queue.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -32,7 +32,8 @@
|
|||||||
|
|
||||||
#include "sched_nr.h"
|
#include "sched_nr.h"
|
||||||
|
|
||||||
nr_subframe_t nr_slot_select(nfapi_nr_config_request_t *cfg,unsigned char slot)
|
nr_subframe_t nr_slot_select(nfapi_nr_config_request_t *cfg,
|
||||||
|
unsigned char slot)
|
||||||
{
|
{
|
||||||
if (cfg->subframe_config.duplex_mode.value == FDD)
|
if (cfg->subframe_config.duplex_mode.value == FDD)
|
||||||
return(SF_DL);
|
return(SF_DL);
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ void nr_configure_css_dci_initial(nfapi_nr_dl_config_pdcch_parameters_rel15_t* p
|
|||||||
nr_frequency_range_e freq_range,
|
nr_frequency_range_e freq_range,
|
||||||
uint8_t rmsi_pdcch_config,
|
uint8_t rmsi_pdcch_config,
|
||||||
uint8_t ssb_idx,
|
uint8_t ssb_idx,
|
||||||
uint8_t k_ssb,
|
uint8_t k_ssb,
|
||||||
uint16_t sfn_ssb,
|
uint16_t sfn_ssb,
|
||||||
uint8_t n_ssb,
|
uint8_t n_ssb,
|
||||||
uint16_t nb_slots_per_frame,
|
uint16_t nb_slots_per_frame,
|
||||||
uint16_t N_RB);
|
uint16_t N_RB);
|
||||||
|
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ fill_dlsch_config(nfapi_dl_config_request_body_t *dl_req,
|
|||||||
uint8_t transmission_scheme,
|
uint8_t transmission_scheme,
|
||||||
uint8_t number_of_layers,
|
uint8_t number_of_layers,
|
||||||
uint8_t number_of_subbands,
|
uint8_t number_of_subbands,
|
||||||
// uint8_t codebook_index,
|
//uint8_t codebook_index,
|
||||||
uint8_t ue_category_capacity,
|
uint8_t ue_category_capacity,
|
||||||
uint8_t pa,
|
uint8_t pa,
|
||||||
uint8_t delta_power_offset_index,
|
uint8_t delta_power_offset_index,
|
||||||
@@ -628,7 +628,7 @@ int main(int argc, char **argv) {
|
|||||||
snr0 = 0;
|
snr0 = 0;
|
||||||
// num_layers = 1;
|
// num_layers = 1;
|
||||||
perfect_ce = 0;
|
perfect_ce = 0;
|
||||||
static paramdef_t options[] = {
|
/*static paramdef_t options[] = {
|
||||||
{ "awgn", "Use AWGN channel and not multipath", PARAMFLAG_BOOL, strptr:NULL, defintval:0, TYPE_INT, 0, NULL, NULL },
|
{ "awgn", "Use AWGN channel and not multipath", PARAMFLAG_BOOL, strptr:NULL, defintval:0, TYPE_INT, 0, NULL, NULL },
|
||||||
{ "Abstx", "Turns on calibration mode for abstraction.", PARAMFLAG_BOOL, iptr:&abstx, defintval:0, TYPE_INT, 0 },
|
{ "Abstx", "Turns on calibration mode for abstraction.", PARAMFLAG_BOOL, iptr:&abstx, defintval:0, TYPE_INT, 0 },
|
||||||
{ "bTDD", "Set the tdd configuration mode",0, iptr:&tdd_config, defintval:3, TYPE_INT, 0 },
|
{ "bTDD", "Set the tdd configuration mode",0, iptr:&tdd_config, defintval:3, TYPE_INT, 0 },
|
||||||
@@ -891,7 +891,371 @@ int main(int argc, char **argv) {
|
|||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
if (thread_struct.parallel_conf != PARALLEL_SINGLE_THREAD)
|
if (thread_struct.parallel_conf != PARALLEL_SINGLE_THREAD)
|
||||||
set_worker_conf("WORKER_ENABLE");
|
set_worker_conf("WORKER_ENABLE");*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int c;
|
||||||
|
while ((c = getopt (argc, argv, "ahdpZDe:Em:n:o:s:f:t:c:g:r:F:x:q:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:Pl:WXYL:")) != -1) {
|
||||||
|
switch (c) {
|
||||||
|
case 'a':
|
||||||
|
awgn_flag = 1;
|
||||||
|
channel_model = AWGN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'A':
|
||||||
|
abstx = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'b':
|
||||||
|
tdd_config=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'B':
|
||||||
|
N_RB_DL=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'c':
|
||||||
|
num_pdcch_symbols=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'C':
|
||||||
|
Nid_cell = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
dci_flag = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'D':
|
||||||
|
frame_type=TDD;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
num_rounds=1;
|
||||||
|
common_flag = 1;
|
||||||
|
TPC = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'E':
|
||||||
|
threequarter_fs=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'f':
|
||||||
|
input_snr_step= atof(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'F':
|
||||||
|
forgetting_factor = atof(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'i':
|
||||||
|
input_fd = fopen(optarg,"r");
|
||||||
|
input_file=1;
|
||||||
|
dci_flag = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'I':
|
||||||
|
input_trch_fd = fopen(optarg,"r");
|
||||||
|
input_trch_file=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'W':
|
||||||
|
two_thread_flag = 1;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
offset_mumimo_llr_drange_fix=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'm':
|
||||||
|
mcs1 = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'M':
|
||||||
|
mcs2 = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'O':
|
||||||
|
test_perf=atoi(optarg);
|
||||||
|
//print_perf =1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 't':
|
||||||
|
mcs_i = atoi(optarg);
|
||||||
|
i_mod = get_Qm(mcs_i);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
n_frames = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'o':
|
||||||
|
rx_sample_offset = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'r':
|
||||||
|
DLSCH_RB_ALLOC = atoi(optarg);
|
||||||
|
rballocset = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
snr0 = atof(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'w':
|
||||||
|
snr_int = atof(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'N':
|
||||||
|
n_ch_rlz= atof(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
extended_prefix_flag=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'g':
|
||||||
|
memcpy(channel_model_input,optarg,10);
|
||||||
|
|
||||||
|
switch((char)*optarg) {
|
||||||
|
case 'A':
|
||||||
|
channel_model=SCM_A;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'B':
|
||||||
|
channel_model=SCM_B;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'C':
|
||||||
|
channel_model=SCM_C;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'D':
|
||||||
|
channel_model=SCM_D;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'E':
|
||||||
|
channel_model=EPA;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'F':
|
||||||
|
channel_model=EVA;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'G':
|
||||||
|
channel_model=ETU;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'H':
|
||||||
|
channel_model=Rayleigh8;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'I':
|
||||||
|
channel_model=Rayleigh1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'J':
|
||||||
|
channel_model=Rayleigh1_corr;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'K':
|
||||||
|
channel_model=Rayleigh1_anticorr;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'L':
|
||||||
|
channel_model=Rice8;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'M':
|
||||||
|
channel_model=Rice1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'N':
|
||||||
|
channel_model=AWGN;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Unsupported channel model!\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
num_rounds=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'S':
|
||||||
|
subframe=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'T':
|
||||||
|
n_rnti=atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'u':
|
||||||
|
dual_stream_UE=1;
|
||||||
|
UE->use_ia_receiver = 1;
|
||||||
|
|
||||||
|
if ((n_tx_port!=2) || (transmission_mode!=5)) {
|
||||||
|
printf("IA receiver only supported for TM5!");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
i_mod = atoi(optarg);
|
||||||
|
|
||||||
|
if (i_mod!=2 && i_mod!=4 && i_mod!=6) {
|
||||||
|
printf("Wrong i_mod %d, should be 2,4 or 6\n",i_mod);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
print_perf=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'q':
|
||||||
|
n_tx_port=atoi(optarg);
|
||||||
|
|
||||||
|
if ((n_tx_port==0) || ((n_tx_port>2))) {
|
||||||
|
printf("Unsupported number of cell specific antennas ports %d\n",n_tx_port);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
transmission_mode=atoi(optarg);
|
||||||
|
|
||||||
|
if ((transmission_mode!=1) &&
|
||||||
|
(transmission_mode!=2) &&
|
||||||
|
(transmission_mode!=3) &&
|
||||||
|
(transmission_mode!=4) &&
|
||||||
|
(transmission_mode!=5) &&
|
||||||
|
(transmission_mode!=6) &&
|
||||||
|
(transmission_mode!=7)) {
|
||||||
|
printf("Unsupported transmission mode %d\n",transmission_mode);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (transmission_mode>1 && transmission_mode<7) {
|
||||||
|
n_tx_port = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'y':
|
||||||
|
n_tx_phy=atoi(optarg);
|
||||||
|
|
||||||
|
if (n_tx_phy < n_tx_port) {
|
||||||
|
printf("n_tx_phy mush not be smaller than n_tx_port");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((transmission_mode>1 && transmission_mode<7) && n_tx_port<2) {
|
||||||
|
printf("n_tx_port must be >1 for transmission_mode %d\n",transmission_mode);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (transmission_mode==7 && (n_tx_phy!=1 && n_tx_phy!=2 && n_tx_phy!=4 && n_tx_phy!=8 && n_tx_phy!=16 && n_tx_phy!=64 && n_tx_phy!=128)) {
|
||||||
|
printf("Physical number of antennas not supported for TM7.\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'X':
|
||||||
|
xforms=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'Y':
|
||||||
|
perfect_ce=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'z':
|
||||||
|
n_rx=atoi(optarg);
|
||||||
|
|
||||||
|
if ((n_rx==0) || (n_rx>2)) {
|
||||||
|
printf("Unsupported number of rx antennas %d\n",n_rx);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'Z':
|
||||||
|
dump_table=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'L':
|
||||||
|
loglvl = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'h':
|
||||||
|
default:
|
||||||
|
printf("%s -h(elp) -a(wgn on) -d(ci decoding on) -p(extended prefix on) -m mcs1 -M mcs2 -n n_frames -s snr0 -x transmission mode (1,2,5,6,7) -y TXant -z RXant -I trch_file\n",argv[0]);
|
||||||
|
printf("-h This message\n");
|
||||||
|
printf("-a Use AWGN channel and not multipath\n");
|
||||||
|
printf("-c Number of PDCCH symbols\n");
|
||||||
|
printf("-m MCS1 for TB 1\n");
|
||||||
|
printf("-M MCS2 for TB 2\n");
|
||||||
|
printf("-d Transmit the DCI and compute its error statistics\n");
|
||||||
|
printf("-p Use extended prefix mode\n");
|
||||||
|
printf("-n Number of frames to simulate\n");
|
||||||
|
printf("-o Sample offset for receiver\n");
|
||||||
|
printf("-s Starting SNR, runs from SNR to SNR+%.1fdB in steps of %.1fdB. If n_frames is 1 then just SNR is simulated and MATLAB/OCTAVE output is generated\n", snr_int, snr_step);
|
||||||
|
printf("-f step size of SNR, default value is 1.\n");
|
||||||
|
printf("-C cell id\n");
|
||||||
|
printf("-S subframe\n");
|
||||||
|
printf("-D use TDD mode\n");
|
||||||
|
printf("-b TDD config\n");
|
||||||
|
printf("-B bandwidth configuration (in number of ressource blocks): 6, 25, 50, 100\n");
|
||||||
|
printf("-r ressource block allocation (see section 7.1.6.3 in 36.213\n");
|
||||||
|
printf("-g [A:M] Use 3GPP 25.814 SCM-A/B/C/D('A','B','C','D') or 36-101 EPA('E'), EVA ('F'),ETU('G') models (ignores delay spread and Ricean factor), Rayghleigh8 ('H'), Rayleigh1('I'), Rayleigh1_corr('J'), Rayleigh1_anticorr ('K'), Rice8('L'), Rice1('M')\n");
|
||||||
|
printf("-F forgetting factor (0 new channel every trial, 1 channel constant\n");
|
||||||
|
printf("-x Transmission mode (1,2,6,7 for the moment)\n");
|
||||||
|
printf("-q Number of TX antennas ports used in eNB\n");
|
||||||
|
printf("-y Number of TX antennas used in eNB\n");
|
||||||
|
printf("-z Number of RX antennas used in UE\n");
|
||||||
|
printf("-t MCS of interfering UE\n");
|
||||||
|
printf("-R Number of HARQ rounds (fixed)\n");
|
||||||
|
printf("-A Turns on calibration mode for abstraction.\n");
|
||||||
|
printf("-N Determines the number of Channel Realizations in Abstraction mode. Default value is 1. \n");
|
||||||
|
printf("-O Set the percenatge of effective rate to testbench the modem performance (typically 30 and 70, range 1-100) \n");
|
||||||
|
printf("-I Input filename for TrCH data (binary)\n");
|
||||||
|
printf("-u Enables the Interference Aware Receiver for TM5 (default is normal receiver)\n");
|
||||||
|
exit(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set_parallel_conf("PARALLEL_RU_L1_TRX_SPLIT");
|
||||||
|
set_worker_conf("WORKER_ENABLE");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (transmission_mode>1) pa=dBm3;
|
if (transmission_mode>1) pa=dBm3;
|
||||||
|
|
||||||
@@ -1481,7 +1845,7 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_meas(&eNB->ofdm_mod_stats);
|
start_meas(&eNB->ofdm_mod_stats);
|
||||||
ru->proc.subframe_tx=subframe;
|
ru->proc.tti_tx=subframe;
|
||||||
memcpy((void *)&ru->frame_parms,(void *)&eNB->frame_parms,sizeof(LTE_DL_FRAME_PARMS));
|
memcpy((void *)&ru->frame_parms,(void *)&eNB->frame_parms,sizeof(LTE_DL_FRAME_PARMS));
|
||||||
feptx_prec(ru);
|
feptx_prec(ru);
|
||||||
feptx_ofdm(ru);
|
feptx_ofdm(ru);
|
||||||
@@ -1494,7 +1858,7 @@ int main(int argc, char **argv) {
|
|||||||
sched_resp.subframe=subframe+1;
|
sched_resp.subframe=subframe+1;
|
||||||
schedule_response(&sched_resp);
|
schedule_response(&sched_resp);
|
||||||
phy_procedures_eNB_TX(eNB,proc_eNB,0);
|
phy_procedures_eNB_TX(eNB,proc_eNB,0);
|
||||||
ru->proc.subframe_tx=(subframe+1)%10;
|
ru->proc.tti_tx=(subframe+1)%10;
|
||||||
feptx_prec(ru);
|
feptx_prec(ru);
|
||||||
feptx_ofdm(ru);
|
feptx_ofdm(ru);
|
||||||
proc_eNB->frame_tx++;
|
proc_eNB->frame_tx++;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
//#include "UTIL/LISTS/list.h"
|
//#include "UTIL/LISTS/list.h"
|
||||||
//#include "common/ran_context.h"
|
//#include "common/ran_context.h"
|
||||||
|
|
||||||
//#define DEBUG_DLSCHSIM
|
//#define DEBUG_NR_DLSCHSIM
|
||||||
|
|
||||||
PHY_VARS_gNB *gNB;
|
PHY_VARS_gNB *gNB;
|
||||||
PHY_VARS_NR_UE *UE;
|
PHY_VARS_NR_UE *UE;
|
||||||
@@ -93,8 +93,8 @@ NR_IF_Module_init(int Mod_id) {
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void exit_function(const char *file, const char *function, const int line,
|
void exit_function(const char *file, const char *function, const int line, const char *s)
|
||||||
const char *s) {
|
{
|
||||||
const char *msg = s == NULL ? "no comment" : s;
|
const char *msg = s == NULL ? "no comment" : s;
|
||||||
printf("Exiting at: %s:%d %s(), %s\n", file, line, function, msg);
|
printf("Exiting at: %s:%d %s(), %s\n", file, line, function, msg);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
@@ -224,7 +224,7 @@ int main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
msg("Unsupported channel model!\n");
|
printf("Unsupported channel model! Exiting.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,13 +244,18 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
snr0 = atof(optarg);
|
snr0 = atof(optarg);
|
||||||
msg("Setting SNR0 to %f\n", snr0);
|
#ifdef DEBUG_NR_DLSCHSIM
|
||||||
|
printf("Setting SNR0 to %f\n", snr0);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'S':
|
case 'S':
|
||||||
snr1 = atof(optarg);
|
snr1 = atof(optarg);
|
||||||
snr1set = 1;
|
snr1set = 1;
|
||||||
msg("Setting SNR1 to %f\n", snr1);
|
msg("Setting SNR1 to %f\n", snr1);
|
||||||
|
#ifdef DEBUG_NR_DLSCHSIM
|
||||||
|
printf("Setting SNR1 to %f\n", snr1);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
@@ -271,7 +276,7 @@ int main(int argc, char **argv) {
|
|||||||
n_tx = atoi(optarg);
|
n_tx = atoi(optarg);
|
||||||
|
|
||||||
if ((n_tx == 0) || (n_tx > 2)) {
|
if ((n_tx == 0) || (n_tx > 2)) {
|
||||||
msg("Unsupported number of tx antennas %d\n", n_tx);
|
printf("Unsupported number of TX antennas %d. Exiting.\n", n_tx);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,7 +286,7 @@ int main(int argc, char **argv) {
|
|||||||
n_rx = atoi(optarg);
|
n_rx = atoi(optarg);
|
||||||
|
|
||||||
if ((n_rx == 0) || (n_rx > 2)) {
|
if ((n_rx == 0) || (n_rx > 2)) {
|
||||||
msg("Unsupported number of rx antennas %d\n", n_rx);
|
printf("Unsupported number of RX antennas %d. Exiting.\n", n_rx);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,7 +308,7 @@ int main(int argc, char **argv) {
|
|||||||
input_fd = fopen(optarg, "r");
|
input_fd = fopen(optarg, "r");
|
||||||
|
|
||||||
if (input_fd == NULL) {
|
if (input_fd == NULL) {
|
||||||
printf("Problem with filename %s\n", optarg);
|
printf("Problem with filename %s. Exiting.\n", optarg);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,7 +384,7 @@ int main(int argc, char **argv) {
|
|||||||
0, 0, 0);
|
0, 0, 0);
|
||||||
|
|
||||||
if (gNB2UE == NULL) {
|
if (gNB2UE == NULL) {
|
||||||
msg("Problem generating channel model. Exiting.\n");
|
printf("Problem generating channel model. Exiting.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -518,7 +523,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
//estimated_output = harq_process->b;
|
//estimated_output = harq_process->b;
|
||||||
|
|
||||||
#ifdef DEBUG_DLSCHSIM
|
#ifdef DEBUG_NR_DLSCHSIM
|
||||||
for (i = 0; i < TBS / 8; i++) printf("test_input[i]=%d \n",test_input[i]);
|
for (i = 0; i < TBS / 8; i++) printf("test_input[i]=%d \n",test_input[i]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
#include "SCHED_NR/sched_nr.h"
|
#include "SCHED_NR/sched_nr.h"
|
||||||
|
|
||||||
|
//#define DEBUG_NR_PBCHSIM
|
||||||
|
|
||||||
PHY_VARS_gNB *gNB;
|
PHY_VARS_gNB *gNB;
|
||||||
PHY_VARS_NR_UE *UE;
|
PHY_VARS_NR_UE *UE;
|
||||||
@@ -199,7 +199,7 @@ int main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
msg("Unsupported channel model!\n");
|
printf("Unsupported channel model! Exiting.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,18 +219,24 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
case 'o':
|
case 'o':
|
||||||
cfo = atof(optarg);
|
cfo = atof(optarg);
|
||||||
msg("Setting CFO to %f Hz\n",cfo);
|
#ifdef DEBUG_NR_PBCHSIM
|
||||||
|
printf("Setting CFO to %f Hz\n",cfo);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
snr0 = atof(optarg);
|
snr0 = atof(optarg);
|
||||||
msg("Setting SNR0 to %f\n",snr0);
|
#ifdef DEBUG_NR_PBCHSIM
|
||||||
|
printf("Setting SNR0 to %f\n",snr0);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'S':
|
case 'S':
|
||||||
snr1 = atof(optarg);
|
snr1 = atof(optarg);
|
||||||
snr1set=1;
|
snr1set=1;
|
||||||
msg("Setting SNR1 to %f\n",snr1);
|
#ifdef DEBUG_NR_PBCHSIM
|
||||||
|
printf("Setting SNR1 to %f\n",snr1);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -254,10 +260,8 @@ int main(int argc, char **argv)
|
|||||||
case 'x':
|
case 'x':
|
||||||
transmission_mode=atoi(optarg);
|
transmission_mode=atoi(optarg);
|
||||||
|
|
||||||
if ((transmission_mode!=1) &&
|
if ((transmission_mode!=1) && (transmission_mode!=2) && (transmission_mode!=6)) {
|
||||||
(transmission_mode!=2) &&
|
printf("Unsupported transmission mode %d. Exiting.\n",transmission_mode);
|
||||||
(transmission_mode!=6)) {
|
|
||||||
msg("Unsupported transmission mode %d\n",transmission_mode);
|
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,7 +271,7 @@ int main(int argc, char **argv)
|
|||||||
n_tx=atoi(optarg);
|
n_tx=atoi(optarg);
|
||||||
|
|
||||||
if ((n_tx==0) || (n_tx>2)) {
|
if ((n_tx==0) || (n_tx>2)) {
|
||||||
msg("Unsupported number of tx antennas %d\n",n_tx);
|
printf("Unsupported number of TX antennas %d. Exiting.\n", n_tx);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,7 +281,7 @@ int main(int argc, char **argv)
|
|||||||
n_rx=atoi(optarg);
|
n_rx=atoi(optarg);
|
||||||
|
|
||||||
if ((n_rx==0) || (n_rx>2)) {
|
if ((n_rx==0) || (n_rx>2)) {
|
||||||
msg("Unsupported number of rx antennas %d\n",n_rx);
|
printf("Unsupported number of RX antennas %d. Exiting.\n", n_rx);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,7 +303,7 @@ int main(int argc, char **argv)
|
|||||||
input_fd = fopen(optarg,"r");
|
input_fd = fopen(optarg,"r");
|
||||||
|
|
||||||
if (input_fd==NULL) {
|
if (input_fd==NULL) {
|
||||||
printf("Problem with filename %s\n",optarg);
|
printf("Problem with filename %s. Exiting.\n", optarg);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,7 +435,7 @@ int main(int argc, char **argv)
|
|||||||
0);
|
0);
|
||||||
|
|
||||||
if (gNB2UE==NULL) {
|
if (gNB2UE==NULL) {
|
||||||
msg("Problem generating channel model. Exiting.\n");
|
printf("Problem generating channel model. Exiting.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,33 +496,32 @@ int main(int argc, char **argv)
|
|||||||
for (int i=0;i<4;i++) gNB->pbch_pdu[i]=i+1;
|
for (int i=0;i<4;i++) gNB->pbch_pdu[i]=i+1;
|
||||||
|
|
||||||
for (int slot=0;slot<frame_parms->slots_per_frame;slot++) {
|
for (int slot=0;slot<frame_parms->slots_per_frame;slot++) {
|
||||||
for (aa=0; aa<gNB->frame_parms.nb_antennas_tx; aa++)
|
for (aa=0; aa<gNB->frame_parms.nb_antennas_tx; aa++)
|
||||||
memset(gNB->common_vars.txdataF[aa],0,frame_parms->samples_per_slot_wCP*sizeof(int32_t));
|
memset(gNB->common_vars.txdataF[aa],0,frame_parms->samples_per_slot_wCP*sizeof(int32_t));
|
||||||
|
|
||||||
nr_common_signal_procedures (gNB,frame,slot);
|
nr_common_signal_procedures (gNB,frame,slot);
|
||||||
|
|
||||||
for (aa=0; aa<gNB->frame_parms.nb_antennas_tx; aa++) {
|
for (aa=0; aa<gNB->frame_parms.nb_antennas_tx; aa++) {
|
||||||
if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) {
|
if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) {
|
||||||
PHY_ofdm_mod(gNB->common_vars.txdataF[aa],
|
PHY_ofdm_mod(gNB->common_vars.txdataF[aa],
|
||||||
&txdata[aa][slot*frame_parms->samples_per_slot],
|
&txdata[aa][slot*frame_parms->samples_per_slot],
|
||||||
frame_parms->ofdm_symbol_size,
|
frame_parms->ofdm_symbol_size,
|
||||||
12,
|
12,
|
||||||
frame_parms->nb_prefix_samples,
|
frame_parms->nb_prefix_samples,
|
||||||
CYCLIC_PREFIX);
|
CYCLIC_PREFIX);
|
||||||
} else {
|
} else {
|
||||||
nr_normal_prefix_mod(gNB->common_vars.txdataF[aa],
|
nr_normal_prefix_mod(gNB->common_vars.txdataF[aa],
|
||||||
&txdata[aa][slot*frame_parms->samples_per_slot],
|
&txdata[aa][slot*frame_parms->samples_per_slot],
|
||||||
14,
|
14,
|
||||||
frame_parms);
|
frame_parms);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1);
|
LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1);
|
||||||
if (gNB->frame_parms.nb_antennas_tx>1)
|
if (gNB->frame_parms.nb_antennas_tx>1)
|
||||||
LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1);
|
LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
printf("Reading %d samples from file to antenna buffer %d\n",frame_length_complex_samples,0);
|
printf("Reading %d samples from file to antenna buffer %d\n",frame_length_complex_samples,0);
|
||||||
UE->UE_fo_compensation = 1; // perform fo compensation when samples from file are used
|
UE->UE_fo_compensation = 1; // perform fo compensation when samples from file are used
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
//#include "UTIL/LISTS/list.h"
|
//#include "UTIL/LISTS/list.h"
|
||||||
//#include "common/ran_context.h"
|
//#include "common/ran_context.h"
|
||||||
|
|
||||||
//#define DEBUG_ULSCHSIM
|
//#define DEBUG_NR_ULSCHSIM
|
||||||
|
|
||||||
PHY_VARS_gNB *gNB;
|
PHY_VARS_gNB *gNB;
|
||||||
PHY_VARS_NR_UE *UE;
|
PHY_VARS_NR_UE *UE;
|
||||||
@@ -64,36 +64,14 @@ double cpuf;
|
|||||||
|
|
||||||
// dummy functions
|
// dummy functions
|
||||||
int nfapi_mode = 0;
|
int nfapi_mode = 0;
|
||||||
int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) {
|
int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) { return (0); }
|
||||||
return (0);
|
int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req) { return (0); }
|
||||||
}
|
int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) { return (0); }
|
||||||
int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req) {
|
int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { return (0); }
|
||||||
return (0);
|
int oai_nfapi_nr_dl_config_req(nfapi_nr_dl_config_request_t *dl_config_req) { return (0); }
|
||||||
}
|
uint32_t from_nrarfcn(int nr_bandP, uint32_t dl_earfcn) { return (0); }
|
||||||
|
int32_t get_uldl_offset(int eutra_bandP) { return (0); }
|
||||||
int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) {
|
NR_IF_Module_t * NR_IF_Module_init(int Mod_id) { return (NULL); }
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) {
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int oai_nfapi_nr_dl_config_req(nfapi_nr_dl_config_request_t *dl_config_req) {
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t from_nrarfcn(int nr_bandP, uint32_t dl_earfcn) {
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
int32_t get_uldl_offset(int eutra_bandP) {
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
NR_IF_Module_t *
|
|
||||||
NR_IF_Module_init(int Mod_id) {
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void exit_function(const char *file, const char *function, const int line, const char *s) {
|
void exit_function(const char *file, const char *function, const int line, const char *s) {
|
||||||
const char *msg = s == NULL ? "no comment" : s;
|
const char *msg = s == NULL ? "no comment" : s;
|
||||||
@@ -150,7 +128,7 @@ int main(int argc, char **argv) {
|
|||||||
SCM_t channel_model = AWGN; //Rayleigh1_anticorr;
|
SCM_t channel_model = AWGN; //Rayleigh1_anticorr;
|
||||||
uint16_t N_RB_DL = 106, N_RB_UL = 106, mu = 1;
|
uint16_t N_RB_DL = 106, N_RB_UL = 106, mu = 1;
|
||||||
//unsigned char frame_type = 0;
|
//unsigned char frame_type = 0;
|
||||||
unsigned char pbch_phase = 0;
|
//unsigned char pbch_phase = 0;
|
||||||
int frame = 0, subframe = 0;
|
int frame = 0, subframe = 0;
|
||||||
int frame_length_complex_samples;
|
int frame_length_complex_samples;
|
||||||
//int frame_length_complex_samples_no_prefix;
|
//int frame_length_complex_samples_no_prefix;
|
||||||
@@ -178,7 +156,8 @@ int main(int argc, char **argv) {
|
|||||||
//logInit();
|
//logInit();
|
||||||
randominit(0);
|
randominit(0);
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "df:hpg:i:j:n:l:m:r:s:S:y:z:M:N:F:R:P:")) != -1) {
|
//while ((c = getopt(argc, argv, "df:hpg:i:j:n:l:m:r:s:S:y:z:M:N:F:R:P:")) != -1) {
|
||||||
|
while ((c = getopt(argc, argv, "hg:n:s:S:py:z:M:N:R:F:m:l:r:")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
/*case 'f':
|
/*case 'f':
|
||||||
write_output_file = 1;
|
write_output_file = 1;
|
||||||
@@ -226,7 +205,7 @@ int main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
msg("Unsupported channel model!\n");
|
printf("Unsupported channel model! Exiting.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,17 +221,24 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
case 'n':
|
case 'n':
|
||||||
n_trials = atoi(optarg);
|
n_trials = atoi(optarg);
|
||||||
|
#ifdef DEBUG_NR_ULSCHSIM
|
||||||
|
printf("n_trials (-n) = %d\n", n_trials);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
snr0 = atof(optarg);
|
snr0 = atof(optarg);
|
||||||
msg("Setting SNR0 to %f\n", snr0);
|
#ifdef DEBUG_NR_ULSCHSIM
|
||||||
|
printf("Setting SNR0 to %f\n", snr0);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'S':
|
case 'S':
|
||||||
snr1 = atof(optarg);
|
snr1 = atof(optarg);
|
||||||
snr1set = 1;
|
snr1set = 1;
|
||||||
msg("Setting SNR1 to %f\n", snr1);
|
#ifdef DEBUG_NR_ULSCHSIM
|
||||||
|
printf("Setting SNR1 to %f\n", snr1);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
@@ -273,7 +259,7 @@ int main(int argc, char **argv) {
|
|||||||
n_tx = atoi(optarg);
|
n_tx = atoi(optarg);
|
||||||
|
|
||||||
if ((n_tx == 0) || (n_tx > 2)) {
|
if ((n_tx == 0) || (n_tx > 2)) {
|
||||||
msg("Unsupported number of tx antennas %d\n", n_tx);
|
printf("Unsupported number of TX antennas %d. Exiting.\n", n_tx);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,7 +269,7 @@ int main(int argc, char **argv) {
|
|||||||
n_rx = atoi(optarg);
|
n_rx = atoi(optarg);
|
||||||
|
|
||||||
if ((n_rx == 0) || (n_rx > 2)) {
|
if ((n_rx == 0) || (n_rx > 2)) {
|
||||||
msg("Unsupported number of rx antennas %d\n", n_rx);
|
printf("Unsupported number of RX antennas %d. Exiting.\n", n_rx);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,29 +285,32 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
case 'R':
|
case 'R':
|
||||||
N_RB_DL = atoi(optarg);
|
N_RB_DL = atoi(optarg);
|
||||||
N_RB_UL = N_RB_DL;
|
#ifdef DEBUG_NR_ULSCHSIM
|
||||||
|
printf("N_RB_DL (-R) = %d\n", N_RB_DL);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'F':
|
case 'F':
|
||||||
input_fd = fopen(optarg, "r");
|
input_fd = fopen(optarg, "r");
|
||||||
|
|
||||||
if (input_fd == NULL) {
|
if (input_fd == NULL) {
|
||||||
printf("Problem with filename %s\n", optarg);
|
printf("Problem with filename %s. Exiting.\n", optarg);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'P':
|
/*case 'P':
|
||||||
pbch_phase = atoi(optarg);
|
pbch_phase = atoi(optarg);
|
||||||
|
|
||||||
if (pbch_phase > 3)
|
if (pbch_phase > 3)
|
||||||
printf("Illegal PBCH phase (0-3) got %d\n", pbch_phase);
|
printf("Illegal PBCH phase (0-3) got %d\n", pbch_phase);
|
||||||
|
break;*/
|
||||||
break;
|
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
Imcs = atoi(optarg);
|
Imcs = atoi(optarg);
|
||||||
|
#ifdef DEBUG_NR_ULSCHSIM
|
||||||
|
printf("Imcs (-m) = %d\n", Imcs);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'l':
|
case 'l':
|
||||||
@@ -338,15 +327,16 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
case 'h':
|
case 'h':
|
||||||
printf("%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId\n", argv[0]);
|
printf("%s -h(elp) -g channel_model -n n_frames -s snr0 -S snr1 -p(extended_prefix) -y TXant -z RXant -M -N cell_id -R -F input_filename -m -l -r\n", argv[0]);
|
||||||
|
//printf("%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId\n", argv[0]);
|
||||||
printf("-h This message\n");
|
printf("-h This message\n");
|
||||||
printf("-p Use extended prefix mode\n");
|
printf("-g [A,B,C,D,E,F,G] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models (ignores delay spread and Ricean factor)\n");
|
||||||
//printf("-d Use TDD\n");
|
|
||||||
printf("-n Number of frames to simulate\n");
|
printf("-n Number of frames to simulate\n");
|
||||||
|
//printf("-d Use TDD\n");
|
||||||
printf("-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated\n");
|
printf("-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated\n");
|
||||||
printf("-S Ending SNR, runs from SNR0 to SNR1\n");
|
printf("-S Ending SNR, runs from SNR0 to SNR1\n");
|
||||||
printf("-t Delay spread for multipath channel\n");
|
printf("-p Use extended prefix mode\n");
|
||||||
printf("-g [A,B,C,D,E,F,G] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models (ignores delay spread and Ricean factor)\n");
|
//printf("-t Delay spread for multipath channel\n");
|
||||||
//printf("-x Transmission mode (1,2,6 for the moment)\n");
|
//printf("-x Transmission mode (1,2,6 for the moment)\n");
|
||||||
printf("-y Number of TX antennas used in eNB\n");
|
printf("-y Number of TX antennas used in eNB\n");
|
||||||
printf("-z Number of RX antennas used in UE\n");
|
printf("-z Number of RX antennas used in UE\n");
|
||||||
@@ -355,11 +345,14 @@ int main(int argc, char **argv) {
|
|||||||
printf("-M Multiple SSB positions in burst\n");
|
printf("-M Multiple SSB positions in burst\n");
|
||||||
printf("-N Nid_cell\n");
|
printf("-N Nid_cell\n");
|
||||||
printf("-R N_RB_DL\n");
|
printf("-R N_RB_DL\n");
|
||||||
printf("-O oversampling factor (1,2,4,8,16)\n");
|
printf("-F Input filename (.txt format) for RX conformance testing\n");
|
||||||
printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n");
|
printf("-m\n");
|
||||||
|
printf("-l\n");
|
||||||
|
printf("-r\n");
|
||||||
|
//printf("-O oversampling factor (1,2,4,8,16)\n");
|
||||||
|
//printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n");
|
||||||
//printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n");
|
//printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n");
|
||||||
//printf("-f Output filename (.txt format) for Pe/SNR results\n");
|
//printf("-f Output filename (.txt format) for Pe/SNR results\n");
|
||||||
printf("-F Input filename (.txt format) for RX conformance testing\n");
|
|
||||||
exit(-1);
|
exit(-1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -372,13 +365,17 @@ int main(int argc, char **argv) {
|
|||||||
if (snr1set == 0)
|
if (snr1set == 0)
|
||||||
snr1 = snr0 + 10;
|
snr1 = snr0 + 10;
|
||||||
|
|
||||||
gNB2UE = new_channel_desc_scm(n_tx, n_rx, channel_model,
|
gNB2UE = new_channel_desc_scm(n_tx,
|
||||||
|
n_rx,
|
||||||
|
channel_model,
|
||||||
61.44e6, //N_RB2sampling_rate(N_RB_DL),
|
61.44e6, //N_RB2sampling_rate(N_RB_DL),
|
||||||
40e6, //N_RB2channel_bandwidth(N_RB_DL),
|
40e6, //N_RB2channel_bandwidth(N_RB_DL),
|
||||||
0, 0, 0);
|
0,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
|
||||||
if (gNB2UE == NULL) {
|
if (gNB2UE == NULL) {
|
||||||
msg("Problem generating channel model. Exiting.\n");
|
printf("Problem generating channel model. Exiting.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,7 +443,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
//phy_init_nr_top(frame_parms);
|
//phy_init_nr_top(frame_parms);
|
||||||
if (init_nr_ue_signal(UE, 1, 0) != 0) {
|
if (init_nr_ue_signal(UE, 1, 0) != 0) {
|
||||||
printf("Error at UE NR initialisation\n");
|
printf("Error at UE NR initialisation.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -458,7 +455,7 @@ int main(int argc, char **argv) {
|
|||||||
UE->ulsch[sf][0][i] = new_nr_ue_ulsch(N_RB_UL, 8, 0);
|
UE->ulsch[sf][0][i] = new_nr_ue_ulsch(N_RB_UL, 8, 0);
|
||||||
|
|
||||||
if (!UE->ulsch[sf][0][i]) {
|
if (!UE->ulsch[sf][0][i]) {
|
||||||
printf("Can't get ue ulsch structures\n");
|
printf("Can't get ue ulsch structures.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -540,7 +537,7 @@ int main(int argc, char **argv) {
|
|||||||
///////////
|
///////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef DEBUG_ULSCHSIM
|
#ifdef DEBUG_NR_ULSCHSIM
|
||||||
for (i = 0; i < TBS / 8; i++) printf("test_input[i]=%d \n",test_input[i]);
|
for (i = 0; i < TBS / 8; i++) printf("test_input[i]=%d \n",test_input[i]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ typedef struct {
|
|||||||
channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||||
uint8_t nb_rx,
|
uint8_t nb_rx,
|
||||||
SCM_t channel_model,
|
SCM_t channel_model,
|
||||||
double sampling_rate,
|
double sampling_rate,
|
||||||
double channel_bandwidth,
|
double channel_bandwidth,
|
||||||
double forgetting_factor,
|
double forgetting_factor,
|
||||||
int32_t channel_offset,
|
int32_t channel_offset,
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "SIMULATION/TOOLS/sim.h"
|
||||||
|
|
||||||
unsigned int s0, s1, s2, b;
|
unsigned int s0, s1, s2, b;
|
||||||
|
|
||||||
@@ -32,7 +33,6 @@ unsigned int s0, s1, s2, b;
|
|||||||
|
|
||||||
unsigned int taus(void)
|
unsigned int taus(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
b = (((s0 << 13) ^ s0) >> 19);
|
b = (((s0 << 13) ^ s0) >> 19);
|
||||||
s0 = (((s0 & 0xFFFFFFFE) << 12)^ b);
|
s0 = (((s0 & 0xFFFFFFFE) << 12)^ b);
|
||||||
b = (((s1 << 2) ^ s1) >> 25);
|
b = (((s1 << 2) ^ s1) >> 25);
|
||||||
@@ -41,7 +41,7 @@ unsigned int taus(void)
|
|||||||
s2 = (((s2 & 0xFFFFFFF0) << 17)^ b);
|
s2 = (((s2 & 0xFFFFFFF0) << 17)^ b);
|
||||||
return s0 ^ s1 ^ s2;
|
return s0 ^ s1 ^ s2;
|
||||||
}
|
}
|
||||||
#if 1
|
|
||||||
void set_taus_seed(unsigned int seed_init)
|
void set_taus_seed(unsigned int seed_init)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -63,25 +63,18 @@ void set_taus_seed(unsigned int seed_init)
|
|||||||
s2 = result;
|
s2 = result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MAIN
|
#ifdef MAIN
|
||||||
|
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned int i,rand;
|
unsigned int i,rand;
|
||||||
|
|
||||||
set_taus_seed();
|
set_taus_seed();
|
||||||
|
|
||||||
for (i=0; i<10; i++) {
|
for (i=0; i<10; i++) {
|
||||||
|
|
||||||
rand = taus();
|
rand = taus();
|
||||||
printf("%u\n",rand);
|
printf("%u\n",rand);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //MAIN
|
#endif //MAIN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -119,31 +119,31 @@ typedef enum {
|
|||||||
|
|
||||||
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
/* RU configuration parameters */
|
/* RU configuration parameters */
|
||||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||||
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
#define RUPARAMS_DESC { \
|
#define RUPARAMS_DESC { \
|
||||||
{CONFIG_STRING_RU_LOCAL_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_LOCAL_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.2", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_LOCAL_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.2", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_REMOTE_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_REMOTE_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_LOCAL_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_REMOTE_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_REMOTE_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_LOCAL_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_REMOTE_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_REMOTE_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_TRANSPORT_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"udp_if5", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_TRANSPORT_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"udp_if5", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_RF, NULL, 0, strptr:NULL, defstrval:"yes", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_LOCAL_RF, NULL, 0, strptr:NULL, defstrval:"yes", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_NB_TX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_NB_TX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_NB_RX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_NB_RX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_MAX_RS_EPRE, NULL, 0, iptr:NULL, defintval:-29, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_MAX_RS_EPRE, NULL, 0, iptr:NULL, defintval:-29, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_RU_MAX_RXGAIN, NULL, 0, iptr:NULL, defintval:120, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_MAX_RXGAIN, NULL, 0, iptr:NULL, defintval:120, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_RU_BAND_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFBANDS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_BAND_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFBANDS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_ENB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_ENB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_SDR_ADDRS, NULL, 0, strptr:NULL, defstrval:"type=b200", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_SDR_ADDRS, NULL, 0, strptr:NULL, defstrval:"type=b200", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|||||||
@@ -117,27 +117,27 @@ typedef enum {
|
|||||||
|
|
||||||
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
/* RU configuration parameters */
|
/* RU configuration parameters */
|
||||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||||
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
#define GNBRUPARAMS_DESC { \
|
#define GNBRUPARAMS_DESC { \
|
||||||
{CONFIG_STRING_RU_LOCAL_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_LOCAL_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.2", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_LOCAL_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.2", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_REMOTE_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_REMOTE_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_LOCAL_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_REMOTE_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_REMOTE_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_LOCAL_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_REMOTE_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_REMOTE_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_TRANSPORT_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"udp_if5", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_TRANSPORT_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"udp_if5", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_LOCAL_RF, NULL, 0, strptr:NULL, defstrval:"yes", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_LOCAL_RF, NULL, 0, strptr:NULL, defstrval:"yes", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_NB_TX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_NB_TX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_NB_RX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_NB_RX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_MAX_RS_EPRE, NULL, 0, iptr:NULL, defintval:-29, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_MAX_RS_EPRE, NULL, 0, iptr:NULL, defintval:-29, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_RU_MAX_RXGAIN, NULL, 0, iptr:NULL, defintval:120, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_MAX_RXGAIN, NULL, 0, iptr:NULL, defintval:120, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_RU_BAND_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFBANDS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_BAND_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFNRBANDS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_GNB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_GNB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
#include "liblfds611.h"
|
#include "liblfds611.h"
|
||||||
|
|
||||||
#include "common/utils/LOG/log.h"
|
#include "common/utils/LOG/log.h"
|
||||||
|
#include "common/utils/system.h"
|
||||||
#include "UTIL/OCG/OCG.h"
|
#include "UTIL/OCG/OCG.h"
|
||||||
#include "UTIL/OCG/OCG_extern.h"
|
#include "UTIL/OCG/OCG_extern.h"
|
||||||
#include "LAYER2/MAC/mac_extern.h"
|
#include "LAYER2/MAC/mac_extern.h"
|
||||||
@@ -140,7 +141,7 @@ pdcp_netlink_init(
|
|||||||
* When the netlink fifo is full, packets are silently dropped, this behaviour
|
* When the netlink fifo is full, packets are silently dropped, this behaviour
|
||||||
* should be avoided if we want a reliable link.
|
* should be avoided if we want a reliable link.
|
||||||
*/
|
*/
|
||||||
threadCreate(&pdcp_netlink_thread, pdcp_netlink_thread_fct, "PDCP netlink", -1, OAI_PRIORITY_RT_LOW );
|
threadCreate(&pdcp_netlink_thread, pdcp_netlink_thread_fct, (void*)NULL, "PDCP netlink", -1, OAI_PRIORITY_RT_LOW );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ inline unsigned int taus(unsigned int comp) {
|
|||||||
return r[comp];
|
return r[comp];
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_taus_seed(unsigned int seed_type) {
|
/*void set_taus_seed(unsigned int seed_type) {
|
||||||
unsigned int i; // i index of component
|
unsigned int i; // i index of component
|
||||||
|
|
||||||
for (i=MIN_NUM_COMPS; i < MAX_NUM_COMPS ; i ++) {
|
for (i=MIN_NUM_COMPS; i < MAX_NUM_COMPS ; i ++) {
|
||||||
@@ -79,7 +79,7 @@ void set_taus_seed(unsigned int seed_type) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
int get_rand (unsigned int comp) {
|
int get_rand (unsigned int comp) {
|
||||||
if ((comp > MIN_NUM_COMPS) && (comp < MAX_NUM_COMPS))
|
if ((comp > MIN_NUM_COMPS) && (comp < MAX_NUM_COMPS))
|
||||||
|
|||||||
+13
-4
@@ -105,15 +105,24 @@ typedef enum radio_type_e {
|
|||||||
RADIO_TYPE_MAX
|
RADIO_TYPE_MAX
|
||||||
} radio_type_t;
|
} radio_type_t;
|
||||||
|
|
||||||
|
extern trace_mode_t opt_type;
|
||||||
|
extern char in_ip[40];
|
||||||
|
extern char in_path[FILENAME_MAX];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* function def
|
* function def
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
|
void trace_pdu(int direction,
|
||||||
int ueid, int rntiType, int rnti, uint16_t sysFrame, uint8_t subframe,
|
uint8_t *pdu_buffer,
|
||||||
int oob_event, int oob_event_value);
|
unsigned int pdu_buffer_size,
|
||||||
|
int ueid,
|
||||||
|
int rntiType,
|
||||||
|
int rnti,
|
||||||
|
uint16_t sysFrame,
|
||||||
|
uint8_t subframe,
|
||||||
|
int oob_event,
|
||||||
|
int oob_event_value);
|
||||||
|
|
||||||
int init_opt(void);
|
int init_opt(void);
|
||||||
|
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ int opt_enabled=0;
|
|||||||
//static unsigned char g_PDUBuffer[1600];
|
//static unsigned char g_PDUBuffer[1600];
|
||||||
//static unsigned int g_PDUOffset;
|
//static unsigned int g_PDUOffset;
|
||||||
|
|
||||||
static char *in_ip;
|
char in_ip[40];
|
||||||
static char *in_path;
|
char in_path[FILENAME_MAX];
|
||||||
FILE *file_fd = NULL;
|
FILE *file_fd = NULL;
|
||||||
pcap_hdr_t file_header = {
|
pcap_hdr_t file_header = {
|
||||||
0xa1b2c3d4, /* magic number */
|
0xa1b2c3d4, /* magic number */
|
||||||
@@ -439,9 +439,8 @@ int init_opt(void) {
|
|||||||
paramdef_t opt_params[] = OPT_PARAMS_DESC ;
|
paramdef_t opt_params[] = OPT_PARAMS_DESC ;
|
||||||
checkedparam_t opt_checkParams[] = OPTPARAMS_CHECK_DESC;
|
checkedparam_t opt_checkParams[] = OPTPARAMS_CHECK_DESC;
|
||||||
uint16_t in_port;
|
uint16_t in_port;
|
||||||
config_set_checkfunctions(opt_params, opt_checkParams,
|
config_set_checkfunctions(opt_params, opt_checkParams, sizeof(opt_params)/sizeof(paramdef_t));
|
||||||
sizeof(opt_params)/sizeof(paramdef_t));
|
config_get(opt_params, sizeof(opt_params)/sizeof(paramdef_t), OPT_CONFIGPREFIX);
|
||||||
config_get( opt_params,sizeof(opt_params)/sizeof(paramdef_t),OPT_CONFIGPREFIX);
|
|
||||||
subframesSinceCaptureStart = 0;
|
subframesSinceCaptureStart = 0;
|
||||||
int tmptype = config_get_processedint( &(opt_params[OPTTYPE_IDX]));
|
int tmptype = config_get_processedint( &(opt_params[OPTTYPE_IDX]));
|
||||||
|
|
||||||
|
|||||||
@@ -87,11 +87,15 @@
|
|||||||
unsigned short config_frames[4] = {2,9,11,13};
|
unsigned short config_frames[4] = {2,9,11,13};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* these variables have to be defined before including ENB_APP/enb_paramdef.h */
|
/* these variables have to be defined before including ENB_APP/enb_paramdef.h and GNB_APP/gnb_paramdef.h */
|
||||||
static int DEFBANDS[] = {7};
|
static int DEFBANDS[] = {7};
|
||||||
static int DEFENBS[] = {0};
|
static int DEFENBS[] = {0};
|
||||||
|
|
||||||
|
static int DEFNRBANDS[] = {7};
|
||||||
|
static int DEFGNBS[] = {0};
|
||||||
|
|
||||||
#include "ENB_APP/enb_paramdef.h"
|
#include "ENB_APP/enb_paramdef.h"
|
||||||
|
#include "GNB_APP/gnb_paramdef.h"
|
||||||
#include "common/config/config_userapi.h"
|
#include "common/config/config_userapi.h"
|
||||||
|
|
||||||
#ifndef OPENAIR2
|
#ifndef OPENAIR2
|
||||||
@@ -1792,7 +1796,7 @@ void init_RU_proc(RU_t *ru) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void kill_RU_proc(int inst)
|
void kill_NR_RU_proc(int inst)
|
||||||
{
|
{
|
||||||
RU_t *ru = RC.ru[inst];
|
RU_t *ru = RC.ru[inst];
|
||||||
RU_proc_t *proc = &ru->proc;
|
RU_proc_t *proc = &ru->proc;
|
||||||
@@ -2294,7 +2298,7 @@ void stop_RU(int nb_ru)
|
|||||||
{
|
{
|
||||||
for (int inst = 0; inst < nb_ru; inst++) {
|
for (int inst = 0; inst < nb_ru; inst++) {
|
||||||
LOG_I(PHY, "Stopping RU %d processing threads\n", inst);
|
LOG_I(PHY, "Stopping RU %d processing threads\n", inst);
|
||||||
kill_RU_proc(inst);
|
kill_NR_RU_proc(inst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -833,8 +833,8 @@ int stop_L1L2(module_id_t gnb_id)
|
|||||||
terminate_task(TASK_L2L1, gnb_id);
|
terminate_task(TASK_L2L1, gnb_id);
|
||||||
LOG_I(ENB_APP, "calling kill_gNB_proc() for instance %d\n", gnb_id);
|
LOG_I(ENB_APP, "calling kill_gNB_proc() for instance %d\n", gnb_id);
|
||||||
kill_gNB_proc(gnb_id);
|
kill_gNB_proc(gnb_id);
|
||||||
LOG_I(ENB_APP, "calling kill_RU_proc() for instance %d\n", gnb_id);
|
LOG_I(ENB_APP, "calling kill_NR_RU_proc() for instance %d\n", gnb_id);
|
||||||
kill_RU_proc(gnb_id);
|
kill_NR_RU_proc(gnb_id);
|
||||||
oai_exit = 0;
|
oai_exit = 0;
|
||||||
for (int cc_id = 0; cc_id < RC.nb_nr_CC[gnb_id]; cc_id++) {
|
for (int cc_id = 0; cc_id < RC.nb_nr_CC[gnb_id]; cc_id++) {
|
||||||
//free_transport(RC.gNB[gnb_id][cc_id]);
|
//free_transport(RC.gNB[gnb_id][cc_id]);
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ extern void kill_gNB_proc(int inst);
|
|||||||
extern void init_RU(const char*);
|
extern void init_RU(const char*);
|
||||||
extern void init_RU_proc(RU_t *ru);
|
extern void init_RU_proc(RU_t *ru);
|
||||||
extern void stop_RU(int nb_ru);
|
extern void stop_RU(int nb_ru);
|
||||||
extern void kill_RU_proc(int inst);
|
extern void kill_NR_RU_proc(int inst);
|
||||||
extern void set_function_spec_param(RU_t *ru);
|
extern void set_function_spec_param(RU_t *ru);
|
||||||
|
|
||||||
extern void reset_opp_meas(void);
|
extern void reset_opp_meas(void);
|
||||||
|
|||||||
Reference in New Issue
Block a user