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
spbro
OpenXG-RAN
Commits
2520a922
Commit
2520a922
authored
Feb 10, 2020
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify telnet serveur build to support all exec's
parent
f761479e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
57 additions
and
277 deletions
+57
-277
common/utils/telnetsrv/telnetsrv.c
common/utils/telnetsrv/telnetsrv.c
+3
-0
common/utils/telnetsrv/telnetsrv_CMakeLists.txt
common/utils/telnetsrv/telnetsrv_CMakeLists.txt
+19
-7
common/utils/telnetsrv/telnetsrv_measurements.c
common/utils/telnetsrv/telnetsrv_measurements.c
+18
-122
common/utils/telnetsrv/telnetsrv_measurements.h
common/utils/telnetsrv/telnetsrv_measurements.h
+17
-6
common/utils/telnetsrv/telnetsrv_phycmd.c
common/utils/telnetsrv/telnetsrv_phycmd.c
+0
-142
No files found.
common/utils/telnetsrv/telnetsrv.c
View file @
2520a922
...
...
@@ -709,6 +709,9 @@ int add_sharedmodules(void) {
return
ret
;
}
/* autoinit functions is called by the loader when the telnet shared library is
dynamically loaded
*/
int
telnetsrv_autoinit
(
void
)
{
memset
(
&
telnetparams
,
0
,
sizeof
(
telnetparams
));
config_get
(
telnetoptions
,
sizeof
(
telnetoptions
)
/
sizeof
(
paramdef_t
),
"telnetsrv"
);
...
...
common/utils/telnetsrv/telnetsrv_CMakeLists.txt
View file @
2520a922
...
...
@@ -2,20 +2,32 @@ set(TELNETROOT ${OPENAIR_DIR}/common/utils/telnetsrv )
set(TELNETSRV_SOURCE
${TELNETROOT}/telnetsrv.c
${TELNETROOT}/telnetsrv_phycmd.c
${TELNETROOT}/telnetsrv_proccmd.c
${TELNETROOT}/telnetsrv_loader.c
${TELNETROOT}/telnetsrv_measurements.c
)
#set(TELNETSRV_ETHDEVCMD_SOURCE
# ${APPROOT}/telnetsrv/telnetsrv_ethdevcmd.c
# )
add_library(telnetsrv MODULE ${TELNETSRV_SOURCE} )
#add_library(telnetsrv_ethdevcmd MODULE ${TELNETSRV_ETHDEVCMD_SOURCE} )
target_link_libraries(telnetsrv PRIVATE history)
foreach(TELNETLIB enb gnb 4gUE 5gUE)
set(TELNETLIB_SRCS "")
foreach(TELNETLIB_ASRC measurements phycmd)
set(TELNETLIB_SRC ${OPENAIR_DIR}/common/utils/telnetsrv/telnetsrv_${TELNETLIB}_${TELNETLIB_ASRC}.c)
if (EXISTS ${TELNETLIB_SRC})
set( TELNETLIB_SRCS "${TELNETLIB_SRC};${TELNETLIB_SRCS}")
endif()
endforeach()
if(NOT "${TELNETLIB_SRCS}" STREQUAL "")
message("Add ${TELNETLIB} specific telnet functions in libtelnetsrv_${TELNETLIB}.so")
add_library(telnetsrv_${TELNETLIB} MODULE ${TELNETLIB_SRCS} )
add_dependencies(telnetsrv telnetsrv_${TELNETLIB})
install(TARGETS telnetsrv_${TELNETLIB} DESTINATION bin)
else()
message("No specific telnet functions for ${TELNETLIB}")
endif()
endforeach()
install(TARGETS telnetsrv DESTINATION bin)
if (EXISTS "${OPENAIR_BUILD_DIR}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_BUILD_DIR}/ran_build/build")
...
...
common/utils/telnetsrv/telnetsrv_measurements.c
View file @
2520a922
...
...
@@ -20,9 +20,9 @@
*/
/*! \file common/utils/telnetsrv/telnetsrv_measurements.c
* \brief: implementation of telnet
commands related to measurment
s
* \brief: implementation of telnet
measurement functions common to all softmodem
s
* \author Francois TABURET
* \date 20
19
* \date 20
20
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
...
...
@@ -47,40 +47,18 @@
#include "common/utils/LOG/log.h"
#include "common/config/config_userapi.h"
#include "telnetsrv_measurements.h"
#include "telnetsrv_ltemeasur_def.h"
#include "telnetsrv_cpumeasur_def.h"
#include "openair2/LAYER2/MAC/mac.h"
#include "openair1/PHY/phy_extern.h"
void
measurcmd_display_macstats
(
telnet_printfunc_t
prnt
);
void
measurcmd_display_macstats_ue
(
telnet_printfunc_t
prnt
);
void
measurcmd_display_rlcstats
(
telnet_printfunc_t
prnt
);
void
measurcmd_display_phycpu
(
telnet_printfunc_t
prnt
);
void
measurcmd_display_maccpu
(
telnet_printfunc_t
prnt
);
void
measurcmd_display_pdcpcpu
(
telnet_printfunc_t
prnt
);
static
telnet_measurgroupdef_t
measurgroups
[]
=
{
{
"enb"
,
GROUP_LTESTATS
,
0
,
measurcmd_display_macstats
,
{
NULL
}},
{
"enbues"
,
GROUP_LTESTATS
,
0
,
measurcmd_display_macstats_ue
,{
NULL
}},
{
"rlc"
,
GROUP_LTESTATS
,
0
,
measurcmd_display_rlcstats
,
{
NULL
}},
{
"phycpu"
,
GROUP_CPUSTATS
,
0
,
measurcmd_display_phycpu
,
{
NULL
}},
{
"maccpu"
,
GROUP_CPUSTATS
,
0
,
measurcmd_display_maccpu
,
{
NULL
}},
{
"pdcpcpu"
,
GROUP_CPUSTATS
,
0
,
measurcmd_display_pdcpcpu
,
{
NULL
}},
};
#define TELNET_NUM_MEASURGROUPS (sizeof(measurgroups)/sizeof(telnet_measurgroupdef_t))
static
int
eNB_id
=
0
;
static
char
*
grouptypes
[]
=
{
"ltestats"
,
"cpustats"
};
static
double
cpufreq
;
#define TELNET_NUM_MEASURTYPES (sizeof(grouptypes)/sizeof(char *))
#define HDR "---------------------------------"
void
measurcmd_display_groups
(
telnet_printfunc_t
prnt
)
{
void
measurcmd_display_groups
(
telnet_printfunc_t
prnt
,
telnet_measurgroupdef_t
*
measurgroups
,
int
groups_size
)
{
prnt
(
" %*s %10s %s
\n
"
,
TELNET_MAXMEASURNAME_LEN
-
1
,
"name"
,
"type"
,
"nombre de mesures"
);
for
(
int
i
=
0
;
i
<
TELNET_NUM_MEASURGROUPS
;
i
++
)
for
(
int
i
=
0
;
i
<
groups_size
;
i
++
)
prnt
(
"%02d %*s %10s %i
\n
"
,
i
,
TELNET_MAXMEASURNAME_LEN
-
1
,
measurgroups
[
i
].
groupname
,
grouptypes
[
measurgroups
[
i
].
type
],
measurgroups
[
i
].
size
);
}
/* measurcmd_display_groups */
...
...
@@ -96,32 +74,9 @@ void measurcmd_display_cpumeasures(telnet_printfunc_t prnt, telnet_cpumeasurdef_
prnt
(
"
\n\n
"
);
}
/* measurcmd_display_measures */
#define PRINT_CPUMEAS_STATE ((cpumeas(CPUMEAS_GETSTATE))?"enabled":"disabled")
void
measurcmd_display_phycpu
(
telnet_printfunc_t
prnt
)
{
PHY_VARS_eNB
*
phyvars
=
RC
.
eNB
[
eNB_id
][
0
];
telnet_cpumeasurdef_t
cpumeasur
[]
=
CPU_PHYENB_MEASURE
;
prnt
(
"%s cpu (%1.1g GHz) measurements: PHY (cpustats %s) %s
\n
"
,
HDR
,
cpufreq
,
PRINT_CPUMEAS_STATE
,
HDR
);
measurcmd_display_cpumeasures
(
prnt
,
cpumeasur
,
sizeof
(
cpumeasur
)
/
sizeof
(
telnet_cpumeasurdef_t
));
}
void
measurcmd_display_maccpu
(
telnet_printfunc_t
prnt
)
{
eNB_MAC_INST
*
macvars
=
RC
.
mac
[
eNB_id
];
telnet_cpumeasurdef_t
cpumeasur
[]
=
CPU_MACENB_MEASURE
;
prnt
(
"%s cpu (%1.1g GHz) measurements: MAC (cpustats %s) %s
\n
"
,
HDR
,
cpufreq
,
PRINT_CPUMEAS_STATE
,
HDR
);
measurcmd_display_cpumeasures
(
prnt
,
cpumeasur
,
sizeof
(
cpumeasur
)
/
sizeof
(
telnet_cpumeasurdef_t
));
}
void
measurcmd_display_pdcpcpu
(
telnet_printfunc_t
prnt
)
{
pdcp_stats_t
*
pdcpvars
=
&
(
eNB_pdcp_stats
[
eNB_id
]);
telnet_cpumeasurdef_t
cpumeasur
[]
=
CPU_PDCPENB_MEASURE
;
prnt
(
"%s cpu (%1.1g GHz) measurements: PDCP (cpustats %s) %s
\n
"
,
HDR
,
cpufreq
,
PRINT_CPUMEAS_STATE
,
HDR
);
measurcmd_display_cpumeasures
(
prnt
,
cpumeasur
,
sizeof
(
cpumeasur
)
/
sizeof
(
telnet_cpumeasurdef_t
));
}
/*----------------------------------------------------------------------------------------------------*/
/*
lte
measurements functions */
/*
cellular
measurements functions */
uint64_t
measurcmd_getstatvalue
(
telnet_ltemeasurdef_t
*
measur
,
telnet_printfunc_t
prnt
)
{
uint64_t
val
;
...
...
@@ -164,70 +119,7 @@ void measurcmd_display_measures(telnet_printfunc_t prnt, telnet_ltemeasurdef_t
prnt
(
"
\n\n
"
);
}
/* measurcmd_display_measures */
void
measurcmd_display_macstats_ue
(
telnet_printfunc_t
prnt
)
{
UE_list_t
*
UE_list
=
&
(
RC
.
mac
[
eNB_id
]
->
UE_list
);
for
(
int
UE_id
=
UE_list
->
head
;
UE_id
>=
0
;
UE_id
=
UE_list
->
next
[
UE_id
])
{
for
(
int
i
=
0
;
i
<
UE_list
->
numactiveCCs
[
UE_id
];
i
++
)
{
int
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
prnt
(
"%s UE %i Id %i CCid %i %s
\n
"
,
HDR
,
i
,
UE_id
,
CC_id
,
HDR
);
eNB_UE_STATS
*
macuestatptr
=
&
(
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
]);
telnet_ltemeasurdef_t
statsptr
[]
=
LTEMAC_UEMEASURE
;
measurcmd_display_measures
(
prnt
,
statsptr
,
sizeof
(
statsptr
)
/
sizeof
(
telnet_ltemeasurdef_t
));
}
}
}
/* measurcmd_display_macstats_ue */
void
measurcmd_display_macstats
(
telnet_printfunc_t
prnt
)
{
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
eNB_STATS
*
macstatptr
=&
(
RC
.
mac
[
eNB_id
]
->
eNB_stats
[
CC_id
]);
telnet_ltemeasurdef_t
statsptr
[]
=
LTEMAC_MEASURE
;
prnt
(
"%s eNB %i mac stats CC %i frame %u %s
\n
"
,
HDR
,
eNB_id
,
CC_id
,
RC
.
mac
[
eNB_id
]
->
frame
,
HDR
);
measurcmd_display_measures
(
prnt
,
statsptr
,
sizeof
(
statsptr
)
/
sizeof
(
telnet_ltemeasurdef_t
));
}
}
/* measurcmd_display_macstats */
void
measurcmd_display_one_rlcstat
(
telnet_printfunc_t
prnt
,
int
UE_id
,
telnet_ltemeasurdef_t
*
statsptr
,
int
num_rlcmeasure
,
unsigned
int
*
rlcstats
,
char
*
rbid_str
,
protocol_ctxt_t
*
ctxt
,
const
srb_flag_t
srb_flagP
,
const
rb_id_t
rb_idP
)
{
int
rlc_status
=
rlc_stat_req
(
ctxt
,
srb_flagP
,
rb_idP
,
rlcstats
,
rlcstats
+
1
,
rlcstats
+
2
,
rlcstats
+
3
,
rlcstats
+
4
,
rlcstats
+
5
,
rlcstats
+
6
,
rlcstats
+
7
,
rlcstats
+
8
,
rlcstats
+
9
,
rlcstats
+
10
,
rlcstats
+
11
,
rlcstats
+
12
,
rlcstats
+
13
,
rlcstats
+
14
,
rlcstats
+
15
,
rlcstats
+
16
,
rlcstats
+
17
,
rlcstats
+
18
,
rlcstats
+
19
,
rlcstats
+
20
,
rlcstats
+
21
,
rlcstats
+
22
,
rlcstats
+
23
,
rlcstats
+
24
,
rlcstats
+
25
,
rlcstats
+
26
,
rlcstats
+
27
);
if
(
rlc_status
==
RLC_OP_STATUS_OK
)
{
prnt
(
"%s UE %i RLC %s mode %s %s
\n
"
,
HDR
,
UE_id
,
rbid_str
,
(
rlcstats
[
0
]
==
RLC_MODE_AM
)
?
"AM"
:
(
rlcstats
[
0
]
==
RLC_MODE_UM
)
?
"UM"
:
"NONE"
,
HDR
);
measurcmd_display_measures
(
prnt
,
statsptr
,
num_rlcmeasure
);
}
}
/* status measurcmd_rlc_stat_req */
void
measurcmd_display_rlcstats
(
telnet_printfunc_t
prnt
)
{
protocol_ctxt_t
ctxt
;
UE_list_t
*
UE_list
=
&
(
RC
.
mac
[
eNB_id
]
->
UE_list
);
telnet_ltemeasurdef_t
statsptr
[]
=
LTE_RLCMEASURE
;
int
num_rlcmeasure
=
sizeof
(
statsptr
)
/
sizeof
(
telnet_ltemeasurdef_t
);
unsigned
int
*
rlcstats
=
malloc
(
num_rlcmeasure
*
sizeof
(
unsigned
int
));
eNB_MAC_INST
*
eNB
=
RC
.
mac
[
eNB_id
];
for
(
int
i
=
0
;
i
<
num_rlcmeasure
;
i
++
)
{
statsptr
[
i
].
vptr
=
rlcstats
+
i
;
}
for
(
int
UE_id
=
UE_list
->
head
;
UE_id
>=
0
;
UE_id
=
UE_list
->
next
[
UE_id
])
{
#define NB_eNB_INST 1
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
eNB_id
,
ENB_FLAG_YES
,
UE_list
->
eNB_UE_stats
[
0
][
UE_id
].
crnti
,
eNB
->
frame
,
eNB
->
subframe
,
eNB_id
);
measurcmd_display_one_rlcstat
(
prnt
,
UE_id
,
statsptr
,
num_rlcmeasure
,
rlcstats
,
"DCCH"
,
&
ctxt
,
SRB_FLAG_YES
,
DCCH
);
measurcmd_display_one_rlcstat
(
prnt
,
UE_id
,
statsptr
,
num_rlcmeasure
,
rlcstats
,
"DTCH"
,
&
ctxt
,
SRB_FLAG_NO
,
DTCH
-
2
);
}
}
/* measurcmd_display_macstats_ue */
/*------------------------------------------------------------------------------------------------------------------------*/
/* function called by the telnet server when measur command is entered */
...
...
@@ -238,20 +130,24 @@ int measurcmd_show(char *buf, int debug, telnet_printfunc_t prnt) {
if
(
debug
>
0
)
prnt
(
" measurcmd_show received %s
\n
"
,
buf
);
int
(
*
fptr
)(
telnet_measurgroupdef_t
**
)
=
dlsym
(
RTLD_DEFAULT
,
"get_measurgroups"
);
if
(
fptr
==
NULL
)
{
prnt
(
"No measures available for this softmodem
\n
"
);
return
0
;
}
telnet_measurgroupdef_t
*
measurgroups
;
int
num_measurgroups
=
fptr
(
&
measurgroups
);
// char tmp[20480];
// dump_eNB_l2_stats(tmp, 0);
// prnt("%s\n",tmp);
int
s
=
sscanf
(
buf
,
"%ms %i-%i
\n
"
,
&
subcmd
,
&
idx1
,
&
idx2
);
if
(
s
>
0
)
{
if
(
strcmp
(
subcmd
,
"groups"
)
==
0
)
{
measurcmd_display_groups
(
prnt
);
measurcmd_display_groups
(
prnt
,
measurgroups
,
num_measurgroups
);
badcmd
=
0
;
}
else
{
for
(
int
i
=
0
;
i
<
TELNET_NUM_MEASURTYPES
;
i
++
)
{
if
(
strcmp
(
subcmd
,
grouptypes
[
i
])
==
0
)
{
for
(
int
j
=
0
;
j
<
TELNET_NUM_MEASURGROUPS
;
j
++
)
{
for
(
int
j
=
0
;
j
<
num_measurgroups
;
j
++
)
{
if
(
i
==
measurgroups
[
j
].
type
)
{
badcmd
=
0
;
measurgroups
[
j
].
displayfunc
(
prnt
);
...
...
@@ -260,7 +156,7 @@ int measurcmd_show(char *buf, int debug, telnet_printfunc_t prnt) {
}
}
/* for i...*/
for
(
int
i
=
0
;
i
<
TELNET_NUM_MEASURGROUPS
;
i
++
)
{
for
(
int
i
=
0
;
i
<
num_measurgroups
;
i
++
)
{
if
(
strcmp
(
subcmd
,
measurgroups
[
i
].
groupname
)
==
0
)
{
measurgroups
[
i
].
displayfunc
(
prnt
);
badcmd
=
0
;
...
...
common/utils/telnetsrv/telnetsrv_measurements.h
View file @
2520a922
...
...
@@ -34,16 +34,13 @@
#include <dlfcn.h>
#include "telnetsrv.h"
#include "openair1/PHY/defs_eNB.h"
#ifdef TELNETSRV_MEASURMENTS_MAIN
#define TELNET_MAXMEASURNAME_LEN 30
#define TELNET_MAXMEASURGROUPS 10
telnetshell_vardef_t
measur_vardef
[]
=
{
{
""
,
0
,
NULL
}
};
#define PRINT_CPUMEAS_STATE ((cpumeas(CPUMEAS_GETSTATE))?"enabled":"disabled")
typedef
struct
cpumeasurdef
{
char
statname
[
TELNET_MAXMEASURNAME_LEN
];
time_stats_t
*
astatptr
;
...
...
@@ -75,6 +72,7 @@ typedef struct mesurgroupdef {
#define LTEMAC_MEASURGROUP_NAME "ltemac"
#define PHYCPU_MEASURGROUP_NAME "phycpu"
#ifdef TELNETSRV_MEASURMENTS_MAIN
int
measurcmd_show
(
char
*
buf
,
int
debug
,
telnet_printfunc_t
prnt
);
int
measurcmd_cpustats
(
char
*
buf
,
int
debug
,
telnet_printfunc_t
prnt
);
telnetshell_cmddef_t
measur_cmdarray
[]
=
{
...
...
@@ -83,6 +81,19 @@ telnetshell_cmddef_t measur_cmdarray[] = {
{
""
,
""
,
NULL
}
};
telnetshell_vardef_t
measur_vardef
[]
=
{
{
""
,
0
,
NULL
}
};
/* function to be implemented in any telnetsrv_xxx_measurements.c sources
to allow common measurment code to access measurments data */
extern
int
get_measurgroups
(
telnet_measurgroupdef_t
**
measurgroups
);
/* */
#else
extern
void
add_measur_cmds
(
void
);
extern
void
measurcmd_display_groups
(
telnet_printfunc_t
prnt
,
telnet_measurgroupdef_t
*
measurgroups
,
int
groups_size
);
extern
void
measurcmd_display_cpumeasures
(
telnet_printfunc_t
prnt
,
telnet_cpumeasurdef_t
*
cpumeasure
,
int
cpumeasure_size
)
;
extern
uint64_t
measurcmd_getstatvalue
(
telnet_ltemeasurdef_t
*
measur
,
telnet_printfunc_t
prnt
);
extern
void
measurcmd_display_measures
(
telnet_printfunc_t
prnt
,
telnet_ltemeasurdef_t
*
statsptr
,
int
stats_size
);
#endif
/* TELNETSRV_MEASURCMD_MAIN */
common/utils/telnetsrv/telnetsrv_phycmd.c
deleted
100644 → 0
View file @
f761479e
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file common/utils/telnetsrv/telnetsrv_phycmd.c
* \brief: implementation of telnet commands related to softmodem linux process
* \author Francois TABURET
* \date 2017
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#define _GNU_SOURCE
#include <string.h>
#include <pthread.h>
#define TELNETSERVERCODE
#include "telnetsrv.h"
#define TELNETSRV_PHYCMD_MAIN
#include "telnetsrv_phycmd.h"
char
*
prnbuff
;
extern
int
dump_eNB_stats
(
PHY_VARS_eNB
*
eNB
,
char
*
buffer
,
int
length
);
void
init_phytelnet
(
void
)
{
prnbuff
=
malloc
(
get_phybsize
()
);
if
(
prnbuff
==
NULL
)
{
fprintf
(
stderr
,
"Error %s on malloc in init_phytelnet()
\n
"
,
strerror
(
errno
));
}
}
void
display_uestatshead
(
telnet_printfunc_t
prnt
)
{
prnt
(
"cc ue rnti Dmcs Umcs tao tau Dbr Dtb
\n
"
);
}
void
dump_uestats
(
int
debug
,
telnet_printfunc_t
prnt
,
uint8_t
prntflag
)
{
int
p
;
p
=
dump_eNB_l2_stats
(
prnbuff
,
0
);
if
(
prntflag
>=
1
)
prnt
(
"%s
\n
"
,
prnbuff
);
if
(
debug
>=
1
)
prnt
(
"%i bytes printed
\n
"
,
p
);
}
void
display_uestats
(
int
debug
,
telnet_printfunc_t
prnt
,
int
ue
)
{
for
(
int
cc
=
0
;
cc
<
1
;
cc
++
)
{
}
}
void
display_phycounters
(
char
*
buf
,
int
debug
,
telnet_printfunc_t
prnt
)
{
prnt
(
" DLSCH kb DLSCH kb/s
\n
"
);
dump_uestats
(
debug
,
prnt
,
0
);
}
int
dump_phyvars
(
char
*
buf
,
int
debug
,
telnet_printfunc_t
prnt
)
{
if
(
debug
>
0
)
prnt
(
"phy interface module received %s
\n
"
,
buf
);
if
(
strcasestr
(
buf
,
"phycnt"
)
!=
NULL
)
{
display_phycounters
(
buf
,
debug
,
prnt
);
}
if
(
strcasestr
(
buf
,
"uestat"
)
!=
NULL
)
{
char
*
cptr
=
strcasestr
(
buf
+
sizeof
(
"uestat"
),
"UE"
);
display_uestatshead
(
prnt
);
if
(
cptr
!=
NULL
)
{
int
ueidx
=
strtol
(
cptr
+
sizeof
(
"UE"
),
NULL
,
10
);
if
(
ueidx
<
NUMBER_OF_UE_MAX
&&
ueidx
>=
0
)
{
display_uestats
(
debug
,
prnt
,
ueidx
);
}
}
/* if cptr != NULL */
else
{
for
(
int
ue
=
0
;
ue
<
NUMBER_OF_UE_MAX
;
ue
++
)
{
display_uestats
(
debug
,
prnt
,
ue
);
}
}
/* else cptr != NULL */
}
/* uestat */
if
(
strcasestr
(
buf
,
"uedump"
)
!=
NULL
)
{
dump_uestats
(
debug
,
prnt
,
1
);
}
return
0
;
}
telnetshell_cmddef_t
phy_cmdarray
[]
=
{
{
"disp"
,
"[phycnt,uedump,uestat UE<x>]"
,
dump_phyvars
},
{
""
,
""
,
NULL
},
};
/*-------------------------------------------------------------------------------------*/
void
add_phy_cmds
(
void
)
{
init_phytelnet
();
add_telnetcmd
(
"phy"
,
phy_vardef
,
phy_cmdarray
);
}
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