Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
lizhongxiao
OpenXG UE
Commits
ae33568a
Commit
ae33568a
authored
Sep 05, 2016
by
Nikos Makris
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Functionality for a simple protocol agent exchanging echo_request/reply messages
parent
ae16c9df
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
539 additions
and
595 deletions
+539
-595
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+44
-11
openair2/COMMON/tasks_def.h
openair2/COMMON/tasks_def.h
+3
-0
openair2/ENB_APP/enb_app.c
openair2/ENB_APP/enb_app.c
+7
-0
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+43
-1
openair2/ENB_APP/enb_config.h
openair2/ENB_APP/enb_config.h
+7
-0
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+43
-1
openair2/LAYER2/PROTO_AGENT/proto_agent.c
openair2/LAYER2/PROTO_AGENT/proto_agent.c
+87
-277
openair2/LAYER2/PROTO_AGENT/proto_agent.h
openair2/LAYER2/PROTO_AGENT/proto_agent.h
+2
-0
openair2/LAYER2/PROTO_AGENT/proto_agent_async.c
openair2/LAYER2/PROTO_AGENT/proto_agent_async.c
+3
-3
openair2/LAYER2/PROTO_AGENT/proto_agent_common.c
openair2/LAYER2/PROTO_AGENT/proto_agent_common.c
+110
-237
openair2/LAYER2/PROTO_AGENT/proto_agent_common.h
openair2/LAYER2/PROTO_AGENT/proto_agent_common.h
+7
-0
openair2/LAYER2/PROTO_AGENT/proto_agent_defs.h
openair2/LAYER2/PROTO_AGENT/proto_agent_defs.h
+1
-1
openair2/LAYER2/PROTO_AGENT/proto_agent_handler.c
openair2/LAYER2/PROTO_AGENT/proto_agent_handler.c
+28
-37
openair2/LAYER2/PROTO_AGENT/proto_agent_net_comm.c
openair2/LAYER2/PROTO_AGENT/proto_agent_net_comm.c
+3
-3
openair2/LAYER2/RLC/rlc.c
openair2/LAYER2/RLC/rlc.c
+3
-0
openair2/UTIL/ASYNC_IF/link_manager.c
openair2/UTIL/ASYNC_IF/link_manager.c
+3
-0
openair2/UTIL/ASYNC_IF/link_manager.h
openair2/UTIL/ASYNC_IF/link_manager.h
+2
-2
openair2/UTIL/ASYNC_IF/socket_link.c
openair2/UTIL/ASYNC_IF/socket_link.c
+28
-21
openair2/UTIL/LOG/log.c
openair2/UTIL/LOG/log.c
+14
-0
openair2/UTIL/LOG/log.h
openair2/UTIL/LOG/log.h
+1
-0
openair2/UTIL/LOG/log_extern.h
openair2/UTIL/LOG/log_extern.h
+4
-0
targets/COMMON/MESSAGES/V2/flexsplit.proto
targets/COMMON/MESSAGES/V2/flexsplit.proto
+15
-1
targets/COMMON/MESSAGES/V2/header.proto
targets/COMMON/MESSAGES/V2/header.proto
+2
-0
targets/SIMU/USER/oaisim.c
targets/SIMU/USER/oaisim.c
+79
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
ae33568a
...
...
@@ -831,9 +831,12 @@ include_directories("${OPENAIR_DIR}/targets/COMMON")
include_directories
(
"
${
OPENAIR_DIR
}
/targets/ARCH/COMMON"
)
include_directories
(
"
${
OPENAIR_DIR
}
/targets/ARCH/EXMIMO/USERSPACE/LIB/"
)
include_directories
(
"
${
OPENAIR_DIR
}
/targets/ARCH/EXMIMO/DEFS"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/ASYNC_IF"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/LFDS/liblfds6.1.1/liblfds611/inc"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/LFDS/liblfds7.0.0/liblfds700/inc"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/LAYER2/PROTO_AGENT"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/ENB_APP"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/OSA"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/LFDS/liblfds6.1.1/liblfds611/inc"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/MEM"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/LISTS"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/FIFO"
)
...
...
@@ -854,7 +857,7 @@ include_directories("${OPENAIR_DIR}")
################
if
(
PDCP_SPLIT
)
# set the version of protobuf messages, V3 not supported yet
add_list1_option
(
FSPT_VERSION V2
"
PR
PT MSG protobuf grammar version"
V2 V3
)
add_list1_option
(
FSPT_VERSION V2
"
FS
PT MSG protobuf grammar version"
V2 V3
)
if
(
${
FSPT_VERSION
}
STREQUAL
"V2"
)
set
(
FSPTDIR V2
)
...
...
@@ -871,7 +874,7 @@ if (PDCP_SPLIT)
set
(
FSPT_C_DIR
${
protobuf_generated_dir
}
/
${
FSPTDIR
}
)
message
(
"calling protoc_call=
${
protoc_call
}
FSPT_C_DIR=
${
FSPT_C_DIR
}
FSPT_MSG_FILES=
${
FSPT_MSG_FILES
}
"
)
execute_process
(
COMMAND
${
protoc_call
}
${
FSPT_C_DIR
}
${
FSPT_MSG_DIR
}
${
FSPT_MSG_FILES
}
)
file
(
GLOB
PR
PT_source
${
FSPT_C_DIR
}
/*.c
)
file
(
GLOB
FS
PT_source
${
FSPT_C_DIR
}
/*.c
)
set
(
FSPT_OAI_generated
${
FSPT_C_DIR
}
/header.pb-c.c
${
FSPT_C_DIR
}
/flexsplit.pb-c.c
...
...
@@ -897,6 +900,18 @@ if (PDCP_SPLIT)
set
(
ASYNC_IF_LIB ASYNC_IF
)
include_directories
(
${
OPENAIR2_DIR
}
/UTIL/ASYNC_IF
)
add_library
(
PROTO_AGENT
${
OPENAIR2_DIR
}
/LAYER2/PROTO_AGENT/proto_agent_handler.c
${
OPENAIR2_DIR
}
/LAYER2/PROTO_AGENT/proto_agent_common.c
${
OPENAIR2_DIR
}
/LAYER2/PROTO_AGENT/proto_agent.c
${
OPENAIR2_DIR
}
/LAYER2/PROTO_AGENT/proto_agent_net_comm.c
${
OPENAIR2_DIR
}
/LAYER2/PROTO_AGENT/proto_agent_async.c
)
set
(
PROTO_AGENT_LIB PROTO_AGENT
)
#include_directories(${OPENAIR2_DIR}/LAYER2/PROTO_AGENT)
set
(
PROTOBUF_LIB
"protobuf-c"
)
#set(PROTOBUF_LIB "protobuf") #for Cpp
...
...
@@ -1525,6 +1540,24 @@ add_library(LFDS
${
lfds
}
/lfds611_abstraction/lfds611_abstraction_malloc.c
)
set
(
lfds7
${
OPENAIR2_DIR
}
/UTIL/LFDS/liblfds7.0.0/liblfds700/src/
)
file
(
GLOB lfds7_queue
${
lfds7
}
/lfds700_queue/*.c
)
file
(
GLOB lfds7_ring
${
lfds7
}
/lfds700_ringbuffer/*.c
)
file
(
GLOB lfds7_qbss
${
lfds7
}
/lfds700_queue_bounded_singleconsumer_singleproducer/*.c
)
file
(
GLOB lfds7_stack
${
lfds7
}
/lfds700_stack/*.c
)
file
(
GLOB lfds7_freelist
${
lfds7
}
/lfds700_freelist/*.c
)
file
(
GLOB lfds7_btree
${
lfds7
}
/lfds700_btree_addonly_unbalanced/*.c
)
file
(
GLOB lfds7_hash
${
lfds7
}
/lfds700_hash_addonly/*.c
)
file
(
GLOB lfds7_ordered_list
${
lfds7
}
/lfds700_list_addonly_ordered_singlylinked/*.c
)
file
(
GLOB lfds7_unordered_list
${
lfds7
}
/lfds700_list_addonly_singlylinked_unordered/*.c
)
file
(
GLOB lfds7_misc
${
lfds7
}
/lfds700_misc/*.c
)
include_directories
(
${
lfds7
}
)
add_library
(
LFDS7
${
lfds7_queue
}
${
lfds7_ring
}
${
lfds7_qbss
}
${
lfds7_stack
}
${
lfds7_freelist
}
${
lfds7_btree
}
${
lfds7_hash
}
${
lfds7_ordered_list
}
${
lfds7_unordered_list
}
${
lfds7_misc
}
)
# Simulation library
##########################
add_library
(
SIMU
...
...
@@ -1688,11 +1721,11 @@ add_executable(lte-softmodem
target_link_libraries
(
lte-softmodem -ldl
-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
}
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
}
${
FSPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
PROTO_AGENT_LIB
}
LFDS7 protobuf-c
-Wl,--end-group
)
target_link_libraries
(
lte-softmodem
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
option_HW_lib
}
${
option_TP_lib
}
${
XFORMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem pthread m
${
CONFIG_LIBRARIES
}
rt
${
PROTOBUF_LIB
}
crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
option_HW_lib
}
${
option_TP_lib
}
${
XFORMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem
${
LIBBOOST_LIBRARIES
}
-lboost_system
)
#Added manually as it is not found for some reason for USRP
target_link_libraries
(
lte-softmodem
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem
${
T_LIB
}
)
...
...
@@ -1724,11 +1757,11 @@ 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
}
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB PHY LFDS
${
RAL_LIB
}
${
ITTI_LIB
}
${
MIH_LIB
}
-Wl,--end-group
)
target_link_libraries
(
lte-softmodem-nos1
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1 pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
option_HW_lib
}
${
option_TP_lib
}
${
XFORMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1 pthread m
${
CONFIG_LIBRARIES
}
rt
${
PROTOBUF_LIB
}
crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
option_HW_lib
}
${
option_TP_lib
}
${
XFORMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1
${
LIBBOOST_LIBRARIES
}
-lboost_system
)
#Added manually as it is not found for some reason for USRP
target_link_libraries
(
lte-softmodem-nos1
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1
${
T_LIB
}
)
...
...
@@ -1827,11 +1860,11 @@ add_executable(oaisim
target_include_directories
(
oaisim PUBLIC
${
OPENAIR_TARGETS
}
/SIMU/USER
)
target_link_libraries
(
oaisim
-Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS
${
MSC_LIB
}
L2
${
RAL_LIB
}
LIB_NAS_UE SIMU SIMU_ETH SECU_OSA
${
ITTI_LIB
}
${
MIH_LIB
}
RRC_LIB S1AP_LIB S1AP_ENB
${
FSPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
PROTO_AGENT_LIB
}
LFDS7
X2AP_LIB GTPV1U SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS
${
MSC_LIB
}
L2
${
RAL_LIB
}
LIB_NAS_UE SIMU SIMU_ETH SECU_OSA
${
ITTI_LIB
}
${
MIH_LIB
}
-Wl,--end-group
)
target_link_libraries
(
oaisim
${
LIBXML2_LIBRARIES
}
${
LAPACK_LIBRARIES
}
)
target_link_libraries
(
oaisim pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
option_HW_lib
}
${
option_TP_lib
}
target_link_libraries
(
oaisim pthread m
${
PROTOBUF_LIB
}
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
option_HW_lib
}
${
option_TP_lib
}
${
ATLAS_LIBRARIES
}
${
XFORMS_LIBRARIES
}
${
OPENPGM_LIBRARIES
}
)
#Force link with forms, regardless XFORMS option
target_link_libraries
(
oaisim forms
)
...
...
@@ -1866,11 +1899,11 @@ add_executable(oaisim_nos1
target_include_directories
(
oaisim_nos1 PUBLIC
${
OPENAIR_TARGETS
}
/SIMU/USER
)
target_link_libraries
(
oaisim_nos1
-Wl,--start-group
RRC_LIB X2AP_LIB SECU_CN UTIL HASHTABLE SCHED_LIB PHY LFDS
${
MSC_LIB
}
L2
${
RAL_LIB
}
SIMU SIMU_ETH SECU_OSA
${
ITTI_LIB
}
${
MIH_LIB
}
RRC_LIB X2AP_LIB SECU_CN UTIL HASHTABLE SCHED_LIB PHY LFDS
${
MSC_LIB
}
L2
${
RAL_LIB
}
SIMU SIMU_ETH SECU_OSA
${
ITTI_LIB
}
${
MIH_LIB
}
${
FSPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
PROTO_AGENT_LIB
}
LFDS7 protobuf-c
-Wl,--end-group
)
target_link_libraries
(
oaisim_nos1
${
LIBXML2_LIBRARIES
}
${
LAPACK_LIBRARIES
}
)
target_link_libraries
(
oaisim_nos1 pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
option_HW_lib
}
${
option_TP_lib
}
target_link_libraries
(
oaisim_nos1 pthread m
${
PROTOBUF_LIB
}
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
option_HW_lib
}
${
option_TP_lib
}
${
ATLAS_LIBRARIES
}
${
XFORMS_LIBRARIES
}
${
OPENPGM_LIBRARIES
}
)
#Force link with forms, regardless XFORMS option
target_link_libraries
(
oaisim_nos1 forms
)
...
...
openair2/COMMON/tasks_def.h
View file @
ae33568a
...
...
@@ -80,3 +80,6 @@ TASK_DEF(TASK_RAL_UE, TASK_PRIORITY_MED, 200)
//MESSAGE GENERATOR TASK
TASK_DEF
(
TASK_MSC
,
TASK_PRIORITY_MED
,
200
)
// Task for PROTO_AGENT
TASK_DEF
(
TASK_PROTO_AGENT
,
TASK_PRIORITY_MED
,
200
)
openair2/ENB_APP/enb_app.c
View file @
ae33568a
...
...
@@ -57,11 +57,16 @@
# include "gtpv1u_eNB_task.h"
# endif
extern
unsigned
char
NB_eNB_INST
;
#endif
#if defined(ENABLE_ITTI)
#include "LAYER2/PROTO_AGENT/proto_agent.h"
//#include "../PROTO_AGENT/proto_agent.h"
/*------------------------------------------------------------------------------*/
# if defined(ENABLE_USE_MME)
# define ENB_REGISTER_RETRY_DELAY 10
...
...
@@ -311,6 +316,8 @@ void *eNB_app_task(void *args_p)
for
(
enb_id
=
enb_id_start
;
(
enb_id
<
enb_id_end
)
;
enb_id
++
)
{
configure_phy
(
enb_id
,
enb_properties_p
);
configure_rrc
(
enb_id
,
enb_properties_p
);
//proto_server_start(enb_id, enb_properties_p);
//proto_agent_start(enb_id, enb_properties_p);
}
# if defined(ENABLE_USE_MME)
...
...
openair2/ENB_APP/enb_config.c
View file @
ae33568a
...
...
@@ -170,6 +170,14 @@
#define ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U "ENB_IPV4_ADDRESS_FOR_S1U"
#define ENB_CONFIG_STRING_ENB_PORT_FOR_S1U "ENB_PORT_FOR_S1U"
#define ENB_CONFIG_STRING_FLEXSPLIT_CONFIG "FLEXSPLIT"
#define ENB_CONFIG_STRING_PROTO_AGENT_INTERFACE_NAME "PROTO_AGENT_INTERFACE_NAME"
#define ENB_CONFIG_STRING_PROTO_AGENT_IPV4_ADDRESS "PROTO_AGENT_IPV4_ADDRESS"
#define ENB_CONFIG_STRING_PROTO_AGENT_PORT "PROTO_AGENT_PORT"
#define ENB_CONFIG_STRING_PROTO_AGENT_CACHE "PROTO_AGENT_CACHE"
#define ENB_CONFIG_STRING_RRH_GW_CONFIG "rrh_gw_config"
#define ENB_CONFIG_STRING_RRH_GW_LOCAL_IF_NAME "local_if_name"
#define ENB_CONFIG_STRING_RRH_GW_LOCAL_ADDRESS "local_address"
...
...
@@ -315,6 +323,7 @@ void enb_config_display(void)
}
}
for
(
j
=
0
;
j
<
enb_properties
.
properties
[
i
]
->
nb_cc
;
j
++
)
{
printf
(
"
\t
eutra band for CC %d:
\t
%"
PRId16
":
\n
"
,
j
,
enb_properties
.
properties
[
i
]
->
eutra_band
[
j
]);
printf
(
"
\t
downlink freq for CC %d:
\t
%"
PRIu64
":
\n
"
,
j
,
enb_properties
.
properties
[
i
]
->
downlink_frequency
[
j
]);
...
...
@@ -625,6 +634,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
char
*
address
=
NULL
;
char
*
cidr
=
NULL
;
char
*
astring
=
NULL
;
char
*
proto_agent_interface_name
=
NULL
;
char
*
proto_agent_ipv4_address
=
NULL
;
libconfig_int
proto_agent_port
=
0
;
char
*
proto_agent_cache
=
NULL
;
libconfig_int
otg_ue_id
=
0
;
char
*
otg_app_type
=
NULL
;
char
*
otg_bg_traffic
=
NULL
;
...
...
@@ -2327,7 +2342,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
if
(
address
)
{
IPV4_STR_ADDR_TO_INT_NWBO
(
address
,
enb_properties
.
properties
[
enb_properties_index
]
->
enb_ipv4_address_for_S1U
,
"BAD IP ADDRESS FORMAT FOR eNB S1_U !
\n
"
);
}
enb_properties
.
properties
[
enb_properties_index
]
->
enb_port_for_S1U
=
enb_port_for_S1U
;
enb_properties
.
properties
[
enb_properties_index
]
->
enb_interface_name_for_S1_MME
=
strdup
(
enb_interface_name_for_S1_MME
);
...
...
@@ -2340,6 +2354,34 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
}
// PROTO_AGENT configuration
subsetting
=
config_setting_get_member
(
setting_enb
,
ENB_CONFIG_STRING_FLEXSPLIT_CONFIG
);
if
(
subsetting
!=
NULL
)
{
if
(
(
config_setting_lookup_string
(
subsetting
,
ENB_CONFIG_STRING_PROTO_AGENT_INTERFACE_NAME
,
(
const
char
**
)
&
proto_agent_interface_name
)
&&
config_setting_lookup_string
(
subsetting
,
ENB_CONFIG_STRING_PROTO_AGENT_IPV4_ADDRESS
,
(
const
char
**
)
&
proto_agent_ipv4_address
)
&&
config_setting_lookup_int
(
subsetting
,
ENB_CONFIG_STRING_PROTO_AGENT_PORT
,
&
proto_agent_port
)
&&
config_setting_lookup_string
(
subsetting
,
ENB_CONFIG_STRING_PROTO_AGENT_CACHE
,
(
const
char
**
)
&
proto_agent_cache
)
)
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
proto_agent_interface_name
=
strdup
(
proto_agent_interface_name
);
cidr
=
proto_agent_ipv4_address
;
address
=
strtok
(
cidr
,
"/"
);
enb_properties
.
properties
[
enb_properties_index
]
->
proto_agent_ipv4_address
=
strdup
(
address
);
enb_properties
.
properties
[
enb_properties_index
]
->
proto_agent_port
=
proto_agent_port
;
enb_properties
.
properties
[
enb_properties_index
]
->
proto_agent_cache
=
strdup
(
proto_agent_cache
);
}
}
// OTG _CONFIG
setting_otg
=
config_setting_get_member
(
setting_enb
,
ENB_CONF_STRING_OTG_CONFIG
);
...
...
openair2/ENB_APP/enb_config.h
View file @
ae33568a
...
...
@@ -222,6 +222,13 @@ typedef struct Enb_properties_s {
in_addr_t
enb_ipv4_address_for_S1_MME
;
char
*
proto_agent_interface_name
;
in_addr_t
proto_agent_ipv4_address
;
tcp_udp_port_t
proto_agent_port
;
char
*
proto_agent_cache
;
/* Nb of RRH to connect to */
uint8_t
nb_rrh_gw
;
char
*
rrh_gw_if_name
;
...
...
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
ae33568a
...
...
@@ -56,6 +56,10 @@
#include "UTIL/LOG/vcd_signal_dumper.h"
#include "msc.h"
#include "ENB_APP/enb_config.h"
#include "LAYER2/PROTO_AGENT/proto_agent.h"
#if defined(ENABLE_SECURITY)
# include "UTIL/OSA/osa_defs.h"
#endif
...
...
@@ -73,6 +77,7 @@
extern
int
otg_enabled
;
#endif
//#include "LAYER2/PROTO_AGENT/proto_agent.h"
//-----------------------------------------------------------------------------
/*
...
...
@@ -111,6 +116,7 @@ boolean_t pdcp_data_req(
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_REQ
,
VCD_FUNCTION_IN
);
CHECK_CTXT_ARGS
(
ctxt_pP
);
#if T_TRACER
if
(
ctxt_pP
->
enb_flag
!=
ENB_FLAG_NO
)
T
(
T_ENB_PDCP_DL
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
rnti
),
T_INT
(
rb_idP
),
T_INT
(
sdu_buffer_sizeP
));
...
...
@@ -361,6 +367,27 @@ boolean_t pdcp_data_req(
#endif
rlc_status
=
rlc_data_req
(
ctxt_pP
,
srb_flagP
,
MBMS_FLAG_NO
,
rb_idP
,
muiP
,
confirmP
,
pdcp_pdu_size
,
pdcp_pdu_p
);
//starting async
// const Enb_properties_array_t *enb_properties_p = NULL;
Enb_properties_array_t
*
enb_properties_p
=
NULL
;
// enb_properties_p = malloc(sizeof(Enb_properties_array_t));
// memset(enb_properties_p, 0, sizeof(Enb_properties_array_t));
// printf("starting the client\n\n");
printf
(
"Starting the async client
\\
n"
);
// new_thread(proto_server_start, NULL);
enb_properties_p
=
enb_config_get
();
static
int
agent_started
=
1
;
if
(
agent_started
==
1
)
{
agent_started
=
proto_agent_start
(
ctxt_pP
->
module_id
,
enb_properties_p
);
}
}
switch
(
rlc_status
)
{
...
...
@@ -410,9 +437,24 @@ boolean_t pdcp_data_req(
Pdcp_stats_tx_bytes[module_id][(rb_id & RAB_OFFSET2 )>> RAB_SHIFT2][(rb_id & RAB_OFFSET)-DTCH] += sdu_buffer_size;
}
}*/
//starting async
// const Enb_properties_array_t *enb_properties_p = NULL;
// Enb_properties_array_t *enb_properties_p = NULL;
// enb_properties_p = malloc(sizeof(Enb_properties_array_t));
// memset(enb_properties_p, 0, sizeof(Enb_properties_array_t));
// printf("starting the client\n\n");
// printf("Starting the async client\\n");
// new_thread(proto_server_start, NULL);
// enb_properties_p = enb_config_get();
// proto_agent_start(ctxt_pP->module_id, enb_properties_p);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_REQ
,
VCD_FUNCTION_OUT
);
return
ret
;
}
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent.c
View file @
ae33568a
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PROTO_AGENT/proto_agent.h
View file @
ae33568a
...
...
@@ -41,6 +41,8 @@
#include "ENB_APP/enb_config.h" // for enb properties
#include "proto_agent_common.h"
void
*
proto_server_init
(
void
*
args
);
int
proto_agent_start
(
mid_t
mod_id
,
const
Enb_properties_array_t
*
enb_properties
);
int
proto_server_start
(
mid_t
mod_id
,
const
Enb_properties_array_t
*
enb_properties
);
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_async.c
View file @
ae33568a
...
...
@@ -51,8 +51,8 @@ proto_agent_async_channel_t * proto_server_async_channel_info(mid_t mod_id, char
channel
->
enb_id
=
mod_id
;
/*Create a socket*/
printf
(
"Starting async server
\n
"
);
new_thread
(
new_link_server
,
(
void
*
)
&
dst_port
);
channel
->
link
=
(
void
*
)
&
dst_port
;
channel
->
link
=
new_link_server
(
dst_port
);
//channel->link = NULL
;
printf
(
"Started async server
\n
"
);
if
(
channel
->
link
==
NULL
)
goto
error
;
...
...
@@ -79,7 +79,7 @@ proto_agent_async_channel_t * proto_server_async_channel_info(mid_t mod_id, char
return
channel
;
error:
LOG_
I
(
PROTO_AGENT
,
"there was an error
\n
"
);
LOG_
E
(
PROTO_AGENT
,
"there was an error
\n
"
);
return
1
;
}
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_common.c
View file @
ae33568a
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PROTO_AGENT/proto_agent_common.h
View file @
ae33568a
...
...
@@ -87,6 +87,12 @@ int fsp_create_header(xid_t xid, Protocol__FspType type, Protocol__FspHeader **h
int
proto_agent_hello
(
mid_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_destroy_hello
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_echo_request
(
mid_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_destroy_echo_request
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_echo_reply
(
mid_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_destroy_echo_reply
(
Protocol__FlexsplitMessage
*
msg
);
Protocol__FlexsplitMessage
*
proto_agent_handle_message
(
mid_t
mod_id
,
uint8_t
*
data
,
...
...
@@ -97,6 +103,7 @@ Protocol__FlexsplitMessage *proto_agent_handle_timed_task(void *args);
/****************************
* get generic info from RAN
****************************/
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_defs.h
View file @
ae33568a
...
...
@@ -43,7 +43,7 @@
#include "UTIL/ASYNC_IF/link_manager.h"
#define NUM_MAX_ENB
2
#define NUM_MAX_ENB
10
#define NUM_MAX_UE 2048
#define DEFAULT_PROTO_AGENT_IPv4_ADDRESS "127.0.0.1"
#define DEFAULT_PROTO_AGENT_PORT 2210
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_handler.c
View file @
ae33568a
...
...
@@ -36,19 +36,26 @@
#include "proto_agent_common.h"
//#include "enb_agent_mac.h" // Do we need this?
#include "log.h"
#include "assertions.h"
proto_agent_message_decoded_callback
agent_messages_callback
[][
3
]
=
{
{
proto_agent_hello
,
0
,
0
},
/*PROTOCOL__PROGRAN_MESSAGE__MSG_HELLO_MSG*/
{
proto_agent_hello
,
proto_agent_hello
,
0
},
{
proto_agent_echo_reply
,
0
,
0
},
// {proto_agent_rlc_data_req, proto_agent_rlc_data_req_ack, proto_agent_rlc_data_req_nack},
// {proto_agent_pdcp_data_ind, proto_agent_pdcp_data_ind_ack, proto_agent_rlc_data_ind_nack},
};
proto_agent_message_destruction_callback
message_destruction_callback
[]
=
{
proto_agent_destroy_hello
,
proto_agent_destroy_echo_request
,
proto_agent_destroy_echo_reply
,
// proto_agent_destroy_rlc_data_req,
// proto_agent_destroy_rlc_data_req_ack,
// proto_agent_destroy_rlc_data_req_nack,
// proto_agent_destroy_pdcp_data_ind,
// proto_agent_destroy_pdcp_data_ind_ack,
// proto_agent_destroy_rlc_data_ind_nack,
};
static
const
char
*
proto_agent_direction2String
[]
=
{
...
...
@@ -67,43 +74,45 @@ Protocol__FlexsplitMessage* proto_agent_handle_message (mid_t mod_id,
err_code_t
err_code
;
DevAssert
(
data
!=
NULL
);
if
(
proto_agent_deserialize_message
(
data
,
size
,
&
decoded_message
)
<
0
)
{
LOG_D
(
PROTO_AGENT
,
"Deserializing message
\n
"
);
if
(
proto_agent_deserialize_message
(
data
,
(
int
)
size
,
&
decoded_message
)
<
0
)
{
err_code
=
PROTOCOL__FLEXSPLIT_ERR__MSG_DECODING
;
goto
error
;
}
// Undestand why these calculations take place
Protocol__FspHeader
*
header
=
(
Protocol__FspHeader
*
)
decoded_message
;
if
(
header
->
has_type
)
{
LOG_D
(
PROTO_AGENT
,
"Deserialized MSG type is %d
\n
"
,
header
->
type
);
}
if
((
decoded_message
->
msg_case
>
sizeof
(
agent_messages_callback
)
/
(
3
*
sizeof
(
proto_agent_message_decoded_callback
)))
||
(
decoded_message
->
msg_dir
>
PROTOCOL__FLEXSPLIT_DIRECTION__UNSUCCESSFUL_OUTCOME
)){
err_code
=
PROTOCOL__FLEXSPLIT_ERR__MSG_NOT_HANDLED
;
LOG_D
(
PROTO_AGENT
,
"Handling message: MSG NOT handled, going to error
\n
"
);
goto
error
;
}
if
(
agent_messages_callback
[
decoded_message
->
msg_case
-
1
][
decoded_message
->
msg_dir
-
1
]
==
NULL
)
{
err_code
=
PROTOCOL__FLEXSPLIT_ERR__MSG_NOT_SUPPORTED
;
goto
error
;
}
err_code
=
((
*
agent_messages_callback
[
decoded_message
->
msg_case
-
1
][
decoded_message
->
msg_dir
-
1
])(
mod_id
,
(
void
*
)
decoded_message
,
&
reply_message
));
if
(
err_code
<
0
){
if
(
err_code
<
0
)
{
goto
error
;
}
else
if
(
err_code
==
1
)
{
//If err_code > 1, we do not want to dispose the message yet
}
else
if
(
err_code
==
1
)
{
protocol__flexsplit_message__free_unpacked
(
decoded_message
,
NULL
);
}
LOG_D
(
PROTO_AGENT
,
"Returning REPLY message after the callback
\n
"
);
return
reply_message
;
error:
LOG_E
(
PROTO_AGENT
,
"errno %d occured
\n
"
,
err_code
);
return
NULL
;
}
void
*
proto_agent_pack_message
(
Protocol__FlexsplitMessage
*
msg
,
uint32_t
*
size
){
void
*
buffer
;
err_code_t
err_code
=
PROTOCOL__FLEXSPLIT_ERR__NO_ERR
;
...
...
@@ -118,8 +127,7 @@ void * proto_agent_pack_message(Protocol__FlexsplitMessage *msg,
DevAssert
(
buffer
!=
NULL
);
LOG_D
(
PROTO_AGENT
,
"Serilized the enb mac stats reply (size %d)
\n
"
,
*
size
);
LOG_D
(
PROTO_AGENT
,
"Serialized the enb mac stats reply (size %d)
\n
"
,
*
size
);
return
buffer
;
error
:
...
...
@@ -128,23 +136,6 @@ void * proto_agent_pack_message(Protocol__FlexsplitMessage *msg,
return
NULL
;
}
Protocol__FlexsplitMessage
*
proto_agent_process_timeout
(
long
timer_id
,
void
*
timer_args
){
struct
proto_agent_timer_element_s
*
found
=
get_timer_entry
(
timer_id
);
if
(
found
==
NULL
)
goto
error
;
// LOG_I(PROTO_AGENT, "Found the entry (%p): timer_id is 0x%lx 0x%lx\n", found, timer_id, found->timer_id);
if
(
timer_args
==
NULL
)
LOG_W
(
PROTO_AGENT
,
"null timer args
\n
"
);
// return found->cb(timer_args);
return
1
;
error:
LOG_E
(
PROTO_AGENT
,
"can't get the timer element
\n
"
);
return
TIMER_ELEMENT_NOT_FOUND
;
}
err_code_t
proto_agent_destroy_flexsplit_message
(
Protocol__FlexsplitMessage
*
msg
)
{
return
((
*
message_destruction_callback
[
msg
->
msg_case
-
1
])(
msg
));
}
openair2/LAYER2/PROTO_AGENT/proto_agent_net_comm.c
View file @
ae33568a
...
...
@@ -126,7 +126,7 @@ int proto_agent_create_channel(void *channel_info,
/*element should be a real pointer*/
RB_INSERT
(
proto_agent_channel_map
,
&
channel_instance
.
proto_agent_head
,
channel
);
LOG_
I
(
PROTO_AGENT
,
"Created a new channel with id 0x%lx
\n
"
,
channel
->
channel_id
);
LOG_
D
(
PROTO_AGENT
,
"Created a new channel with id 0x%lx
\n
"
,
channel
->
channel_id
);
return
channel_id
;
}
...
...
@@ -166,10 +166,10 @@ int proto_agent_destroy_channel(int channel_id) {
err_code_t
proto_agent_init_channel_container
(
void
)
{
int
i
,
j
;
LOG_
I
(
PROTO_AGENT
,
"init RB tree for channel container
\n
"
);
LOG_
D
(
PROTO_AGENT
,
"init RB tree for channel container
\n
"
);
RB_INIT
(
&
channel_instance
.
proto_agent_head
);
for
(
i
=
0
;
i
<
NUM_MAX_ENB
;
i
++
)
{
for
(
j
=
0
;
j
<
ENB_AGENT_MAX
;
j
++
)
{
agent_channel
[
i
][
j
]
==
NULL
;
...
...
openair2/LAYER2/RLC/rlc.c
View file @
ae33568a
...
...
@@ -43,6 +43,9 @@
#include "assertions.h"
#include "ENB_APP/enb_config.h"
#include "LAYER2/PROTO_AGENT/proto_agent.h"
extern
boolean_t
pdcp_data_ind
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
srb_flag_t
srb_flagP
,
...
...
openair2/UTIL/ASYNC_IF/link_manager.c
View file @
ae33568a
...
...
@@ -34,6 +34,9 @@
* \email: cedric.roux@eurecom.fr
* @ingroup _mac
*/
//#ifndef SERVER_TEST
//#define SERVER_TEST
//#endif
#include "link_manager.h"
#include "log.h"
...
...
openair2/UTIL/ASYNC_IF/link_manager.h
View file @
ae33568a
...
...
@@ -38,8 +38,8 @@
#ifndef LINK_MANAGER_H
#define LINK_MANAGER_H
//
#include "message_queue.h"
#include "ringbuffer_queue.h"
#include "message_queue.h"
//
#include "ringbuffer_queue.h"
#include "socket_link.h"
#include <pthread.h>
...
...
openair2/UTIL/ASYNC_IF/socket_link.c
View file @
ae33568a
...
...
@@ -58,31 +58,31 @@ socket_link_t *new_link_server(int port)
socklen_t
addrlen
;
int
socket_server
=
-
1
;
int
no_delay
;
ret
=
calloc
(
1
,
sizeof
(
socket_link_t
));
if
(
ret
==
NULL
)
{
LOG_
E
(
MAC
,
"%s:%d: out of memory
\n
"
,
__FILE__
,
__LINE__
);
LOG_
D
(
PROTO_AGENT
,
"%s:%d: out of memory
\n
"
,
__FILE__
,
__LINE__
);
goto
error
;
}
ret
->
socket_fd
=
-
1
;
LOG_D
(
MAC
,
"create a new link server socket at port %d
\n
"
,
port
);
LOG_D
(
PROTO_AGENT
,
"create a new link server socket at port %d
\n
"
,
port
);
socket_server
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
socket_server
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: socket: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: socket: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
reuse
=
1
;
if
(
setsockopt
(
socket_server
,
SOL_SOCKET
,
SO_REUSEADDR
,
&
reuse
,
sizeof
(
reuse
))
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: setsockopt: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: setsockopt: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
no_delay
=
1
;
if
(
setsockopt
(
socket_server
,
IPPROTO_TCP
,
TCP_NODELAY
,
&
no_delay
,
sizeof
(
no_delay
))
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: setsockopt: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: setsockopt: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
...
...
@@ -90,32 +90,33 @@ socket_link_t *new_link_server(int port)
addr
.
sin_port
=
htons
(
port
);
addr
.
sin_addr
.
s_addr
=
INADDR_ANY
;
if
(
bind
(
socket_server
,
(
struct
sockaddr
*
)
&
addr
,
sizeof
(
addr
))
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: bind: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: bind: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
if
(
listen
(
socket_server
,
5
))
{
LOG_E
(
MAC
,
"%s:%d: listen: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: listen: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
addrlen
=
sizeof
(
addr
);
ret
->
socket_fd
=
accept
(
socket_server
,
(
struct
sockaddr
*
)
&
addr
,
&
addrlen
);
if
(
ret
->
socket_fd
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: accept: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: accept: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
printf
(
"Accepted new connection from client
\n
"
);
close
(
socket_server
);
LOG_D
(
MAC
,
"connection from %s:%d
\n
"
,
inet_ntoa
(
addr
.
sin_addr
),
ntohs
(
addr
.
sin_port
));
LOG_D
(
PROTO_AGENT
,
"connection from %s:%d
\n
"
,
inet_ntoa
(
addr
.
sin_addr
),
ntohs
(
addr
.
sin_port
));
return
ret
;
error:
close
(
socket_server
);
if
(
ret
!=
NULL
)
close
(
ret
->
socket_fd
);
free
(
ret
);
LOG_E
(
MAC
,
"ERROR in new_link_server (see above), returning NULL
\n
"
);
LOG_E
(
PROTO_AGENT
,
"ERROR in new_link_server (see above), returning NULL
\n
"
);
return
NULL
;
}
...
...
@@ -132,32 +133,31 @@ socket_link_t *new_link_client(char *server, int port)
}
ret
->
socket_fd
=
-
1
;
LOG_
D
(
MAC
,
"create
a new link client socket connecting to %s:%d
\n
"
,
server
,
port
);
LOG_
I
(
PROTO_AGENT
,
"Creating
a new link client socket connecting to %s:%d
\n
"
,
server
,
port
);
ret
->
socket_fd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
ret
->
socket_fd
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: socket: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: socket: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
no_delay
=
1
;
if
(
setsockopt
(
ret
->
socket_fd
,
SOL_TCP
,
TCP_NODELAY
,
&
no_delay
,
sizeof
(
no_delay
))
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: setsockopt: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: setsockopt: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
addr
.
sin_family
=
AF_INET
;
addr
.
sin_port
=
htons
(
port
);
if
(
inet_aton
(
server
,
&
addr
.
sin_addr
)
==
0
)
{
LOG_E
(
MAC
,
"invalid IP address '%s', use a.b.c.d notation
\n
"
,
server
);
LOG_E
(
PROTO_AGENT
,
"invalid IP address '%s', use a.b.c.d notation
\n
"
,
server
);
goto
error
;
}
if
(
connect
(
ret
->
socket_fd
,
(
struct
sockaddr
*
)
&
addr
,
sizeof
(
addr
))
==
-
1
)
{
LOG_E
(
MAC
,
"%s:%d: connect: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"%s:%d: connect: %s
\n
"
,
__FILE__
,
__LINE__
,
strerror
(
errno
));
goto
error
;
}
LOG_D
(
MAC
,
"connection to %s:%d established
\n
"
,
inet_ntoa
(
addr
.
sin_addr
),
ntohs
(
addr
.
sin_port
));
LOG_D
(
PROTO_AGENT
,
"connection to %s:%d established
\n
"
,
inet_ntoa
(
addr
.
sin_addr
),
ntohs
(
addr
.
sin_port
));
return
ret
;
error:
...
...
@@ -178,7 +178,7 @@ static int socket_send(int socket_fd, void *buf, int size)
while
(
size
)
{
l
=
send
(
socket_fd
,
s
,
size
,
MSG_NOSIGNAL
);
if
(
l
==
-
1
)
goto
error
;
if
(
l
==
0
)
{
LOG_E
(
MAC
,
"%s:%d: this cannot happen, normally...
\n
"
,
__FILE__
,
__LINE__
);
abort
();
}
if
(
l
==
0
)
{
LOG_E
(
PROTO_AGENT
,
"%s:%d: this cannot happen, normally...
\n
"
,
__FILE__
,
__LINE__
);
abort
();
}
size
-=
l
;
s
+=
l
;
}
...
...
@@ -186,7 +186,7 @@ static int socket_send(int socket_fd, void *buf, int size)
return
0
;
error:
LOG_E
(
MAC
,
"socket_send: ERROR: %s
\n
"
,
strerror
(
errno
));
LOG_E
(
PROTO_AGENT
,
"socket_send: ERROR: %s
\n
"
,
strerror
(
errno
));
return
-
1
;
}
...
...
@@ -268,6 +268,11 @@ int link_receive_packet(socket_link_t *link, void **ret_data, int *ret_size)
link
->
bytes_received
+=
4
;
LOG_I
(
PROTO_AGENT
,
"ASYNC BYTES Received are :%d
\n
"
,
link
->
bytes_received
);
LOG_I
(
PROTO_AGENT
,
"Size is :%d
\n
"
,
size
);
data
=
malloc
(
size
);
if
(
data
==
NULL
)
{
LOG_E
(
MAC
,
"%s:%d: out of memory
\n
"
,
__FILE__
,
__LINE__
);
...
...
@@ -280,6 +285,8 @@ int link_receive_packet(socket_link_t *link, void **ret_data, int *ret_size)
link
->
bytes_received
+=
size
;
link
->
packets_received
++
;
LOG_I
(
PROTO_AGENT
,
"received %d bytes
\n
"
,
link
->
bytes_received
);
*
ret_data
=
data
;
*
ret_size
=
size
;
return
0
;
...
...
openair2/UTIL/LOG/log.c
View file @
ae33568a
...
...
@@ -94,6 +94,10 @@ int log_list_nb_elements = 0;
pthread_mutex_t
log_lock
;
pthread_cond_t
log_notify
;
pthread_mutex_t
async_server_lock
;
pthread_cond_t
async_server_notify
;
int
async_server_shutdown
;
#if !defined(LOG_NO_THREAD)
int
log_list_head
=
0
;
int
log_shutdown
;
...
...
@@ -285,6 +289,16 @@ int logInit (void)
g_log
->
log_component
[
MSC
].
filelog
=
0
;
g_log
->
log_component
[
MSC
].
filelog_name
=
"/tmp/msc.log"
;
g_log
->
log_component
[
PROTO_AGENT
].
name
=
"PROTO_AGENT"
;
g_log
->
log_component
[
PROTO_AGENT
].
level
=
LOG_EMERG
;
g_log
->
log_component
[
PROTO_AGENT
].
flag
=
LOG_MED
;
g_log
->
log_component
[
PROTO_AGENT
].
interval
=
1
;
g_log
->
log_component
[
PROTO_AGENT
].
fd
=
0
;
g_log
->
log_component
[
PROTO_AGENT
].
filelog
=
0
;
g_log
->
log_component
[
PROTO_AGENT
].
filelog_name
=
"/tmp/proto_agent.log"
;
g_log
->
log_component
[
OCM
].
name
=
"OCM"
;
g_log
->
log_component
[
OCM
].
level
=
LOG_EMERG
;
g_log
->
log_component
[
OCM
].
flag
=
LOG_MED
;
...
...
openair2/UTIL/LOG/log.h
View file @
ae33568a
...
...
@@ -282,6 +282,7 @@ typedef enum {
USIM
,
LOCALIZE
,
RRH
,
PROTO_AGENT
,
X2AP
,
MAX_LOG_COMPONENTS
,
}
...
...
openair2/UTIL/LOG/log_extern.h
View file @
ae33568a
...
...
@@ -31,6 +31,10 @@
extern
log_t
*
g_log
;
extern
pthread_mutex_t
async_server_lock
;
extern
pthread_cond_t
async_server_notify
;
extern
int
async_server_shutdown
;
#if !defined(LOG_NO_THREAD)
extern
LOG_params
log_list
[
2000
];
extern
pthread_mutex_t
log_lock
;
...
...
targets/COMMON/MESSAGES/V2/flexsplit.proto
View file @
ae33568a
...
...
@@ -6,6 +6,8 @@ message flexsplit_message {
optional
flexsplit_direction
msg_dir
=
100
;
oneof
msg
{
fsp_hello
hello_msg
=
1
;
fsp_echo_request
echo_request_msg
=
2
;
fsp_echo_reply
echo_reply_msg
=
3
;
}
}
...
...
@@ -41,4 +43,16 @@ enum flexsplit_err {
message
fsp_hello
{
optional
fsp_header
header
=
1
;
}
\ No newline at end of file
}
message
fsp_echo_request
{
optional
fsp_header
header
=
1
;
// extensions 100 to 199;
}
message
fsp_echo_reply
{
optional
fsp_header
header
=
1
;
// extensions 100 to 199;
}
targets/COMMON/MESSAGES/V2/header.proto
View file @
ae33568a
...
...
@@ -9,5 +9,7 @@ message fsp_header {
enum
fsp_type
{
// Discovery and maintenance messages
FSPT_HELLO
=
0
;
FSPT_ECHO_REQUEST
=
1
;
FSPT_ECHO_REPLY
=
2
;
}
targets/SIMU/USER/oaisim.c
View file @
ae33568a
...
...
@@ -78,6 +78,8 @@
#include "PHY/TOOLS/lte_phy_scope.h"
//#endif
//#include "LAYER2/PROTO_AGENT/proto_agent.h"
#ifdef SMBV
// Rohde&Schwarz SMBV100A vector signal generator
#include "PHY/TOOLS/smbv.h"
...
...
@@ -115,6 +117,8 @@ char smbv_ip[16];
#include "T.h"
#include "LAYER2/PROTO_AGENT/proto_agent.h"
/*
DCI0_5MHz_TDD0_t UL_alloc_pdu;
DCI1A_5MHz_TDD_1_6_t CCCH_alloc_pdu;
...
...
@@ -255,6 +259,73 @@ help (void)
}
pthread_t
log_thread
;
pthread_t
async_server_thread
;
int
async_server_thread_finalize
(
void
);
void
async_server_thread_init
(
void
)
{
//create log_list
//log_list_init(&log_list);
async_server_shutdown
=
0
;
if
((
pthread_mutex_init
(
&
async_server_lock
,
NULL
)
!=
0
)
||
(
pthread_cond_init
(
&
async_server_notify
,
NULL
)
!=
0
))
{
return
;
}
if
(
pthread_create
(
&
async_server_thread
,
NULL
,
proto_server_init
,
(
void
*
)
NULL
)
!=
0
)
{
async_server_thread_finalize
();
return
;
}
}
//Call it after the last LOG call
int
async_server_thread_finalize
(
void
)
{
int
err
=
0
;
if
(
pthread_mutex_lock
(
&
async_server_lock
)
!=
0
)
{
return
-
1
;
}
async_server_shutdown
=
1
;
/* Wake up LOG thread */
if
((
pthread_cond_broadcast
(
&
async_server_notify
)
!=
0
)
||
(
pthread_mutex_unlock
(
&
async_server_lock
)
!=
0
))
{
err
=
-
1
;
}
if
(
pthread_join
(
async_server_thread
,
NULL
)
!=
0
)
{
err
=
-
1
;
}
if
(
pthread_mutex_unlock
(
&
async_server_lock
)
!=
0
)
{
err
=
-
1
;
}
if
(
!
err
)
{
//log_list_free(&log_list);
pthread_mutex_lock
(
&
async_server_lock
);
pthread_mutex_destroy
(
&
async_server_lock
);
pthread_cond_destroy
(
&
async_server_notify
);
}
return
err
;
}
void
log_thread_init
(
void
)
...
...
@@ -1279,6 +1350,7 @@ main (int argc, char **argv)
int
port
,
Process_Flag
=
0
,
wgt
,
Channel_Flag
=
0
,
temp
;
#endif
//default parameters
oai_emulation
.
info
.
n_frames
=
MAX_FRAME_NUMBER
;
//1024; //10;
oai_emulation
.
info
.
n_frames_flag
=
0
;
//fixme
...
...
@@ -1339,6 +1411,9 @@ main (int argc, char **argv)
init_omv
();
#endif
//Before this call, NB_UE_INST and NB_eNB_INST are not set correctly
check_and_adjust_params
();
set_seed
=
oai_emulation
.
emulation_config
.
seed
.
value
;
...
...
@@ -1353,12 +1428,14 @@ main (int argc, char **argv)
init_ocm
();
#ifdef SMBV
// Rohde&Schwarz SMBV100A vector signal generator
smbv_init_config
(
smbv_fname
,
smbv_nframes
);
smbv_write_config_from_frame_parms
(
smbv_fname
,
&
PHY_vars_eNB_g
[
0
][
0
]
->
lte_frame_parms
);
#endif
// add events to future event list: Currently not used
//oai_emulation.info.oeh_enabled = 1;
if
(
oai_emulation
.
info
.
oeh_enabled
==
1
)
...
...
@@ -1374,6 +1451,8 @@ main (int argc, char **argv)
t
=
clock
();
async_server_thread_init
();
LOG_N
(
EMU
,
">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU initialization done <<<<<<<<<<<<<<<<<<<<<<<<<<
\n\n
"
);
...
...
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