Commit b215b431 authored by Raymond Knopp's avatar Raymond Knopp

changes to allow configuring multicast interface on command line

parent 6434e645
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
#include <errno.h> #include <errno.h>
#include "config_userapi.h" #include "config_userapi.h"
extern char *emul_iface;
int processoption(paramdef_t *cfgoptions, char *value) int processoption(paramdef_t *cfgoptions, char *value)
{ {
char *tmpval = value; char *tmpval = value;
...@@ -54,8 +56,9 @@ char defbool[2]="1"; ...@@ -54,8 +56,9 @@ char defbool[2]="1";
case TYPE_STRING: case TYPE_STRING:
config_check_valptr(cfgoptions, (char **)(cfgoptions->strptr), sizeof(char *)); config_check_valptr(cfgoptions, (char **)(cfgoptions->strptr), sizeof(char *));
config_check_valptr(cfgoptions, cfgoptions->strptr, strlen(tmpval+1)); config_check_valptr(cfgoptions, cfgoptions->strptr, strlen(tmpval+1));
printf("cfgoptions->strptr %p (&emul_iface %p, emul_iface %p)\n",cfgoptions->strptr,&emul_iface,emul_iface);
sprintf(*(cfgoptions->strptr), "%s",tmpval); sprintf(*(cfgoptions->strptr), "%s",tmpval);
printf_cmdl("[CONFIG] %s set to %s from command line\n", cfgoptions->optname, tmpval); printf("[CONFIG] %s set to %s from command line\n", cfgoptions->optname, tmpval);
optisset=1; optisset=1;
break; break;
...@@ -112,6 +115,7 @@ int j; ...@@ -112,6 +115,7 @@ int j;
char *pp; char *pp;
char *cfgpath; char *cfgpath;
j = (prefix ==NULL) ? 0 : strlen(prefix); j = (prefix ==NULL) ? 0 : strlen(prefix);
cfgpath = malloc( j + MAX_OPTNAME_SIZE +1); cfgpath = malloc( j + MAX_OPTNAME_SIZE +1);
if (cfgpath == NULL) { if (cfgpath == NULL) {
......
...@@ -130,6 +130,8 @@ uint8_t nfapi_mode = 3; ...@@ -130,6 +130,8 @@ uint8_t nfapi_mode = 3;
uint16_t sf_ahead=4; uint16_t sf_ahead=4;
char *emul_iface;
pthread_cond_t sync_cond; pthread_cond_t sync_cond;
pthread_mutex_t sync_mutex; pthread_mutex_t sync_mutex;
int sync_var=-1; //!< protected by mutex \ref sync_mutex. int sync_var=-1; //!< protected by mutex \ref sync_mutex.
...@@ -228,7 +230,7 @@ extern PHY_VARS_UE* init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -228,7 +230,7 @@ extern PHY_VARS_UE* init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t abstraction_flag); uint8_t abstraction_flag);
extern void init_eNB_afterRU(void); extern void init_eNB_afterRU(void);
extern void init_UE_stub(int nb_inst,int,int); extern void init_UE_stub(int nb_inst,int,int,char*);
extern int init_timer_thread(void); extern int init_timer_thread(void);
int transmission_mode=1; int transmission_mode=1;
...@@ -676,9 +678,12 @@ static void get_options(void) { ...@@ -676,9 +678,12 @@ static void get_options(void) {
set_default_frame_parms(frame_parms); set_default_frame_parms(frame_parms);
emul_iface=malloc(100);
config_process_cmdline( cmdline_uemodeparams,sizeof(cmdline_uemodeparams)/sizeof(paramdef_t),NULL); config_process_cmdline( cmdline_uemodeparams,sizeof(cmdline_uemodeparams)/sizeof(paramdef_t),NULL);
config_process_cmdline( cmdline_ueparams,sizeof(cmdline_ueparams)/sizeof(paramdef_t),NULL); config_process_cmdline( cmdline_ueparams,sizeof(cmdline_ueparams)/sizeof(paramdef_t),NULL);
if (loopfile != NULL) { if (loopfile != NULL) {
printf("Input file for hardware emulation: %s",loopfile); printf("Input file for hardware emulation: %s",loopfile);
mode=loop_through_memory; mode=loop_through_memory;
...@@ -739,6 +744,7 @@ static void get_options(void) { ...@@ -739,6 +744,7 @@ static void get_options(void) {
rx_gain[0][CC_id] = rx_gain[0][0]; rx_gain[0][CC_id] = rx_gain[0][0];
tx_gain[0][CC_id] = tx_gain[0][0]; tx_gain[0][CC_id] = tx_gain[0][0];
} }
printf("Emulation interface : %s (%p,%p)\n",emul_iface,emul_iface,&emul_iface);
} /* UE_flag > 0 */ } /* UE_flag > 0 */
#if T_TRACER #if T_TRACER
paramdef_t cmdline_ttraceparams[] =CMDLINE_TTRACEPARAMS_DESC ; paramdef_t cmdline_ttraceparams[] =CMDLINE_TTRACEPARAMS_DESC ;
...@@ -1359,7 +1365,7 @@ int main( int argc, char **argv ) ...@@ -1359,7 +1365,7 @@ int main( int argc, char **argv )
init_timer_thread(); init_timer_thread();
init_UE_stub(1,eMBMS_active,uecap_xer_in); init_UE_stub(1,eMBMS_active,uecap_xer_in,emul_iface);
/*for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { /*for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
PHY_vars_UE_g[0][CC_id]->rf_map.card=0; PHY_vars_UE_g[0][CC_id]->rf_map.card=0;
......
...@@ -120,6 +120,8 @@ uint8_t nfapi_mode = 2; ...@@ -120,6 +120,8 @@ uint8_t nfapi_mode = 2;
uint16_t sf_ahead=4; uint16_t sf_ahead=4;
char emul_iface[100];
pthread_cond_t sync_cond; pthread_cond_t sync_cond;
pthread_mutex_t sync_mutex; pthread_mutex_t sync_mutex;
int sync_var=-1; //!< protected by mutex \ref sync_mutex. int sync_var=-1; //!< protected by mutex \ref sync_mutex.
...@@ -609,6 +611,7 @@ static void get_options(void) { ...@@ -609,6 +611,7 @@ static void get_options(void) {
if (UE_flag > 0) { if (UE_flag > 0) {
uint8_t n_rb_dl; uint8_t n_rb_dl;
nfapi_mode=0; nfapi_mode=0;
paramdef_t cmdline_uemodeparams[] =CMDLINE_UEMODEPARAMS_DESC; paramdef_t cmdline_uemodeparams[] =CMDLINE_UEMODEPARAMS_DESC;
paramdef_t cmdline_ueparams[] =CMDLINE_UEPARAMS_DESC; paramdef_t cmdline_ueparams[] =CMDLINE_UEPARAMS_DESC;
......
...@@ -72,6 +72,7 @@ ...@@ -72,6 +72,7 @@
#define CONFIG_HLP_DLMCS "Set the maximum downlink MCS\n" #define CONFIG_HLP_DLMCS "Set the maximum downlink MCS\n"
#define CONFIG_HLP_STMON "Enable processing timing measurement of lte softmodem on per subframe basis \n" #define CONFIG_HLP_STMON "Enable processing timing measurement of lte softmodem on per subframe basis \n"
#define CONFIG_HLP_PRB "Set the PRB, valid values: 6, 25, 50, 100 \n" #define CONFIG_HLP_PRB "Set the PRB, valid values: 6, 25, 50, 100 \n"
#define CONFIG_HLP_EMULIFACE "Set the interface name for the multicast transport for emulation mode (e.g. eth0, lo, etc.) \n"
#define CONFIG_HLP_MSLOTS "Skip the missed slots/subframes \n" #define CONFIG_HLP_MSLOTS "Skip the missed slots/subframes \n"
#define CONFIG_HLP_ULMCS "Set the maximum uplink MCS\n" #define CONFIG_HLP_ULMCS "Set the maximum uplink MCS\n"
#define CONFIG_HLP_TDD "Set hardware to TDD mode (default: FDD). Used only with -U (otherwise set in config file).\n" #define CONFIG_HLP_TDD "Set hardware to TDD mode (default: FDD). Used only with -U (otherwise set in config file).\n"
...@@ -128,7 +129,8 @@ ...@@ -128,7 +129,8 @@
{"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&UE_scan_carrier, defintval:0, TYPE_INT, 0}, \ {"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&UE_scan_carrier, defintval:0, TYPE_INT, 0}, \
{"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, u8ptr:&n_rb_dl, defintval:0, TYPE_UINT8, 0}, \ {"r" , CONFIG_HLP_PRB, 0, u8ptr:&n_rb_dl, defintval:0, TYPE_UINT8, 0}, \
} {"emul-iface", CONFIG_HLP_EMULIFACE, 0, strptr:&emul_iface, defstrval:"lo", TYPE_STRING, 100} \
}
extern int16_t dlsch_demod_shift; extern int16_t dlsch_demod_shift;
......
...@@ -77,7 +77,7 @@ void init_UE_threads(int); ...@@ -77,7 +77,7 @@ void init_UE_threads(int);
void init_UE_threads_stub(int); void init_UE_threads_stub(int);
void *UE_thread(void *arg); void *UE_thread(void *arg);
void init_UE(int nb_inst,int,int); void init_UE(int nb_inst,int,int);
void init_UE_stub(int nb_inst,int,int); void init_UE_stub(int nb_inst,int,int,char*);
extern void oai_subframe_ind(uint16_t sfn, uint16_t sf); extern void oai_subframe_ind(uint16_t sfn, uint16_t sf);
//extern int tx_req_UE_MAC1(); //extern int tx_req_UE_MAC1();
...@@ -270,7 +270,7 @@ void init_UE(int nb_inst,int eMBMS_active, int uecap_xer_in) { ...@@ -270,7 +270,7 @@ void init_UE(int nb_inst,int eMBMS_active, int uecap_xer_in) {
} }
void init_UE_stub(int nb_inst,int eMBMS_active, int uecap_xer_in) { void init_UE_stub(int nb_inst,int eMBMS_active, int uecap_xer_in, char *emul_iface) {
int inst; int inst;
...@@ -291,7 +291,8 @@ void init_UE_stub(int nb_inst,int eMBMS_active, int uecap_xer_in) { ...@@ -291,7 +291,8 @@ void init_UE_stub(int nb_inst,int eMBMS_active, int uecap_xer_in) {
printf("UE threads created \n"); printf("UE threads created \n");
multicast_link_start(ue_stub_rx_handler,0,"lo"); LOG_I(PHY,"Starting multicast link on %s\n",emul_iface);
multicast_link_start(ue_stub_rx_handler,0,emul_iface);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment