diff --git a/common/utils/telnetsrv/telnetsrv.c b/common/utils/telnetsrv/telnetsrv.c index 75a1a5b10e..89e0003bef 100644 --- a/common/utils/telnetsrv/telnetsrv.c +++ b/common/utils/telnetsrv/telnetsrv.c @@ -523,7 +523,7 @@ int process_command(char *buf, int iteration) int rt; memset(modulename,0,sizeof(modulename)); memset(cmd,0,sizeof(cmd)); - extern char **environ; + if (strncasecmp(buf,"ex",2) == 0) return CMDSTATUS_EXIT; @@ -953,7 +953,8 @@ int telnetsrv_checkbuildver(char *mainexec_buildversion, char **shlib_buildvers } int telnetsrv_getfarray(loader_shlibfunc_t **farray) { - *farray = malloc(sizeof(loader_shlibfunc_t) * 3); + int const num_func_tln_srv = 3; + *farray = malloc(sizeof(loader_shlibfunc_t) * num_func_tln_srv); (*farray)[0].fname=TELNET_ADDCMD_FNAME; (*farray)[0].fptr=(int (*)(void) )add_telnetcmd; (*farray)[1].fname=TELNET_POLLCMDQ_FNAME; diff --git a/common/utils/telnetsrv/telnetsrv_proccmd.c b/common/utils/telnetsrv/telnetsrv_proccmd.c index 1864b48ee1..b95178138e 100644 --- a/common/utils/telnetsrv/telnetsrv_proccmd.c +++ b/common/utils/telnetsrv/telnetsrv_proccmd.c @@ -194,58 +194,60 @@ int nullprnt(char *fmt, ...) { return 0; } + void proccmd_get_threaddata(char *buf, int debug, telnet_printfunc_t fprnt, webdatadef_t *tdata) { char aname[256]; -DIR *proc_dir; -struct dirent *entry; -telnet_printfunc_t prnt = (fprnt != NULL) ? fprnt : (telnet_printfunc_t)nullprnt; -if (tdata != NULL) { - tdata->numcols = 7; - snprintf(tdata->columns[0].coltitle, sizeof(tdata->columns[0].coltitle), "thread id"); - tdata->columns[0].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[1].coltitle, sizeof(tdata->columns[1].coltitle), "thread name"); - tdata->columns[1].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[2].coltitle, sizeof(tdata->columns[2].coltitle), "priority"); - tdata->columns[2].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[3].coltitle, sizeof(tdata->columns[3].coltitle), "nice"); - tdata->columns[3].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[4].coltitle, sizeof(tdata->columns[4].coltitle), "core"); - tdata->columns[4].coltype = TELNET_VARTYPE_STRING | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[5].coltitle, sizeof(tdata->columns[5].coltitle), "sched policy"); - tdata->columns[5].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[5].coltitle, sizeof(tdata->columns[5].coltitle), "sched policy"); - tdata->columns[6].coltype = TELNET_VARTYPE_STRING | TELNET_VAR_NEEDFREE; - snprintf(tdata->columns[6].coltitle, sizeof(tdata->columns[6].coltitle), "oai priority"); - tdata->numlines = 0; -} - -unsigned int eax = 11, ebx = 0, ecx = 1, edx = 0; - -asm volatile("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "0"(eax), "2"(ecx) :); - -prnt("System has %d cores %d threads %d Actual threads", eax, ebx, edx); - -prnt("\n id name state USRmod KRNmod prio nice vsize proc pol \n\n"); -snprintf(aname, sizeof(aname), "/proc/%d/stat", getpid()); -read_statfile(aname, debug, prnt, NULL); -prnt("\n"); -snprintf(aname, sizeof(aname), "/proc/%d/task", getpid()); -proc_dir = opendir(aname); -if (proc_dir == NULL) { - prnt("Error: Couldn't open %s %i %s\n", aname, errno, strerror(errno)); - return; -} - -while ((entry = readdir(proc_dir)) != NULL) { - if (entry->d_name[0] != '.') { - snprintf(aname, sizeof(aname), "/proc/%d/task/%.*s/stat", getpid(), (int)(sizeof(aname) - 24), entry->d_name); - read_statfile(aname, debug, prnt, tdata); + DIR *proc_dir; + struct dirent *entry; + telnet_printfunc_t prnt = (fprnt != NULL) ? fprnt : (telnet_printfunc_t)nullprnt; + if (tdata != NULL) { + tdata->numcols = 7; + snprintf(tdata->columns[0].coltitle, sizeof(tdata->columns[0].coltitle), "thread id"); + tdata->columns[0].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[1].coltitle, sizeof(tdata->columns[1].coltitle), "thread name"); + tdata->columns[1].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[2].coltitle, sizeof(tdata->columns[2].coltitle), "priority"); + tdata->columns[2].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[3].coltitle, sizeof(tdata->columns[3].coltitle), "nice"); + tdata->columns[3].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[4].coltitle, sizeof(tdata->columns[4].coltitle), "core"); + tdata->columns[4].coltype = TELNET_VARTYPE_STRING | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[5].coltitle, sizeof(tdata->columns[5].coltitle), "sched policy"); + tdata->columns[5].coltype = TELNET_VARTYPE_STRING | TELNET_CHECKVAL_RDONLY | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[5].coltitle, sizeof(tdata->columns[5].coltitle), "sched policy"); + tdata->columns[6].coltype = TELNET_VARTYPE_STRING | TELNET_VAR_NEEDFREE; + snprintf(tdata->columns[6].coltitle, sizeof(tdata->columns[6].coltitle), "oai priority"); + tdata->numlines = 0; } -} /* while entry != NULL */ -closedir(proc_dir); -} /* print_threads */ + + unsigned int eax = 11, ebx = 0, ecx = 1, edx = 0; + + asm volatile("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "0"(eax), "2"(ecx) :); + + prnt("System has %d cores %d threads %d Actual threads", eax, ebx, edx); + + prnt("\n id name state USRmod KRNmod prio nice vsize proc pol \n\n"); + snprintf(aname, sizeof(aname), "/proc/%d/stat", getpid()); + read_statfile(aname, debug, prnt, NULL); + prnt("\n"); + snprintf(aname, sizeof(aname), "/proc/%d/task", getpid()); + proc_dir = opendir(aname); + if (proc_dir == NULL) { + prnt("Error: Couldn't open %s %i %s\n", aname, errno, strerror(errno)); + return; + } + + while ((entry = readdir(proc_dir)) != NULL) { + if (entry->d_name[0] != '.') { + snprintf(aname, sizeof(aname), "/proc/%d/task/%.*s/stat", getpid(), (int)(sizeof(aname) - 24), entry->d_name); + read_statfile(aname, debug, prnt, tdata); + } + } /* while entry != NULL */ + closedir(proc_dir); +} /* proccmd_get_threaddata */ + void print_threads(char *buf, int debug, telnet_printfunc_t prnt) { proccmd_get_threaddata(buf, debug, prnt, NULL); diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c index f2b5374cdf..8d963281c4 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.c +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -26,18 +26,21 @@ #include #include "executables/softmodem-common.h" #include "executables/nr-softmodem-common.h" -#ifndef WEBSRVSCOPE -#include -#define STATICFORXSCOPE static -static const int scope_enb_num_ue = 1; -#else +#ifdef WEBSRVSCOPE #include #include "common/utils/websrv/websrv.h" #include "common/utils/websrv/websrv_noforms.h" +/* STATICFORXSCOPE will be used to make function being called from websrv code non static when we compile + * with WEBSRVSCOPE mocro defined, but static when we compile for Xforms scope +*/ #define STATICFORXSCOPE #define fl_add_canvas websrv_fl_add_canvas #define fl_add_xyplot websrv_fl_add_xyplot #define fl_get_xyplot_data_pointer websrv_fl_get_xyplot_data_pointer +#else +#include +#define STATICFORXSCOPE static +static const int scope_enb_num_ue = 1; #endif #include "nr_phy_scope.h" #include "phy_scope.h" @@ -379,7 +382,12 @@ static void genericWaterFall (OAIgraph_t *graph, scopeSample_t *values, const in #endif } -#ifndef WEBSRVSCOPE +#ifdef WEBSRVSCOPE + for (int i = 0; i < sizeof(water_colors) / sizeof(FL_COLOR); i++) { + msgp[i]->header.msgseg = graph->iteration % displayPart; + websrv_scope_senddata(msgp[i]->data_xy[0], 2, msgp[i]); + } +#else if (graph->initDone==false) { for ( int i=0; i < graph->waterFallh; i++ ) for ( int j = 0 ; j < graph->w ; j++ ) @@ -393,23 +401,18 @@ static void genericWaterFall (OAIgraph_t *graph, scopeSample_t *values, const in } fl_set_object_label_f(graph->text, "%s, avg I/Q pow: %4.1f", label, 0/*sqrt(avg)*/); -#else - for (int i = 0; i < sizeof(water_colors) / sizeof(FL_COLOR); i++) { - msgp[i]->header.msgseg = graph->iteration % displayPart; - websrv_scope_senddata(msgp[i]->data_xy[0], 2, msgp[i]); - } #endif graph->iteration++; } static void genericPowerPerAntena(OAIgraph_t *graph, const int nb_ant, const scopeSample_t **data, const int len) { -#ifndef WEBSRVSCOPE - float *values, *time; - oai_xygraph_getbuff(graph, &time, &values, len, 0); -#else +#ifdef WEBSRVSCOPE websrv_scopedata_msg_t *msg = NULL; websrv_nf_getdata(graph->graph, 0, &msg); float *values = (float *)msg->data_xy; +#else + float *values, *time; + oai_xygraph_getbuff(graph, &time, &values, len, 0); #endif for (int ant=0; antheader.msgtype = SCOPEMSG_TYPE_DATA; msg->header.chartid = graph->chartid; msg->header.datasetid = graph->datasetid; msg->header.msgseg = 0; msg->header.update = (ant == (nb_ant - 1)) ? 1 : 0; websrv_scope_senddata(len, 4, msg); +#else + oai_xygraph(graph,time,values, len, ant, 10); #endif } } @@ -454,13 +457,13 @@ static void timeSignal (OAIgraph_t *graph, PHY_VARS_gNB *phy_vars_gnb, RU_t *phy static void timeResponse (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { const int len = p->gNB->frame_parms.ofdm_symbol_size; -#ifndef WEBSRVSCOPE - float *values, *time; - oai_xygraph_getbuff(graph, &time, &values, len, 0); -#else +#ifdef WEBSRVSCOPE websrv_scopedata_msg_t *msg = NULL; websrv_nf_getdata(graph->graph, 0, &msg); float *values = (float *)msg->data_xy; +#else + float *values, *time; + oai_xygraph_getbuff(graph, &time, &values, len, 0); #endif const int ant = 0; // display antenna 0 for each UE @@ -479,15 +482,15 @@ static void timeResponse (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { for (int i=0; iheader.msgtype = SCOPEMSG_TYPE_DATA; msg->header.chartid = graph->chartid; msg->header.datasetid = graph->datasetid; msg->header.msgseg = 0; msg->header.update = 1; websrv_scope_senddata(len, 4, msg); +#else + oai_xygraph(graph,time,values, len, ue, 10); #endif } } diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c index 98cbe260f6..235e94a449 100644 --- a/openair1/SIMULATION/TOOLS/random_channel.c +++ b/openair1/SIMULATION/TOOLS/random_channel.c @@ -1999,7 +1999,7 @@ int get_channel_params(char *buf, int debug, void *vdata, telnet_printfunc_t prn sprintf(cmdbuf, "channelmod modify %i %s %s", chanidx, pnames[pidx], tdata->lines[0].val[1]); } channelmod_modify_cmd(cmdbuf, debug, prnt); - return 200; + return CMDSTATUS_FOUND; } else { prnt(" channel index not found in cannelmod command\n"); } @@ -2007,7 +2007,7 @@ int get_channel_params(char *buf, int debug, void *vdata, telnet_printfunc_t prn prnt("%s not implemented\n", buf); } - return 500; + return CMDSTATUS_NOTFOUND; } /* get_currentchannel_type */