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
zzha zzha
OpenXG-RAN
Commits
b04f3b54
Commit
b04f3b54
authored
Mar 01, 2018
by
oai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
introduce distinct executables for ue and eNodeB (lte-uesoftmodem, lte-softmodem)
parent
45302792
Changes
21
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1420 additions
and
549 deletions
+1420
-549
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+77
-13
cmake_targets/build_oai
cmake_targets/build_oai
+17
-3
common/utils/load_module_shlib.c
common/utils/load_module_shlib.c
+37
-15
common/utils/load_module_shlib.h
common/utils/load_module_shlib.h
+19
-9
common/utils/telnetsrv/telnetsrv.c
common/utils/telnetsrv/telnetsrv.c
+8
-2
common/utils/telnetsrv/telnetsrv.h
common/utils/telnetsrv/telnetsrv.h
+2
-0
openair1/PHY/CODING/3gpplte_sse.c
openair1/PHY/CODING/3gpplte_sse.c
+1
-1
openair1/PHY/CODING/3gpplte_turbo_decoder.c
openair1/PHY/CODING/3gpplte_turbo_decoder.c
+9
-1
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
+2
-0
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
+2
-0
openair1/PHY/CODING/coding_load.c
openair1/PHY/CODING/coding_load.c
+61
-12
openair1/PHY/CODING/defs.h
openair1/PHY/CODING/defs.h
+3
-105
openair1/PHY/INIT/init_top.c
openair1/PHY/INIT/init_top.c
+1
-1
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+2
-4
openair1/PHY/extern.h
openair1/PHY/extern.h
+1
-1
openair1/PHY/vars.h
openair1/PHY/vars.h
+1
-1
openair2/RRC/LITE/L2_interface_ue.c
openair2/RRC/LITE/L2_interface_ue.c
+1
-0
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+1
-1
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+33
-376
targets/RT/USER/lte-softmodem.h
targets/RT/USER/lte-softmodem.h
+3
-4
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+1139
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
b04f3b54
...
...
@@ -1216,9 +1216,7 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/CODING/ccoding_byte_lte.c
${
OPENAIR1_DIR
}
/PHY/CODING/3gpplte_sse.c
${
OPENAIR1_DIR
}
/PHY/CODING/crc_byte.c
${
OPENAIR1_DIR
}
/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
${
OPENAIR1_DIR
}
/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
${
OPENAIR1_DIR
}
/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
${
PHY_TURBOIF
}
${
OPENAIR1_DIR
}
/PHY/CODING/lte_rate_matching.c
${
OPENAIR1_DIR
}
/PHY/CODING/viterbi.c
${
OPENAIR1_DIR
}
/PHY/CODING/viterbi_lte.c
...
...
@@ -1946,14 +1944,12 @@ add_executable(lte-softmodem
${
s1ap_h
}
${
OPENAIR_BIN_DIR
}
/messages_xml.h
${
OPENAIR_TARGETS
}
/RT/USER/rt_wrapper.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ue.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-enb.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ru.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-softmodem.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/SIMU/USER/init_lte.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks_ue.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR3_DIR
}
/NAS/UE/nas_ue_task.c
...
...
@@ -1969,9 +1965,9 @@ add_executable(lte-softmodem
target_link_libraries
(
lte-softmodem
-Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
FLEXRAN_AGENT_LIB
}
LFDS7
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB
NFAPI_USER_LIB
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
FLEXRAN_AGENT_LIB
}
LFDS7
NFAPI_
COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_
USER_LIB
-Wl,--end-group z dl
)
target_link_libraries
(
lte-softmodem
${
LIBXML2_LIBRARIES
}
)
...
...
@@ -1986,14 +1982,12 @@ add_executable(lte-softmodem-nos1
${
s1ap_h
}
${
OPENAIR_BIN_DIR
}
/messages_xml.h
${
OPENAIR_TARGETS
}
/RT/USER/rt_wrapper.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ue.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-enb.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ru.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-softmodem.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/SIMU/USER/init_lte.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks_ue.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR2_DIR
}
/RRC/NAS/rb_config.c
...
...
@@ -2007,9 +2001,9 @@ add_executable(lte-softmodem-nos1
)
target_link_libraries
(
lte-softmodem-nos1
-Wl,--start-group
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB PHY LFDS L2
${
MSC_LIB
}
${
RAL_LIB
}
${
ITTI_LIB
}
${
MIH_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
FLEXRAN_AGENT_LIB
}
LFDS7
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB
NFAPI_USER_LIB
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB PHY LFDS L2
${
MSC_LIB
}
${
RAL_LIB
}
${
ITTI_LIB
}
${
MIH_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
FLEXRAN_AGENT_LIB
}
LFDS7
NFAPI_
COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_
USER_LIB
-Wl,--end-group z dl
)
target_link_libraries
(
lte-softmodem-nos1
${
LIBXML2_LIBRARIES
}
)
...
...
@@ -2017,6 +2011,76 @@ target_link_libraries (lte-softmodem-nos1 pthread m ${CONFIG_LIBRARIES} rt crypt
target_link_libraries
(
lte-softmodem-nos1
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1
${
T_LIB
}
)
# lte-uesoftmodem is UE implementation
#######################################
add_executable
(
lte-uesoftmodem
${
rrc_h
}
${
s1ap_h
}
${
OPENAIR_BIN_DIR
}
/messages_xml.h
${
OPENAIR_TARGETS
}
/RT/USER/rt_wrapper.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ue.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-uesoftmodem.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/SIMU/USER/init_lte.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks_ue.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR3_DIR
}
/NAS/UE/nas_ue_task.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
XFORMS_SOURCE
}
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
target_link_libraries
(
lte-uesoftmodem
-Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_UE_LIB PHY_UE LFDS L2_UE
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
LFDS7
-Wl,--end-group z dl
)
target_link_libraries
(
lte-uesoftmodem
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-uesoftmodem pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
XFORMS_LIBRARIES
}
${
PROTOBUF_LIB
}
${
CMAKE_DL_LIBS
}
${
LIBYAML_LIBRARIES
}
)
target_link_libraries
(
lte-uesoftmodem
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-uesoftmodem
${
T_LIB
}
)
# lte-softmodem-nos1 is both eNB and UE implementation
###################################################
add_executable
(
lte-uesoftmodem-nos1
${
rrc_h
}
${
s1ap_h
}
${
OPENAIR_BIN_DIR
}
/messages_xml.h
${
OPENAIR_TARGETS
}
/RT/USER/rt_wrapper.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ue.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-uesoftmodem.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/SIMU/USER/init_lte.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks_ue.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR2_DIR
}
/RRC/NAS/rb_config.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
XFORMS_SOURCE
}
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
target_link_libraries
(
lte-uesoftmodem-nos1
-Wl,--start-group
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_UE_LIB PHY_UE LFDS L2_UE
${
MSC_LIB
}
${
RAL_LIB
}
${
ITTI_LIB
}
${
MIH_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
LFDS7
-Wl,--end-group z dl
)
target_link_libraries
(
lte-uesoftmodem-nos1
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-uesoftmodem-nos1 pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
XFORMS_LIBRARIES
}
${
PROTOBUF_LIB
}
${
CMAKE_DL_LIBS
}
${
LIBYAML_LIBRARIES
}
)
target_link_libraries
(
lte-uesoftmodem-nos1
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-uesoftmodem-nos1
${
T_LIB
}
)
# USIM process
#################
#add_executable(usim
...
...
cmake_targets/build_oai
View file @
b04f3b54
...
...
@@ -359,7 +359,11 @@ function main() {
CMAKE_CMD
=
"
$CMAKE_CMD
.."
echo_info
"CMAKE_CMD=
$CMAKE_CMD
"
if
[
"
$eNB
"
=
"1"
]
&&
[
"
$UE
"
=
"1"
]
;
then
echo_error
"Cannot build UE and eNB on one build_oai execution"
echo_error
"use 2 build_oai invocations"
exit
fi
#########################################################
# check validity of HW and TP parameters for eNB
#########################################################
...
...
@@ -488,11 +492,21 @@ function main() {
DIR
=
$OPENAIR_DIR
/cmake_targets
if
[
"
$NOS1
"
=
"1"
]
;
then
lte_build_dir
=
lte_noS1_build_oai
if
[
"
$eNB
"
=
"1"
]
;
then
lte_exec
=
lte-softmodem-nos1
fi
if
[
"
$UE
"
=
"1"
]
;
then
lte_exec
=
lte-uesoftmodem-nos1
fi
else
lte_build_dir
=
lte_build_oai
if
[
"
$eNB
"
=
"1"
]
;
then
lte_exec
=
lte-softmodem
fi
if
[
"
$UE
"
=
"1"
]
;
then
lte_exec
=
lte-uesoftmodem
fi
fi
# configuration module libraries, one currently available, using libconfig
config_libconfig_shlib
=
params_libconfig
...
...
common/utils/load_module_shlib.c
View file @
b04f3b54
...
...
@@ -48,11 +48,11 @@ void loader_init(void) {
loader_data
.
mainexec_buildversion
=
PACKAGE_VERSION
;
int
ret
=
config_get
(
LoaderParams
,
sizeof
(
LoaderParams
)
/
sizeof
(
paramdef_t
),
LOADER_CONFIG_PREFIX
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"[LOADER] %s %d configuration couldn't be performed"
,
__FILE__
,
__LINE__
);
printf
(
"[LOADER] configuration couldn't be performed via config module, parameters set to default values
\n
"
);
if
(
loader_data
.
shlibpath
==
NULL
)
{
loader_data
.
shlibpath
=
DEFAULT_PATH
;
}
return
;
loader_data
.
maxshlibs
=
DEFAULT_MAXSHLIBS
;
}
loader_data
.
shlibs
=
malloc
(
loader_data
.
maxshlibs
*
sizeof
(
loader_shlibdesc_t
));
if
(
loader_data
.
shlibs
==
NULL
)
{
...
...
@@ -96,7 +96,10 @@ int ret;
if
(
shlibpath
==
NULL
)
{
shlibpath
=
loader_data
.
shlibpath
;
}
/* no specific shared lib version */
if
(
shlibversion
==
NULL
)
{
shlibversion
=
""
;
}
/* alloc memory for full module shared lib file name */
tmpstr
=
malloc
(
strlen
(
shlibpath
)
+
strlen
(
modname
)
+
strlen
(
shlibversion
)
+
16
);
if
(
tmpstr
==
NULL
)
{
...
...
@@ -120,6 +123,7 @@ int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
void
*
lib_handle
;
initfunc_t
fpi
;
checkverfunc_t
fpc
;
getfarrayfunc_t
fpg
;
char
*
shlib_path
;
char
*
afname
=
NULL
;
int
ret
=
0
;
...
...
@@ -155,25 +159,29 @@ int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
}
if
(
farray
!=
NULL
)
{
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
funcarray
=
malloc
(
numf
*
sizeof
(
loader_shlibfunc_t
));
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
numfunc
=
0
;
for
(
int
i
=
0
;
i
<
numf
;
i
++
)
{
farray
[
i
].
fptr
=
dlsym
(
lib_handle
,
farray
[
i
].
fname
);
if
(
farray
[
i
].
fptr
==
NULL
)
{
fprintf
(
stderr
,
"[LOADER] %s %d %s function not found %s
\n
"
,
__FILE__
,
__LINE__
,
dlerror
(),
farray
[
i
].
fname
);
ret
=
-
1
;
}
}
/* for int i... */
}
/* farray ! NULL */
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
name
=
strdup
(
modname
);
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
thisshlib_path
=
strdup
(
shlib_path
);
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
funcarray
=
malloc
(
numf
*
sizeof
(
loader_shlibfunc_t
));
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
numfunc
=
0
;
for
(
int
i
=
0
;
i
<
numf
;
i
++
)
{
if
(
farray
[
i
].
fptr
!=
NULL
)
{
}
else
{
/* farray[i].fptr == NULL */
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
funcarray
[
i
].
fname
=
strdup
(
farray
[
i
].
fname
);
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
funcarray
[
i
].
fptr
=
farray
[
i
].
fptr
;
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
numfunc
++
;
}
/* farray[i].fptr != NULL */
}
/* for int i... */
}
else
{
/* farray ! NULL */
sprintf
(
afname
,
"%s_getfarray"
,
modname
);
fpg
=
dlsym
(
lib_handle
,
afname
);
if
(
fpg
!=
NULL
)
{
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
numfunc
=
fpg
(
&
(
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
funcarray
));
}
}
}
/* farray ! NULL */
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
name
=
strdup
(
modname
);
loader_data
.
shlibs
[
loader_data
.
numshlibs
].
thisshlib_path
=
strdup
(
shlib_path
);
(
loader_data
.
numshlibs
)
++
;
}
/* lib_handle != NULL */
...
...
@@ -182,3 +190,17 @@ int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
if
(
lib_handle
!=
NULL
)
dlclose
(
lib_handle
);
return
ret
;
}
void
*
get_shlibmodule_fptr
(
char
*
modname
,
char
*
fname
)
{
for
(
int
i
=
0
;
i
<
loader_data
.
numshlibs
&&
loader_data
.
shlibs
[
i
].
name
!=
NULL
;
i
++
)
{
if
(
strcmp
(
loader_data
.
shlibs
[
i
].
name
,
modname
)
==
0
)
{
for
(
int
j
=
0
;
j
<
loader_data
.
shlibs
[
i
].
numfunc
;
j
++
)
{
if
(
strcmp
(
loader_data
.
shlibs
[
i
].
funcarray
[
j
].
fname
,
fname
)
==
0
)
{
return
loader_data
.
shlibs
[
i
].
funcarray
[
j
].
fptr
;
}
}
/* for j loop on module functions*/
}
}
/* for i loop on modules */
return
NULL
;
}
common/utils/load_module_shlib.h
View file @
b04f3b54
...
...
@@ -33,8 +33,7 @@
#define LOAD_SHLIB_H
typedef
int
(
*
initfunc_t
)(
void
);
typedef
int
(
*
checkverfunc_t
)(
char
*
mainexec_version
,
char
**
shlib_version
);
typedef
struct
{
char
*
fname
;
...
...
@@ -58,23 +57,34 @@ typedef struct {
loader_shlibdesc_t
*
shlibs
;
}
loader_data_t
;
/* function type of functions which may be implemented by a module */
/* 1: init function, called when loading, if found in the shared lib */
typedef
int
(
*
initfunc_t
)(
void
);
/* 2: version checking function, called when loading, if it returns -1, trigger main exec abort */
typedef
int
(
*
checkverfunc_t
)(
char
*
mainexec_version
,
char
**
shlib_version
);
/* 3: get function array function, called when loading when a module doesn't provide */
/* the function array when calling load_module_shlib (farray param NULL) */
typedef
int
(
*
getfarrayfunc_t
)(
loader_shlibfunc_t
**
funcarray
);
#ifdef LOAD_MODULE_SHLIB_MAIN
#define LOADER_CONFIG_PREFIX "loader"
#define DEFAULT_PATH ""
#define DEFAULT_MAXSHLIBS 10
loader_data_t
loader_data
;
/*----------------------------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------------------------------------------------
--
*/
/* LOADER parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*----------------------------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------------------------------------------------
--
*/
#define LOADER_PARAMS_DESC { \
{"shlibpath", NULL, PARAMFLAG_NOFREE, strptr:(char **)&(loader_data.shlibpath), defstrval:DEFAULT_PATH, TYPE_STRING, 0}, \
{"maxshlibs", NULL, 0, uptr:&(loader_data.maxshlibs), defintval:
10,
TYPE_UINT32, 0}, \
{"maxshlibs", NULL, 0, uptr:&(loader_data.maxshlibs), defintval:
DEFAULT_MAXSHLIBS,
TYPE_UINT32, 0}, \
}
/*-------------------------------------------------------------------------------------------------------------*/
#else
/* LOAD_MODULE_SHLIB_MAIN */
extern
int
load_module_shlib
(
char
*
modname
,
loader_shlibfunc_t
*
farray
,
int
numf
);
extern
void
*
get_shlibmodule_fptr
(
char
*
modname
,
char
*
fname
);
extern
loader_data_t
loader_data
;
#endif
/* LOAD_MODULE_SHLIB_MAIN */
...
...
common/utils/telnetsrv/telnetsrv.c
View file @
b04f3b54
...
...
@@ -51,7 +51,7 @@
#include <dlfcn.h>
#include <sys/time.h>
#include <sys/resource.h>
#include "common/utils/load_module_shlib.h"
#include "common/config/config_userapi.h"
#include <readline/history.h>
...
...
@@ -787,4 +787,10 @@ int telnetsrv_checkbuildver(char * mainexec_buildversion, char ** shlib_buildve
return
0
;
}
int
telnetsrv_getfarray
(
loader_shlibfunc_t
**
farray
)
{
*
farray
=
malloc
(
sizeof
(
loader_shlibfunc_t
));
(
*
farray
)[
0
].
fname
=
TELNET_ADDCMD_FNAME
;
(
*
farray
)[
0
].
fptr
=
(
int
(
*
)(
void
)
)
add_telnetcmd
;
return
1
;
}
common/utils/telnetsrv/telnetsrv.h
View file @
b04f3b54
...
...
@@ -131,6 +131,8 @@ VT escape sequence definition, for smarter display....
#define STDFMT "\x1b[0m"
/*---------------------------------------------------------------------------------------------*/
#define TELNET_ADDCMD_FNAME "add_telnetcmd"
typedef
int
(
*
add_telnetcmd_func_t
)(
char
*
,
telnetshell_vardef_t
*
,
telnetshell_cmddef_t
*
);
#ifdef TELNETSERVERCODE
int
add_telnetcmd
(
char
*
modulename
,
telnetshell_vardef_t
*
var
,
telnetshell_cmddef_t
*
cmd
);
void
set_sched
(
pthread_t
tid
,
int
pid
,
int
priority
);
...
...
openair1/PHY/CODING/3gpplte_sse.c
View file @
b04f3b54
...
...
@@ -696,7 +696,7 @@ int main(int argc,char **argv)
printf
(
"Input %d : %d
\n
"
,
i
,
input
[
i
]);
}
threegpplte_turbo_encoder
(
&
input
[
0
],
threegpplte_turbo_encoder
_sse
(
&
input
[
0
],
INPUT_LENGTH
,
&
output
[
0
],
0
,
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder.c
View file @
b04f3b54
...
...
@@ -874,14 +874,22 @@ void compute_ext_s(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
unsigned
char
phy_threegpplte_turbo_decoder_scalar
(
llr_t
*
y
,
llr_t
*
y2
,
unsigned
char
*
decoded_bytes
,
unsigned
char
*
decoded_bytes2
,
unsigned
short
n
,
unsigned
short
f1
,
unsigned
short
f2
,
unsigned
char
max_iterations
,
unsigned
char
crc_type
,
unsigned
char
F
,
unsigned
char
inst
)
time_stats_t
*
init_stats
,
time_stats_t
*
alpha_stats
,
time_stats_t
*
beta_stats
,
time_stats_t
*
gamma_stats
,
time_stats_t
*
ext_stats
,
time_stats_t
*
intl1_stats
,
time_stats_t
*
intl2_stats
)
{
/* y is a pointer to the input
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
View file @
b04f3b54
...
...
@@ -1172,7 +1172,9 @@ void init_td16(void)
}
unsigned
char
phy_threegpplte_turbo_decoder16
(
short
*
y
,
short
*
y2
,
unsigned
char
*
decoded_bytes
,
unsigned
char
*
decoded_bytes2
,
unsigned
short
n
,
unsigned
short
f1
,
unsigned
short
f2
,
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
View file @
b04f3b54
...
...
@@ -898,7 +898,9 @@ void init_td8(void)
}
unsigned
char
phy_threegpplte_turbo_decoder8
(
short
*
y
,
short
y2
,
unsigned
char
*
decoded_bytes
,
unsigned
char
*
decoded_bytes2
,
unsigned
short
n
,
unsigned
short
f1
,
unsigned
short
f2
,
...
...
openair1/PHY/CODING/coding_load.c
View file @
b04f3b54
...
...
@@ -29,13 +29,32 @@
* \note
* \warning
*/
#define _GNU_SOURCE
#include <sys/types.h>
#include "PHY/defs.h"
#include "PHY/extern.h"
#include "common/utils/load_module_shlib.h"
#include "common/utils/telnetsrv/telnetsrv.h"
static
int
coding_setmod_cmd
(
char
*
buff
,
int
debug
,
telnet_printfunc_t
prnt
);
static
telnetshell_cmddef_t
coding_cmdarray
[]
=
{
{
"mode"
,
"[sse,avx2,stdc,none]"
,
coding_setmod_cmd
},
{
""
,
""
,
NULL
},
};
telnetshell_vardef_t
coding_vardef
[]
=
{
{
"maxiter"
,
TELNET_VARTYPE_INT32
,
&
max_turbo_iterations
},
{
""
,
0
,
NULL
}
};
/* PHY/defs.h contains MODE_DECODE_XXX macros, following table must match */
static
char
*
modedesc
[]
=
{
"none"
,
"sse"
,
"C"
,
"avx2"
};
static
int
curmode
;
/* function description array, to be used when loading the encoding/decoding shared lib */
loader_shlibfunc_t
shlib_fdesc
[
DECODE_NUM_FPTR
];
/* encoding decoding functions pointers, filled here and used when encoding/decoding */
/*defined as extern in PHY?CODING/extern.h */
decoder_if_t
decoder16
;
decoder_if_t
decoder8
;
encoder_if_t
encoder
;
...
...
@@ -59,7 +78,6 @@ uint8_t nodecod(short *y,
time_stats_t
*
intl1_stats
,
time_stats_t
*
intl2_stats
)
{
printf
(
"."
);
return
max_iterations
+
1
;
};
...
...
@@ -70,11 +88,6 @@ void decoding_setmode (int mode) {
decoder16
=
nodecod
;
encoder
=
(
encoder_if_t
)
shlib_fdesc
[
ENCODE_C_FPTRIDX
].
fptr
;
break
;
case
MODE_DECODE_SSE
:
decoder8
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD8_SSE_FPTRIDX
].
fptr
;
decoder16
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD16_SSE_FPTRIDX
].
fptr
;
encoder
=
(
encoder_if_t
)
shlib_fdesc
[
ENCODE_SSE_FPTRIDX
].
fptr
;
break
;
case
MODE_DECODE_C
:
decoder16
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD_C_FPTRIDX
].
fptr
;
decoder8
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD_C_FPTRIDX
].
fptr
;
...
...
@@ -85,15 +98,22 @@ void decoding_setmode (int mode) {
decoder8
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD8_SSE_FPTRIDX
].
fptr
;
encoder
=
(
encoder_if_t
)
shlib_fdesc
[
ENCODE_SSE_FPTRIDX
].
fptr
;
break
;
default:
mode
=
MODE_DECODE_SSE
;
case
MODE_DECODE_SSE
:
decoder8
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD8_SSE_FPTRIDX
].
fptr
;
decoder16
=
(
decoder_if_t
)
shlib_fdesc
[
DECODE_TD16_SSE_FPTRIDX
].
fptr
;
encoder
=
(
encoder_if_t
)
shlib_fdesc
[
ENCODE_SSE_FPTRIDX
].
fptr
;
break
;
}
curmode
=
mode
;
}
int
load_codinglib
(
void
)
{
int
ret
;
memset
(
shlib_fdesc
,
0
,
sizeof
(
shlib_fdesc
));
shlib_fdesc
[
DECODE_INITTD8_SSE_FPTRIDX
].
fname
=
"init_td8"
;
shlib_fdesc
[
DECODE_INITTD16_SSE_FPTRIDX
].
fname
=
"init_td16"
;
shlib_fdesc
[
DECODE_INITTD_AVX2_FPTRIDX
].
fname
=
"init_td16avx2"
;
...
...
@@ -117,10 +137,18 @@ int load_codinglib(void) {
/* execute encoder/decoder init functions */
shlib_fdesc
[
DECODE_INITTD8_SSE_FPTRIDX
].
fptr
();
shlib_fdesc
[
DECODE_INITTD16_SSE_FPTRIDX
].
fptr
();
if
(
shlib_fdesc
[
DECODE_INITTD_AVX2_FPTRIDX
].
fptr
!=
NULL
)
{
shlib_fdesc
[
DECODE_INITTD_AVX2_FPTRIDX
].
fptr
();
}
if
(
shlib_fdesc
[
ENCODE_INIT_SSE_FPTRIDX
].
fptr
!=
NULL
)
{
shlib_fdesc
[
ENCODE_INIT_SSE_FPTRIDX
].
fptr
();
}
decoding_setmode
(
MODE_DECODE_SSE
);
/* look for telnet server, if it is loaded, add the coding commands to it */
add_telnetcmd_func_t
addcmd
=
(
add_telnetcmd_func_t
)
get_shlibmodule_fptr
(
"telnetsrv"
,
TELNET_ADDCMD_FNAME
);
if
(
addcmd
!=
NULL
)
{
addcmd
(
"coding"
,
coding_vardef
,
coding_cmdarray
);
}
return
0
;
}
...
...
@@ -132,3 +160,24 @@ void free_codinglib(void) {
}
/* functions for telnet support, when telnet server is loaded */
int
coding_setmod_cmd
(
char
*
buff
,
int
debug
,
telnet_printfunc_t
prnt
)
{
if
(
debug
>
0
)
prnt
(
"coding_setmod_cmd received %s
\n
"
,
buff
);
if
(
strcasestr
(
buff
,
"sse"
)
!=
NULL
)
{
decoding_setmode
(
MODE_DECODE_SSE
);
}
else
if
(
strcasestr
(
buff
,
"avx2"
)
!=
NULL
)
{
decoding_setmode
(
MODE_DECODE_AVX2
);
}
else
if
(
strcasestr
(
buff
,
"stdc"
)
!=
NULL
)
{
decoding_setmode
(
MODE_DECODE_C
);
}
else
if
(
strcasestr
(
buff
,
"none"
)
!=
NULL
)
{
decoding_setmode
(
MODE_DECODE_NONE
);
}
else
{
prnt
(
"%s: wrong setmod parameter...
\n
"
,
buff
);
}
prnt
(
"Coding and decoding current mode: %s
\n
"
,
modedesc
[
curmode
]);
return
0
;
}
openair1/PHY/CODING/defs.h
View file @
b04f3b54
...
...
@@ -37,7 +37,7 @@
#define CRC8 3
#define MAX_TURBO_ITERATIONS_MBSFN 8
#define MAX_TURBO_ITERATIONS
4
#define MAX_TURBO_ITERATIONS
max_turbo_iterations
#define LTE_NULL 2
...
...
@@ -294,21 +294,7 @@ void ccodedot11_init_inv(void);
/*\fn void threegpplte_turbo_encoder(uint8_t *input,uint16_t input_length_bytes,uint8_t *output,uint8_t F,uint16_t interleaver_f1,uint16_t interleaver_f2)
\brief This function implements a rate 1/3 8-state parralel concatenated turbo code (3GPP-LTE).
@param input Pointer to input buffer
@param input_length_bytes Number of bytes to encode
@param output Pointer to output buffer
@param F Number of filler bits at input
@param interleaver_f1 F1 generator
@param interleaver_f2 F2 generator
*/
void
threegpplte_turbo_encoder
(
uint8_t
*
input
,
uint16_t
input_length_bytes
,
uint8_t
*
output
,
uint8_t
F
,
uint16_t
interleaver_f1
,
uint16_t
interleaver_f2
);
/** \fn void ccodelte_encode(int32_t numbits,uint8_t add_crc, uint8_t *inPtr,uint8_t *outPtr,uint16_t rnti)
...
...
@@ -440,95 +426,7 @@ int32_t rate_matching_lte(uint32_t N_coded,
uint32_t
off
);
/*!
\brief This routine performs max-logmap detection for the 3GPP turbo code (with termination). It is optimized for SIMD processing and 16-bit
LLR arithmetic, and requires SSE2,SSSE3 and SSE4.1 (gcc >=4.3 and appropriate CPU)
@param y LLR input (16-bit precision)
@param decoded_bytes Pointer to decoded output
@param n number of coded bits (including tail bits)
@param max_iterations The maximum number of iterations to perform
@param interleaver_f1 F1 generator
@param interleaver_f2 F2 generator
@param crc_type Length of 3GPPLTE crc (CRC24a,CRC24b,CRC16,CRC8)
@param F Number of filler bits at start of packet
@returns number of iterations used (this is 1+max if incorrect crc or if crc_len=0)
*/
uint8_t
phy_threegpplte_turbo_decoder16
(
int16_t
*
y
,
uint8_t
*
decoded_bytes
,
uint16_t
n
,
uint16_t
interleaver_f1
,
uint16_t
interleaver_f2
,
uint8_t
max_iterations
,
uint8_t
crc_type
,
uint8_t
F
,
time_stats_t
*
init_stats
,
time_stats_t
*
alpha_stats
,
time_stats_t
*
beta_stats
,
time_stats_t
*
gamma_stats
,
time_stats_t
*
ext_stats
,
time_stats_t
*
intl1_stats
,
time_stats_t
*
intl2_stats
);
uint8_t
phy_threegpplte_turbo_decoder16avx2
(
int16_t
*
y
,
int16_t
*
y2
,
uint8_t
*
decoded_bytes
,
uint8_t
*
decoded_bytes2
,
uint16_t
n
,
uint16_t
interleaver_f1
,
uint16_t
interleaver_f2
,
uint8_t
max_iterations
,
uint8_t
crc_type
,
uint8_t
F
,
time_stats_t
*
init_stats
,
time_stats_t
*
alpha_stats
,
time_stats_t
*
beta_stats
,
time_stats_t
*
gamma_stats
,
time_stats_t
*
ext_stats
,
time_stats_t
*
intl1_stats
,
time_stats_t
*
intl2_stats
);
/*!
\brief This routine performs max-logmap detection for the 3GPP turbo code (with termination). It is optimized for SIMD processing and 8-bit
LLR arithmetic, and requires SSE2,SSSE3 and SSE4.1 (gcc >=4.3 and appropriate CPU)
@param y LLR input (16-bit precision)
@param decoded_bytes Pointer to decoded output
@param n number of coded bits (including tail bits)
@param max_iterations The maximum number of iterations to perform
@param interleaver_f1 F1 generator
@param interleaver_f2 F2 generator
@param crc_type Length of 3GPPLTE crc (CRC24a,CRC24b,CRC16,CRC8)
@param F Number of filler bits at start of packet
@returns number of iterations used (this is 1+max if incorrect crc or if crc_len=0)
*/
uint8_t
phy_threegpplte_turbo_decoder8
(
int16_t
*
y
,
uint8_t
*
decoded_bytes
,
uint16_t
n
,
uint16_t
interleaver_f1
,
uint16_t
interleaver_f2
,
uint8_t
max_iterations
,
uint8_t
crc_type
,
uint8_t
F
,
time_stats_t
*
init_stats
,
time_stats_t
*
alpha_stats
,
time_stats_t
*
beta_stats
,
time_stats_t
*
gamma_stats
,
time_stats_t
*
ext_stats
,
time_stats_t
*
intl1_stats
,
time_stats_t
*
intl2_stats
);
uint8_t
phy_threegpplte_turbo_decoder_scalar
(
int16_t
*
y
,
uint8_t
*
decoded_bytes
,
uint16_t
n
,
uint16_t
interleaver_f1
,
uint16_t
interleaver_f2
,
uint8_t
max_iterations
,
uint8_t
crc_type
,
uint8_t
F
,
uint8_t
inst
);
/** @} */
uint32_t
crcbit
(
uint8_t
*
,
int32_t
,
...
...
openair1/PHY/INIT/init_top.c
View file @
b04f3b54
...
...
@@ -22,7 +22,7 @@
/*!\brief Initilization and reconfiguration routines for LTE PHY */
#include "defs.h"
#include "PHY/extern.h"
#include "PHY/CODING/extern.h"
void
init_lte_top
(
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
...
...
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
b04f3b54
...
...
@@ -207,10 +207,8 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
((
ue
->
frame_parms
.
frame_type
==
TDD
)
&&
((
subframe
==
1
)
||
(
subframe
==
6
)))
)
{
// FDD PSS/SSS, compute noise in DTX REs
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
rxdataF
[
aarx
][(
5
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
...
...
@@ -266,7 +264,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
ue
->
measurements
.
n0_power_tot_dB
=
(
unsigned
short
)
dB_fixed
(
ue
->
measurements
.
n0_power_tot
/
(
12
*
aarx
));
ue
->
measurements
.
n0_power_tot_dBm
=
ue
->
measurements
.
n0_power_tot_dB
-
ue
->
rx_total_gain_dB
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
}
else
{
LOG_E
(
PHY
,
"Not yet implemented: noise power calculation when prefix length = EXTENDED
\n
"
);
LOG_E
(
PHY
,
"Not yet implemented: noise power calculation when prefix length =
=
EXTENDED
\n
"
);
}
}
else
if
((
ue
->
frame_parms
.
frame_type
==
TDD
)
&&
...
...
openair1/PHY/extern.h
View file @
b04f3b54
...
...
@@ -126,6 +126,6 @@ extern unsigned short Nb_81_110[8][4];
extern
uint16_t
hundred_times_log10_NPRB
[
100
];
extern
uint8_t
alpha_lut
[
8
];
extern
uint8_t
max_turbo_iterations
;
#endif
/*__PHY_EXTERN_H__ */
openair1/PHY/vars.h
View file @
b04f3b54
...
...
@@ -149,5 +149,5 @@ int16_t unscrambling_lut[65536*16] __attribute__((aligned(32)));
/// lookup table for scrambling in TX
uint8_t
scrambling_lut
[
65536
*
16
]
__attribute__
((
aligned
(
32
)));
uint8_t
max_turbo_iterations
=
4
;
#endif
/*__PHY_VARS_H__ */
openair2/RRC/LITE/L2_interface_ue.c
View file @
b04f3b54
...
...
@@ -65,6 +65,7 @@ mac_rrc_data_req_ue(
)
//--------------------------------------------------------------------------
{
#ifdef DEBUG_RRC
int
i
;
LOG_I
(
RRC
,
"[eNB %d] mac_rrc_data_req to SRB ID=%d
\n
"
,
Mod_idP
,
Srb_id
);
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
b04f3b54
...
...
@@ -242,6 +242,7 @@ openair_rrc_on_ue(
{
unsigned
short
i
;
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" UE?:OPENAIR RRC IN....
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
));
...
...
@@ -4841,7 +4842,6 @@ rrc_rx_tx_ue(
)
//-----------------------------------------------------------------------------
{
//uint8_t UE_id;
#ifdef LOCALIZATION
double
estimated_distance
;
...
...
targets/RT/USER/lte-softmodem.c
View file @
b04f3b54
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem.h
View file @
b04f3b54
...
...
@@ -129,10 +129,10 @@
{"ue-nb-ant-tx", CONFIG_HLP_UENANTT, 0, u8ptr:&nb_antenna_tx, defuintval:1, TYPE_UINT8, 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}, \
{"r" , CONFIG_HLP_PRB, 0, u8ptr:&(frame_parms[0]->N_RB_DL), defintval:
0,
TYPE_UINT8, 0}, \
{"r" , CONFIG_HLP_PRB, 0, u8ptr:&(frame_parms[0]->N_RB_DL), defintval:
25,
TYPE_UINT8, 0}, \
}
#define DEFAULT_DLF 2680000000
extern
int16_t
dlsch_demod_shift
;
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters common to eNodeB and UE */
...
...
@@ -155,12 +155,11 @@ extern int16_t dlsch_demod_shift;
{"threadSlot1ProcTwo", NULL, 0, iptr:&(threads.slot1_proc_two), defintval:1, TYPE_INT, 0}, \
{"dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&dlsch_demod_shift, defintval:0, TYPE_INT, 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:
DEFAULT_DLF
, TYPE_UINT, 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}, \
{"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}, \
{"U" , CONFIG_HLP_UE, PARAMFLAG_BOOL, i8ptr:&UE_flag, defintval:0, TYPE_INT8, 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}, \
{"W" , CONFIG_HLP_L2MONW, 0, strptr:(char **)&in_ip, defstrval:"127.0.0.1", TYPE_STRING, sizeof(in_ip)}, \
...
...
targets/RT/USER/lte-uesoftmodem.c
0 → 100644
View file @
b04f3b54
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