Merge branch 'OAI_develop' into oai_develop_nfapi
This commit is contained in:
@@ -41,7 +41,7 @@
|
||||
|
||||
int parse_stringlist(paramdef_t *cfgoptions, char *val) {
|
||||
char *atoken;
|
||||
char *tokctx;
|
||||
char *tokctx = NULL;
|
||||
char *tmpval=strdup(val);
|
||||
int numelt=0;
|
||||
cfgoptions->numelt=0;
|
||||
@@ -214,7 +214,7 @@ int config_process_cmdline(paramdef_t *cfgoptions,int numoptions, char *prefix)
|
||||
|
||||
/* first check help options, either --help, -h or --help_<section> */
|
||||
if (strncmp(oneargv, "-h",2) == 0 || strncmp(oneargv, "--help",6) == 0 ) {
|
||||
char *tokctx;
|
||||
char *tokctx = NULL;
|
||||
pp=strtok_r(oneargv, "_",&tokctx);
|
||||
config_get_if()->argv_info[i] |= CONFIG_CMDLINEOPT_PROCESSED;
|
||||
|
||||
|
||||
@@ -496,10 +496,10 @@ static inline void printMeas(char *txt, Meas *M, int period) {
|
||||
M->iterations,
|
||||
M->maxArray[1],M->maxArray[2], M->maxArray[3],M->maxArray[4], M->maxArray[5],
|
||||
M->maxArray[6],M->maxArray[7], M->maxArray[8],M->maxArray[9],M->maxArray[10]);
|
||||
#if DISABLE_LOG_X
|
||||
printf("%s",txt2);
|
||||
#if T_TRACER
|
||||
LOG_W(PHY,"%s",txt2);
|
||||
#else
|
||||
LOG_W(PHY, "%s",txt2);
|
||||
printf("%s",txt2);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,8 @@ struct vcd_module_s {
|
||||
|
||||
const char* eurecomVariablesNames[] = {
|
||||
"frame_number_TX0_eNB",
|
||||
"mask_ru",
|
||||
"mask_tx_ru",
|
||||
"frame_number_TX1_eNB",
|
||||
"frame_number_RX0_eNB",
|
||||
"frame_number_RX1_eNB",
|
||||
@@ -78,6 +80,45 @@ const char* eurecomVariablesNames[] = {
|
||||
"subframe_number_TX1_RU",
|
||||
"subframe_number_RX0_RU",
|
||||
"subframe_number_RX1_RU",
|
||||
"subframe_number_if4p5_north_out",
|
||||
"frame_number_if4p5_north_out",
|
||||
"subframe_number_if4p5_north_asynch_in",
|
||||
"frame_number_if4p5_north_asynch_in",
|
||||
"subframe_number_if4p5_south_out_ru",
|
||||
"subframe_number_if4p5_south_out_ru1",
|
||||
"subframe_number_if4p5_south_out_ru2",
|
||||
"frame_number_if4p5_south_out_ru",
|
||||
"frame_number_if4p5_south_out_ru1",
|
||||
"frame_number_if4p5_south_out_ru2",
|
||||
"subframe_number_if4p5_south_in_ru",
|
||||
"subframe_number_if4p5_south_in_ru1",
|
||||
"subframe_number_if4p5_south_in_ru2",
|
||||
"frame_number_if4p5_south_in_ru",
|
||||
"frame_number_if4p5_south_in_ru1",
|
||||
"frame_number_if4p5_south_in_ru2",
|
||||
"subframe_number_wakeup_l1s_ru",
|
||||
"subframe_number_wakeup_l1s_ru1",
|
||||
"subframe_number_wakeup_l1s_ru2",
|
||||
"frame_number_wakeup_l1s_ru",
|
||||
"frame_number_wakeup_l1s_ru1",
|
||||
"frame_number_wakeup_l1s_ru2",
|
||||
"subframe_number_wakeup_rxtx_rx_ru",
|
||||
"subframe_number_wakeup_rxtx_rx_ru1",
|
||||
"subframe_number_wakeup_rxtx_rx_ru2",
|
||||
"frame_number_wakeup_rxtx_rx_ru",
|
||||
"frame_number_wakeup_rxtx_rx_ru1",
|
||||
"frame_number_wakeup_rxtx_rx_ru2",
|
||||
"subframe_number_wakeup_rxtx_tx_ru",
|
||||
"subframe_number_wakeup_rxtx_tx_ru1",
|
||||
"subframe_number_wakeup_rxtx_tx_ru2",
|
||||
"frame_number_wakeup_rxtx_tx_ru",
|
||||
"frame_number_wakeup_rxtx_tx_ru1",
|
||||
"frame_number_wakeup_rxtx_tx_ru2",
|
||||
"ic_enb",
|
||||
"ic_enb1",
|
||||
"ic_enb2",
|
||||
"l1_proc_ic",
|
||||
"l1_proc_tx_ic",
|
||||
"runtime_TX_eNB",
|
||||
"runtime_RX_eNB",
|
||||
"frame_number_TX0_UE",
|
||||
@@ -207,8 +248,10 @@ const char* eurecomFunctionsNames[] = {
|
||||
"trx_write",
|
||||
"trx_read_ue",
|
||||
"trx_write_ue",
|
||||
"trx_read_if",
|
||||
"trx_write_if",
|
||||
"trx_read_if0",
|
||||
"trx_read_if1",
|
||||
"trx_write_if0",
|
||||
"trx_write_if1",
|
||||
"eNB_thread_rxtx0",
|
||||
"eNB_thread_rxtx1",
|
||||
"ue_thread_synch",
|
||||
@@ -226,6 +269,9 @@ const char* eurecomFunctionsNames[] = {
|
||||
"ue_lock_mutex_rxtx_for_cnt_decrement1",
|
||||
"ue_lock_mutex_rxtx_for_cnt_increment0",
|
||||
"ue_lock_mutex_rxtx_for_cnt_increment1",
|
||||
"lock_mutex_ru",
|
||||
"lock_mutex_ru1",
|
||||
"lock_mutex_ru2",
|
||||
/* simulation signals */
|
||||
"do_DL_sig",
|
||||
"do_UL_sig",
|
||||
@@ -244,6 +290,8 @@ const char* eurecomFunctionsNames[] = {
|
||||
/* PHY signals */
|
||||
"ue_synch",
|
||||
"ue_slot_fep",
|
||||
"ue_slot_fep_mbsfn",
|
||||
"ue_slot_fep_mbsfn_khz_1dot25",
|
||||
"ue_rrc_measurements",
|
||||
"ue_gain_control",
|
||||
"ue_adjust_synch",
|
||||
@@ -254,10 +302,34 @@ const char* eurecomFunctionsNames[] = {
|
||||
"phy_procedures_eNb_tx1",
|
||||
"phy_procedures_ru_feprx0",
|
||||
"phy_procedures_ru_feprx1",
|
||||
"phy_procedures_ru_feprx2",
|
||||
"phy_procedures_ru_feprx3",
|
||||
"phy_procedures_ru_feprx4",
|
||||
"phy_procedures_ru_feprx5",
|
||||
"phy_procedures_ru_feprx6",
|
||||
"phy_procedures_ru_feprx7",
|
||||
"phy_procedures_ru_feprx8",
|
||||
"phy_procedures_ru_feprx9",
|
||||
"phy_procedures_ru_feptx_ofdm0",
|
||||
"phy_procedures_ru_feptx_ofdm1",
|
||||
"phy_procedures_ru_feptx_ofdm2",
|
||||
"phy_procedures_ru_feptx_ofdm3",
|
||||
"phy_procedures_ru_feptx_ofdm4",
|
||||
"phy_procedures_ru_feptx_ofdm5",
|
||||
"phy_procedures_ru_feptx_ofdm6",
|
||||
"phy_procedures_ru_feptx_ofdm7",
|
||||
"phy_procedures_ru_feptx_ofdm8",
|
||||
"phy_procedures_ru_feptx_ofdm9",
|
||||
"phy_procedures_ru_feptx_prec0",
|
||||
"phy_procedures_ru_feptx_prec1",
|
||||
"phy_procedures_ru_feptx_prec2",
|
||||
"phy_procedures_ru_feptx_prec3",
|
||||
"phy_procedures_ru_feptx_prec4",
|
||||
"phy_procedures_ru_feptx_prec5",
|
||||
"phy_procedures_ru_feptx_prec6",
|
||||
"phy_procedures_ru_feptx_prec7",
|
||||
"phy_procedures_ru_feptx_prec8",
|
||||
"phy_procedures_ru_feptx_prec9",
|
||||
"phy_procedures_eNb_rx_uespec0",
|
||||
"phy_procedures_eNb_rx_uespec1",
|
||||
"phy_procedures_ue_tx",
|
||||
@@ -286,9 +358,12 @@ const char* eurecomFunctionsNames[] = {
|
||||
"dlsch_decoding5",
|
||||
"dlsch_decoding6",
|
||||
"dlsch_decoding7",
|
||||
"dlsch_pmch_decoding",
|
||||
"rx_pdcch",
|
||||
"dci_decoding",
|
||||
"rx_phich",
|
||||
"rx_pmch",
|
||||
"rx_pmch_khz_1dot25",
|
||||
"pdsch_procedures",
|
||||
"pdsch_procedures_si",
|
||||
"pdsch_procedures_p",
|
||||
@@ -398,8 +473,12 @@ const char* eurecomFunctionsNames[] = {
|
||||
"test",
|
||||
|
||||
/* IF4/IF5 signals */
|
||||
"send_if4",
|
||||
"recv_if4",
|
||||
"send_if4_ru",
|
||||
"send_if4_ru1",
|
||||
"send_if4_ru2",
|
||||
"recv_if4_ru",
|
||||
"recv_if4_ru1",
|
||||
"recv_if4_ru2",
|
||||
"send_if5",
|
||||
"recv_if5",
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
/* WARNING: if you edit the enums below, update also string definitions in vcd_signal_dumper.c */
|
||||
typedef enum {
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB=0,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_MASK_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_MASK_TX_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_ENB,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_ENB,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX1_ENB,
|
||||
@@ -55,6 +57,45 @@ typedef enum {
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX1_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX1_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_NORTH_OUT,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_NORTH_OUT,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_RX_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_RX_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_RX_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_TX_RU,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_TX_RU1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_TX_RU2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_IC_ENB,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_IC_ENB1,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_IC_ENB2,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_L1_PROC_IC,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_L1_PROC_TX_IC,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_RUNTIME_TX_ENB,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_RUNTIME_RX_ENB,
|
||||
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_UE,
|
||||
@@ -185,8 +226,10 @@ typedef enum {
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_UE,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE_UE,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE_IF,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF0,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE_IF0,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE_IF1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RXTX0,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RXTX1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_SYNCH,
|
||||
@@ -204,6 +247,9 @@ typedef enum {
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT0,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_LOCK_MUTEX_RU,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_LOCK_MUTEX_RU1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_LOCK_MUTEX_RU2,
|
||||
/* SIMULATION signals */
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SIM_DO_DL_SIGNAL,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SIM_DO_UL_SIGNAL,
|
||||
@@ -222,6 +268,8 @@ typedef enum {
|
||||
/* PHY signals */
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_MBSFN,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_MBSFN_KHZ_1DOT25,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH,
|
||||
@@ -232,10 +280,34 @@ typedef enum {
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX2,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX3,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX4,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX5,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX6,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX7,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX8,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX9,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM2,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM3,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM4,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM5,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM6,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM7,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM8,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM9,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC2,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC3,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC4,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC5,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC6,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC7,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC8,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC9,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX,
|
||||
@@ -264,9 +336,12 @@ typedef enum {
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING5,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING6,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING7,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PMCH_DECODING,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PHICH,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PMCH,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PMCH_KHZ_1DOT25,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_SI,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_P,
|
||||
@@ -336,7 +411,6 @@ typedef enum {
|
||||
|
||||
/* RLC signals */
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,
|
||||
// VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_IND,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_STATUS_IND,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_DATA_REQ,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_MAC_RLC_DATA_IND,
|
||||
@@ -379,8 +453,12 @@ typedef enum {
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TEST,
|
||||
|
||||
/* IF4/IF5 signals */
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4_RU,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4_RU1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4_RU2,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4_RU,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4_RU1,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4_RU2,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5,
|
||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5,
|
||||
|
||||
|
||||
@@ -41,10 +41,10 @@ typedef struct {
|
||||
} T_cache_t;
|
||||
|
||||
/* number of VCD functions (to be kept up to date! see in T_messages.txt) */
|
||||
#define VCD_NUM_FUNCTIONS 190
|
||||
#define VCD_NUM_FUNCTIONS (228)
|
||||
|
||||
/* number of VCD variables (to be kept up to date! see in T_messages.txt) */
|
||||
#define VCD_NUM_VARIABLES 136
|
||||
#define VCD_NUM_VARIABLES (177)
|
||||
|
||||
/* first VCD function (to be kept up to date! see in T_messages.txt) */
|
||||
#define VCD_FIRST_FUNCTION ((uintptr_t)T_VCD_FUNCTION_RT_SLEEP)
|
||||
|
||||
+407
-18
@@ -1035,12 +1035,21 @@ ID = buf_test
|
||||
#to check that everything is correct you can run: make _check_vcd
|
||||
|
||||
#variables
|
||||
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_TX0_ENB
|
||||
DESC = VCD variable FRAME_NUMBER_TX0_ENB
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_TX0_eNB
|
||||
ID = VCD_VARIABLE_MASK_RU
|
||||
DESC = VCD variable MASK_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = mask_ru
|
||||
ID = VCD_VARIABLE_MASK_TX_RU
|
||||
DESC = VCD variable MASK_TX_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = mask_tx_ru
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_TX1_ENB
|
||||
DESC = VCD variable FRAME_NUMBER_TX1_ENB
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
@@ -1116,6 +1125,201 @@ ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX1_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_RX1_RU
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_NORTH_OUT
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_NORTH_OUT
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_north_out
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_NORTH_OUT
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_NORTH_OUT
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_north_out
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_north_asynch_in
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_north_asynch_in
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_south_out_ru
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_south_out_ru1
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU2
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_south_out_ru2
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_OUT_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_south_out_ru
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_south_out_ru1
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU2
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_OUT_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_south_out_ru2
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_south_in_ru
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU1
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_south_in_ru1
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU2
|
||||
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_if4p5_south_in_ru2
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_IN_RU
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_IN_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_south_in_ru
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_IN_RU1
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_IN_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_south_in_ru1
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_IN_RU2
|
||||
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_IN_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_if4p5_south_in_ru2
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_L1S_RU
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_L1S_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_l1s_ru
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_L1S_RU1
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_L1S_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_l1s_ru1
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_L1S_RU2
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_L1S_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_l1s_ru2
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_L1S_RU
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_L1S_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_l1s_ru
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_L1S_RU1
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_L1S_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_l1s_ru1
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_L1S_RU2
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_L1S_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_l1s_ru2
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_rxtx_rx_ru
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU1
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_rxtx_rx_ru1
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU2
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_rxtx_rx_ru2
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_RX_RU
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_RX_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_rxtx_rx_ru
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_RX_RU1
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_RX_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_rxtx_rx_ru1
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_RX_RU2
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_RX_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_rxtx_rx_ru2
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_rxtx_tx_ru
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU1
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_rxtx_tx_ru1
|
||||
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU2
|
||||
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = subframe_number_wakeup_rxtx_tx_ru2
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_TX_RU
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_TX_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_rxtx_tx_ru
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_TX_RU1
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_TX_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_rxtx_tx_ru1
|
||||
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_TX_RU2
|
||||
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_TX_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = frame_number_wakeup_rxtx_tx_ru2
|
||||
ID = VCD_VARIABLE_IC_ENB
|
||||
DESC = VCD variable IC_ENB
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = ic_enb
|
||||
ID = VCD_VARIABLE_IC_ENB1
|
||||
DESC = VCD variable IC_ENB1
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = ic_enb1
|
||||
ID = VCD_VARIABLE_IC_ENB2
|
||||
DESC = VCD variable IC_ENB2
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = ic_enb2
|
||||
ID = VCD_VARIABLE_L1_PROC_IC
|
||||
DESC = VCD variable L1_PROC_IC
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = l1_proc_ic
|
||||
ID = VCD_VARIABLE_L1_PROC_TX_IC
|
||||
DESC = VCD variable L1_PROC_TX_IC
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
VCD_NAME = l1_proc_tx_ic
|
||||
ID = VCD_VARIABLE_RUNTIME_TX_ENB
|
||||
DESC = VCD variable RUNTIME_TX_ENB
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
@@ -1744,16 +1948,26 @@ ID = VCD_FUNCTION_TRX_WRITE_UE
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = trx_write_ue
|
||||
ID = VCD_FUNCTION_TRX_READ_IF
|
||||
DESC = VCD function TRX_READ_IF
|
||||
ID = VCD_FUNCTION_TRX_READ_IF0
|
||||
DESC = VCD function TRX_READ_IF0
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = trx_read_if
|
||||
ID = VCD_FUNCTION_TRX_WRITE_IF
|
||||
DESC = VCD function TRX_WRITE_IF
|
||||
VCD_NAME = trx_read_if0
|
||||
ID = VCD_FUNCTION_TRX_READ_IF1
|
||||
DESC = VCD function TRX_READ_IF1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = trx_write_if
|
||||
VCD_NAME = trx_read_if1
|
||||
ID = VCD_FUNCTION_TRX_WRITE_IF0
|
||||
DESC = VCD function TRX_WRITE_IF0
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = trx_write_if0
|
||||
ID = VCD_FUNCTION_TRX_WRITE_IF1
|
||||
DESC = VCD function TRX_WRITE_IF1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = trx_write_if1
|
||||
ID = VCD_FUNCTION_eNB_PROC_RXTX0
|
||||
DESC = VCD function eNB_PROC_RXTX0
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -1839,6 +2053,21 @@ ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = ue_lock_mutex_rxtx_for_cnt_increment1
|
||||
ID = VCD_FUNCTION_LOCK_MUTEX_RU
|
||||
DESC = VCD function LOCK_MUTEX_RU
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = lock_mutex_ru
|
||||
ID = VCD_FUNCTION_LOCK_MUTEX_RU1
|
||||
DESC = VCD function LOCK_MUTEX_RU1
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = lock_mutex_ru1
|
||||
ID = VCD_FUNCTION_LOCK_MUTEX_RU2
|
||||
DESC = VCD function LOCK_MUTEX_RU2
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = lock_mutex_ru2
|
||||
ID = VCD_FUNCTION_SIM_DO_DL_SIGNAL
|
||||
DESC = VCD function SIM_DO_DL_SIGNAL
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -1909,6 +2138,16 @@ ID = VCD_FUNCTION_UE_SLOT_FEP
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = ue_slot_fep
|
||||
ID = VCD_FUNCTION_UE_SLOT_FEP_MBSFN
|
||||
DESC = VCD function UE_SLOT_FEP_MBSFN
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = ue_slot_fep_mbsfn
|
||||
ID = VCD_FUNCTION_UE_SLOT_FEP_MBSFN_KHZ_1DOT25
|
||||
DESC = VCD function UE_SLOT_FEP_MBSFN_KHZ_1DOT25
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = ue_slot_fep_mbsfn_khz_1dot25
|
||||
ID = VCD_FUNCTION_UE_RRC_MEASUREMENTS
|
||||
DESC = VCD function UE_RRC_MEASUREMENTS
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
@@ -1959,6 +2198,46 @@ ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx1
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX2
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX2
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx2
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX3
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX3
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx3
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX4
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX4
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx4
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX5
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX5
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx5
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX6
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX6
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx6
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX7
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX7
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx7
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX8
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX8
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx8
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX9
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPRX9
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feprx9
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -1969,6 +2248,46 @@ ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm1
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM2
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM2
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm2
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM3
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM3
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm3
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM4
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM4
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm4
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM5
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM5
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm5
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM6
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM6
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm6
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM7
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM7
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm7
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM8
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM8
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm8
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM9
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM9
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_ofdm9
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -1979,6 +2298,46 @@ ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec1
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC2
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC2
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec2
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC3
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC3
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec3
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC4
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC4
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec4
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC5
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC5
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec5
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC6
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC6
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec6
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC7
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC7
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec7
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC8
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC8
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec8
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC9
|
||||
DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC9
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = phy_procedures_ru_feptx_prec9
|
||||
ID = VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC
|
||||
DESC = VCD function PHY_PROCEDURES_ENB_RX_UESPEC
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -2119,6 +2478,11 @@ ID = VCD_FUNCTION_DLSCH_DECODING7
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = dlsch_decoding7
|
||||
ID = VCD_FUNCTION_DLSCH_PMCH_DECODING
|
||||
DESC = VCD function DLSCH_PMCH_DECODING
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = dlsch_pmch_decoding
|
||||
ID = VCD_FUNCTION_RX_PDCCH
|
||||
DESC = VCD function RX_PDCCH
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -2134,6 +2498,16 @@ ID = VCD_FUNCTION_RX_PHICH
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = rx_phich
|
||||
ID = VCD_FUNCTION_RX_PMCH
|
||||
DESC = VCD function RX_PMCH
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = rx_pmch
|
||||
ID = VCD_FUNCTION_RX_PMCH_KHZ_1DOT25
|
||||
DESC = VCD function RX_PMCH_KHZ_1DOT25
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = rx_pmch_khz_1dot25
|
||||
ID = VCD_FUNCTION_PDSCH_PROC
|
||||
DESC = VCD function PDSCH_PROC
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
@@ -2444,11 +2818,6 @@ ID = VCD_FUNCTION_RLC_DATA_REQ
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = rlc_data_req
|
||||
#ID = VCD_FUNCTION_RLC_DATA_IND
|
||||
# DESC = VCD function RLC_DATA_IND
|
||||
# GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
# FORMAT = int,value
|
||||
# VCD_NAME = rlc_data_ind
|
||||
ID = VCD_FUNCTION_MAC_RLC_STATUS_IND
|
||||
DESC = VCD function MAC_RLC_STATUS_IND
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -2599,16 +2968,36 @@ ID = VCD_FUNCTION_TEST
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = test
|
||||
ID = VCD_FUNCTION_SEND_IF4
|
||||
DESC = VCD function SEND_IF4
|
||||
ID = VCD_FUNCTION_SEND_IF4_RU
|
||||
DESC = VCD function SEND_IF4_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = send_if4
|
||||
ID = VCD_FUNCTION_RECV_IF4
|
||||
DESC = VCD function RECV_IF4
|
||||
VCD_NAME = send_if4_ru
|
||||
ID = VCD_FUNCTION_SEND_IF4_RU1
|
||||
DESC = VCD function SEND_IF4_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = recv_if4
|
||||
VCD_NAME = send_if4_ru1
|
||||
ID = VCD_FUNCTION_SEND_IF4_RU2
|
||||
DESC = VCD function SEND_IF4_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = send_if4_ru2
|
||||
ID = VCD_FUNCTION_RECV_IF4_RU
|
||||
DESC = VCD function RECV_IF4_RU
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = recv_if4_ru
|
||||
ID = VCD_FUNCTION_RECV_IF4_RU1
|
||||
DESC = VCD function RECV_IF4_RU1
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = recv_if4_ru1
|
||||
ID = VCD_FUNCTION_RECV_IF4_RU2
|
||||
DESC = VCD function RECV_IF4_RU2
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
VCD_NAME = recv_if4_ru2
|
||||
ID = VCD_FUNCTION_SEND_IF5
|
||||
DESC = VCD function SEND_IF5
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
|
||||
@@ -358,6 +358,7 @@ hashtable_rc_t hashtable_resize(hash_table_t *const hashtblP, const hash_size_t
|
||||
|
||||
newtbl.size = sizeP;
|
||||
newtbl.hashfunc = hashtblP->hashfunc;
|
||||
newtbl.num_elements = 0;
|
||||
|
||||
if(!(newtbl.nodes=calloc(sizeP, sizeof(hash_node_t *)))) return -1;
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
measur command can be used to get cpu usage or signal processing statistics from a running eNB instance.
|
||||
|
||||
|
||||
Measurments can be displayed by groups, the list of available groups can be retrieved using the `measur show groups` command.
|
||||
```bash
|
||||
softmodem> measur show groups
|
||||
name type
|
||||
00 enb ltestats
|
||||
01 enbues ltestats
|
||||
02 rlc ltestats
|
||||
03 phycpu cpustats
|
||||
04 maccpu cpustats
|
||||
05 pdcpcpu cpustats
|
||||
softmodem>
|
||||
```
|
||||
By default the oai softmodem doesn't compute cpu usage measurments, a specific command allows to enable them.
|
||||
```bash
|
||||
softmodem> measur cpustats enable
|
||||
softmodem> measur show phycpu
|
||||
--------------------------------- cpu (4 GHz) measurements: PHY (cpustats enabled) ---------------------------------
|
||||
00 phy_proc_tx: 40.217 us; 178 | 01 phy_proc_rx: 0.000 us; 0 |
|
||||
02 rx_prach: 40.123 us; 9 | 03 ofdm_mod: 0.000 us; 0 |
|
||||
04 dlsch_common_and_dci: 39.311 us; 178 | 05 dlsch_ue_specific: 0.878 us; 178 |
|
||||
06 dlsch_encoding: 5.667 us; 11 | 07 dlsch_modulation: 5.398 us; 11 |
|
||||
08 dlsch_scrambling: 1.398 us; 11 | 09 dlsch_rate_matching: 1.367 us; 11 |
|
||||
10 dlsch_turbo_encod_prep: 0.000 us; 0 | 11 dlsch_turbo_encod_segm: 0.000 us; 0 |
|
||||
12 dlsch_turbo_encod: 2.408 us; 11 | 13 dlsch_turbo_encod_waiting: 0.000 us; 0 |
|
||||
14 dlsch_turbo_encod_signal: 0.000 us; 0 | 15 dlsch_turbo_encod_main: 0.000 us; 0 |
|
||||
16 dlsch_turbo_encod_wakeup0: 0.000 us; 0 | 17 dlsch_turbo_encod_wakeup1: 0.000 us; 0 |
|
||||
18 dlsch_interleaving: 0.503 us; 11 | 19 rx_dft: 0.000 us; 0 |
|
||||
20 ulsch_channel_estimation: 0.000 us; 0 | 21 ulsch_freq_offset_estimation: 0.000 us; 0 |
|
||||
22 ulsch_decoding: 0.000 us; 0 | 23 ulsch_demodulation: 0.000 us; 0 |
|
||||
24 ulsch_rate_unmatching: 0.000 us; 0 | 25 ulsch_turbo_decoding: 0.000 us; 0 |
|
||||
26 ulsch_deinterleaving: 0.000 us; 0 | 27 ulsch_demultiplexing: 0.000 us; 0 |
|
||||
softmodem> measur cpustats disable
|
||||
```
|
||||
|
||||
signal processing statistics are always available.
|
||||
```bash
|
||||
softmodem> measur show enb
|
||||
--------------------------------- eNB 0 mac stats CC 0 frame 68 ---------------------------------
|
||||
total_num_bcch_pdu = 44 bcch_buffer = 17 total_bcch_buffer = 937
|
||||
bcch_mcs = 2 total_num_ccch_pdu = 0 ccch_buffer = 0
|
||||
total_ccch_buffer = 0 ccch_mcs = 0 total_num_pcch_pdu = 0
|
||||
pcch_buffer = 0 total_pcch_buffer = 0 pcch_mcs = 0
|
||||
num_dlactive_UEs = 0 available_prbs = 25 total_available_prbs = 16924
|
||||
available_ncces = 0 dlsch_bitrate = 0 dlsch_bytes_tx = 0
|
||||
dlsch_pdus_tx = 0 total_dlsch_bitrate = 0 total_dlsch_bytes_tx = 0
|
||||
total_dlsch_pdus_tx = 0 ulsch_bitrate = 0 ulsch_bytes_rx = 0
|
||||
ulsch_pdus_rx = 0 total_ulsch_bitrate = 0 total_ulsch_bytes_rx = 0
|
||||
total_ulsch_pdus_rx = 0 sched_decisions = 0 missed_deadlines = 0
|
||||
```
|
||||
[oai telnetserver home](telnetsrv.md)
|
||||
[oai telnetserver usage home](telnetusage.md)
|
||||
@@ -5,7 +5,7 @@ By default the embedded telnet server, which is implemented in a shared library,
|
||||
cd \<oai repository\>/openairinterface5g
|
||||
source oaienv
|
||||
cd cmake_targets
|
||||
./build_oai --build-telnetsrv
|
||||
./build_oai --build-lib telnetsrv
|
||||
```
|
||||
|
||||
This will create the `libtelnetsrv.so` file in the `targets/bin` and `cmake_targets/lte_build_oai/build` sub directories of the oai repository.
|
||||
@@ -23,6 +23,7 @@ Below are examples of telnet sessions:
|
||||
* [using the loop command](telnetloop.md)
|
||||
* [loader command](telnetloader.md)
|
||||
* [log command](telnetlog.md)
|
||||
* [measur command](telnetmeasur.md)
|
||||
|
||||
# telnet server parameters
|
||||
The telnet server is using the [oai configuration module](Config/Rtusage). Telnet parameters must be specified in the `telnetsrv` section. Some parameters can be modified via the telnet telnet server command, as specified in the last column of the following table.
|
||||
|
||||
Reference in New Issue
Block a user