Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
JenRungHuang
openairinterface5G
Commits
ec67c1c9
Commit
ec67c1c9
authored
Dec 01, 2017
by
Panos Matzakos
Browse files
Introduce new executable for the UE (nfapi pnf in stub mode) lte-softmodem-stub
parent
9de8b0fc
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
cmake_targets/CMakeLists.txt
View file @
ec67c1c9
...
...
@@ -1889,6 +1889,52 @@ target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CR
target_link_libraries
(
lte-softmodem
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem
${
T_LIB
}
)
# lte-softmodem-stub is both eNB and UE implementation
###################################################
add_executable
(
lte-softmodem-stub
${
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-enb.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-softmodem-stub.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/SIMU/USER/init_lte.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks.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
${
GTPU_need_ITTI
}
${
RTAI_SOURCE
}
${
XFORMS_SOURCE
}
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
target_link_libraries
(
lte-softmodem-stub
-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
}
${
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-stub
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-stub 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-softmodem-stub
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-stub
${
T_LIB
}
)
# lte-softmodem-nos1 is both eNB and UE implementation
###################################################
add_executable
(
lte-softmodem-nos1
...
...
@@ -2181,7 +2227,7 @@ endforeach(myExe)
if
(
${
T_TRACER
}
)
foreach
(
i
#all "add_executable" definitions (except tests, rb_tool, updatefw)
lte-softmodem lte-softmodem-nos1 rrh_gw oaisim oaisim_nos1
lte-softmodem
lte-softmodem-stub
lte-softmodem-nos1 rrh_gw oaisim oaisim_nos1
dlsim_tm4 dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim
pdcchsim pucchsim prachsim syncsim
#all "add_library" definitions
...
...
cmake_targets/build_oai
View file @
ec67c1c9
...
...
@@ -506,6 +506,7 @@ function main() {
else
lte_build_dir
=
lte_build_oai
lte_exec
=
lte-softmodem
#lte_exec=lte-softmodem-stub
fi
# configuration module libraries, one currently available, using libconfig
...
...
nfapi/nfapi_pnf.c
View file @
ec67c1c9
...
...
@@ -38,8 +38,10 @@ extern pthread_mutex_t nfapi_sync_mutex;
extern
int
nfapi_sync_var
;
extern
int
sync_var
;
char
uecap_xer_in
;
extern
void
init_eNB_afterRU
(
void
);
extern
void
init_UE_stub
(
int
nb_inst
,
int
,
int
);
extern
void
handle_nfapi_dci_dl_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_dl_config_request_pdu_t
*
dl_config_pdu
);
extern
void
handle_nfapi_ul_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_ul_config_request_pdu_t
*
ul_config_pdu
,
uint16_t
frame
,
uint8_t
subframe
,
uint8_t
srs_present
);
extern
void
handle_nfapi_dlsch_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_dl_config_request_pdu_t
*
dl_config_pdu
,
uint8_t
codeword_index
,
uint8_t
*
sdu
);
...
...
@@ -1409,7 +1411,16 @@ int start_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfapi
//phy_init_RU(RC.ru[0]);
printf
(
"[PNF] About to call init_eNB_afterRU()
\n
"
);
init_eNB_afterRU
();
// Panos: Instead
/*if (nfapi_mode == 3) {
init_UE_stub(1,0,uecap_xer_in);
}*/
//else{
if
(
nfapi_mode
!=
3
)
{
// Panos
init_eNB_afterRU
();
}
// Signal to main thread that it can carry on - otherwise RU will startup too quickly and it is not initialised
{
...
...
openair1/PHY/defs.h
View file @
ec67c1c9
...
...
@@ -654,6 +654,7 @@ typedef struct {
/// Panos: Structure holding timer_thread related elements (phy_stub_UE mode)
typedef
struct
{
pthread_t
pthread_timer
;
/// Panos: mutex for waiting SF ticking
pthread_mutex_t
mutex_ticking
;
/// Panos: \brief ticking var for ticking thread.
...
...
openair2/ENB_APP/enb_config.c
View file @
ec67c1c9
...
...
@@ -253,17 +253,28 @@ void UE_config_stub_pnf(void) {
// Panos: Right now that we have only one UE (thread) it is ok to put the eth_params in the UE_mac_inst.
// Later I think we have to change that to attribute eth_params to a global element for all the UEs.
else
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"nfapi"
)
==
0
)
{
UE_mac_inst
[
0
].
eth_params_n
.
local_if_name
=
strdup
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_LOCAL_N_IF_NAME_IDX
].
strptr
));
stub_eth_params
.
local_if_name
=
strdup
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_LOCAL_N_IF_NAME_IDX
].
strptr
));
stub_eth_params
.
my_addr
=
strdup
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_LOCAL_N_ADDRESS_IDX
].
strptr
));
stub_eth_params
.
remote_addr
=
strdup
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_REMOTE_N_ADDRESS_IDX
].
strptr
));
stub_eth_params
.
my_portc
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_LOCAL_N_PORTC_IDX
].
iptr
);
stub_eth_params
.
remote_portc
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_REMOTE_N_PORTC_IDX
].
iptr
);
stub_eth_params
.
my_portd
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_LOCAL_N_PORTD_IDX
].
iptr
);
stub_eth_params
.
remote_portd
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_REMOTE_N_PORTD_IDX
].
iptr
);
stub_eth_params
.
transp_preference
=
ETH_UDP_MODE
;
/*UE_mac_inst[0].eth_params_n.local_if_name = strdup(*(L1_ParamList.paramarray[j][L1_LOCAL_N_IF_NAME_IDX].strptr));
UE_mac_inst[0].eth_params_n.my_addr = strdup(*(L1_ParamList.paramarray[j][L1_LOCAL_N_ADDRESS_IDX].strptr));
UE_mac_inst[0].eth_params_n.remote_addr = strdup(*(L1_ParamList.paramarray[j][L1_REMOTE_N_ADDRESS_IDX].strptr));
UE_mac_inst[0].eth_params_n.my_portc = *(L1_ParamList.paramarray[j][L1_LOCAL_N_PORTC_IDX].iptr);
UE_mac_inst[0].eth_params_n.remote_portc = *(L1_ParamList.paramarray[j][L1_REMOTE_N_PORTC_IDX].iptr);
UE_mac_inst[0].eth_params_n.my_portd = *(L1_ParamList.paramarray[j][L1_LOCAL_N_PORTD_IDX].iptr);
UE_mac_inst[0].eth_params_n.remote_portd = *(L1_ParamList.paramarray[j][L1_REMOTE_N_PORTD_IDX].iptr);
UE_mac_inst
[
0
].
eth_params_n
.
transp_preference
=
ETH_UDP_MODE
;
UE_mac_inst[0].eth_params_n.transp_preference = ETH_UDP_MODE;
*/
sf_ahead
=
4
;
// Cannot cope with 4 subframes betweem RX and TX - set it to 2
configure_nfapi_pnf
(
UE_mac_inst
[
0
].
eth_params_n
.
remote_addr
,
UE_mac_inst
[
0
].
eth_params_n
.
remote_portc
,
UE_mac_inst
[
0
].
eth_params_n
.
my_addr
,
UE_mac_inst
[
0
].
eth_params_n
.
my_portd
,
UE_mac_inst
[
0
].
eth_params_n
.
remote_portd
);
//configure_nfapi_pnf(UE_mac_inst[0].eth_params_n.remote_addr, UE_mac_inst[0].eth_params_n.remote_portc, UE_mac_inst[0].eth_params_n.my_addr, UE_mac_inst[0].eth_params_n.my_portd, UE_mac_inst[0].eth_params_n.remote_portd);
configure_nfapi_pnf
(
stub_eth_params
.
remote_addr
,
stub_eth_params
.
remote_portc
,
stub_eth_params
.
my_addr
,
stub_eth_params
.
my_portd
,
stub_eth_params
.
remote_portd
);
}
else
{
// other midhaul
}
...
...
@@ -2934,7 +2945,6 @@ void RCConfig(void) {
RC
.
nb_macrlc_inst
=
MACRLCParamList
.
numelt
;
// Get num L1 instances
config_getlist
(
&
L1ParamList
,
NULL
,
0
,
NULL
);
//config_getlist( &L1_ParamList,L1_Params,sizeof(L1_Params)/sizeof(paramdef_t), NULL);
RC
.
nb_L1_inst
=
L1ParamList
.
numelt
;
// Get num RU instances
...
...
openair2/ENB_APP/enb_config.h
View file @
ec67c1c9
...
...
@@ -93,9 +93,12 @@ typedef struct ru_config_s {
uint8_t
if_compress
;
}
ru_config_t
;
eth_params_t
stub_eth_params
;
extern
void
RCconfig_RU
(
void
);
extern
void
RCconfig_L1
(
void
);
extern
void
RCconfig_macrlc
(
void
);
extern
void
UE_config_stub_pnf
(
void
);
extern
int
RCconfig_gtpu
(
void
);
extern
void
RCConfig
(
void
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpb210.conf
View file @
ec67c1c9
...
...
@@ -19,9 +19,9 @@ L1s = (
{
num_cc
=
1
;
tr_n_preference
=
"nfapi"
;
local_n_if_name
=
"e
no1
"
;
remote_n_address
=
"1
92.168.1
.2
8
"
;
local_n_address
=
"1
92.168.1.74
"
;
local_n_if_name
=
"e
th0
"
;
remote_n_address
=
"1
0.0.0
.2
0
"
;
local_n_address
=
"1
0.0.0.10
"
;
local_n_portc
=
50000
;
remote_n_portc
=
50001
;
local_n_portd
=
50010
;
...
...
targets/RT/USER/lte-enb.c
View file @
ec67c1c9
...
...
@@ -121,7 +121,8 @@ extern int transmission_mode;
extern
int
oaisim_flag
;
uint16_t
sf_ahead
=
4
;
//uint16_t sf_ahead=4;
extern
uint16_t
sf_ahead
;
//pthread_t main_eNB_thread;
...
...
targets/RT/USER/lte-softmodem-stub.c
0 → 100644
View file @
ec67c1c9
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem.c
View file @
ec67c1c9
...
...
@@ -118,6 +118,8 @@ int nfapi_sync_var=-1; //!< protected by mutex \ref nfapi_sync_mutex
uint8_t
nfapi_mode
=
0
;
uint16_t
sf_ahead
=
4
;
pthread_cond_t
sync_cond
;
pthread_mutex_t
sync_mutex
;
int
sync_var
=-
1
;
//!< protected by mutex \ref sync_mutex.
...
...
@@ -937,7 +939,6 @@ int main( int argc, char **argv )
// set default parameters
if
(
UE_flag
==
1
)
set_default_frame_parms
(
frame_parms
);
logInit
();
printf
(
"Reading in command-line options
\n
"
);
...
...
targets/RT/USER/lte-ue.c
View file @
ec67c1c9
...
...
@@ -76,6 +76,7 @@ void init_UE_threads(int);
void
init_UE_threads_stub
(
int
);
void
*
UE_thread
(
void
*
arg
);
void
init_UE
(
int
nb_inst
,
int
,
int
);
void
init_UE_stub
(
int
nb_inst
,
int
,
int
);
extern
void
oai_subframe_ind
(
uint16_t
sfn
,
uint16_t
sf
);
//extern int tx_req_UE_MAC1();
...
...
@@ -1408,17 +1409,18 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg)
return
0
;
}
// Panos: This timer thread is used only in the phy_sub mode as an independent timer
// which will be ticking and provide the SFN/SF values that will be used from the UE threads
// playing the role of nfapi-pnf.
static
void
*
timer_thread
(
void
*
param
)
{
timer_subframe
=
9
;
timer_frame
=
1023
;
phy_stub_ticking
=
(
SF_ticking
*
)
malloc
(
sizeof
(
SF_ticking
));
//
phy_stub_ticking = (SF_ticking*)malloc(sizeof(SF_ticking));
phy_stub_ticking
->
ticking_var
=
-
1
;
wait_sync
(
"timer_thread"
);
pthread_mutex_init
(
&
phy_stub_ticking
->
mutex_ticking
,
NULL
);
pthread_cond_init
(
&
phy_stub_ticking
->
cond_ticking
,
NULL
);
//
pthread_mutex_init(&phy_stub_ticking->mutex_ticking,NULL);
//
pthread_cond_init(&phy_stub_ticking->cond_ticking,NULL);
while
(
!
oai_exit
)
{
usleep
(
1000
);
...
...
@@ -1454,6 +1456,14 @@ static void* timer_thread( void* param ) {
}
int
init_timer_thread
(
void
)
{
phy_stub_ticking
=
(
SF_ticking
*
)
malloc
(
sizeof
(
SF_ticking
));
pthread_mutex_init
(
&
phy_stub_ticking
->
mutex_ticking
,
NULL
);
pthread_cond_init
(
&
phy_stub_ticking
->
cond_ticking
,
NULL
);
pthread_create
(
phy_stub_ticking
->
pthread_timer
,
NULL
,
&
timer_thread
,
NULL
);
return
0
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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