Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangwenhui
OpenXG-RAN
Commits
08eda57a
Commit
08eda57a
authored
5 years ago
by
yilmazt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
final minor changes before the merge
parent
fbb5b548
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
122 additions
and
355 deletions
+122
-355
common/utils/LOG/log.h
common/utils/LOG/log.h
+1
-2
executables/nr-softmodem.c
executables/nr-softmodem.c
+1
-37
executables/nr-softmodem.h
executables/nr-softmodem.h
+30
-31
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+3
-38
executables/nr-uesoftmodem.h
executables/nr-uesoftmodem.h
+32
-35
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+13
-14
openair1/PHY/defs_common.h
openair1/PHY/defs_common.h
+0
-33
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+15
-49
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+9
-13
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+3
-3
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+1
-4
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+2
-6
openair2/LAYER2/MAC/mac_vars.h
openair2/LAYER2/MAC/mac_vars.h
+0
-3
targets/ARCH/COMMON/common_lib.h
targets/ARCH/COMMON/common_lib.h
+2
-2
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
+4
-4
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+1
-2
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+2
-6
targets/RT/USER/lte-softmodem-common.c
targets/RT/USER/lte-softmodem-common.c
+0
-1
targets/RT/USER/lte-softmodem.h
targets/RT/USER/lte-softmodem.h
+0
-64
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+3
-8
No files found.
common/utils/LOG/log.h
View file @
08eda57a
...
@@ -25,7 +25,6 @@
...
@@ -25,7 +25,6 @@
* \date 2009 - 2014
* \date 2009 - 2014
* \version 0.5
* \version 0.5
* @ingroup util
* @ingroup util
*/
*/
#ifndef __LOG_H__
#ifndef __LOG_H__
...
@@ -297,7 +296,7 @@ extern "C" {
...
@@ -297,7 +296,7 @@ extern "C" {
# include "log_if.h"
# include "log_if.h"
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
int
logInit
(
void
);
int
logInit
(
void
);
int
isLogInitDone
(
void
);
int
isLogInitDone
(
void
);
void
logRecord_mt
(
const
char
*
file
,
const
char
*
func
,
int
line
,
int
comp
,
int
level
,
const
char
*
format
,
...)
__attribute__
((
format
(
printf
,
6
,
7
)));
void
logRecord_mt
(
const
char
*
file
,
const
char
*
func
,
int
line
,
int
comp
,
int
level
,
const
char
*
format
,
...)
__attribute__
((
format
(
printf
,
6
,
7
)));
void
vlogRecord_mt
(
const
char
*
file
,
const
char
*
func
,
int
line
,
int
comp
,
int
level
,
const
char
*
format
,
va_list
args
);
void
vlogRecord_mt
(
const
char
*
file
,
const
char
*
func
,
int
line
,
int
comp
,
int
level
,
const
char
*
format
,
va_list
args
);
void
log_dump
(
int
component
,
void
*
buffer
,
int
buffsize
,
int
datatype
,
const
char
*
format
,
...
);
void
log_dump
(
int
component
,
void
*
buffer
,
int
buffsize
,
int
datatype
,
const
char
*
format
,
...
);
...
...
This diff is collapsed.
Click to expand it.
executables/nr-softmodem.c
View file @
08eda57a
...
@@ -169,7 +169,7 @@ int rx_input_level_dBm;
...
@@ -169,7 +169,7 @@ int rx_input_level_dBm;
uint32_t
do_forms
=
0
;
uint32_t
do_forms
=
0
;
int
otg_enabled
;
int
otg_enabled
;
//int
number_of_cards =
1;
//int
number_of_cards =
1;
//static NR_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
//static NR_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
...
@@ -190,46 +190,10 @@ int transmission_mode=1;
...
@@ -190,46 +190,10 @@ int transmission_mode=1;
int
emulate_rf
=
0
;
int
emulate_rf
=
0
;
int
numerology
=
0
;
int
numerology
=
0
;
/*typedef struct {
uint64_t optmask;
THREAD_STRUCT thread_struct;
char rf_config_file[1024];
int phy_test;
uint8_t usim_test;
int emulate_rf;
int wait_for_sync; //eNodeB only
int single_thread_flag; //eNodeB only
int chain_offset;
int numerology;
unsigned int start_msc;
uint32_t clock_source;
int hw_timing_advance;
} softmodem_params_t;*/
static
softmodem_params_t
softmodem_params
;
static
softmodem_params_t
softmodem_params
;
static
char
*
parallel_config
=
NULL
;
static
char
*
parallel_config
=
NULL
;
static
char
*
worker_config
=
NULL
;
static
char
*
worker_config
=
NULL
;
/*static THREAD_STRUCT thread_struct;
void set_parallel_conf(char *parallel_conf) {
if(strcmp(parallel_conf,"PARALLEL_SINGLE_THREAD")==0) thread_struct.parallel_conf = PARALLEL_SINGLE_THREAD;
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_SPLIT")==0) thread_struct.parallel_conf = PARALLEL_RU_L1_SPLIT;
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_TRX_SPLIT")==0) thread_struct.parallel_conf = PARALLEL_RU_L1_TRX_SPLIT;
printf("[CONFIG] parallel conf is set to %d\n",thread_struct.parallel_conf);
}
void set_worker_conf(char *worker_conf) {
if(strcmp(worker_conf,"WORKER_DISABLE")==0) thread_struct.worker_conf = WORKER_DISABLE;
else if(strcmp(worker_conf,"WORKER_ENABLE")==0) thread_struct.worker_conf = WORKER_ENABLE;
printf("[CONFIG] worker conf is set to %d\n",thread_struct.worker_conf);
}
PARALLEL_CONF_t get_thread_parallel_conf(void) {
return thread_struct.parallel_conf;
}
WORKER_CONF_t get_thread_worker_conf(void) {
return thread_struct.worker_conf;
}*/
/* struct for ethernet specific parameters given in eNB conf file */
/* struct for ethernet specific parameters given in eNB conf file */
eth_params_t
*
eth_params
;
eth_params_t
*
eth_params
;
...
...
This diff is collapsed.
Click to expand it.
executables/nr-softmodem.h
View file @
08eda57a
...
@@ -8,42 +8,41 @@
...
@@ -8,42 +8,41 @@
#define DEFAULT_DLF 2680000000
#define DEFAULT_DLF 2680000000
/***************************************************************************************************************************************/
/***************************************************************************************************************************************/
/* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument
/* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument
when calling config_get or config_getlist functions */
when calling config_get or config_getlist functions */
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----
*/
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* 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_GNB { \
#define CMDLINE_PARAMS_DESC_GNB { \
{"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}, \
{"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}, \
{"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}, \
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0,
TYPE_INT, 0}, \
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0,
TYPE_INT, 0}, \
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0,
TYPE_INT, 0}, \
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL,
TYPE_STRING, 0}, \
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL,
TYPE_STRING, 0}, \
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL,
TYPE_STRING, 0}, \
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL,
TYPE_STRING, 0}, \
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25,
TYPE_DOUBLE, 0}, \
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25,
TYPE_DOUBLE, 0}, \
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0,
TYPE_INT, 0} \
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0,
TYPE_INT, 0} \
}
}
typedef
struct
{
typedef
struct
{
...
...
This diff is collapsed.
Click to expand it.
executables/nr-uesoftmodem.c
View file @
08eda57a
...
@@ -102,7 +102,7 @@ FD_phy_scope_nrue *form_nrue[NUMBER_OF_UE_MAX];
...
@@ -102,7 +102,7 @@ FD_phy_scope_nrue *form_nrue[NUMBER_OF_UE_MAX];
//FD_lte_phy_scope_enb *form_enb[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
//FD_lte_phy_scope_enb *form_enb[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
];
static
pthread_t
forms_thread
;
//xforms
static
pthread_t
forms_thread
;
//xforms
#include <executables/nr-uesoftmodem.h>
#include <executables/nr-uesoftmodem.h>
#include "executables/softmodem-common.h"
#include "executables/softmodem-common.h"
...
@@ -149,7 +149,7 @@ double bw = 10.0e6;
...
@@ -149,7 +149,7 @@ double bw = 10.0e6;
static
int
tx_max_power
[
MAX_NUM_CCs
]
=
{
0
};
static
int
tx_max_power
[
MAX_NUM_CCs
]
=
{
0
};
char
rf_config_file
[
1024
];
char
rf_config_file
[
1024
];
int
chain_offset
=
0
;
int
chain_offset
=
0
;
int
phy_test
=
0
;
int
phy_test
=
0
;
...
@@ -164,53 +164,18 @@ uint8_t nb_antenna_rx = 1;
...
@@ -164,53 +164,18 @@ uint8_t nb_antenna_rx = 1;
char
ref
[
128
]
=
"internal"
;
char
ref
[
128
]
=
"internal"
;
char
channels
[
128
]
=
"0"
;
char
channels
[
128
]
=
"0"
;
/*typedef struct {
uint64_t optmask;
THREAD_STRUCT thread_struct;
char rf_config_file[1024];
int phy_test;
uint8_t usim_test;
int emulate_rf;
int wait_for_sync; //eNodeB only
int single_thread_flag; //eNodeB only
int chain_offset;
int numerology;
unsigned int start_msc;
uint32_t clock_source;
int hw_timing_advance;
} softmodem_params_t;*/
static
softmodem_params_t
softmodem_params
;
static
softmodem_params_t
softmodem_params
;
static
char
*
parallel_config
=
NULL
;
static
char
*
parallel_config
=
NULL
;
static
char
*
worker_config
=
NULL
;
static
char
*
worker_config
=
NULL
;
//static THREAD_STRUCT thread_struct;
/*void set_parallel_conf(char *parallel_conf) {
if(strcmp(parallel_conf,"PARALLEL_SINGLE_THREAD")==0) thread_struct.parallel_conf = PARALLEL_SINGLE_THREAD;
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_SPLIT")==0) thread_struct.parallel_conf = PARALLEL_RU_L1_SPLIT;
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_TRX_SPLIT")==0) thread_struct.parallel_conf = PARALLEL_RU_L1_TRX_SPLIT;
printf("[CONFIG] parallel conf is set to %d\n",thread_struct.parallel_conf);
}
void set_worker_conf(char *worker_conf) {
if(strcmp(worker_conf,"WORKER_DISABLE")==0) thread_struct.worker_conf = WORKER_DISABLE;
else if(strcmp(worker_conf,"WORKER_ENABLE")==0) thread_struct.worker_conf = WORKER_ENABLE;
printf("[CONFIG] worker conf is set to %d\n",thread_struct.worker_conf);
}
PARALLEL_CONF_t get_thread_parallel_conf(void) {
return thread_struct.parallel_conf;
}
WORKER_CONF_t get_thread_worker_conf(void) {
return thread_struct.worker_conf;
}*/
int
rx_input_level_dBm
;
int
rx_input_level_dBm
;
//static int online_log_messages=0;
//static int online_log_messages=0;
uint32_t
do_forms
=
0
;
uint32_t
do_forms
=
0
;
int
otg_enabled
;
int
otg_enabled
;
//int
number_of_cards =
1;
//int
number_of_cards =
1;
static
NR_DL_FRAME_PARMS
*
frame_parms
[
MAX_NUM_CCs
];
static
NR_DL_FRAME_PARMS
*
frame_parms
[
MAX_NUM_CCs
];
int16_t
node_synch_ref
[
MAX_NUM_CCs
];
int16_t
node_synch_ref
[
MAX_NUM_CCs
];
...
...
This diff is collapsed.
Click to expand it.
executables/nr-uesoftmodem.h
View file @
08eda57a
...
@@ -51,41 +51,41 @@
...
@@ -51,41 +51,41 @@
{"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \
{"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \
{"r" , CONFIG_HLP_PRB, 0, iptr:&(frame_parms[0]->N_RB_DL), defintval:25, TYPE_UINT, 0}, \
{"r" , CONFIG_HLP_PRB, 0, iptr:&(frame_parms[0]->N_RB_DL), defintval:25, TYPE_UINT, 0}, \
{"dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
{"dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
{"usrp-args", CONFIG_HLP_USRP_ARGS, 0, strptr:(char **)&usrp_args, defstrval:"type=b200", TYPE_STRING, 0} \
{"usrp-args", CONFIG_HLP_USRP_ARGS, 0, strptr:(char **)&usrp_args, defstrval:"type=b200", TYPE_STRING, 0}
\
}
}
#define DEFAULT_DLF 2680000000
#define DEFAULT_DLF 2680000000
/*----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------
*/
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/* 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_UE { \
#define CMDLINE_PARAMS_DESC_UE { \
{"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},
\
{"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},
\
{"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},
\
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0},
\
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, 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:2680000000, TYPE_UINT, 0},
\
{"C" , CONFIG_HLP_DLF, 0, uptr:&(downlink_frequency[0][0]), defuintval:2680000000, 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:&do_forms, defintval:0, TYPE_INT, 0},
\
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:&do_forms, defintval:0, TYPE_INT, 0},
\
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 0},
\
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 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},
\
{"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},
\
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0},
\
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0},
\
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0},
\
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0},
\
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0},
\
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0},
\
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0},
\
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0},
\
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0},
\
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0},
\
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0},
\
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0},
\
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0},
\
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT,
0}, \
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT,
0}, \
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}
\
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}
\
}
}
...
@@ -95,15 +95,12 @@ extern int T_dont_fork;
...
@@ -95,15 +95,12 @@ extern int T_dont_fork;
// In nr-ue.c
// In nr-ue.c
extern
int
setup_nr_ue_buffers
(
PHY_VARS_NR_UE
**
phy_vars_ue
,
extern
int
setup_nr_ue_buffers
(
PHY_VARS_NR_UE
**
phy_vars_ue
,
openair0_config_t
*
openair0_cfg
);
openair0_config_t
*
openair0_cfg
);
extern
void
fill_ue_band_info
(
void
);
extern
void
fill_ue_band_info
(
void
);
extern
void
init_NR_UE
(
int
);
extern
void
init_NR_UE
(
int
);
extern
void
reset_opp_meas
(
void
);
extern
void
reset_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
void
*
UE_thread
(
void
*
arg
);
void
*
UE_thread
(
void
*
arg
);
PHY_VARS_NR_UE
*
init_nr_ue_vars
(
NR_DL_FRAME_PARMS
*
frame_parms
,
PHY_VARS_NR_UE
*
init_nr_ue_vars
(
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
extern
tpool_t
*
Tpool
;
extern
tpool_t
*
Tpool
;
#endif
#endif
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
08eda57a
...
@@ -42,6 +42,7 @@
...
@@ -42,6 +42,7 @@
#include "common/utils/LOG/log.h"
#include "common/utils/LOG/log.h"
#include "targets/RT/USER/lte-softmodem.h"
#include "targets/RT/USER/lte-softmodem.h"
#include <syscall.h>
#include <syscall.h>
#include "executables/thread-common.h"
//#define DEBUG_DLSCH_CODING
//#define DEBUG_DLSCH_CODING
//#define DEBUG_DLSCH_FREE 1
//#define DEBUG_DLSCH_FREE 1
...
@@ -57,10 +58,8 @@
...
@@ -57,10 +58,8 @@
uint64_t runtime,
uint64_t runtime,
uint64_t deadline,
uint64_t deadline,
uint64_t period);*/
uint64_t period);*/
//extern WORKER_CONF_t get_thread_worker_conf(void);
#include "executables/thread-common.h"
extern
volatile
int
oai_exit
;
extern
volatile
int
oai_exit
;
void
free_eNB_dlsch
(
LTE_eNB_DLSCH_t
*
dlsch
)
{
void
free_eNB_dlsch
(
LTE_eNB_DLSCH_t
*
dlsch
)
{
int
i
,
r
,
aa
,
layer
;
int
i
,
r
,
aa
,
layer
;
...
@@ -100,7 +99,14 @@ void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch) {
...
@@ -100,7 +99,14 @@ void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch) {
}
}
}
}
LTE_eNB_DLSCH_t
*
new_eNB_dlsch
(
unsigned
char
Kmimo
,
unsigned
char
Mdlharq
,
uint32_t
Nsoft
,
unsigned
char
N_RB_DL
,
uint8_t
abstraction_flag
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
LTE_eNB_DLSCH_t
*
new_eNB_dlsch
(
unsigned
char
Kmimo
,
unsigned
char
Mdlharq
,
uint32_t
Nsoft
,
unsigned
char
N_RB_DL
,
uint8_t
abstraction_flag
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
LTE_eNB_DLSCH_t
*
dlsch
;
LTE_eNB_DLSCH_t
*
dlsch
;
unsigned
char
exit_flag
=
0
,
i
,
j
,
r
,
aa
,
layer
;
unsigned
char
exit_flag
=
0
,
i
,
j
,
r
,
aa
,
layer
;
int
re
;
int
re
;
...
@@ -222,6 +228,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_
...
@@ -222,6 +228,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_
return
(
NULL
);
return
(
NULL
);
}
}
void
clean_eNb_dlsch
(
LTE_eNB_DLSCH_t
*
dlsch
)
{
void
clean_eNb_dlsch
(
LTE_eNB_DLSCH_t
*
dlsch
)
{
unsigned
char
Mdlharq
;
unsigned
char
Mdlharq
;
unsigned
char
i
,
j
,
r
;
unsigned
char
i
,
j
,
r
;
...
@@ -258,8 +265,6 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch) {
...
@@ -258,8 +265,6 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch) {
}
}
int
dlsch_encoding_2threads0
(
te_params
*
tep
)
{
int
dlsch_encoding_2threads0
(
te_params
*
tep
)
{
LTE_eNB_DLSCH_t
*
dlsch
=
tep
->
dlsch
;
LTE_eNB_DLSCH_t
*
dlsch
=
tep
->
dlsch
;
unsigned
int
G
=
tep
->
G
;
unsigned
int
G
=
tep
->
G
;
...
@@ -359,7 +364,6 @@ void *te_thread(void *param) {
...
@@ -359,7 +364,6 @@ void *te_thread(void *param) {
}
}
int
dlsch_encoding_2threads
(
PHY_VARS_eNB
*
eNB
,
int
dlsch_encoding_2threads
(
PHY_VARS_eNB
*
eNB
,
unsigned
char
*
a
,
unsigned
char
*
a
,
uint8_t
num_pdcch_symbols
,
uint8_t
num_pdcch_symbols
,
...
@@ -549,6 +553,8 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
...
@@ -549,6 +553,8 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_OUT
);
return
(
0
);
return
(
0
);
}
}
int
dlsch_encoding_all
(
PHY_VARS_eNB
*
eNB
,
int
dlsch_encoding_all
(
PHY_VARS_eNB
*
eNB
,
unsigned
char
*
a
,
unsigned
char
*
a
,
uint8_t
num_pdcch_symbols
,
uint8_t
num_pdcch_symbols
,
...
@@ -813,10 +819,3 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
...
@@ -813,10 +819,3 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_OUT
);
return
(
0
);
return
(
0
);
}
}
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_common.h
View file @
08eda57a
...
@@ -898,39 +898,6 @@ typedef struct THREAD_STRUCT_s {
...
@@ -898,39 +898,6 @@ typedef struct THREAD_STRUCT_s {
PARALLEL_CONF_t
parallel_conf
;
PARALLEL_CONF_t
parallel_conf
;
WORKER_CONF_t
worker_conf
;
WORKER_CONF_t
worker_conf
;
}
THREAD_STRUCT
;
}
THREAD_STRUCT
;
/*extern THREAD_STRUCT thread_struct;
static inline void set_parallel_conf(char *parallel_conf) {
mapping config[]= {
FOREACH_PARALLEL(GENERATE_ENUMTXT)
{NULL,-1}
};
thread_struct.parallel_conf = (PARALLEL_CONF_t)map_str_to_int(config, parallel_conf);
if (thread_struct.parallel_conf == -1 ) {
LOG_E(ENB_APP,"Impossible value: %s\n", parallel_conf);
thread_struct.parallel_conf = PARALLEL_SINGLE_THREAD;
}
}
static inline void set_worker_conf(char *worker_conf) {
mapping config[]={
FOREACH_WORKER(GENERATE_ENUMTXT)
{NULL, -1}
};
thread_struct.worker_conf = (WORKER_CONF_t)map_str_to_int(config, worker_conf);
if (thread_struct.worker_conf == -1 ) {
LOG_E(ENB_APP,"Impossible value: %s\n", worker_conf);
thread_struct.worker_conf = WORKER_DISABLE ;
}
}
static inline PARALLEL_CONF_t get_thread_parallel_conf(void) {
return thread_struct.parallel_conf;
}
static inline WORKER_CONF_t get_thread_worker_conf(void) {
return thread_struct.worker_conf;
}*/
typedef
enum
{
SF_DL
,
SF_UL
,
SF_S
}
lte_subframe_t
;
typedef
enum
{
SF_DL
,
SF_UL
,
SF_S
}
lte_subframe_t
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
08eda57a
...
@@ -35,38 +35,30 @@
...
@@ -35,38 +35,30 @@
#include <unistd.h>
#include <unistd.h>
#include <execinfo.h>
#include <execinfo.h>
#include <signal.h>
#include <signal.h>
#include "common/config/config_load_configmodule.h"
#include "SIMULATION/TOOLS/sim.h"
#include "common/utils/LOG/log.h"
#include "LAYER2/MAC/mac_vars.h"
#include "nfapi/oai_integration/vendor_ext.h"
#include "PHY/types.h"
#include "PHY/types.h"
#include "PHY/defs_eNB.h"
#include "PHY/defs_eNB.h"
#include "PHY/defs_UE.h"
#include "PHY/defs_UE.h"
#include "PHY/phy_vars.h"
#include "PHY/phy_vars.h"
#include "PHY/INIT/phy_init.h"
#include "SCHED/sched_eNB.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "SCHED/sched_common_vars.h"
#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
#include "LAYER2/MAC/mac_vars.h"
#include "OCG_vars.h"
#include "common/utils/LOG/log.h"
#include "UTIL/LISTS/list.h"
#include "unitary_defs.h"
#include "PHY/TOOLS/lte_phy_scope.h"
#include "dummy_functions.c"
#include "PHY/MODULATION/modulation_common.h"
#include "PHY/MODULATION/modulation_common.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "PHY/TOOLS/lte_phy_scope.h"
#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
#include "SCHED/sched_eNB.h"
#include "SCHED/sched_eNB.h"
#include "SCHED/sched_common_vars.h"
#include "SCHED_UE/sched_UE.h"
#include "SCHED_UE/sched_UE.h"
#include "common/config/config_load_configmodule.h"
#include "SIMULATION/TOOLS/sim.h"
#include "PHY/INIT/phy_init.h"
#include "UTIL/LISTS/list.h"
#include "nfapi/oai_integration/vendor_ext.h"
#include "OCG_vars.h"
#include "unitary_defs.h"
#include "dummy_functions.c"
#include "executables/thread-common.h"
void
feptx_ofdm
(
RU_t
*
ru
,
int
frame
,
int
subframe
);
void
feptx_ofdm
(
RU_t
*
ru
,
int
frame
,
int
subframe
);
void
feptx_prec
(
RU_t
*
ru
,
int
frame
,
int
subframe
);
void
feptx_prec
(
RU_t
*
ru
,
int
frame
,
int
subframe
);
...
@@ -84,30 +76,6 @@ double t_tx_min = 1000000000; /*!< \brief initial min process time for tx */
...
@@ -84,30 +76,6 @@ double t_tx_min = 1000000000; /*!< \brief initial min process time for tx */
double
t_rx_min
=
1000000000
;
/*!< \brief initial min process time for rx */
double
t_rx_min
=
1000000000
;
/*!< \brief initial min process time for rx */
int
n_tx_dropped
=
0
;
/*!< \brief initial max process time for tx */
int
n_tx_dropped
=
0
;
/*!< \brief initial max process time for tx */
int
n_rx_dropped
=
0
;
/*!< \brief initial max process time for rx */
int
n_rx_dropped
=
0
;
/*!< \brief initial max process time for rx */
#include "executables/thread-common.h"
//THREAD_STRUCT thread_struct;
//static THREAD_STRUCT thread_struct;
/*void set_parallel_conf_dlsim(char *parallel_conf) {
if(strcmp(parallel_conf,"PARALLEL_SINGLE_THREAD")==0) thread_struct.parallel_conf = PARALLEL_SINGLE_THREAD;
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_SPLIT")==0) thread_struct.parallel_conf = PARALLEL_RU_L1_SPLIT;
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_TRX_SPLIT")==0) thread_struct.parallel_conf = PARALLEL_RU_L1_TRX_SPLIT;
printf("[CONFIG] parallel conf is set to %d\n",thread_struct.parallel_conf);
}
void set_worker_conf_dlsim(char *worker_conf) {
if(strcmp(worker_conf,"WORKER_DISABLE")==0) thread_struct.worker_conf = WORKER_DISABLE;
else if(strcmp(worker_conf,"WORKER_ENABLE")==0) thread_struct.worker_conf = WORKER_ENABLE;
printf("[CONFIG] worker conf is set to %d\n",thread_struct.worker_conf);
}
PARALLEL_CONF_t get_thread_parallel_conf(void) {
return thread_struct.parallel_conf;
}
WORKER_CONF_t get_thread_worker_conf(void) {
return thread_struct.worker_conf;
}*/
int
emulate_rf
=
0
;
int
emulate_rf
=
0
;
...
@@ -122,8 +90,6 @@ void handler(int sig) {
...
@@ -122,8 +90,6 @@ void handler(int sig) {
exit
(
1
);
exit
(
1
);
}
}
//DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2_2A[2];
//DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2_2A[2];
DCI1E_5MHz_2A_M10PRB_TDD_t
DLSCH_alloc_pdu2_1E
[
2
];
DCI1E_5MHz_2A_M10PRB_TDD_t
DLSCH_alloc_pdu2_1E
[
2
];
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
08eda57a
...
@@ -33,30 +33,28 @@
...
@@ -33,30 +33,28 @@
#include <string.h>
#include <string.h>
#include <math.h>
#include <math.h>
#include <unistd.h>
#include <unistd.h>
#include "
SIMULATION/TOOLS/sim
.h"
#include "
LAYER2/MAC/mac_vars
.h"
#include "PHY/types.h"
#include "PHY/types.h"
#include "PHY/defs_common.h"
#include "PHY/defs_common.h"
#include "PHY/defs_eNB.h"
#include "PHY/defs_eNB.h"
#include "PHY/defs_UE.h"
#include "PHY/defs_UE.h"
#include "PHY/phy_vars.h"
#include "PHY/phy_vars.h"
#include "targets/RT/USER/lte-softmodem.h"
#include "PHY/INIT/phy_init.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
#include "PHY/TOOLS/lte_phy_scope.h"
#include "SCHED/sched_common_vars.h"
#include "SCHED/sched_common_vars.h"
#include "SCHED/sched_eNB.h"
#include "SCHED/sched_eNB.h"
#include "SCHED_UE/sched_UE.h"
#include "SCHED_UE/sched_UE.h"
#include "
LAYER2/MAC/mac_vars
.h"
#include "
SIMULATION/TOOLS/sim
.h"
#include "OCG_vars.h"
#include "OCG_vars.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
#include "PHY/INIT/phy_init.h"
#include "unitary_defs.h"
#include "unitary_defs.h"
#include "PHY/TOOLS/lte_phy_scope.h"
#include "dummy_functions.c"
#include "dummy_functions.c"
#include "nfapi/oai_integration/vendor_ext.h"
#include "nfapi/oai_integration/vendor_ext.h"
#include "common/config/config_load_configmodule.h"
#include "common/config/config_load_configmodule.h"
#include "executables/thread-common.h"
#include "targets/RT/USER/lte-softmodem.h"
double
cpuf
;
double
cpuf
;
#define inMicroS(a) (((double)(a))/(cpu_freq_GHz*1000.0))
#define inMicroS(a) (((double)(a))/(cpu_freq_GHz*1000.0))
//#define MCS_COUNT 23//added for PHY abstraction
//#define MCS_COUNT 23//added for PHY abstraction
...
@@ -96,8 +94,6 @@ nfapi_tx_request_pdu_t tx_pdu_list[MAX_NUM_TX_REQUEST_PDU];
...
@@ -96,8 +94,6 @@ nfapi_tx_request_pdu_t tx_pdu_list[MAX_NUM_TX_REQUEST_PDU];
nfapi_tx_request_t
TX_req
;
nfapi_tx_request_t
TX_req
;
Sched_Rsp_t
sched_resp
;
Sched_Rsp_t
sched_resp
;
#include "executables/thread-common.h"
//THREAD_STRUCT thread_struct;
void
void
fill_nfapi_ulsch_config_request
(
nfapi_ul_config_request_pdu_t
*
ul_config_pdu
,
fill_nfapi_ulsch_config_request
(
nfapi_ul_config_request_pdu_t
*
ul_config_pdu
,
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
08eda57a
...
@@ -80,7 +80,7 @@ int main(int argc, char **argv)
...
@@ -80,7 +80,7 @@ int main(int argc, char **argv)
{
{
char
c
;
char
c
;
int
i
,
aa
;
//,l;
int
i
,
aa
;
//,l;
double
sigma2
,
sigma2_dB
=
10
,
SNR
,
snr0
=-
2
.
0
,
snr1
=
2
.
0
;
double
sigma2
,
sigma2_dB
=
10
,
SNR
,
snr0
=-
2
.
0
,
snr1
=
2
.
0
;
uint8_t
snr1set
=
0
;
uint8_t
snr1set
=
0
;
int
**
txdata
;
int
**
txdata
;
double
**
s_re
,
**
s_im
,
**
r_re
,
**
r_im
;
double
**
s_re
,
**
s_im
,
**
r_re
,
**
r_im
;
...
@@ -735,7 +735,7 @@ int main(int argc, char **argv)
...
@@ -735,7 +735,7 @@ int main(int argc, char **argv)
available_bits
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
mod_order
,
rel15
.
nb_layers
);
available_bits
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
mod_order
,
rel15
.
nb_layers
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
printf
(
"available_bits = %
d
\n
"
,
available_bits
);
printf
(
"available_bits = %
u
\n
"
,
available_bits
);
for
(
i
=
0
;
i
<
available_bits
;
i
++
)
{
for
(
i
=
0
;
i
<
available_bits
;
i
++
)
{
...
@@ -774,7 +774,7 @@ int main(int argc, char **argv)
...
@@ -774,7 +774,7 @@ int main(int argc, char **argv)
if
(
errors_bit
>
0
)
{
if
(
errors_bit
>
0
)
{
n_false_positive
++
;
n_false_positive
++
;
if
(
n_trials
==
1
)
if
(
n_trials
==
1
)
printf
(
"errors_bit = %
d
(trial %d)
\n
"
,
errors_bit
,
trial
);
printf
(
"errors_bit = %
u
(trial %d)
\n
"
,
errors_bit
,
trial
);
}
}
printf
(
"
\n
"
);
printf
(
"
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
openair2/ENB_APP/enb_config.c
View file @
08eda57a
...
@@ -56,10 +56,7 @@
...
@@ -56,10 +56,7 @@
#include "enb_paramdef.h"
#include "enb_paramdef.h"
#include "proto_agent.h"
#include "proto_agent.h"
#include "executables/thread-common.h"
#include "executables/thread-common.h"
/*extern void set_parallel_conf(char *parallel_conf);
extern void set_worker_conf(char *worker_conf);
extern PARALLEL_CONF_t get_thread_parallel_conf(void);
extern WORKER_CONF_t get_thread_worker_conf(void);*/
extern
uint32_t
to_earfcn_DL
(
int
eutra_bandP
,
uint32_t
dl_CarrierFreq
,
uint32_t
bw
);
extern
uint32_t
to_earfcn_DL
(
int
eutra_bandP
,
uint32_t
dl_CarrierFreq
,
uint32_t
bw
);
extern
uint32_t
to_earfcn_UL
(
int
eutra_bandP
,
uint32_t
ul_CarrierFreq
,
uint32_t
bw
);
extern
uint32_t
to_earfcn_UL
(
int
eutra_bandP
,
uint32_t
ul_CarrierFreq
,
uint32_t
bw
);
extern
char
*
parallel_config
;
extern
char
*
parallel_config
;
...
...
This diff is collapsed.
Click to expand it.
openair2/GNB_APP/gnb_config.c
View file @
08eda57a
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
//#include "RRC_config_tools.h"
//#include "RRC_config_tools.h"
#include "gnb_paramdef.h"
#include "gnb_paramdef.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
#include "executables/thread-common.h"
#include "NR_SCS-SpecificCarrier.h"
#include "NR_SCS-SpecificCarrier.h"
#include "NR_TDD-UL-DL-ConfigCommon.h"
#include "NR_TDD-UL-DL-ConfigCommon.h"
#include "NR_FrequencyInfoUL.h"
#include "NR_FrequencyInfoUL.h"
...
@@ -77,11 +77,7 @@
...
@@ -77,11 +77,7 @@
#include "NR_EUTRA-MBSFN-SubframeConfig.h"
#include "NR_EUTRA-MBSFN-SubframeConfig.h"
extern
uint16_t
sf_ahead
;
extern
uint16_t
sf_ahead
;
#include "executables/thread-common.h"
/*extern void set_parallel_conf(char *parallel_conf);
extern void set_worker_conf(char *worker_conf);
extern PARALLEL_CONF_t get_thread_parallel_conf(void);
extern WORKER_CONF_t get_thread_worker_conf(void);*/
extern
int
config_check_band_frequencies
(
int
ind
,
int16_t
band
,
uint32_t
downlink_frequency
,
extern
int
config_check_band_frequencies
(
int
ind
,
int16_t
band
,
uint32_t
downlink_frequency
,
int32_t
uplink_frequency_offset
,
uint32_t
frame_type
);
int32_t
uplink_frequency_offset
,
uint32_t
frame_type
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/mac_vars.h
View file @
08eda57a
...
@@ -26,7 +26,6 @@
...
@@ -26,7 +26,6 @@
* \version 1.0
* \version 1.0
* \email navid.nikaein@eurecom.fr
* \email navid.nikaein@eurecom.fr
* @ingroup _mac
* @ingroup _mac
*/
*/
...
@@ -102,7 +101,6 @@ MAC_RLC_XFACE *Mac_rlc_xface;
...
@@ -102,7 +101,6 @@ MAC_RLC_XFACE *Mac_rlc_xface;
int
pCC_id
[
NUMBER_OF_eNB_MAX
];
int
pCC_id
[
NUMBER_OF_eNB_MAX
];
eNB_ULSCH_INFO
eNB_ulsch_info
[
NUMBER_OF_eNB_MAX
][
MAX_NUM_CCs
][
MAX_MOBILES_PER_ENB
];
// eNBxUE = 8x8
eNB_ULSCH_INFO
eNB_ulsch_info
[
NUMBER_OF_eNB_MAX
][
MAX_NUM_CCs
][
MAX_MOBILES_PER_ENB
];
// eNBxUE = 8x8
eNB_DLSCH_INFO
eNB_dlsch_info
[
NUMBER_OF_eNB_MAX
][
MAX_NUM_CCs
][
MAX_MOBILES_PER_ENB
];
// eNBxUE = 8x8
eNB_DLSCH_INFO
eNB_dlsch_info
[
NUMBER_OF_eNB_MAX
][
MAX_NUM_CCs
][
MAX_MOBILES_PER_ENB
];
// eNBxUE = 8x8
...
@@ -126,7 +124,6 @@ DCI1A_5MHz_TDD_1_6_t CCCH_alloc_pdu;
...
@@ -126,7 +124,6 @@ DCI1A_5MHz_TDD_1_6_t CCCH_alloc_pdu;
DCI1_5MHz_TDD_t
DLSCH_alloc_pdu
;
DCI1_5MHz_TDD_t
DLSCH_alloc_pdu
;
DCI1C_5MHz_t
MCCH_alloc_pdu
;
DCI1C_5MHz_t
MCCH_alloc_pdu
;
DCI0_5MHz_FDD_t
UL_alloc_pdu_fdd
;
DCI0_5MHz_FDD_t
UL_alloc_pdu_fdd
;
DCI1A_5MHz_FDD_t
DLSCH_alloc_pdu1A_fdd
;
DCI1A_5MHz_FDD_t
DLSCH_alloc_pdu1A_fdd
;
...
...
This diff is collapsed.
Click to expand it.
targets/ARCH/COMMON/common_lib.h
View file @
08eda57a
...
@@ -41,9 +41,9 @@
...
@@ -41,9 +41,9 @@
/* name of shared library implementing the transport */
/* name of shared library implementing the transport */
#define OAI_TP_LIBNAME "oai_transpro"
#define OAI_TP_LIBNAME "oai_transpro"
/* name of shared library implementing the basic/rf simulator */
/* name of shared library implementing the basic/rf simulator */
#define OAI_RFSIM_LIBNAME
"rfsimulator"
#define OAI_RFSIM_LIBNAME "rfsimulator"
/* name of shared library implementing the basic/rf simulator */
/* name of shared library implementing the basic/rf simulator */
#define OAI_BASICSIM_LIBNAME
"tcp_bridge_oai"
#define OAI_BASICSIM_LIBNAME "tcp_bridge_oai"
/* flags for BBU to determine whether the attached radio head is local or remote */
/* flags for BBU to determine whether the attached radio head is local or remote */
#define RAU_LOCAL_RADIO_HEAD 0
#define RAU_LOCAL_RADIO_HEAD 0
#define RAU_REMOTE_RADIO_HEAD 1
#define RAU_REMOTE_RADIO_HEAD 1
...
...
This diff is collapsed.
Click to expand it.
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
View file @
08eda57a
...
@@ -42,11 +42,11 @@
...
@@ -42,11 +42,11 @@
#include <net/if.h>
#include <net/if.h>
#include <netinet/ether.h>
#include <netinet/ether.h>
#define MAX_INST
4
#define MAX_INST 4
#define DEFAULT_IF
"lo"
#define DEFAULT_IF "lo"
#define TX_FLAG
1
#define TX_FLAG 1
#define RX_FLAG
0
#define RX_FLAG 0
#include "if_defs.h"
#include "if_defs.h"
#define APP_HEADER_SIZE_BYTES (sizeof(int32_t) + sizeof(openair0_timestamp))
#define APP_HEADER_SIZE_BYTES (sizeof(int32_t) + sizeof(openair0_timestamp))
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-enb.c
View file @
08eda57a
...
@@ -64,7 +64,7 @@
...
@@ -64,7 +64,7 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
#include "
../..
/ARCH/COMMON/common_lib.h"
#include "
targets
/ARCH/COMMON/common_lib.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
...
@@ -73,7 +73,6 @@
...
@@ -73,7 +73,6 @@
#include "PHY/phy_extern.h"
#include "PHY/phy_extern.h"
#include "LAYER2/MAC/mac.h"
#include "LAYER2/MAC/mac.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_proto.h"
#include "LAYER2/MAC/mac_proto.h"
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-ru.c
View file @
08eda57a
...
@@ -50,10 +50,6 @@
...
@@ -50,10 +50,6 @@
#include "assertions.h"
#include "assertions.h"
#include "msc.h"
#include "msc.h"
#include "../../ARCH/COMMON/common_lib.h"
#include "../../ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "PHY/defs_common.h"
#include "PHY/defs_common.h"
#include "PHY/phy_extern.h"
#include "PHY/phy_extern.h"
#include "PHY/types.h"
#include "PHY/types.h"
...
@@ -64,7 +60,6 @@
...
@@ -64,7 +60,6 @@
#include "PHY/LTE_TRANSPORT/if5_tools.h"
#include "PHY/LTE_TRANSPORT/if5_tools.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "PHY_INTERFACE/phy_interface.h"
#include "PHY_INTERFACE/phy_interface.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac.h"
#include "LAYER2/MAC/mac.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_proto.h"
#include "LAYER2/MAC/mac_proto.h"
...
@@ -78,6 +73,8 @@
...
@@ -78,6 +73,8 @@
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "nfapi/oai_integration/vendor_ext.h"
#include "nfapi/oai_integration/vendor_ext.h"
#include "enb_config.h"
#include "enb_config.h"
#include "targets/ARCH/COMMON/common_lib.h"
#include "targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "targets/RT/USER/lte-softmodem.h"
#include "targets/RT/USER/lte-softmodem.h"
//#include "PHY/TOOLS/time_meas.h"
//#include "PHY/TOOLS/time_meas.h"
...
@@ -95,7 +92,6 @@ static int DEFENBS[] = {0};
...
@@ -95,7 +92,6 @@ static int DEFENBS[] = {0};
#include "s1ap_eNB.h"
#include "s1ap_eNB.h"
#include "SIMULATION/ETH_TRANSPORT/proto.h"
#include "SIMULATION/ETH_TRANSPORT/proto.h"
#include "T.h"
#include "T.h"
#include "pdcp.h"
#include "pdcp.h"
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem-common.c
View file @
08eda57a
...
@@ -40,7 +40,6 @@ static softmodem_params_t softmodem_params;
...
@@ -40,7 +40,6 @@ static softmodem_params_t softmodem_params;
char
*
parallel_config
=
NULL
;
char
*
parallel_config
=
NULL
;
char
*
worker_config
=
NULL
;
char
*
worker_config
=
NULL
;
uint64_t
get_softmodem_optmask
(
void
)
{
uint64_t
get_softmodem_optmask
(
void
)
{
return
softmodem_params
.
optmask
;
return
softmodem_params
.
optmask
;
}
}
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem.h
View file @
08eda57a
...
@@ -238,53 +238,6 @@
...
@@ -238,53 +238,6 @@
}
}
/***************************************************************************************************************************************/
/***************************************************************************************************************************************/
/* */
//#include "threads_t.h"
//extern threads_t threads;
//extern THREAD_STRUCT thread_struct;
//THREAD_STRUCT thread_struct;
/*static inline void set_parallel_conf(char *parallel_conf) {
mapping config[]= {
FOREACH_PARALLEL(GENERATE_ENUMTXT)
{NULL,-1}
};
thread_struct.parallel_conf = (PARALLEL_CONF_t)map_str_to_int(config, parallel_conf);
if (thread_struct.parallel_conf == -1 ) {
LOG_E(ENB_APP,"Impossible value: %s\n", parallel_conf);
thread_struct.parallel_conf = PARALLEL_SINGLE_THREAD;
}
printf("[CONFIG] parallel_conf is set to %d\n", thread_struct.parallel_conf);
}
static inline void set_worker_conf(char *worker_conf) {
mapping config[]={
FOREACH_WORKER(GENERATE_ENUMTXT)
{NULL, -1}
};
thread_struct.worker_conf = (WORKER_CONF_t)map_str_to_int(config, worker_conf);
if (thread_struct.worker_conf == -1 ) {
LOG_E(ENB_APP,"Impossible value: %s\n", worker_conf);
thread_struct.worker_conf = WORKER_DISABLE ;
}
printf("[CONFIG] worker_conf is set to %d\n", thread_struct.worker_conf);
}
static inline PARALLEL_CONF_t get_thread_parallel_conf(void) {
return thread_struct.parallel_conf;
}
static inline WORKER_CONF_t get_thread_worker_conf(void) {
return thread_struct.worker_conf;
}*/
/*PARALLEL_CONF_t get_thread_parallel_conf(void);
WORKER_CONF_t get_thread_worker_conf(void);
void set_parallel_conf(char *parallel_conf);
void set_worker_conf(char *worker_conf);
*/
#define SOFTMODEM_NOS1_BIT (1<<0)
#define SOFTMODEM_NOS1_BIT (1<<0)
#define SOFTMODEM_NOKRNMOD_BIT (1<<1)
#define SOFTMODEM_NOKRNMOD_BIT (1<<1)
...
@@ -293,23 +246,6 @@ void set_worker_conf(char *worker_conf);
...
@@ -293,23 +246,6 @@ void set_worker_conf(char *worker_conf);
#define SOFTMODEM_BASICSIM_BIT (1<<11)
#define SOFTMODEM_BASICSIM_BIT (1<<11)
#define SOFTMODEM_SIML1_BIT (1<<12)
#define SOFTMODEM_SIML1_BIT (1<<12)
#define SOFTMODEM_DOFORMS_BIT (1<<15)
#define SOFTMODEM_DOFORMS_BIT (1<<15)
/*typedef struct {
uint64_t optmask;
THREAD_STRUCT thread_struct;
char rf_config_file[1024];
int phy_test;
uint8_t usim_test;
int emulate_rf;
int wait_for_sync; //eNodeB only
int single_thread_flag; //eNodeB only
int chain_offset;
int numerology;
unsigned int start_msc;
uint32_t clock_source;
uint32_t timing_source;
int hw_timing_advance;
uint32_t send_dmrs_sync;
} softmodem_params_t;*/
#define IS_SOFTMODEM_NOS1 ( get_softmodem_optmask() & SOFTMODEM_NOS1_BIT)
#define IS_SOFTMODEM_NOS1 ( get_softmodem_optmask() & SOFTMODEM_NOS1_BIT)
#define IS_SOFTMODEM_NOKRNMOD ( get_softmodem_optmask() & SOFTMODEM_NOKRNMOD_BIT)
#define IS_SOFTMODEM_NOKRNMOD ( get_softmodem_optmask() & SOFTMODEM_NOKRNMOD_BIT)
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-uesoftmodem.c
View file @
08eda57a
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
* \date 2012
* \date 2012
* \version 0.1
* \version 0.1
* \company Eurecom
* \company Eurecom
* \email:
knopp@eurecom.fr,florian.kaltenberger@eurecom.fr, navid.nikaein
@eurecom.fr
* \email:
{knopp, florian.kaltenberger, navid.nikaein}
@eurecom.fr
* \note
* \note
* \warning
* \warning
*/
*/
...
@@ -172,14 +172,9 @@ static LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
...
@@ -172,14 +172,9 @@ static LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
uint8_t
exit_missed_slots
=
1
;
uint8_t
exit_missed_slots
=
1
;
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
/* prototypes from function implemented in lte-ue.c, probably should be elsewhere in a include
// prototypes from function implemented in lte-ue.c, probably should be elsewhere in a include file.
file */
extern
void
init_UE_stub_single_thread
(
int
nb_inst
,
int
eMBMS_active
,
int
uecap_xer_in
,
char
*
emul_iface
);
extern
void
init_UE_stub_single_thread
(
int
nb_inst
,
int
eMBMS_active
,
int
uecap_xer_in
,
char
*
emul_iface
);
extern
PHY_VARS_UE
*
init_ue_vars
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
extern
PHY_VARS_UE
*
init_ue_vars
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
extern
void
get_uethreads_params
(
void
);
extern
void
get_uethreads_params
(
void
);
int
transmission_mode
=
1
;
int
transmission_mode
=
1
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment