1.Update the F1 messages with F1AP spec R15.2.1 and build scripts for proper generation of F1 messages
2.Add SCTP procedure (without ITTI) with F1AP 3.Add F1AP test code
This commit is contained in:
@@ -170,7 +170,7 @@ set(CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC ")
|
||||
# add autotools definitions that were maybe used!
|
||||
set(CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -DASN_DISABLE_OER_SUPPORT -D'MAKE_VERSION(a,b,c)=((a)*256+(b)*16+c)'"
|
||||
"${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -D'MAKE_VERSION(a,b,c)=((a)*256+(b)*16+c)'"
|
||||
)
|
||||
set(CMAKE_CXX_FLAGS
|
||||
"${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -std=c++11 "
|
||||
@@ -478,15 +478,13 @@ include_directories ("${X2AP_DIR}")
|
||||
|
||||
|
||||
|
||||
#F1AP
|
||||
# Same limitation as described in RRC/S1AP: unknown generated file list
|
||||
# so we generate it at cmake time
|
||||
# F1AP
|
||||
##############
|
||||
add_list1_option(F1AP_RELEASE R15 "F1AP ASN.1 grammar version" R15)
|
||||
set(F1AP_DIR ${OPENAIR2_DIR}/F1AP)
|
||||
if (${F1AP_RELEASE} STREQUAL "R15")
|
||||
make_version(F1AP_VERSION 15 1 1)
|
||||
set (ASN1RELDIR R15.1.1)
|
||||
make_version(F1AP_VERSION 15 2 1)
|
||||
set (ASN1RELDIR R15.2.1)
|
||||
endif(${F1AP_RELEASE} STREQUAL "R15")
|
||||
add_definitions(-DF1AP_VERSION=${F1AP_VERSION})
|
||||
set(F1AP_ASN_DIR ${F1AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
|
||||
@@ -507,47 +505,53 @@ unset(ENV{ASN1C_PREFIX})
|
||||
if (NOT ${ret} STREQUAL 0)
|
||||
message(FATAL_ERROR "${asn1c_call}: error")
|
||||
endif (NOT ${ret} STREQUAL 0)
|
||||
#execute_process(COMMAND python ${F1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${F1AP_ASN_DIR}/F1AP-PDU-Contents.asn -o ${F1AP_C_DIR}
|
||||
# RESULT_VARIABLE ret)
|
||||
#if (NOT ${ret} STREQUAL 0)
|
||||
# message(FATAL_ERROR "asn1tostruct.py: error")
|
||||
#endif (NOT ${ret} STREQUAL 0)
|
||||
#execute_process(COMMAND ${fix_asn1c_call} ${F1AP_C_DIR} F1AP ${F1AP_VERSION}
|
||||
# RESULT_VARIABLE ret)
|
||||
#if (NOT ${ret} STREQUAL 0)
|
||||
# message(FATAL_ERROR "${fix_asn1c_call}: error")
|
||||
#endif (NOT ${ret} STREQUAL 0)
|
||||
file(GLOB F1AP_source ${F1AP_C_DIR}/*.c)
|
||||
|
||||
#set(F1AP_OAI_generated
|
||||
# ${X2AP_C_DIR}/x2ap_decoder.c
|
||||
# ${X2AP_C_DIR}/x2ap_encoder.c
|
||||
# ${X2AP_C_DIR}/x2ap_xer_print.c
|
||||
# ${X2AP_C_DIR}/x2ap_ies_defs.h
|
||||
# ${F1AP_C_DIR}/per_decoder.c
|
||||
# ${F1AP_C_DIR}/per_encoder.c
|
||||
#${F1AP_C_DIR}/f1ap_xer_print.c
|
||||
# ${F1AP_C_DIR}/F1AP_ProtocolIE-Field.h
|
||||
# )
|
||||
|
||||
file(GLOB f1ap_h ${F1AP_C_DIR}/*.h)
|
||||
set(f1ap_h ${f1ap_h} )
|
||||
|
||||
##message("calling ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}")
|
||||
#add_custom_command (
|
||||
# OUTPUT ${F1AP_OAI_generated}
|
||||
# COMMAND ${asn1c_call} ${F1AP_C_DIR} ${F1AP_ASN_FILES}
|
||||
# COMMAND python ${F1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${F1AP_ASN_DIR}/F1AP-PDU-Contents.asn -o ${F1AP_C_DIR}
|
||||
# COMMAND ${fix_asn1c_call} ${F1AP_C_DIR} F1AP ${F1AP_VERSION}
|
||||
# DEPENDS ${F1AP_ASN_FILES}
|
||||
# )
|
||||
|
||||
add_library(F1AP_LIB
|
||||
${F1AP_OAI_generated}
|
||||
#${F1AP_OAI_generated}
|
||||
#${f1ap_h}
|
||||
${F1AP_source}
|
||||
# ${F1AP_DIR}/f1ap_common.c
|
||||
)
|
||||
|
||||
include_directories ("${F1AP_C_DIR}")
|
||||
include_directories ("${F1AP_DIR}")
|
||||
|
||||
|
||||
add_library(F1AP
|
||||
#${F1AP_DIR}/test.c
|
||||
${F1AP_DIR}/DU_F1AP.c
|
||||
${F1AP_DIR}/CU_F1AP.c
|
||||
)
|
||||
|
||||
add_executable(test_f1ap_du
|
||||
${F1AP_DIR}/test_f1ap_du.c
|
||||
${F1AP_DIR}/DU_F1AP.c
|
||||
${F1AP_DIR}/sctp_du.c
|
||||
)
|
||||
|
||||
target_link_libraries(test_f1ap_du
|
||||
-Wl,--start-group F1AP_LIB sctp pthread -Wl,--end-group
|
||||
)
|
||||
|
||||
add_executable(test_f1ap_cu
|
||||
${F1AP_DIR}/test_f1ap_cu.c
|
||||
${F1AP_DIR}/CU_F1AP.c
|
||||
${F1AP_DIR}/sctp_cu.c
|
||||
)
|
||||
|
||||
target_link_libraries(test_f1ap_cu
|
||||
-Wl,--start-group F1AP_LIB sctp pthread -Wl,--end-group
|
||||
)
|
||||
|
||||
# Hardware dependant options
|
||||
###################################
|
||||
@@ -832,6 +836,7 @@ include_directories("${OPENAIR3_DIR}/SECU")
|
||||
include_directories("${OPENAIR3_DIR}/SCTP")
|
||||
include_directories("${OPENAIR3_DIR}/S1AP")
|
||||
include_directories("${OPENAIR2_DIR}/X2AP")
|
||||
include_directories("${OPENAIR2_DIR}/F1AP")
|
||||
include_directories("${OPENAIR3_DIR}/UDP")
|
||||
include_directories("${OPENAIR3_DIR}/GTPV1-U")
|
||||
include_directories("${OPENAIR_DIR}/targets/COMMON")
|
||||
@@ -2049,6 +2054,8 @@ add_definitions(-DASN1_MINIMUM_VERSION=924)
|
||||
add_executable(lte-softmodem
|
||||
${rrc_h}
|
||||
${s1ap_h}
|
||||
${f1ap_h}
|
||||
#${OPENAIR_BIN_DIR}/messages_xml.h
|
||||
${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-enb.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
|
||||
@@ -2073,7 +2080,7 @@ 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 SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2
|
||||
RRC_LIB S1AP_LIB S1AP_ENB F1AP_LIB F1AP GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2
|
||||
${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} ${FSPT_MSG_LIB} ${PROTO_AGENT_LIB} LFDS7
|
||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
||||
-Wl,--end-group z dl)
|
||||
@@ -2088,6 +2095,8 @@ target_link_libraries (lte-softmodem ${T_LIB})
|
||||
add_executable(lte-softmodem-nos1
|
||||
${rrc_h}
|
||||
${s1ap_h}
|
||||
${f1ap_h}
|
||||
#${OPENAIR_BIN_DIR}/messages_xml.h
|
||||
${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-enb.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
|
||||
@@ -2126,6 +2135,8 @@ target_link_libraries (lte-softmodem-nos1 ${T_LIB})
|
||||
add_executable(lte-uesoftmodem
|
||||
${rrc_h}
|
||||
${s1ap_h}
|
||||
${f1ap_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
|
||||
@@ -2149,7 +2160,7 @@ add_executable(lte-uesoftmodem
|
||||
|
||||
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_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU
|
||||
RRC_LIB S1AP_LIB S1AP_ENB F1AP_LIB F1AP GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU
|
||||
${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
|
||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
||||
-Wl,--end-group z dl)
|
||||
@@ -2164,6 +2175,8 @@ target_link_libraries (lte-uesoftmodem ${T_LIB})
|
||||
add_executable(lte-uesoftmodem-nos1
|
||||
${rrc_h}
|
||||
${s1ap_h}
|
||||
${f1ap_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
|
||||
@@ -2266,7 +2279,7 @@ add_executable(test_epc_generate_scenario
|
||||
${OPENAIR3_DIR}/S1AP/s1ap_eNB_defs.h
|
||||
)
|
||||
target_link_libraries (test_epc_generate_scenario
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB F1AP_LIB F1AP GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
)
|
||||
|
||||
add_executable(test_epc_play_scenario
|
||||
@@ -2286,7 +2299,7 @@ add_executable(test_epc_play_scenario
|
||||
)
|
||||
target_include_directories(test_epc_play_scenario PUBLIC /usr/local/share/asn1c)
|
||||
target_link_libraries (test_epc_play_scenario
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY_COMMON PHY PHY_UE LFDS ${ITTI_LIB} ${MSC_LIB} -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB X2AP_LIB F1AP_LIB F1AP GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY_COMMON PHY PHY_UE LFDS ${ITTI_LIB} ${MSC_LIB} -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
)
|
||||
|
||||
|
||||
@@ -2322,7 +2335,7 @@ if (${T_TRACER})
|
||||
dlsim_tm4 dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim
|
||||
pdcchsim pucchsim prachsim syncsim ulsim
|
||||
#all "add_library" definitions
|
||||
ITTI RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB
|
||||
ITTI RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB F1AP_LIB F1AP
|
||||
oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif
|
||||
oai_eth_transpro
|
||||
FLPT_MSG ASYNC_IF FLEXRAN_AGENT HASHTABLE MSC UTIL OMG_SUMO SECU_OSA
|
||||
|
||||
@@ -2,23 +2,29 @@
|
||||
|
||||
function main()
|
||||
{
|
||||
mkdir -p $1
|
||||
cd $1
|
||||
PROTOCOL_DIR=$1
|
||||
mkdir -p ${PROTOCOL_DIR}
|
||||
cd ${PROTOCOL_DIR}
|
||||
|
||||
# Because use $* also include directory, so we need shift
|
||||
shift
|
||||
|
||||
#if this script is called with only 2 arguments (so 1 here after the shift), it's for RRC
|
||||
#(there may be a better way...)
|
||||
if [ $# -eq 1 ]; then
|
||||
# There are three types parameter for asn1c
|
||||
# One is for RRC
|
||||
# and one is for F1AP
|
||||
# another is for other protocols
|
||||
|
||||
#asn1c does not work well with extension groups, we need the following fix:
|
||||
# replace [[ by '<name> SEQUENCE {'
|
||||
# and ]] by '} OPTIONAL'
|
||||
#<name> is ext<N> with N starting from 1 and incremented at each new [[ ]] just
|
||||
#following another [[ ]]
|
||||
#
|
||||
#this is what the following C program does
|
||||
if echo ${PROTOCOL_DIR} | grep -q "RRC"; then
|
||||
|
||||
echo generate asnfix.c
|
||||
#asn1c does not work well with extension groups, we need the following fix:
|
||||
# replace [[ by '<name> SEQUENCE {'
|
||||
# and ]] by '} OPTIONAL'
|
||||
#<name> is ext<N> with N starting from 1 and incremented at each new [[ ]] just
|
||||
#following another [[ ]]
|
||||
#
|
||||
#this is what the following C program does
|
||||
|
||||
echo generate asnfix.c
|
||||
|
||||
cat << EOF > asnfix.c
|
||||
/* transforms:
|
||||
@@ -85,30 +91,34 @@ int main(void)
|
||||
}
|
||||
EOF
|
||||
|
||||
echo compile asnfix.c
|
||||
echo compile asnfix.c
|
||||
|
||||
gcc -Wall -o asnfix asnfix.c
|
||||
gcc -Wall -o asnfix asnfix.c
|
||||
|
||||
echo run asnfix on $1
|
||||
echo run asnfix on $1
|
||||
|
||||
./asnfix < $1 > fixed_grammar.asn
|
||||
./asnfix < $1 > fixed_grammar.asn
|
||||
|
||||
rm -f asnfix asnfix.c
|
||||
rm -f asnfix asnfix.c
|
||||
|
||||
echo done with asnfix
|
||||
echo done with asnfix
|
||||
|
||||
echo running asn1c
|
||||
echo running asn1c
|
||||
|
||||
asn1c -gen-PER -fcompound-names -no-gen-example fixed_grammar.asn 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
|
||||
asn1c -gen-PER -fcompound-names -no-gen-example fixed_grammar.asn 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
|
||||
|
||||
rm -f fixed_grammar.asn
|
||||
rm -f fixed_grammar.asn
|
||||
|
||||
echo asn1c done
|
||||
echo asn1c done
|
||||
|
||||
elif echo ${PROTOCOL_DIR} | grep -q "F1AP"; then
|
||||
|
||||
asn1c -gen-PER -fcompound-names -no-gen-example -findirect-choice -fno-include-deps $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
|
||||
|
||||
else
|
||||
|
||||
asn1c -gen-PER -fcompound-names -no-gen-example $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
|
||||
|
||||
|
||||
asn1c -gen-PER -fcompound-names -no-gen-example $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
|
||||
|
||||
fi
|
||||
|
||||
awk '
|
||||
|
||||
@@ -173,6 +173,7 @@ typedef enum {
|
||||
GTPU,
|
||||
SPGW,
|
||||
S1AP,
|
||||
F1AP,
|
||||
SCTP,
|
||||
HW,
|
||||
OSA,
|
||||
|
||||
@@ -0,0 +1,546 @@
|
||||
/* generated file, do not edit by hand */
|
||||
|
||||
#define T_ENB_MASTER_TICK T_ID(0)
|
||||
#define T_ENB_PHY_UL_TICK T_ID(1)
|
||||
#define T_ENB_PHY_DL_TICK T_ID(2)
|
||||
#define T_ENB_PHY_DLSCH_UE_DCI T_ID(3)
|
||||
#define T_ENB_PHY_DLSCH_UE_ACK T_ID(4)
|
||||
#define T_ENB_PHY_DLSCH_UE_NACK T_ID(5)
|
||||
#define T_ENB_PHY_ULSCH_UE_DCI T_ID(6)
|
||||
#define T_ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION T_ID(7)
|
||||
#define T_ENB_PHY_ULSCH_UE_ACK T_ID(8)
|
||||
#define T_ENB_PHY_ULSCH_UE_NACK T_ID(9)
|
||||
#define T_ENB_PHY_INPUT_SIGNAL T_ID(10)
|
||||
#define T_ENB_PHY_OUTPUT_SIGNAL T_ID(11)
|
||||
#define T_ENB_PHY_UL_CHANNEL_ESTIMATE T_ID(12)
|
||||
#define T_ENB_PHY_PUSCH_IQ T_ID(13)
|
||||
#define T_ENB_PHY_PUCCH_1AB_IQ T_ID(14)
|
||||
#define T_ENB_PHY_PUCCH_1_ENERGY T_ID(15)
|
||||
#define T_ENB_PHY_PHICH T_ID(16)
|
||||
#define T_ENB_PHY_MSG3_ALLOCATION T_ID(17)
|
||||
#define T_ENB_PHY_INITIATE_RA_PROCEDURE T_ID(18)
|
||||
#define T_ENB_MAC_UE_DL_SDU T_ID(19)
|
||||
#define T_ENB_MAC_UE_UL_SCHEDULE T_ID(20)
|
||||
#define T_ENB_MAC_UE_UL_SCHEDULE_RETRANSMISSION T_ID(21)
|
||||
#define T_ENB_MAC_UE_UL_PDU T_ID(22)
|
||||
#define T_ENB_MAC_UE_UL_PDU_WITH_DATA T_ID(23)
|
||||
#define T_ENB_MAC_UE_UL_SDU T_ID(24)
|
||||
#define T_ENB_MAC_UE_UL_SDU_WITH_DATA T_ID(25)
|
||||
#define T_ENB_MAC_UE_UL_CE T_ID(26)
|
||||
#define T_ENB_MAC_UE_DL_PDU_WITH_DATA T_ID(27)
|
||||
#define T_ENB_MAC_SCHEDULING_REQUEST T_ID(28)
|
||||
#define T_ENB_RLC_DL T_ID(29)
|
||||
#define T_ENB_RLC_UL T_ID(30)
|
||||
#define T_ENB_RLC_MAC_DL T_ID(31)
|
||||
#define T_ENB_RLC_MAC_UL T_ID(32)
|
||||
#define T_ENB_PDCP_UL T_ID(33)
|
||||
#define T_ENB_PDCP_DL T_ID(34)
|
||||
#define T_ENB_RRC_CONNECTION_SETUP_COMPLETE T_ID(35)
|
||||
#define T_ENB_RRC_SECURITY_MODE_COMMAND T_ID(36)
|
||||
#define T_ENB_RRC_SECURITY_MODE_COMPLETE T_ID(37)
|
||||
#define T_ENB_RRC_SECURITY_MODE_FAILURE T_ID(38)
|
||||
#define T_ENB_RRC_UE_CAPABILITY_ENQUIRY T_ID(39)
|
||||
#define T_ENB_RRC_UE_CAPABILITY_INFORMATION T_ID(40)
|
||||
#define T_ENB_RRC_CONNECTION_REQUEST T_ID(41)
|
||||
#define T_ENB_RRC_CONNECTION_REJECT T_ID(42)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT_REQUEST T_ID(43)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT T_ID(44)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE T_ID(45)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT_REJECT T_ID(46)
|
||||
#define T_ENB_RRC_CONNECTION_RELEASE T_ID(47)
|
||||
#define T_ENB_RRC_CONNECTION_RECONFIGURATION T_ID(48)
|
||||
#define T_ENB_RRC_MEASUREMENT_REPORT T_ID(49)
|
||||
#define T_ENB_RRC_HANDOVER_PREPARATION_INFORMATION T_ID(50)
|
||||
#define T_ENB_RRC_CONNECTION_RECONFIGURATION_COMPLETE T_ID(51)
|
||||
#define T_ENB_RRC_CONNECTION_SETUP T_ID(52)
|
||||
#define T_ENB_RRC_UL_CCCH_DATA_IN T_ID(53)
|
||||
#define T_ENB_RRC_UL_DCCH_DATA_IN T_ID(54)
|
||||
#define T_ENB_RRC_UL_HANDOVER_PREPARATION_TRANSFER T_ID(55)
|
||||
#define T_ENB_RRC_UL_INFORMATION_TRANSFER T_ID(56)
|
||||
#define T_ENB_RRC_COUNTER_CHECK_RESPONSE T_ID(57)
|
||||
#define T_ENB_RRC_UE_INFORMATION_RESPONSE_R9 T_ID(58)
|
||||
#define T_ENB_RRC_PROXIMITY_INDICATION_R9 T_ID(59)
|
||||
#define T_ENB_RRC_RECONFIGURATION_COMPLETE_R10 T_ID(60)
|
||||
#define T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10 T_ID(61)
|
||||
#define T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION T_ID(62)
|
||||
#define T_ENB_RRC_UNKNOW_MESSAGE T_ID(63)
|
||||
#define T_LEGACY_MAC_INFO T_ID(64)
|
||||
#define T_LEGACY_MAC_ERROR T_ID(65)
|
||||
#define T_LEGACY_MAC_WARNING T_ID(66)
|
||||
#define T_LEGACY_MAC_DEBUG T_ID(67)
|
||||
#define T_LEGACY_MAC_TRACE T_ID(68)
|
||||
#define T_LEGACY_PHY_INFO T_ID(69)
|
||||
#define T_LEGACY_PHY_ERROR T_ID(70)
|
||||
#define T_LEGACY_PHY_WARNING T_ID(71)
|
||||
#define T_LEGACY_PHY_DEBUG T_ID(72)
|
||||
#define T_LEGACY_PHY_TRACE T_ID(73)
|
||||
#define T_LEGACY_S1AP_INFO T_ID(74)
|
||||
#define T_LEGACY_S1AP_ERROR T_ID(75)
|
||||
#define T_LEGACY_S1AP_WARNING T_ID(76)
|
||||
#define T_LEGACY_S1AP_DEBUG T_ID(77)
|
||||
#define T_LEGACY_S1AP_TRACE T_ID(78)
|
||||
#define T_LEGACY_X2AP_INFO T_ID(79)
|
||||
#define T_LEGACY_X2AP_ERROR T_ID(80)
|
||||
#define T_LEGACY_X2AP_WARNING T_ID(81)
|
||||
#define T_LEGACY_X2AP_DEBUG T_ID(82)
|
||||
#define T_LEGACY_X2AP_TRACE T_ID(83)
|
||||
#define T_LEGACY_RRC_INFO T_ID(84)
|
||||
#define T_LEGACY_RRC_ERROR T_ID(85)
|
||||
#define T_LEGACY_RRC_WARNING T_ID(86)
|
||||
#define T_LEGACY_RRC_DEBUG T_ID(87)
|
||||
#define T_LEGACY_RRC_TRACE T_ID(88)
|
||||
#define T_LEGACY_RLC_INFO T_ID(89)
|
||||
#define T_LEGACY_RLC_ERROR T_ID(90)
|
||||
#define T_LEGACY_RLC_WARNING T_ID(91)
|
||||
#define T_LEGACY_RLC_DEBUG T_ID(92)
|
||||
#define T_LEGACY_RLC_TRACE T_ID(93)
|
||||
#define T_LEGACY_PDCP_INFO T_ID(94)
|
||||
#define T_LEGACY_PDCP_ERROR T_ID(95)
|
||||
#define T_LEGACY_PDCP_WARNING T_ID(96)
|
||||
#define T_LEGACY_PDCP_DEBUG T_ID(97)
|
||||
#define T_LEGACY_PDCP_TRACE T_ID(98)
|
||||
#define T_LEGACY_ENB_APP_INFO T_ID(99)
|
||||
#define T_LEGACY_ENB_APP_ERROR T_ID(100)
|
||||
#define T_LEGACY_ENB_APP_WARNING T_ID(101)
|
||||
#define T_LEGACY_ENB_APP_DEBUG T_ID(102)
|
||||
#define T_LEGACY_ENB_APP_TRACE T_ID(103)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_INFO T_ID(104)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_ERROR T_ID(105)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_WARNING T_ID(106)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_DEBUG T_ID(107)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_TRACE T_ID(108)
|
||||
#define T_LEGACY_SCTP_INFO T_ID(109)
|
||||
#define T_LEGACY_SCTP_ERROR T_ID(110)
|
||||
#define T_LEGACY_SCTP_WARNING T_ID(111)
|
||||
#define T_LEGACY_SCTP_DEBUG T_ID(112)
|
||||
#define T_LEGACY_SCTP_TRACE T_ID(113)
|
||||
#define T_LEGACY_UDP__INFO T_ID(114)
|
||||
#define T_LEGACY_UDP__ERROR T_ID(115)
|
||||
#define T_LEGACY_UDP__WARNING T_ID(116)
|
||||
#define T_LEGACY_UDP__DEBUG T_ID(117)
|
||||
#define T_LEGACY_UDP__TRACE T_ID(118)
|
||||
#define T_LEGACY_NAS_INFO T_ID(119)
|
||||
#define T_LEGACY_NAS_ERROR T_ID(120)
|
||||
#define T_LEGACY_NAS_WARNING T_ID(121)
|
||||
#define T_LEGACY_NAS_DEBUG T_ID(122)
|
||||
#define T_LEGACY_NAS_TRACE T_ID(123)
|
||||
#define T_LEGACY_HW_INFO T_ID(124)
|
||||
#define T_LEGACY_HW_ERROR T_ID(125)
|
||||
#define T_LEGACY_HW_WARNING T_ID(126)
|
||||
#define T_LEGACY_HW_DEBUG T_ID(127)
|
||||
#define T_LEGACY_HW_TRACE T_ID(128)
|
||||
#define T_LEGACY_EMU_INFO T_ID(129)
|
||||
#define T_LEGACY_EMU_ERROR T_ID(130)
|
||||
#define T_LEGACY_EMU_WARNING T_ID(131)
|
||||
#define T_LEGACY_EMU_DEBUG T_ID(132)
|
||||
#define T_LEGACY_EMU_TRACE T_ID(133)
|
||||
#define T_LEGACY_OTG_INFO T_ID(134)
|
||||
#define T_LEGACY_OTG_ERROR T_ID(135)
|
||||
#define T_LEGACY_OTG_WARNING T_ID(136)
|
||||
#define T_LEGACY_OTG_DEBUG T_ID(137)
|
||||
#define T_LEGACY_OTG_TRACE T_ID(138)
|
||||
#define T_LEGACY_OCG_INFO T_ID(139)
|
||||
#define T_LEGACY_OCG_ERROR T_ID(140)
|
||||
#define T_LEGACY_OCG_WARNING T_ID(141)
|
||||
#define T_LEGACY_OCG_DEBUG T_ID(142)
|
||||
#define T_LEGACY_OCG_TRACE T_ID(143)
|
||||
#define T_LEGACY_OCM_INFO T_ID(144)
|
||||
#define T_LEGACY_OCM_ERROR T_ID(145)
|
||||
#define T_LEGACY_OCM_WARNING T_ID(146)
|
||||
#define T_LEGACY_OCM_DEBUG T_ID(147)
|
||||
#define T_LEGACY_OCM_TRACE T_ID(148)
|
||||
#define T_LEGACY_OIP_INFO T_ID(149)
|
||||
#define T_LEGACY_OIP_ERROR T_ID(150)
|
||||
#define T_LEGACY_OIP_WARNING T_ID(151)
|
||||
#define T_LEGACY_OIP_DEBUG T_ID(152)
|
||||
#define T_LEGACY_OIP_TRACE T_ID(153)
|
||||
#define T_LEGACY_OMG_INFO T_ID(154)
|
||||
#define T_LEGACY_OMG_ERROR T_ID(155)
|
||||
#define T_LEGACY_OMG_WARNING T_ID(156)
|
||||
#define T_LEGACY_OMG_DEBUG T_ID(157)
|
||||
#define T_LEGACY_OMG_TRACE T_ID(158)
|
||||
#define T_LEGACY_OPT_INFO T_ID(159)
|
||||
#define T_LEGACY_OPT_ERROR T_ID(160)
|
||||
#define T_LEGACY_OPT_WARNING T_ID(161)
|
||||
#define T_LEGACY_OPT_DEBUG T_ID(162)
|
||||
#define T_LEGACY_OPT_TRACE T_ID(163)
|
||||
#define T_LEGACY_GTPU_INFO T_ID(164)
|
||||
#define T_LEGACY_GTPU_ERROR T_ID(165)
|
||||
#define T_LEGACY_GTPU_WARNING T_ID(166)
|
||||
#define T_LEGACY_GTPU_DEBUG T_ID(167)
|
||||
#define T_LEGACY_GTPU_TRACE T_ID(168)
|
||||
#define T_LEGACY_TMR_INFO T_ID(169)
|
||||
#define T_LEGACY_TMR_ERROR T_ID(170)
|
||||
#define T_LEGACY_TMR_WARNING T_ID(171)
|
||||
#define T_LEGACY_TMR_DEBUG T_ID(172)
|
||||
#define T_LEGACY_TMR_TRACE T_ID(173)
|
||||
#define T_LEGACY_OSA_INFO T_ID(174)
|
||||
#define T_LEGACY_OSA_ERROR T_ID(175)
|
||||
#define T_LEGACY_OSA_WARNING T_ID(176)
|
||||
#define T_LEGACY_OSA_DEBUG T_ID(177)
|
||||
#define T_LEGACY_OSA_TRACE T_ID(178)
|
||||
#define T_LEGACY_SIM_INFO T_ID(179)
|
||||
#define T_LEGACY_SIM_ERROR T_ID(180)
|
||||
#define T_LEGACY_SIM_WARNING T_ID(181)
|
||||
#define T_LEGACY_SIM_DEBUG T_ID(182)
|
||||
#define T_LEGACY_SIM_TRACE T_ID(183)
|
||||
#define T_LEGACY_component_INFO T_ID(184)
|
||||
#define T_LEGACY_component_ERROR T_ID(185)
|
||||
#define T_LEGACY_component_WARNING T_ID(186)
|
||||
#define T_LEGACY_component_DEBUG T_ID(187)
|
||||
#define T_LEGACY_component_TRACE T_ID(188)
|
||||
#define T_LEGACY_componentP_INFO T_ID(189)
|
||||
#define T_LEGACY_componentP_ERROR T_ID(190)
|
||||
#define T_LEGACY_componentP_WARNING T_ID(191)
|
||||
#define T_LEGACY_componentP_DEBUG T_ID(192)
|
||||
#define T_LEGACY_componentP_TRACE T_ID(193)
|
||||
#define T_LEGACY_CLI_INFO T_ID(194)
|
||||
#define T_LEGACY_CLI_ERROR T_ID(195)
|
||||
#define T_LEGACY_CLI_WARNING T_ID(196)
|
||||
#define T_LEGACY_CLI_DEBUG T_ID(197)
|
||||
#define T_LEGACY_CLI_TRACE T_ID(198)
|
||||
#define T_UE_MASTER_TICK T_ID(199)
|
||||
#define T_UE_PHY_UL_TICK T_ID(200)
|
||||
#define T_UE_PHY_DL_TICK T_ID(201)
|
||||
#define T_UE_PHY_DLSCH_UE_DCI T_ID(202)
|
||||
#define T_UE_PHY_DLSCH_UE_ACK T_ID(203)
|
||||
#define T_UE_PHY_DLSCH_UE_NACK T_ID(204)
|
||||
#define T_UE_PHY_ULSCH_UE_DCI T_ID(205)
|
||||
#define T_UE_PHY_ULSCH_UE_ACK T_ID(206)
|
||||
#define T_UE_PHY_ULSCH_UE_NACK T_ID(207)
|
||||
#define T_UE_PHY_INPUT_SIGNAL T_ID(208)
|
||||
#define T_UE_PHY_DL_CHANNEL_ESTIMATE T_ID(209)
|
||||
#define T_UE_PHY_PDCCH_IQ T_ID(210)
|
||||
#define T_UE_PHY_PDCCH_ENERGY T_ID(211)
|
||||
#define T_UE_PHY_PDSCH_IQ T_ID(212)
|
||||
#define T_UE_PHY_PDSCH_ENERGY T_ID(213)
|
||||
#define T_UE_PHY_PUSCH_TX_POWER T_ID(214)
|
||||
#define T_UE_PHY_PUCCH_TX_POWER T_ID(215)
|
||||
#define T_UE_PHY_MEAS T_ID(216)
|
||||
#define T_first T_ID(217)
|
||||
#define T_buf_test T_ID(218)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_ENB T_ID(219)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_ENB T_ID(220)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_ENB T_ID(221)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_ENB T_ID(222)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_ENB T_ID(223)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_ENB T_ID(224)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_ENB T_ID(225)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_ENB T_ID(226)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_RU T_ID(227)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_RU T_ID(228)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_RU T_ID(229)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_RU T_ID(230)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_RU T_ID(231)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_RU T_ID(232)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_RU T_ID(233)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_RU T_ID(234)
|
||||
#define T_VCD_VARIABLE_RUNTIME_TX_ENB T_ID(235)
|
||||
#define T_VCD_VARIABLE_RUNTIME_RX_ENB T_ID(236)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_UE T_ID(237)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_UE T_ID(238)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_UE T_ID(239)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_UE T_ID(240)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_UE T_ID(241)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_UE T_ID(242)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_UE T_ID(243)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_UE T_ID(244)
|
||||
#define T_VCD_VARIABLE_UE_RX_OFFSET T_ID(245)
|
||||
#define T_VCD_VARIABLE_DIFF T_ID(246)
|
||||
#define T_VCD_VARIABLE_HW_SUBFRAME T_ID(247)
|
||||
#define T_VCD_VARIABLE_HW_FRAME T_ID(248)
|
||||
#define T_VCD_VARIABLE_HW_SUBFRAME_RX T_ID(249)
|
||||
#define T_VCD_VARIABLE_HW_FRAME_RX T_ID(250)
|
||||
#define T_VCD_VARIABLE_TXCNT T_ID(251)
|
||||
#define T_VCD_VARIABLE_RXCNT T_ID(252)
|
||||
#define T_VCD_VARIABLE_TRX_TS T_ID(253)
|
||||
#define T_VCD_VARIABLE_TRX_TST T_ID(254)
|
||||
#define T_VCD_VARIABLE_TRX_TS_UE T_ID(255)
|
||||
#define T_VCD_VARIABLE_TRX_TST_UE T_ID(256)
|
||||
#define T_VCD_VARIABLE_TRX_WRITE_FLAGS T_ID(257)
|
||||
#define T_VCD_VARIABLE_TX_TS T_ID(258)
|
||||
#define T_VCD_VARIABLE_RX_TS T_ID(259)
|
||||
#define T_VCD_VARIABLE_RX_HWCNT T_ID(260)
|
||||
#define T_VCD_VARIABLE_RX_LHWCNT T_ID(261)
|
||||
#define T_VCD_VARIABLE_TX_HWCNT T_ID(262)
|
||||
#define T_VCD_VARIABLE_TX_LHWCNT T_ID(263)
|
||||
#define T_VCD_VARIABLE_RX_PCK T_ID(264)
|
||||
#define T_VCD_VARIABLE_TX_PCK T_ID(265)
|
||||
#define T_VCD_VARIABLE_RX_SEQ_NUM T_ID(266)
|
||||
#define T_VCD_VARIABLE_RX_SEQ_NUM_PRV T_ID(267)
|
||||
#define T_VCD_VARIABLE_TX_SEQ_NUM T_ID(268)
|
||||
#define T_VCD_VARIABLE_CNT T_ID(269)
|
||||
#define T_VCD_VARIABLE_DUMMY_DUMP T_ID(270)
|
||||
#define T_VCD_VARIABLE_ITTI_SEND_MSG T_ID(271)
|
||||
#define T_VCD_VARIABLE_ITTI_POLL_MSG T_ID(272)
|
||||
#define T_VCD_VARIABLE_ITTI_RECV_MSG T_ID(273)
|
||||
#define T_VCD_VARIABLE_ITTI_ALLOC_MSG T_ID(274)
|
||||
#define T_VCD_VARIABLE_MP_ALLOC T_ID(275)
|
||||
#define T_VCD_VARIABLE_MP_FREE T_ID(276)
|
||||
#define T_VCD_VARIABLE_UE_INST_CNT_RX T_ID(277)
|
||||
#define T_VCD_VARIABLE_UE_INST_CNT_TX T_ID(278)
|
||||
#define T_VCD_VARIABLE_DCI_INFO T_ID(279)
|
||||
#define T_VCD_VARIABLE_UE0_BSR T_ID(280)
|
||||
#define T_VCD_VARIABLE_UE0_BO T_ID(281)
|
||||
#define T_VCD_VARIABLE_UE0_SCHEDULED T_ID(282)
|
||||
#define T_VCD_VARIABLE_UE0_TIMING_ADVANCE T_ID(283)
|
||||
#define T_VCD_VARIABLE_UE0_SR_ENERGY T_ID(284)
|
||||
#define T_VCD_VARIABLE_UE0_SR_THRES T_ID(285)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI0 T_ID(286)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI1 T_ID(287)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI2 T_ID(288)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI3 T_ID(289)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI4 T_ID(290)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI5 T_ID(291)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI6 T_ID(292)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI7 T_ID(293)
|
||||
#define T_VCD_VARIABLE_UE0_RES0 T_ID(294)
|
||||
#define T_VCD_VARIABLE_UE0_RES1 T_ID(295)
|
||||
#define T_VCD_VARIABLE_UE0_RES2 T_ID(296)
|
||||
#define T_VCD_VARIABLE_UE0_RES3 T_ID(297)
|
||||
#define T_VCD_VARIABLE_UE0_RES4 T_ID(298)
|
||||
#define T_VCD_VARIABLE_UE0_RES5 T_ID(299)
|
||||
#define T_VCD_VARIABLE_UE0_RES6 T_ID(300)
|
||||
#define T_VCD_VARIABLE_UE0_RES7 T_ID(301)
|
||||
#define T_VCD_VARIABLE_UE0_MCS0 T_ID(302)
|
||||
#define T_VCD_VARIABLE_UE0_MCS1 T_ID(303)
|
||||
#define T_VCD_VARIABLE_UE0_MCS2 T_ID(304)
|
||||
#define T_VCD_VARIABLE_UE0_MCS3 T_ID(305)
|
||||
#define T_VCD_VARIABLE_UE0_MCS4 T_ID(306)
|
||||
#define T_VCD_VARIABLE_UE0_MCS5 T_ID(307)
|
||||
#define T_VCD_VARIABLE_UE0_MCS6 T_ID(308)
|
||||
#define T_VCD_VARIABLE_UE0_MCS7 T_ID(309)
|
||||
#define T_VCD_VARIABLE_UE0_RB0 T_ID(310)
|
||||
#define T_VCD_VARIABLE_UE0_RB1 T_ID(311)
|
||||
#define T_VCD_VARIABLE_UE0_RB2 T_ID(312)
|
||||
#define T_VCD_VARIABLE_UE0_RB3 T_ID(313)
|
||||
#define T_VCD_VARIABLE_UE0_RB4 T_ID(314)
|
||||
#define T_VCD_VARIABLE_UE0_RB5 T_ID(315)
|
||||
#define T_VCD_VARIABLE_UE0_RB6 T_ID(316)
|
||||
#define T_VCD_VARIABLE_UE0_RB7 T_ID(317)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND0 T_ID(318)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND1 T_ID(319)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND2 T_ID(320)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND3 T_ID(321)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND4 T_ID(322)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND5 T_ID(323)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND6 T_ID(324)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND7 T_ID(325)
|
||||
#define T_VCD_VARIABLE_UE0_SFN0 T_ID(326)
|
||||
#define T_VCD_VARIABLE_UE0_SFN1 T_ID(327)
|
||||
#define T_VCD_VARIABLE_UE0_SFN2 T_ID(328)
|
||||
#define T_VCD_VARIABLE_UE0_SFN3 T_ID(329)
|
||||
#define T_VCD_VARIABLE_UE0_SFN4 T_ID(330)
|
||||
#define T_VCD_VARIABLE_UE0_SFN5 T_ID(331)
|
||||
#define T_VCD_VARIABLE_UE0_SFN6 T_ID(332)
|
||||
#define T_VCD_VARIABLE_UE0_SFN7 T_ID(333)
|
||||
#define T_VCD_VARIABLE_SEND_IF4_SYMBOL T_ID(334)
|
||||
#define T_VCD_VARIABLE_RECV_IF4_SYMBOL T_ID(335)
|
||||
#define T_VCD_VARIABLE_SEND_IF5_PKT_ID T_ID(336)
|
||||
#define T_VCD_VARIABLE_RECV_IF5_PKT_ID T_ID(337)
|
||||
#define T_VCD_VARIABLE_UE_PDCP_FLUSH_SIZE T_ID(338)
|
||||
#define T_VCD_VARIABLE_UE_PDCP_FLUSH_ERR T_ID(339)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_READ_NS T_ID(340)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_WRITE_NS T_ID(341)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_READ_NS_MISSING T_ID(342)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_WRITE_NS_MISSING T_ID(343)
|
||||
#define T_VCD_VARIABLE_CPUID_ENB_THREAD_RXTX T_ID(344)
|
||||
#define T_VCD_VARIABLE_CPUID_RU_THREAD T_ID(345)
|
||||
#define T_VCD_VARIABLE_CPUID_RU_THREAD_TX T_ID(346)
|
||||
#define T_VCD_FUNCTION_RT_SLEEP T_ID(347)
|
||||
#define T_VCD_FUNCTION_TRX_READ T_ID(348)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE T_ID(349)
|
||||
#define T_VCD_FUNCTION_TRX_READ_UE T_ID(350)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_UE T_ID(351)
|
||||
#define T_VCD_FUNCTION_TRX_READ_IF T_ID(352)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_IF T_ID(353)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_RXTX0 T_ID(354)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_RXTX1 T_ID(355)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_SYNCH T_ID(356)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_RXTX0 T_ID(357)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_RXTX1 T_ID(358)
|
||||
#define T_VCD_FUNCTION_TRX_READ_SF9 T_ID(359)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_SF9 T_ID(360)
|
||||
#define T_VCD_FUNCTION_UE_SIGNAL_COND_RXTX0 T_ID(361)
|
||||
#define T_VCD_FUNCTION_UE_SIGNAL_COND_RXTX1 T_ID(362)
|
||||
#define T_VCD_FUNCTION_UE_WAIT_COND_RXTX0 T_ID(363)
|
||||
#define T_VCD_FUNCTION_UE_WAIT_COND_RXTX1 T_ID(364)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT0 T_ID(365)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT1 T_ID(366)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT0 T_ID(367)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT1 T_ID(368)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT0 T_ID(369)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1 T_ID(370)
|
||||
#define T_VCD_FUNCTION_SIM_DO_DL_SIGNAL T_ID(371)
|
||||
#define T_VCD_FUNCTION_SIM_DO_UL_SIGNAL T_ID(372)
|
||||
#define T_VCD_FUNCTION_SIM_UE_TRX_READ T_ID(373)
|
||||
#define T_VCD_FUNCTION_eNB_TX T_ID(374)
|
||||
#define T_VCD_FUNCTION_eNB_RX T_ID(375)
|
||||
#define T_VCD_FUNCTION_eNB_TRX T_ID(376)
|
||||
#define T_VCD_FUNCTION_eNB_TM T_ID(377)
|
||||
#define T_VCD_FUNCTION_eNB_RX_SLEEP T_ID(378)
|
||||
#define T_VCD_FUNCTION_eNB_TX_SLEEP T_ID(379)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_SLEEP T_ID(380)
|
||||
#define T_VCD_FUNCTION_TRX_READ_RF T_ID(381)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_RF T_ID(382)
|
||||
#define T_VCD_FUNCTION_UE_SYNCH T_ID(383)
|
||||
#define T_VCD_FUNCTION_UE_SLOT_FEP T_ID(384)
|
||||
#define T_VCD_FUNCTION_UE_RRC_MEASUREMENTS T_ID(385)
|
||||
#define T_VCD_FUNCTION_UE_GAIN_CONTROL T_ID(386)
|
||||
#define T_VCD_FUNCTION_UE_ADJUST_SYNCH T_ID(387)
|
||||
#define T_VCD_FUNCTION_UE_MEASUREMENT_PROCEDURES T_ID(388)
|
||||
#define T_VCD_FUNCTION_UE_PDCCH_PROCEDURES T_ID(389)
|
||||
#define T_VCD_FUNCTION_UE_PBCH_PROCEDURES T_ID(390)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_TX T_ID(391)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_TX1 T_ID(392)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX T_ID(393)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX1 T_ID(394)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM T_ID(395)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM1 T_ID(396)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC T_ID(397)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC1 T_ID(398)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC T_ID(399)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC1 T_ID(400)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX T_ID(401)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_RX T_ID(402)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC T_ID(403)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH T_ID(404)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_COMMON T_ID(405)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PRACH T_ID(406)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_RAR T_ID(407)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_LTE T_ID(408)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_LTE T_ID(409)
|
||||
#define T_VCD_FUNCTION_PDSCH_THREAD T_ID(410)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD0 T_ID(411)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD1 T_ID(412)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD2 T_ID(413)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD3 T_ID(414)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD4 T_ID(415)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD5 T_ID(416)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD6 T_ID(417)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD7 T_ID(418)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING0 T_ID(419)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING1 T_ID(420)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING2 T_ID(421)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING3 T_ID(422)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING4 T_ID(423)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING5 T_ID(424)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING6 T_ID(425)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING7 T_ID(426)
|
||||
#define T_VCD_FUNCTION_RX_PDCCH T_ID(427)
|
||||
#define T_VCD_FUNCTION_DCI_DECODING T_ID(428)
|
||||
#define T_VCD_FUNCTION_RX_PHICH T_ID(429)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC T_ID(430)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_SI T_ID(431)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_P T_ID(432)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_RA T_ID(433)
|
||||
#define T_VCD_FUNCTION_PHY_UE_CONFIG_SIB2 T_ID(434)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_SIB1_ENB T_ID(435)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_SIB2_ENB T_ID(436)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_DEDICATED_ENB T_ID(437)
|
||||
#define T_VCD_FUNCTION_PHY_UE_COMPUTE_PRACH T_ID(438)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_MSG3 T_ID(439)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING0 T_ID(440)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING1 T_ID(441)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING2 T_ID(442)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING3 T_ID(443)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING4 T_ID(444)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING5 T_ID(445)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING6 T_ID(446)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING7 T_ID(447)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_SFGEN T_ID(448)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_PRACH_RX T_ID(449)
|
||||
#define T_VCD_FUNCTION_PHY_RU_PRACH_RX T_ID(450)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_PDCCH_TX T_ID(451)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_RS_TX T_ID(452)
|
||||
#define T_VCD_FUNCTION_UE_GENERATE_PRACH T_ID(453)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_MODULATION T_ID(454)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_ENCODING T_ID(455)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_ENCODING_FILL_CQI T_ID(456)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_SCRAMBLING T_ID(457)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_MODULATION T_ID(458)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ENCODING T_ID(459)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ENCODING_W T_ID(460)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_SCRAMBLING T_ID(461)
|
||||
#define T_VCD_FUNCTION_ENB_BEAM_PRECODING T_ID(462)
|
||||
#define T_VCD_FUNCTION_ENB_OFDM_MODULATION T_ID(463)
|
||||
#define T_VCD_FUNCTION_MACPHY_INIT T_ID(464)
|
||||
#define T_VCD_FUNCTION_MACPHY_EXIT T_ID(465)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ULSCH_SCHEDULER T_ID(466)
|
||||
#define T_VCD_FUNCTION_FILL_RAR T_ID(467)
|
||||
#define T_VCD_FUNCTION_TERMINATE_RA_PROC T_ID(468)
|
||||
#define T_VCD_FUNCTION_INITIATE_RA_PROC T_ID(469)
|
||||
#define T_VCD_FUNCTION_CANCEL_RA_PROC T_ID(470)
|
||||
#define T_VCD_FUNCTION_GET_DCI_SDU T_ID(471)
|
||||
#define T_VCD_FUNCTION_GET_DLSCH_SDU T_ID(472)
|
||||
#define T_VCD_FUNCTION_RX_SDU T_ID(473)
|
||||
#define T_VCD_FUNCTION_MRBCH_PHY_SYNC_FAILURE T_ID(474)
|
||||
#define T_VCD_FUNCTION_SR_INDICATION T_ID(475)
|
||||
#define T_VCD_FUNCTION_DLSCH_PREPROCESSOR T_ID(476)
|
||||
#define T_VCD_FUNCTION_SCHEDULE_DLSCH T_ID(477)
|
||||
#define T_VCD_FUNCTION_FILL_DLSCH_DCI T_ID(478)
|
||||
#define T_VCD_FUNCTION_OUT_OF_SYNC_IND T_ID(479)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_SI T_ID(480)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_PCCH T_ID(481)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_CCCH T_ID(482)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_BCCH T_ID(483)
|
||||
#define T_VCD_FUNCTION_UE_SEND_SDU T_ID(484)
|
||||
#define T_VCD_FUNCTION_UE_GET_SDU T_ID(485)
|
||||
#define T_VCD_FUNCTION_UE_GET_RACH T_ID(486)
|
||||
#define T_VCD_FUNCTION_UE_PROCESS_RAR T_ID(487)
|
||||
#define T_VCD_FUNCTION_UE_SCHEDULER T_ID(488)
|
||||
#define T_VCD_FUNCTION_UE_GET_SR T_ID(489)
|
||||
#define T_VCD_FUNCTION_UE_SEND_MCH_SDU T_ID(490)
|
||||
#define T_VCD_FUNCTION_RLC_DATA_REQ T_ID(491)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_STATUS_IND T_ID(492)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_DATA_REQ T_ID(493)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_DATA_IND T_ID(494)
|
||||
#define T_VCD_FUNCTION_RLC_UM_TRY_REASSEMBLY T_ID(495)
|
||||
#define T_VCD_FUNCTION_RLC_UM_CHECK_TIMER_DAR_TIME_OUT T_ID(496)
|
||||
#define T_VCD_FUNCTION_RLC_UM_RECEIVE_PROCESS_DAR T_ID(497)
|
||||
#define T_VCD_FUNCTION_PDCP_RUN T_ID(498)
|
||||
#define T_VCD_FUNCTION_PDCP_DATA_REQ T_ID(499)
|
||||
#define T_VCD_FUNCTION_PDCP_DATA_IND T_ID(500)
|
||||
#define T_VCD_FUNCTION_PDCP_APPLY_SECURITY T_ID(501)
|
||||
#define T_VCD_FUNCTION_PDCP_VALIDATE_SECURITY T_ID(502)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_READ T_ID(503)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_READ_BUFFER T_ID(504)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_FLUSH T_ID(505)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_FLUSH_BUFFER T_ID(506)
|
||||
#define T_VCD_FUNCTION_RRC_RX_TX T_ID(507)
|
||||
#define T_VCD_FUNCTION_RRC_MAC_CONFIG T_ID(508)
|
||||
#define T_VCD_FUNCTION_RRC_UE_DECODE_SIB1 T_ID(509)
|
||||
#define T_VCD_FUNCTION_RRC_UE_DECODE_SI T_ID(510)
|
||||
#define T_VCD_FUNCTION_GTPV1U_ENB_TASK T_ID(511)
|
||||
#define T_VCD_FUNCTION_GTPV1U_PROCESS_UDP_REQ T_ID(512)
|
||||
#define T_VCD_FUNCTION_GTPV1U_PROCESS_TUNNEL_DATA_REQ T_ID(513)
|
||||
#define T_VCD_FUNCTION_UDP_ENB_TASK T_ID(514)
|
||||
#define T_VCD_FUNCTION_EMU_TRANSPORT T_ID(515)
|
||||
#define T_VCD_FUNCTION_LOG_RECORD T_ID(516)
|
||||
#define T_VCD_FUNCTION_ITTI_ENQUEUE_MESSAGE T_ID(517)
|
||||
#define T_VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE T_ID(518)
|
||||
#define T_VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE_MALLOC T_ID(519)
|
||||
#define T_VCD_FUNCTION_ITTI_RELAY_THREAD T_ID(520)
|
||||
#define T_VCD_FUNCTION_TEST T_ID(521)
|
||||
#define T_VCD_FUNCTION_SEND_IF4 T_ID(522)
|
||||
#define T_VCD_FUNCTION_RECV_IF4 T_ID(523)
|
||||
#define T_VCD_FUNCTION_SEND_IF5 T_ID(524)
|
||||
#define T_VCD_FUNCTION_RECV_IF5 T_ID(525)
|
||||
#define T_VCD_FUNCTION_TRX_COMPR_IF T_ID(526)
|
||||
#define T_VCD_FUNCTION_TRX_DECOMPR_IF T_ID(527)
|
||||
#define T_VCD_FUNCTION_NFAPI T_ID(528)
|
||||
#define T_VCD_FUNCTION_GENERATE_PCFICH T_ID(529)
|
||||
#define T_VCD_FUNCTION_GENERATE_DCI0 T_ID(530)
|
||||
#define T_VCD_FUNCTION_GENERATE_DLSCH T_ID(531)
|
||||
#define T_VCD_FUNCTION_GENERATE_PHICH T_ID(532)
|
||||
#define T_VCD_FUNCTION_PDCCH_SCRAMBLING T_ID(533)
|
||||
#define T_VCD_FUNCTION_PDCCH_MODULATION T_ID(534)
|
||||
#define T_VCD_FUNCTION_PDCCH_INTERLEAVING T_ID(535)
|
||||
#define T_VCD_FUNCTION_PDCCH_TX T_ID(536)
|
||||
#define T_NUMBER_OF_IDS 537
|
||||
|
||||
#define T_LEGACY_PROTO_AGENT_DEBUG T_ID(538)
|
||||
#define T_LEGACY_PROTO_AGENT_INFO T_ID(539)
|
||||
#define T_LEGACY_PROTO_AGENT_ERROR T_ID(540)
|
||||
#define T_LEGACY_F1U_ERROR T_ID(541)
|
||||
#define T_LEGACY_F1U_DEBUG T_ID(542)
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
/* Messages for S1AP logging */
|
||||
MESSAGE_DEF(S1AP_UPLINK_NAS_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_uplink_nas_log)
|
||||
MESSAGE_DEF(S1AP_UE_CAPABILITY_IND_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_capability_ind_log)
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_initial_context_setup_log)
|
||||
MESSAGE_DEF(S1AP_NAS_NON_DELIVERY_IND_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_nas_non_delivery_ind_log)
|
||||
MESSAGE_DEF(S1AP_DOWNLINK_NAS_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_downlink_nas_log)
|
||||
MESSAGE_DEF(S1AP_S1_SETUP_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_s1_setup_log)
|
||||
MESSAGE_DEF(S1AP_INITIAL_UE_MESSAGE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_initial_ue_message_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_REQ_LOG, MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_req_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMMAND_LOG, MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_command_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMPLETE_LOG, MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_complete_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_REQUEST_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_setup_request_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_setup_response_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_REQUEST_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_modify_request_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_modify_response_log)
|
||||
MESSAGE_DEF(S1AP_PAGING_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_paging_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_REQUEST_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_release_request_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_release_response_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_ERROR_INDICATION_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_error_indication_log)
|
||||
|
||||
/* eNB application layer -> S1AP messages */
|
||||
MESSAGE_DEF(S1AP_REGISTER_ENB_REQ , MESSAGE_PRIORITY_MED, s1ap_register_enb_req_t , s1ap_register_enb_req)
|
||||
|
||||
/* S1AP -> eNB application layer messages */
|
||||
MESSAGE_DEF(S1AP_REGISTER_ENB_CNF , MESSAGE_PRIORITY_MED, s1ap_register_enb_cnf_t , s1ap_register_enb_cnf)
|
||||
MESSAGE_DEF(S1AP_DEREGISTERED_ENB_IND , MESSAGE_PRIORITY_MED, s1ap_deregistered_enb_ind_t , s1ap_deregistered_enb_ind)
|
||||
|
||||
/* RRC -> S1AP messages */
|
||||
MESSAGE_DEF(S1AP_NAS_FIRST_REQ , MESSAGE_PRIORITY_MED, s1ap_nas_first_req_t , s1ap_nas_first_req)
|
||||
MESSAGE_DEF(S1AP_UPLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_uplink_nas_t , s1ap_uplink_nas)
|
||||
MESSAGE_DEF(S1AP_UE_CAPABILITIES_IND , MESSAGE_PRIORITY_MED, s1ap_ue_cap_info_ind_t , s1ap_ue_cap_info_ind)
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_RESP, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_resp_t, s1ap_initial_context_setup_resp)
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_FAIL, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_fail_t, s1ap_initial_context_setup_fail)
|
||||
MESSAGE_DEF(S1AP_NAS_NON_DELIVERY_IND , MESSAGE_PRIORITY_MED, s1ap_nas_non_delivery_ind_t , s1ap_nas_non_delivery_ind)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_RESP , MESSAGE_PRIORITY_MED, s1ap_ue_release_resp_t , s1ap_ue_release_resp)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMPLETE, MESSAGE_PRIORITY_MED, s1ap_ue_release_complete_t , s1ap_ue_release_complete)
|
||||
MESSAGE_DEF(S1AP_UE_CTXT_MODIFICATION_RESP , MESSAGE_PRIORITY_MED, s1ap_ue_ctxt_modification_resp_t , s1ap_ue_ctxt_modification_resp)
|
||||
MESSAGE_DEF(S1AP_UE_CTXT_MODIFICATION_FAIL , MESSAGE_PRIORITY_MED, s1ap_ue_ctxt_modification_fail_t , s1ap_ue_ctxt_modification_fail)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_RESP , MESSAGE_PRIORITY_MED, s1ap_e_rab_setup_resp_t , s1ap_e_rab_setup_resp)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_REQUEST_FAIL , MESSAGE_PRIORITY_MED, s1ap_e_rab_setup_req_fail_t , s1ap_e_rab_setup_request_fail)
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_RESP , MESSAGE_PRIORITY_MED, s1ap_e_rab_modify_resp_t , s1ap_e_rab_modify_resp)
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_RESPONSE , MESSAGE_PRIORITY_MED, s1ap_e_rab_release_resp_t , s1ap_e_rab_release_resp)
|
||||
|
||||
/* S1AP -> RRC messages */
|
||||
MESSAGE_DEF(S1AP_DOWNLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_downlink_nas_t , s1ap_downlink_nas )
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_REQ , MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_req_t , s1ap_initial_context_setup_req )
|
||||
MESSAGE_DEF(S1AP_UE_CTXT_MODIFICATION_REQ , MESSAGE_PRIORITY_MED, s1ap_ue_ctxt_modification_req_t , s1ap_ue_ctxt_modification_req)
|
||||
MESSAGE_DEF(S1AP_PAGING_IND , MESSAGE_PRIORITY_MED, s1ap_paging_ind_t , s1ap_paging_ind )
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_REQ , MESSAGE_PRIORITY_MED, s1ap_e_rab_setup_req_t , s1ap_e_rab_setup_req )
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_REQ , MESSAGE_PRIORITY_MED, s1ap_e_rab_modify_req_t , s1ap_e_rab_modify_req )
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_COMMAND , MESSAGE_PRIORITY_MED, s1ap_e_rab_release_command_t , s1ap_e_rab_release_command)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMMAND, MESSAGE_PRIORITY_MED, s1ap_ue_release_command_t , s1ap_ue_release_command)
|
||||
|
||||
/* S1AP <-> RRC messages (can be initiated either by MME or eNB) */
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_REQ , MESSAGE_PRIORITY_MED, s1ap_ue_release_req_t , s1ap_ue_release_req)
|
||||
@@ -0,0 +1,646 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef S1AP_MESSAGES_TYPES_H_
|
||||
#define S1AP_MESSAGES_TYPES_H_
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// Defines to access message fields.
|
||||
|
||||
#define S1AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_register_enb_req
|
||||
|
||||
#define S1AP_REGISTER_ENB_CNF(mSGpTR) (mSGpTR)->ittiMsg.s1ap_register_enb_cnf
|
||||
#define S1AP_DEREGISTERED_ENB_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_deregistered_enb_ind
|
||||
|
||||
#define S1AP_NAS_FIRST_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_nas_first_req
|
||||
#define S1AP_UPLINK_NAS(mSGpTR) (mSGpTR)->ittiMsg.s1ap_uplink_nas
|
||||
#define S1AP_UE_CAPABILITIES_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_cap_info_ind
|
||||
#define S1AP_INITIAL_CONTEXT_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_resp
|
||||
#define S1AP_INITIAL_CONTEXT_SETUP_FAIL(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_fail
|
||||
#define S1AP_UE_CONTEXT_RELEASE_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_resp
|
||||
#define S1AP_NAS_NON_DELIVERY_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_nas_non_delivery_ind
|
||||
#define S1AP_UE_CTXT_MODIFICATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_ctxt_modification_resp
|
||||
#define S1AP_UE_CTXT_MODIFICATION_FAIL(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_ctxt_modification_fail
|
||||
#define S1AP_E_RAB_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_setup_resp
|
||||
#define S1AP_E_RAB_SETUP_FAIL(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_setup_req_fail
|
||||
#define S1AP_E_RAB_MODIFY_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_modify_resp
|
||||
|
||||
#define S1AP_DOWNLINK_NAS(mSGpTR) (mSGpTR)->ittiMsg.s1ap_downlink_nas
|
||||
#define S1AP_INITIAL_CONTEXT_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_req
|
||||
#define S1AP_UE_CTXT_MODIFICATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_ctxt_modification_req
|
||||
#define S1AP_UE_CONTEXT_RELEASE_COMMAND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_command
|
||||
#define S1AP_UE_CONTEXT_RELEASE_COMPLETE(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_complete
|
||||
#define S1AP_E_RAB_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_setup_req
|
||||
#define S1AP_E_RAB_MODIFY_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_modify_req
|
||||
#define S1AP_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_paging_ind
|
||||
|
||||
#define S1AP_UE_CONTEXT_RELEASE_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_req
|
||||
#define S1AP_E_RAB_RELEASE_COMMAND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_release_command
|
||||
#define S1AP_E_RAB_RELEASE_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_release_resp
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
/* Maximum number of e-rabs to be setup/deleted in a single message.
|
||||
* Even if only one bearer will be modified by message.
|
||||
*/
|
||||
#define S1AP_MAX_E_RAB 11
|
||||
|
||||
/* Length of the transport layer address string
|
||||
* 160 bits / 8 bits by char.
|
||||
*/
|
||||
#define S1AP_TRANSPORT_LAYER_ADDRESS_SIZE (160 / 8)
|
||||
|
||||
#define S1AP_MAX_NB_MME_IP_ADDRESS 10
|
||||
#define S1AP_IMSI_LENGTH 16
|
||||
|
||||
/* Security key length used within eNB
|
||||
* Even if only 16 bytes will be effectively used,
|
||||
* the key length is 32 bytes (256 bits)
|
||||
*/
|
||||
#define SECURITY_KEY_LENGTH 32
|
||||
#ifndef OCP_FRAMEWORK
|
||||
typedef enum cell_type_e {
|
||||
CELL_MACRO_ENB,
|
||||
CELL_HOME_ENB
|
||||
} cell_type_t;
|
||||
|
||||
typedef enum paging_drx_e {
|
||||
PAGING_DRX_32 = 0x0,
|
||||
PAGING_DRX_64 = 0x1,
|
||||
PAGING_DRX_128 = 0x2,
|
||||
PAGING_DRX_256 = 0x3
|
||||
} paging_drx_t;
|
||||
|
||||
/* Lower value codepoint
|
||||
* indicates higher priority.
|
||||
*/
|
||||
typedef enum paging_priority_s {
|
||||
PAGING_PRIO_LEVEL1 = 0,
|
||||
PAGING_PRIO_LEVEL2 = 1,
|
||||
PAGING_PRIO_LEVEL3 = 2,
|
||||
PAGING_PRIO_LEVEL4 = 3,
|
||||
PAGING_PRIO_LEVEL5 = 4,
|
||||
PAGING_PRIO_LEVEL6 = 5,
|
||||
PAGING_PRIO_LEVEL7 = 6,
|
||||
PAGING_PRIO_LEVEL8 = 7
|
||||
} paging_priority_t;
|
||||
|
||||
typedef enum cn_domain_s {
|
||||
CN_DOMAIN_PS = 1,
|
||||
CN_DOMAIN_CS = 2
|
||||
} cn_domain_t;
|
||||
#endif
|
||||
|
||||
typedef struct net_ip_address_s {
|
||||
unsigned ipv4:1;
|
||||
unsigned ipv6:1;
|
||||
char ipv4_address[16];
|
||||
char ipv6_address[46];
|
||||
} net_ip_address_t;
|
||||
|
||||
typedef uint64_t bitrate_t;
|
||||
|
||||
typedef struct ambr_s {
|
||||
bitrate_t br_ul;
|
||||
bitrate_t br_dl;
|
||||
} ambr_t;
|
||||
|
||||
#ifndef OCP_FRAMEWORK
|
||||
typedef enum priority_level_s {
|
||||
PRIORITY_LEVEL_SPARE = 0,
|
||||
PRIORITY_LEVEL_HIGHEST = 1,
|
||||
PRIORITY_LEVEL_LOWEST = 14,
|
||||
PRIORITY_LEVEL_NO_PRIORITY = 15
|
||||
} priority_level_t;
|
||||
|
||||
typedef enum pre_emp_capability_e {
|
||||
PRE_EMPTION_CAPABILITY_ENABLED = 0,
|
||||
PRE_EMPTION_CAPABILITY_DISABLED = 1,
|
||||
PRE_EMPTION_CAPABILITY_MAX,
|
||||
} pre_emp_capability_t;
|
||||
|
||||
typedef enum pre_emp_vulnerability_e {
|
||||
PRE_EMPTION_VULNERABILITY_ENABLED = 0,
|
||||
PRE_EMPTION_VULNERABILITY_DISABLED = 1,
|
||||
PRE_EMPTION_VULNERABILITY_MAX,
|
||||
} pre_emp_vulnerability_t;
|
||||
#endif
|
||||
|
||||
typedef struct allocation_retention_priority_s {
|
||||
priority_level_t priority_level;
|
||||
pre_emp_capability_t pre_emp_capability;
|
||||
pre_emp_vulnerability_t pre_emp_vulnerability;
|
||||
} allocation_retention_priority_t;
|
||||
|
||||
typedef struct security_capabilities_s {
|
||||
uint16_t encryption_algorithms;
|
||||
uint16_t integrity_algorithms;
|
||||
} security_capabilities_t;
|
||||
|
||||
/* Provides the establishment cause for the RRC connection request as provided
|
||||
* by the upper layers. W.r.t. the cause value names: highPriorityAccess
|
||||
* concerns AC11..AC15, ‘mt’ stands for ‘Mobile Terminating’ and ‘mo’ for
|
||||
* 'Mobile Originating'. Defined in TS 36.331.
|
||||
*/
|
||||
typedef enum rrc_establishment_cause_e {
|
||||
RRC_CAUSE_EMERGENCY = 0x0,
|
||||
RRC_CAUSE_HIGH_PRIO_ACCESS = 0x1,
|
||||
RRC_CAUSE_MT_ACCESS = 0x2,
|
||||
RRC_CAUSE_MO_SIGNALLING = 0x3,
|
||||
RRC_CAUSE_MO_DATA = 0x4,
|
||||
#if defined(UPDATE_RELEASE_10)
|
||||
RRC_CAUSE_DELAY_TOLERANT_ACCESS = 0x5,
|
||||
#endif
|
||||
RRC_CAUSE_LAST
|
||||
} rrc_establishment_cause_t;
|
||||
|
||||
typedef struct s1ap_gummei_s {
|
||||
uint16_t mcc;
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_len;
|
||||
uint8_t mme_code;
|
||||
uint16_t mme_group_id;
|
||||
} s1ap_gummei_t;
|
||||
|
||||
typedef struct s1ap_imsi_s {
|
||||
uint8_t buffer[S1AP_IMSI_LENGTH];
|
||||
uint8_t length;
|
||||
} s1ap_imsi_t;
|
||||
|
||||
typedef struct s_tmsi_s {
|
||||
uint8_t mme_code;
|
||||
uint32_t m_tmsi;
|
||||
} s_tmsi_t;
|
||||
|
||||
typedef enum ue_paging_identity_presenceMask_e {
|
||||
UE_PAGING_IDENTITY_NONE = 0,
|
||||
UE_PAGING_IDENTITY_imsi = (1 << 1),
|
||||
UE_PAGING_IDENTITY_s_tmsi = (1 << 2),
|
||||
} ue_paging_identity_presenceMask_t;
|
||||
|
||||
typedef struct ue_paging_identity_s {
|
||||
ue_paging_identity_presenceMask_t presenceMask;
|
||||
union {
|
||||
s1ap_imsi_t imsi;
|
||||
s_tmsi_t s_tmsi;
|
||||
} choice;
|
||||
} ue_paging_identity_t;
|
||||
|
||||
typedef enum ue_identities_presenceMask_e {
|
||||
UE_IDENTITIES_NONE = 0,
|
||||
UE_IDENTITIES_s_tmsi = 1 << 1,
|
||||
UE_IDENTITIES_gummei = 1 << 2,
|
||||
} ue_identities_presenceMask_t;
|
||||
|
||||
typedef struct ue_identity_s {
|
||||
ue_identities_presenceMask_t presenceMask;
|
||||
s_tmsi_t s_tmsi;
|
||||
s1ap_gummei_t gummei;
|
||||
} ue_identity_t;
|
||||
|
||||
typedef struct nas_pdu_s {
|
||||
/* Octet string data */
|
||||
uint8_t *buffer;
|
||||
/* Length of the octet string */
|
||||
uint32_t length;
|
||||
} nas_pdu_t, ue_radio_cap_t;
|
||||
|
||||
typedef struct transport_layer_addr_s {
|
||||
/* Length of the transport layer address buffer in bits. S1AP layer received a
|
||||
* bit string<1..160> containing one of the following addresses: ipv4,
|
||||
* ipv6, or ipv4 and ipv6. The layer doesn't interpret the buffer but
|
||||
* silently forward it to S1-U.
|
||||
*/
|
||||
uint8_t length;
|
||||
uint8_t buffer[20]; // in network byte order
|
||||
} transport_layer_addr_t;
|
||||
|
||||
#define TRANSPORT_LAYER_ADDR_COPY(dEST,sOURCE) \
|
||||
do { \
|
||||
AssertFatal(sOURCE.len <= 20); \
|
||||
memcpy(dEST.buffer, sOURCE.buffer, sOURCE.len); \
|
||||
dEST.length = sOURCE.length; \
|
||||
} while (0)
|
||||
|
||||
typedef struct e_rab_level_qos_parameter_s {
|
||||
uint8_t qci;
|
||||
|
||||
allocation_retention_priority_t allocation_retention_priority;
|
||||
} e_rab_level_qos_parameter_t;
|
||||
|
||||
typedef struct e_rab_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
/* Quality of service for this e_rab */
|
||||
e_rab_level_qos_parameter_t qos;
|
||||
/* The NAS PDU should be forwarded by the RRC layer to the NAS layer */
|
||||
nas_pdu_t nas_pdu;
|
||||
/* The transport layer address for the IP packets */
|
||||
transport_layer_addr_t sgw_addr;
|
||||
/* S-GW Tunnel endpoint identifier */
|
||||
uint32_t gtp_teid;
|
||||
} e_rab_t;
|
||||
|
||||
typedef struct e_rab_setup_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
|
||||
/* The transport layer address for the IP packets */
|
||||
transport_layer_addr_t eNB_addr;
|
||||
|
||||
/* S-GW Tunnel endpoint identifier */
|
||||
uint32_t gtp_teid;
|
||||
} e_rab_setup_t;
|
||||
|
||||
typedef struct e_rab_modify_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
} e_rab_modify_t;
|
||||
|
||||
typedef enum S1ap_Cause_e {
|
||||
S1AP_CAUSE_NOTHING, /* No components present */
|
||||
S1AP_CAUSE_RADIO_NETWORK,
|
||||
S1AP_CAUSE_TRANSPORT,
|
||||
S1AP_CAUSE_NAS,
|
||||
S1AP_CAUSE_PROTOCOL,
|
||||
S1AP_CAUSE_MISC,
|
||||
/* Extensions may appear below */
|
||||
|
||||
} s1ap_Cause_t;
|
||||
|
||||
typedef struct e_rab_failed_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
/* Cause of the failure */
|
||||
// cause_t cause;
|
||||
s1ap_Cause_t cause;
|
||||
uint8_t cause_value;
|
||||
} e_rab_failed_t;
|
||||
|
||||
typedef enum s1ap_ue_ctxt_modification_present_s {
|
||||
S1AP_UE_CONTEXT_MODIFICATION_SECURITY_KEY = (1 << 0),
|
||||
S1AP_UE_CONTEXT_MODIFICATION_UE_AMBR = (1 << 1),
|
||||
S1AP_UE_CONTEXT_MODIFICATION_UE_SECU_CAP = (1 << 2),
|
||||
} s1ap_ue_ctxt_modification_present_t;
|
||||
|
||||
typedef enum s1ap_paging_ind_present_s {
|
||||
S1AP_PAGING_IND_PAGING_DRX = (1 << 0),
|
||||
S1AP_PAGING_IND_PAGING_PRIORITY = (1 << 1),
|
||||
} s1ap_paging_ind_present_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// eNB application layer -> S1AP messages
|
||||
typedef struct s1ap_register_enb_req_s {
|
||||
/* Unique eNB_id to identify the eNB within EPC.
|
||||
* For macro eNB ids this field should be 20 bits long.
|
||||
* For home eNB ids this field should be 28 bits long.
|
||||
*/
|
||||
uint32_t eNB_id;
|
||||
/* The type of the cell */
|
||||
enum cell_type_e cell_type;
|
||||
|
||||
/* Optional name for the cell
|
||||
* NOTE: the name can be NULL (i.e no name) and will be cropped to 150
|
||||
* characters.
|
||||
*/
|
||||
char *eNB_name;
|
||||
|
||||
/* Tracking area code */
|
||||
uint16_t tac;
|
||||
|
||||
/* Mobile Country Code
|
||||
* Mobile Network Code
|
||||
*/
|
||||
uint16_t mcc;
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_digit_length;
|
||||
|
||||
/* Default Paging DRX of the eNB as defined in TS 36.304 */
|
||||
paging_drx_t default_drx;
|
||||
|
||||
/* The eNB IP address to bind */
|
||||
net_ip_address_t enb_ip_address;
|
||||
|
||||
/* Nb of MME to connect to */
|
||||
uint8_t nb_mme;
|
||||
/* List of MME to connect to */
|
||||
net_ip_address_t mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS];
|
||||
|
||||
/* Number of SCTP streams used for a mme association */
|
||||
uint16_t sctp_in_streams;
|
||||
uint16_t sctp_out_streams;
|
||||
} s1ap_register_enb_req_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// S1AP -> eNB application layer messages
|
||||
typedef struct s1ap_register_enb_cnf_s {
|
||||
/* Nb of MME connected */
|
||||
uint8_t nb_mme;
|
||||
} s1ap_register_enb_cnf_t;
|
||||
|
||||
typedef struct s1ap_deregistered_enb_ind_s {
|
||||
/* Nb of MME connected */
|
||||
uint8_t nb_mme;
|
||||
} s1ap_deregistered_enb_ind_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// RRC -> S1AP messages
|
||||
|
||||
/* The NAS First Req is the first message exchanged between RRC and S1AP
|
||||
* for an UE.
|
||||
* The rnti uniquely identifies an UE within a cell. Later the enb_ue_s1ap_id
|
||||
* will be the unique identifier used between RRC and S1AP.
|
||||
*/
|
||||
typedef struct s1ap_nas_first_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* Establishment cause as sent by UE */
|
||||
rrc_establishment_cause_t establishment_cause;
|
||||
|
||||
/* NAS PDU */
|
||||
nas_pdu_t nas_pdu;
|
||||
|
||||
/* If this flag is set S1AP layer is expecting the GUMMEI. If = 0,
|
||||
* the temporary s-tmsi is used.
|
||||
*/
|
||||
ue_identity_t ue_identity;
|
||||
} s1ap_nas_first_req_t;
|
||||
|
||||
typedef struct s1ap_uplink_nas_s {
|
||||
/* Unique UE identifier within an eNB */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* NAS pdu */
|
||||
nas_pdu_t nas_pdu;
|
||||
} s1ap_uplink_nas_t;
|
||||
|
||||
typedef struct s1ap_ue_cap_info_ind_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
ue_radio_cap_t ue_radio_cap;
|
||||
} s1ap_ue_cap_info_ind_t;
|
||||
|
||||
typedef struct s1ap_initial_context_setup_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab setup-ed in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab setup-ed by RRC layers */
|
||||
e_rab_setup_t e_rabs[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be setup in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be setup */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
} s1ap_initial_context_setup_resp_t;
|
||||
|
||||
typedef struct s1ap_initial_context_setup_fail_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* TODO add cause */
|
||||
} s1ap_initial_context_setup_fail_t, s1ap_ue_ctxt_modification_fail_t, s1ap_e_rab_setup_req_fail_t;
|
||||
|
||||
typedef struct s1ap_nas_non_delivery_ind_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
nas_pdu_t nas_pdu;
|
||||
/* TODO: add cause */
|
||||
} s1ap_nas_non_delivery_ind_t;
|
||||
|
||||
typedef struct s1ap_ue_ctxt_modification_req_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Bit-mask of possible present parameters */
|
||||
s1ap_ue_ctxt_modification_present_t present;
|
||||
|
||||
/* Following fields are optionnaly present */
|
||||
|
||||
/* Security key */
|
||||
uint8_t security_key[SECURITY_KEY_LENGTH];
|
||||
|
||||
/* UE aggregate maximum bitrate */
|
||||
ambr_t ue_ambr;
|
||||
|
||||
/* Security capabilities */
|
||||
security_capabilities_t security_capabilities;
|
||||
} s1ap_ue_ctxt_modification_req_t;
|
||||
|
||||
typedef struct s1ap_ue_ctxt_modification_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
} s1ap_ue_ctxt_modification_resp_t;
|
||||
|
||||
typedef struct s1ap_ue_release_complete_s {
|
||||
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
} s1ap_ue_release_complete_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// S1AP -> RRC messages
|
||||
typedef struct s1ap_downlink_nas_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* Unique UE identifier within an eNB */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* NAS pdu */
|
||||
nas_pdu_t nas_pdu;
|
||||
} s1ap_downlink_nas_t;
|
||||
|
||||
|
||||
typedef struct s1ap_initial_context_setup_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* UE aggregate maximum bitrate */
|
||||
ambr_t ue_ambr;
|
||||
|
||||
/* Security algorithms */
|
||||
security_capabilities_t security_capabilities;
|
||||
|
||||
/* Security key */
|
||||
uint8_t security_key[SECURITY_KEY_LENGTH];
|
||||
|
||||
/* Number of e_rab to be setup in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab to be setup by RRC layers */
|
||||
e_rab_t e_rab_param[S1AP_MAX_E_RAB];
|
||||
} s1ap_initial_context_setup_req_t;
|
||||
|
||||
typedef struct tai_plmn_identity_s {
|
||||
uint16_t mcc;
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_digit_length;
|
||||
} plmn_identity_t;
|
||||
|
||||
typedef struct s1ap_paging_ind_s {
|
||||
/* UE identity index value.
|
||||
* Specified in 3GPP TS 36.304
|
||||
*/
|
||||
unsigned ue_index_value:10;
|
||||
|
||||
/* UE paging identity */
|
||||
ue_paging_identity_t ue_paging_identity;
|
||||
|
||||
/* Indicates origin of paging */
|
||||
cn_domain_t cn_domain;
|
||||
|
||||
/* PLMN_identity in TAI of Paging*/
|
||||
plmn_identity_t plmn_identity[256];
|
||||
|
||||
/* TAC in TAIList of Paging*/
|
||||
int16_t tac[256];
|
||||
|
||||
/* size of TAIList*/
|
||||
int16_t tai_size;
|
||||
|
||||
/* Optional fields */
|
||||
paging_drx_t paging_drx;
|
||||
|
||||
paging_priority_t paging_priority;
|
||||
} s1ap_paging_ind_t;
|
||||
|
||||
typedef struct s1ap_e_rab_setup_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab to be setup in the list */
|
||||
uint8_t nb_e_rabs_tosetup;
|
||||
|
||||
/* E RAB setup request */
|
||||
e_rab_t e_rab_setup_params[S1AP_MAX_E_RAB];
|
||||
|
||||
} s1ap_e_rab_setup_req_t;
|
||||
|
||||
typedef struct s1ap_e_rab_setup_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab setup-ed in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab setup-ed by RRC layers */
|
||||
e_rab_setup_t e_rabs[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be setup in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be setup */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
} s1ap_e_rab_setup_resp_t;
|
||||
|
||||
|
||||
// S1AP --> RRC messages
|
||||
typedef struct s1ap_ue_release_command_s {
|
||||
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
} s1ap_ue_release_command_t;
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// S1AP <-- RRC messages
|
||||
typedef struct s1ap_ue_release_req_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
s1ap_Cause_t cause;
|
||||
long cause_value;
|
||||
} s1ap_ue_release_req_t, s1ap_ue_release_resp_t;
|
||||
|
||||
typedef struct s1ap_e_rab_modify_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab to be modify in the list */
|
||||
uint8_t nb_e_rabs_tomodify;
|
||||
|
||||
/* E RAB modify request */
|
||||
e_rab_t e_rab_modify_params[S1AP_MAX_E_RAB];
|
||||
} s1ap_e_rab_modify_req_t;
|
||||
|
||||
typedef struct s1ap_e_rab_modify_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab modify-ed in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab modify-ed by RRC layers */
|
||||
e_rab_modify_t e_rabs[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be modify in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be modify */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
} s1ap_e_rab_modify_resp_t;
|
||||
|
||||
typedef struct e_rab_release_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
} e_rab_release_t;
|
||||
|
||||
typedef struct s1ap_e_rab_release_command_s {
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* The NAS PDU should be forwarded by the RRC layer to the NAS layer */
|
||||
nas_pdu_t nas_pdu;
|
||||
|
||||
/* Number of e_rab to be released in the list */
|
||||
uint8_t nb_e_rabs_torelease;
|
||||
|
||||
/* E RAB release command */
|
||||
e_rab_release_t e_rab_release_params[S1AP_MAX_E_RAB];
|
||||
|
||||
} s1ap_e_rab_release_command_t;
|
||||
|
||||
typedef struct s1ap_e_rab_release_resp_s {
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab released in the list */
|
||||
uint8_t nb_of_e_rabs_released;
|
||||
|
||||
/* list of e_rabs released */
|
||||
e_rab_release_t e_rab_release[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be released in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be released */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
|
||||
} s1ap_e_rab_release_resp_t;
|
||||
|
||||
#endif /* S1AP_MESSAGES_TYPES_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Common definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-CommonDataTypes {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-CommonDataTypes (3) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
Criticality ::= ENUMERATED { reject, ignore, notify }
|
||||
|
||||
Presence ::= ENUMERATED { optional, conditional, mandatory }
|
||||
|
||||
PrivateIE-ID ::= CHOICE {
|
||||
local INTEGER (0..65535),
|
||||
global OBJECT IDENTIFIER
|
||||
}
|
||||
|
||||
ProcedureCode ::= INTEGER (0..255)
|
||||
|
||||
ProtocolExtensionID ::= INTEGER (0..65535)
|
||||
|
||||
ProtocolIE-ID ::= INTEGER (0..65535)
|
||||
|
||||
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
|
||||
|
||||
END
|
||||
@@ -0,0 +1,256 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Constant definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-Constants {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Constants (4) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
ProcedureCode,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM F1AP-CommonDataTypes;
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-Reset ProcedureCode ::= 0
|
||||
id-F1Setup ProcedureCode ::= 1
|
||||
id-ErrorIndication ProcedureCode ::= 2
|
||||
id-gNBDUConfigurationUpdate ProcedureCode ::= 3
|
||||
id-gNBCUConfigurationUpdate ProcedureCode ::= 4
|
||||
id-UEContextSetup ProcedureCode ::= 5
|
||||
id-UEContextRelease ProcedureCode ::= 6
|
||||
id-UEContextModification ProcedureCode ::= 7
|
||||
id-UEContextModificationRequired ProcedureCode ::= 8
|
||||
id-UEMobilityCommand ProcedureCode ::= 9
|
||||
id-UEContextReleaseRequest ProcedureCode ::= 10
|
||||
id-InitialULRRCMessageTransfer ProcedureCode ::= 11
|
||||
id-DLRRCMessageTransfer ProcedureCode ::= 12
|
||||
id-ULRRCMessageTransfer ProcedureCode ::= 13
|
||||
id-privateMessage ProcedureCode ::= 14
|
||||
id-UEInactivityNotification ProcedureCode ::= 15
|
||||
id-GNBDUResourceCoordination ProcedureCode ::= 16
|
||||
id-SystemInformationDeliveryCommand ProcedureCode ::= 17
|
||||
id-Paging ProcedureCode ::= 18
|
||||
id-Notify ProcedureCode ::= 19
|
||||
id-WriteReplaceWarning ProcedureCode ::= 20
|
||||
id-PWSCancel ProcedureCode ::= 21
|
||||
id-PWSRestartIndication ProcedureCode ::= 22
|
||||
id-PWSFailureIndication ProcedureCode ::= 23
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Extension constants
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxPrivateIEs INTEGER ::= 65535
|
||||
maxProtocolExtensions INTEGER ::= 65535
|
||||
maxProtocolIEs INTEGER ::= 65535
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Lists
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxNRARFCN INTEGER ::= 3279165
|
||||
maxnoofErrors INTEGER ::= 256
|
||||
maxnoofIndividualF1ConnectionsToReset INTEGER ::= 65536
|
||||
maxCellingNBDU INTEGER ::= 512
|
||||
maxnoofSCells INTEGER ::= 32
|
||||
maxnoofSRBs INTEGER ::= 8
|
||||
maxnoofDRBs INTEGER ::= 64
|
||||
maxnoofULUPTNLInformation INTEGER ::= 2
|
||||
maxnoofDLUPTNLInformation INTEGER ::= 2
|
||||
maxnoofBPLMNs INTEGER ::= 6
|
||||
maxnoofCandidateSpCells INTEGER ::= 64
|
||||
maxnoofPotentialSpCells INTEGER ::= 64
|
||||
maxnoofNrCellBands INTEGER ::= 32
|
||||
maxnoofSIBTypes INTEGER ::= 16
|
||||
maxnoofPagingCells INTEGER ::= 512
|
||||
maxnoofTNLAssociations INTEGER ::= 32
|
||||
maxnoofQoSFlows INTEGER ::= 64
|
||||
maxnoofSliceItems INTEGER ::= 1024
|
||||
maxCellineNB INTEGER ::= 256
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-Cause ProtocolIE-ID ::= 0
|
||||
id-Cells-Failed-to-be-Activated-List ProtocolIE-ID ::= 1
|
||||
id-Cells-Failed-to-be-Activated-List-Item ProtocolIE-ID ::= 2
|
||||
id-Cells-to-be-Activated-List ProtocolIE-ID ::= 3
|
||||
id-Cells-to-be-Activated-List-Item ProtocolIE-ID ::= 4
|
||||
id-Cells-to-be-Deactivated-List ProtocolIE-ID ::= 5
|
||||
id-Cells-to-be-Deactivated-List-Item ProtocolIE-ID ::= 6
|
||||
id-CriticalityDiagnostics ProtocolIE-ID ::= 7
|
||||
id-CUtoDURRCInformation ProtocolIE-ID ::= 9
|
||||
id-DRBs-FailedToBeModified-Item ProtocolIE-ID ::= 12
|
||||
id-DRBs-FailedToBeModified-List ProtocolIE-ID ::= 13
|
||||
id-DRBs-FailedToBeSetup-Item ProtocolIE-ID ::= 14
|
||||
id-DRBs-FailedToBeSetup-List ProtocolIE-ID ::= 15
|
||||
id-DRBs-FailedToBeSetupMod-Item ProtocolIE-ID ::= 16
|
||||
id-DRBs-FailedToBeSetupMod-List ProtocolIE-ID ::= 17
|
||||
id-DRBs-ModifiedConf-Item ProtocolIE-ID ::= 18
|
||||
id-DRBs-ModifiedConf-List ProtocolIE-ID ::= 19
|
||||
id-DRBs-Modified-Item ProtocolIE-ID ::= 20
|
||||
id-DRBs-Modified-List ProtocolIE-ID ::= 21
|
||||
id-DRBs-Required-ToBeModified-Item ProtocolIE-ID ::= 22
|
||||
id-DRBs-Required-ToBeModified-List ProtocolIE-ID ::= 23
|
||||
id-DRBs-Required-ToBeReleased-Item ProtocolIE-ID ::= 24
|
||||
id-DRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 25
|
||||
id-DRBs-Setup-Item ProtocolIE-ID ::= 26
|
||||
id-DRBs-Setup-List ProtocolIE-ID ::= 27
|
||||
id-DRBs-SetupMod-Item ProtocolIE-ID ::= 28
|
||||
id-DRBs-SetupMod-List ProtocolIE-ID ::= 29
|
||||
id-DRBs-ToBeModified-Item ProtocolIE-ID ::= 30
|
||||
id-DRBs-ToBeModified-List ProtocolIE-ID ::= 31
|
||||
id-DRBs-ToBeReleased-Item ProtocolIE-ID ::= 32
|
||||
id-DRBs-ToBeReleased-List ProtocolIE-ID ::= 33
|
||||
id-DRBs-ToBeSetup-Item ProtocolIE-ID ::= 34
|
||||
id-DRBs-ToBeSetup-List ProtocolIE-ID ::= 35
|
||||
id-DRBs-ToBeSetupMod-Item ProtocolIE-ID ::= 36
|
||||
id-DRBs-ToBeSetupMod-List ProtocolIE-ID ::= 37
|
||||
id-DRXCycle ProtocolIE-ID ::= 38
|
||||
id-DUtoCURRCInformation ProtocolIE-ID ::= 39
|
||||
id-gNB-CU-UE-F1AP-ID ProtocolIE-ID ::= 40
|
||||
id-gNB-DU-UE-F1AP-ID ProtocolIE-ID ::= 41
|
||||
id-gNB-DU-ID ProtocolIE-ID ::= 42
|
||||
id-GNB-DU-Served-Cells-Item ProtocolIE-ID ::= 43
|
||||
id-gNB-DU-Served-Cells-List ProtocolIE-ID ::= 44
|
||||
id-gNB-DU-Name ProtocolIE-ID ::= 45
|
||||
id-NRCellID ProtocolIE-ID ::= 46
|
||||
id-oldgNB-DU-UE-F1AP-ID ProtocolIE-ID ::= 47
|
||||
id-ResetType ProtocolIE-ID ::= 48
|
||||
id-ResourceCoordinationTransferContainer ProtocolIE-ID ::= 49
|
||||
id-RRCContainer ProtocolIE-ID ::= 50
|
||||
id-SCell-ToBeRemoved-Item ProtocolIE-ID ::= 51
|
||||
id-SCell-ToBeRemoved-List ProtocolIE-ID ::= 52
|
||||
id-SCell-ToBeSetup-Item ProtocolIE-ID ::= 53
|
||||
id-SCell-ToBeSetup-List ProtocolIE-ID ::= 54
|
||||
id-SCell-ToBeSetupMod-Item ProtocolIE-ID ::= 55
|
||||
id-SCell-ToBeSetupMod-List ProtocolIE-ID ::= 56
|
||||
id-Served-Cells-To-Add-Item ProtocolIE-ID ::= 57
|
||||
id-Served-Cells-To-Add-List ProtocolIE-ID ::= 58
|
||||
id-Served-Cells-To-Delete-Item ProtocolIE-ID ::= 59
|
||||
id-Served-Cells-To-Delete-List ProtocolIE-ID ::= 60
|
||||
id-Served-Cells-To-Modify-Item ProtocolIE-ID ::= 61
|
||||
id-Served-Cells-To-Modify-List ProtocolIE-ID ::= 62
|
||||
id-SpCell-ID ProtocolIE-ID ::= 63
|
||||
id-SRBID ProtocolIE-ID ::= 64
|
||||
id-SRBs-FailedToBeSetup-Item ProtocolIE-ID ::= 65
|
||||
id-SRBs-FailedToBeSetup-List ProtocolIE-ID ::= 66
|
||||
id-SRBs-FailedToBeSetupMod-Item ProtocolIE-ID ::= 67
|
||||
id-SRBs-FailedToBeSetupMod-List ProtocolIE-ID ::= 68
|
||||
id-SRBs-Required-ToBeReleased-Item ProtocolIE-ID ::= 69
|
||||
id-SRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 70
|
||||
id-SRBs-ToBeReleased-Item ProtocolIE-ID ::= 71
|
||||
id-SRBs-ToBeReleased-List ProtocolIE-ID ::= 72
|
||||
id-SRBs-ToBeSetup-Item ProtocolIE-ID ::= 73
|
||||
id-SRBs-ToBeSetup-List ProtocolIE-ID ::= 74
|
||||
id-SRBs-ToBeSetupMod-Item ProtocolIE-ID ::= 75
|
||||
id-SRBs-ToBeSetupMod-List ProtocolIE-ID ::= 76
|
||||
id-TimeToWait ProtocolIE-ID ::= 77
|
||||
id-TransactionID ProtocolIE-ID ::= 78
|
||||
id-TransmissionStopIndicator ProtocolIE-ID ::= 79
|
||||
id-UE-associatedLogicalF1-ConnectionItem ProtocolIE-ID ::= 80
|
||||
id-UE-associatedLogicalF1-ConnectionListResAck ProtocolIE-ID ::= 81
|
||||
id-gNB-CU-Name ProtocolIE-ID ::= 82
|
||||
id-SCell-FailedtoSetup-List ProtocolIE-ID ::= 83
|
||||
id-SCell-FailedtoSetup-Item ProtocolIE-ID ::= 84
|
||||
id-SCell-FailedtoSetupMod-List ProtocolIE-ID ::= 85
|
||||
id-SCell-FailedtoSetupMod-Item ProtocolIE-ID ::= 86
|
||||
id-RRCRconfigurationCompleteIndicator ProtocolIE-ID ::= 87
|
||||
id-Active-Cells-Item ProtocolIE-ID ::= 88
|
||||
id-Active-Cells-List ProtocolIE-ID ::= 89
|
||||
id-Candidate-SpCell-List ProtocolIE-ID ::= 90
|
||||
id-Candidate-SpCell-Item ProtocolIE-ID ::= 91
|
||||
id-Potential-SpCell-List ProtocolIE-ID ::= 92
|
||||
id-Potential-SpCell-Item ProtocolIE-ID ::= 93
|
||||
id-FullConfiguration ProtocolIE-ID ::= 94
|
||||
id-C-RNTI ProtocolIE-ID ::= 95
|
||||
id-SpCellULConfigured ProtocolIE-ID ::= 96
|
||||
id-InactivityMonitoringRequest ProtocolIE-ID ::= 97
|
||||
id-InactivityMonitoringResponse ProtocolIE-ID ::= 98
|
||||
id-DRB-Activity-Item ProtocolIE-ID ::= 99
|
||||
id-DRB-Activity-List ProtocolIE-ID ::= 100
|
||||
id-EUTRA-NR-CellResourceCoordinationReq-Container ProtocolIE-ID ::= 101
|
||||
id-EUTRA-NR-CellResourceCoordinationReqAck-Container ProtocolIE-ID ::= 102
|
||||
id-SpectrumSharingGroupID ProtocolIE-ID ::= 103
|
||||
id-ListofEUTRACellsinGNBDUCoordination ProtocolIE-ID ::= 104
|
||||
id-Protected-EUTRA-Resources-List ProtocolIE-ID ::= 105
|
||||
id-RequestType ProtocolIE-ID ::= 106
|
||||
id-ServCellndex ProtocolIE-ID ::= 107
|
||||
id-RAT-FrequencyPriorityInformation ProtocolIE-ID ::= 108
|
||||
id-ExecuteDuplication ProtocolIE-ID ::= 109
|
||||
id-NRCGI ProtocolIE-ID ::= 111
|
||||
id-PagingCell-Item ProtocolIE-ID ::= 112
|
||||
id-PagingCell-List ProtocolIE-ID ::= 113
|
||||
id-PagingDRX ProtocolIE-ID ::= 114
|
||||
id-PagingPriority ProtocolIE-ID ::= 115
|
||||
id-SIBtype-List ProtocolIE-ID ::= 116
|
||||
id-UEIdentityIndexValue ProtocolIE-ID ::= 117
|
||||
id-gNB-CUSystemInformation ProtocolIE-ID ::= 118
|
||||
id-HandoverPreparationInformation ProtocolIE-ID ::= 119
|
||||
id-GNB-CU-TNL-Association-To-Add-Item ProtocolIE-ID ::= 120
|
||||
id-GNB-CU-TNL-Association-To-Add-List ProtocolIE-ID ::= 121
|
||||
id-GNB-CU-TNL-Association-To-Remove-Item ProtocolIE-ID ::= 122
|
||||
id-GNB-CU-TNL-Association-To-Remove-List ProtocolIE-ID ::= 123
|
||||
id-GNB-CU-TNL-Association-To-Update-Item ProtocolIE-ID ::= 124
|
||||
id-GNB-CU-TNL-Association-To-Update-List ProtocolIE-ID ::= 125
|
||||
id-MaskedIMEISV ProtocolIE-ID ::= 126
|
||||
id-PagingIdentity ProtocolIE-ID ::= 127
|
||||
id-DUtoCURRCContainer ProtocolIE-ID ::= 128
|
||||
id-Cells-to-be-Barred-List ProtocolIE-ID ::= 129
|
||||
id-Cells-to-be-Barred-Item ProtocolIE-ID ::= 130
|
||||
id-TAISliceSupportList ProtocolIE-ID ::= 131
|
||||
id-GNB-CU-TNL-Association-Setup-List ProtocolIE-ID ::= 132
|
||||
id-GNB-CU-TNL-Association-Setup-Item ProtocolIE-ID ::= 133
|
||||
id-GNB-CU-TNL-Association-Failed-To-Setup-List ProtocolIE-ID ::= 134
|
||||
id-GNB-CU-TNL-Association-Failed-To-Setup-Item ProtocolIE-ID ::= 135
|
||||
id-DRB-Notify-Item ProtocolIE-ID ::= 136
|
||||
id-DRB-Notify-List ProtocolIE-ID ::= 137
|
||||
id-NotficationControl ProtocolIE-ID ::= 138
|
||||
id-RANAC ProtocolIE-ID ::= 139
|
||||
id-PWSSystemInformation ProtocolIE-ID ::= 140
|
||||
id-RepetitionPeriod ProtocolIE-ID ::= 141
|
||||
id-NumberofBroadcastRequest ProtocolIE-ID ::= 142
|
||||
id-ConcurrentWarningMessageIndicator ProtocolIE-ID ::= 143
|
||||
id-Cells-To-Be-Broadcast-List ProtocolIE-ID ::= 144
|
||||
id-Cells-To-Be-Broadcast-Item ProtocolIE-ID ::= 145
|
||||
id-Cells-Broadcast-Completed-List ProtocolIE-ID ::= 146
|
||||
id-Cells-Broadcast-Completed-Item ProtocolIE-ID ::= 147
|
||||
id-Broadcast-To-Be-Cancelled-List ProtocolIE-ID ::= 148
|
||||
id-Broadcast-To-Be-Cancelled-Item ProtocolIE-ID ::= 149
|
||||
id-Cells-Broadcast-Cancelled-List ProtocolIE-ID ::= 150
|
||||
id-Cells-Broadcast-Cancelled-Item ProtocolIE-ID ::= 151
|
||||
id-NR-CGI-List-For-Restart-List ProtocolIE-ID ::= 152
|
||||
id-NR-CGI-List-For-Restart-Item ProtocolIE-ID ::= 153
|
||||
id-PWS-Failed-NR-CGI-List ProtocolIE-ID ::= 154
|
||||
id-PWS-Failed-NR-CGI-Item ProtocolIE-ID ::= 155
|
||||
id-ConfirmedUEID ProtocolIE-ID ::= 156
|
||||
id-Cancel-all-Warning-Messages-Indicator ProtocolIE-ID ::= 157
|
||||
|
||||
END
|
||||
@@ -0,0 +1,184 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-Containers {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Containers (5) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
Criticality,
|
||||
Presence,
|
||||
PrivateIE-ID,
|
||||
ProtocolExtensionID,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM F1AP-CommonDataTypes
|
||||
maxPrivateIEs,
|
||||
maxProtocolExtensions,
|
||||
maxProtocolIEs
|
||||
|
||||
FROM F1AP-Constants;
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-PROTOCOL-IES ::= CLASS {
|
||||
&id ProtocolIE-ID UNIQUE,
|
||||
&criticality Criticality,
|
||||
&Value,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
TYPE &Value
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-PROTOCOL-IES-PAIR ::= CLASS {
|
||||
&id ProtocolIE-ID UNIQUE,
|
||||
&firstCriticality Criticality,
|
||||
&FirstValue,
|
||||
&secondCriticality Criticality,
|
||||
&SecondValue,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
FIRST CRITICALITY &firstCriticality
|
||||
FIRST TYPE &FirstValue
|
||||
SECOND CRITICALITY &secondCriticality
|
||||
SECOND TYPE &SecondValue
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol Extensions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-PROTOCOL-EXTENSION ::= CLASS {
|
||||
&id ProtocolExtensionID UNIQUE,
|
||||
&criticality Criticality,
|
||||
&Extension,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
EXTENSION &Extension
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Private IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-PRIVATE-IES ::= CLASS {
|
||||
&id PrivateIE-ID,
|
||||
&criticality Criticality,
|
||||
&Value,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
TYPE &Value
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-Container {F1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
|
||||
ProtocolIE-Field {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-SingleContainer {F1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
ProtocolIE-Field {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-Field {F1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
|
||||
id F1AP-PROTOCOL-IES.&id ({IEsSetParam}),
|
||||
criticality F1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
|
||||
value F1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol IE Pairs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-ContainerPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
|
||||
ProtocolIE-FieldPair {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-FieldPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
|
||||
id F1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
|
||||
firstCriticality F1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
|
||||
firstValue F1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
|
||||
secondCriticality F1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
|
||||
secondValue F1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol Extensions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolExtensionContainer {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
|
||||
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
|
||||
ProtocolExtensionField {{ExtensionSetParam}}
|
||||
|
||||
ProtocolExtensionField {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
|
||||
id F1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
|
||||
criticality F1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
|
||||
extensionValue F1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Private IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
PrivateIE-Container {F1AP-PRIVATE-IES : IEsSetParam } ::=
|
||||
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
|
||||
PrivateIE-Field {{IEsSetParam}}
|
||||
|
||||
PrivateIE-Field {F1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
|
||||
id F1AP-PRIVATE-IES.&id ({IEsSetParam}),
|
||||
criticality F1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
|
||||
value F1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
END
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,353 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedure definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-PDU-Descriptions {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-PDU-Descriptions (0)}
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
Criticality,
|
||||
ProcedureCode
|
||||
|
||||
FROM F1AP-CommonDataTypes
|
||||
Reset,
|
||||
ResetAcknowledge,
|
||||
F1SetupRequest,
|
||||
F1SetupResponse,
|
||||
F1SetupFailure,
|
||||
GNBDUConfigurationUpdate,
|
||||
GNBDUConfigurationUpdateAcknowledge,
|
||||
GNBDUConfigurationUpdateFailure,
|
||||
GNBCUConfigurationUpdate,
|
||||
GNBCUConfigurationUpdateAcknowledge,
|
||||
GNBCUConfigurationUpdateFailure,
|
||||
UEContextSetupRequest,
|
||||
UEContextSetupResponse,
|
||||
UEContextSetupFailure,
|
||||
UEContextReleaseCommand,
|
||||
UEContextReleaseComplete,
|
||||
UEContextModificationRequest,
|
||||
UEContextModificationResponse,
|
||||
UEContextModificationFailure,
|
||||
UEContextModificationRequired,
|
||||
UEContextModificationConfirm,
|
||||
ErrorIndication,
|
||||
UEContextReleaseRequest,
|
||||
DLRRCMessageTransfer,
|
||||
ULRRCMessageTransfer,
|
||||
GNBDUResourceCoordinationRequest,
|
||||
GNBDUResourceCoordinationResponse,
|
||||
PrivateMessage,
|
||||
UEInactivityNotification,
|
||||
InitialULRRCMessageTransfer,
|
||||
SystemInformationDeliveryCommand,
|
||||
Paging,
|
||||
Notify,
|
||||
WriteReplaceWarningRequest,
|
||||
WriteReplaceWarningResponse,
|
||||
PWSCancelRequest,
|
||||
PWSCancelResponse,
|
||||
PWSRestartIndication,
|
||||
PWSFailureIndication
|
||||
|
||||
FROM F1AP-PDU-Contents
|
||||
id-Reset,
|
||||
id-F1Setup,
|
||||
id-gNBDUConfigurationUpdate,
|
||||
id-gNBCUConfigurationUpdate,
|
||||
id-UEContextSetup,
|
||||
id-UEContextRelease,
|
||||
id-UEContextModification,
|
||||
id-UEContextModificationRequired,
|
||||
id-ErrorIndication,
|
||||
id-UEContextReleaseRequest,
|
||||
id-DLRRCMessageTransfer,
|
||||
id-ULRRCMessageTransfer,
|
||||
id-GNBDUResourceCoordination,
|
||||
id-privateMessage,
|
||||
id-UEInactivityNotification,
|
||||
id-InitialULRRCMessageTransfer,
|
||||
id-SystemInformationDeliveryCommand,
|
||||
id-Paging,
|
||||
id-Notify,
|
||||
id-WriteReplaceWarning,
|
||||
id-PWSCancel,
|
||||
id-PWSRestartIndication,
|
||||
id-PWSFailureIndication
|
||||
|
||||
|
||||
FROM F1AP-Constants;
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedure Class
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-ELEMENTARY-PROCEDURE ::= CLASS {
|
||||
&InitiatingMessage ,
|
||||
&SuccessfulOutcome OPTIONAL,
|
||||
&UnsuccessfulOutcome OPTIONAL,
|
||||
&procedureCode ProcedureCode UNIQUE,
|
||||
&criticality Criticality DEFAULT ignore
|
||||
}
|
||||
WITH SYNTAX {
|
||||
INITIATING MESSAGE &InitiatingMessage
|
||||
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
|
||||
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
|
||||
PROCEDURE CODE &procedureCode
|
||||
[CRITICALITY &criticality]
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface PDU Definition
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-PDU ::= CHOICE {
|
||||
initiatingMessage InitiatingMessage,
|
||||
successfulOutcome SuccessfulOutcome,
|
||||
unsuccessfulOutcome UnsuccessfulOutcome,
|
||||
...
|
||||
}
|
||||
|
||||
InitiatingMessage ::= SEQUENCE {
|
||||
procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value F1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
SuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value F1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
UnsuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value F1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedure List
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
F1AP-ELEMENTARY-PROCEDURES F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
F1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
|
||||
F1AP-ELEMENTARY-PROCEDURES-CLASS-2,
|
||||
...
|
||||
}
|
||||
|
||||
|
||||
F1AP-ELEMENTARY-PROCEDURES-CLASS-1 F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
reset |
|
||||
f1Setup |
|
||||
gNBDUConfigurationUpdate |
|
||||
gNBCUConfigurationUpdate |
|
||||
uEContextSetup |
|
||||
uEContextRelease |
|
||||
uEContextModification |
|
||||
uEContextModificationRequired |
|
||||
writeReplaceWarning |
|
||||
pWSCancel |
|
||||
gNBDUResourceCoordination ,
|
||||
...}
|
||||
|
||||
F1AP-ELEMENTARY-PROCEDURES-CLASS-2 F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
errorIndication |
|
||||
uEContextReleaseRequest |
|
||||
dLRRCMessageTransfer |
|
||||
uLRRCMessageTransfer |
|
||||
uEInactivityNotification |
|
||||
privateMessage |
|
||||
initialULRRCMessageTransfer |
|
||||
systemInformationDelivery |
|
||||
paging |
|
||||
notify |
|
||||
pWSRestartIndication |
|
||||
pWSFailureIndication ,
|
||||
...
|
||||
}
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
reset F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE Reset
|
||||
SUCCESSFUL OUTCOME ResetAcknowledge
|
||||
PROCEDURE CODE id-Reset
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
f1Setup F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE F1SetupRequest
|
||||
SUCCESSFUL OUTCOME F1SetupResponse
|
||||
UNSUCCESSFUL OUTCOME F1SetupFailure
|
||||
PROCEDURE CODE id-F1Setup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
gNBDUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNBDUConfigurationUpdate
|
||||
SUCCESSFUL OUTCOME GNBDUConfigurationUpdateAcknowledge
|
||||
UNSUCCESSFUL OUTCOME GNBDUConfigurationUpdateFailure
|
||||
PROCEDURE CODE id-gNBDUConfigurationUpdate
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
gNBCUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNBCUConfigurationUpdate
|
||||
SUCCESSFUL OUTCOME GNBCUConfigurationUpdateAcknowledge
|
||||
UNSUCCESSFUL OUTCOME GNBCUConfigurationUpdateFailure
|
||||
PROCEDURE CODE id-gNBCUConfigurationUpdate
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
uEContextSetup F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextSetupRequest
|
||||
SUCCESSFUL OUTCOME UEContextSetupResponse
|
||||
UNSUCCESSFUL OUTCOME UEContextSetupFailure
|
||||
PROCEDURE CODE id-UEContextSetup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
uEContextRelease F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextReleaseCommand
|
||||
SUCCESSFUL OUTCOME UEContextReleaseComplete
|
||||
PROCEDURE CODE id-UEContextRelease
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
uEContextModification F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextModificationRequest
|
||||
SUCCESSFUL OUTCOME UEContextModificationResponse
|
||||
UNSUCCESSFUL OUTCOME UEContextModificationFailure
|
||||
PROCEDURE CODE id-UEContextModification
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
uEContextModificationRequired F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextModificationRequired
|
||||
SUCCESSFUL OUTCOME UEContextModificationConfirm
|
||||
PROCEDURE CODE id-UEContextModificationRequired
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
writeReplaceWarning F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE WriteReplaceWarningRequest
|
||||
SUCCESSFUL OUTCOME WriteReplaceWarningResponse
|
||||
PROCEDURE CODE id-WriteReplaceWarning
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
pWSCancel F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PWSCancelRequest
|
||||
SUCCESSFUL OUTCOME PWSCancelResponse
|
||||
PROCEDURE CODE id-PWSCancel
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
errorIndication F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ErrorIndication
|
||||
PROCEDURE CODE id-ErrorIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uEContextReleaseRequest F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextReleaseRequest
|
||||
PROCEDURE CODE id-UEContextReleaseRequest
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
|
||||
initialULRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE InitialULRRCMessageTransfer
|
||||
PROCEDURE CODE id-InitialULRRCMessageTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
dLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DLRRCMessageTransfer
|
||||
PROCEDURE CODE id-DLRRCMessageTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ULRRCMessageTransfer
|
||||
PROCEDURE CODE id-ULRRCMessageTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
|
||||
uEInactivityNotification F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEInactivityNotification
|
||||
PROCEDURE CODE id-UEInactivityNotification
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
gNBDUResourceCoordination F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNBDUResourceCoordinationRequest
|
||||
SUCCESSFUL OUTCOME GNBDUResourceCoordinationResponse
|
||||
PROCEDURE CODE id-GNBDUResourceCoordination
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
privateMessage F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PrivateMessage
|
||||
PROCEDURE CODE id-privateMessage
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
systemInformationDelivery F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE SystemInformationDeliveryCommand
|
||||
PROCEDURE CODE id-SystemInformationDeliveryCommand
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
|
||||
paging F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE Paging
|
||||
PROCEDURE CODE id-Paging
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
notify F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE Notify
|
||||
PROCEDURE CODE id-Notify
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
pWSRestartIndication F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PWSRestartIndication
|
||||
PROCEDURE CODE id-PWSRestartIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
pWSFailureIndication F1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PWSFailureIndication
|
||||
PROCEDURE CODE id-PWSFailureIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
|
||||
END
|
||||
@@ -0,0 +1,199 @@
|
||||
/*
|
||||
* 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 f1ap_common.c
|
||||
* \brief f1ap procedures for both CU and DU
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "f1ap_common.h"
|
||||
//#include "S1AP-PDU.h"
|
||||
|
||||
int asn_debug = 0;
|
||||
int asn1_xer_print = 0;
|
||||
|
||||
#if defined(EMIT_ASN_DEBUG_EXTERN)
|
||||
inline void ASN_DEBUG(const char *fmt, ...)
|
||||
{
|
||||
if (asn_debug) {
|
||||
int adi = asn_debug_indent;
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
fprintf(stderr, "[ASN1]");
|
||||
|
||||
while(adi--) fprintf(stderr, " ");
|
||||
|
||||
vfprintf(stderr, fmt, ap);
|
||||
fprintf(stderr, "\n");
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ssize_t f1ap_generate_initiating_message(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_F1ap_ProcedureCode procedureCode,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr)
|
||||
{
|
||||
S1AP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
|
||||
memset(&pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
pdu.present = S1AP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage.procedureCode = procedureCode;
|
||||
pdu.choice.initiatingMessage.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
|
||||
|
||||
if (asn1_xer_print) {
|
||||
xer_fprint(stdout, &asn_DEF_S1AP_PDU, (void *)&pdu);
|
||||
}
|
||||
|
||||
/* We can safely free list of IE from sptr */
|
||||
ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
|
||||
|
||||
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
return encoded;
|
||||
}
|
||||
|
||||
ssize_t f1ap_generate_successfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_F1ap_ProcedureCode procedureCode,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr)
|
||||
{
|
||||
S1AP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
|
||||
memset(&pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
pdu.present = S1AP_PDU_PR_successfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if (asn1_xer_print) {
|
||||
xer_fprint(stdout, &asn_DEF_S1AP_PDU, (void *)&pdu);
|
||||
}
|
||||
|
||||
/* We can safely free list of IE from sptr */
|
||||
ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
|
||||
|
||||
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
|
||||
return encoded;
|
||||
}
|
||||
|
||||
ssize_t f1ap_generate_unsuccessfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_F1ap_ProcedureCode procedureCode,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr)
|
||||
{
|
||||
S1AP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
|
||||
memset(&pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
pdu.present = S1AP_PDU_PR_unsuccessfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if (asn1_xer_print) {
|
||||
xer_fprint(stdout, &asn_DEF_S1AP_PDU, (void *)&pdu);
|
||||
}
|
||||
|
||||
/* We can safely free list of IE from sptr */
|
||||
ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
|
||||
|
||||
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
|
||||
return encoded;
|
||||
}
|
||||
|
||||
F1ap_IE_t *f1ap_new_ie(
|
||||
F1ap_ProtocolIE_ID_t id,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *type,
|
||||
void *sptr)
|
||||
{
|
||||
F1ap_IE_t *buff;
|
||||
|
||||
if ((buff = malloc(sizeof(F1ap_IE_t))) == NULL) {
|
||||
// Possible error on malloc
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset((void *)buff, 0, sizeof(F1ap_IE_t));
|
||||
|
||||
buff->id = id;
|
||||
buff->criticality = criticality;
|
||||
|
||||
if (ANY_fromType_aper(&buff->value, type, sptr) < 0) {
|
||||
fprintf(stderr, "Encoding of %s failed\n", type->name);
|
||||
free(buff);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (asn1_xer_print)
|
||||
if (xer_fprint(stdout, &asn_DEF_F1ap_IE, buff) < 0) {
|
||||
free(buff);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buff;
|
||||
}
|
||||
|
||||
void f1ap_handle_criticality(F1ap_Criticality_t criticality)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,483 @@
|
||||
/*
|
||||
* 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 f1ap_common.h
|
||||
* \brief f1ap procedures for both CU and DU
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H_
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#ifndef F1AP_COMMON_H_
|
||||
#define F1AP_COMMON_H_
|
||||
|
||||
/* Defined in asn_internal.h */
|
||||
// extern int asn_debug_indent;
|
||||
extern int asn_debug;
|
||||
|
||||
#if defined(EMIT_ASN_DEBUG_EXTERN)
|
||||
inline void ASN_DEBUG(const char *fmt, ...);
|
||||
#endif
|
||||
|
||||
#include "F1AP_Active-Cells-List.h"
|
||||
#include "F1AP_RAT-FrequencyPriorityInformation.h"
|
||||
#include "F1AP_DLUPTNLInformation-ToBeSetup-Item.h"
|
||||
#include "F1AP_PrivateMessage.h"
|
||||
#include "F1AP_Cause.h"
|
||||
#include "F1AP_Pre-emptionVulnerability.h"
|
||||
#include "F1AP_NRPCI.h"
|
||||
#include "F1AP_Transmission-Bandwidth.h"
|
||||
#include "F1AP_SIB1-message.h"
|
||||
#include "F1AP_GNBCUConfigurationUpdateAcknowledge.h"
|
||||
#include "F1AP_DRBs-Setup-Item.h"
|
||||
#include "F1AP_EUTRA-NR-CellResourceCoordinationReqAck-Container.h"
|
||||
#include "F1AP_NR-CGI-List-For-Restart-Item.h"
|
||||
#include "F1AP_GNB-CU-Name.h"
|
||||
#include "F1AP_PagingDRX.h"
|
||||
#include "F1AP_RepetitionPeriod.h"
|
||||
#include "F1AP_DRBs-ToBeModified-List.h"
|
||||
#include "F1AP_ExecuteDuplication.h"
|
||||
#include "F1AP_SCell-FailedtoSetupMod-List.h"
|
||||
#include "F1AP_NRNRB.h"
|
||||
#include "F1AP_SCell-ToBeSetup-List.h"
|
||||
#include "F1AP_F1AP-PDU.h"
|
||||
#include "F1AP_MaskedIMEISV.h"
|
||||
#include "F1AP_ProtocolIE-Container.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-To-Update-Item.h"
|
||||
#include "F1AP_Cells-to-be-Activated-List-Item.h"
|
||||
#include "F1AP_DRBs-Required-ToBeModified-Item.h"
|
||||
#include "F1AP_BitRate.h"
|
||||
#include "F1AP_SRBs-ToBeSetup-List.h"
|
||||
#include "F1AP_ConcurrentWarningMessageIndicator.h"
|
||||
#include "F1AP_CriticalityDiagnostics-IE-Item.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-To-Update-List.h"
|
||||
#include "F1AP_DRB-Notify-List.h"
|
||||
#include "F1AP_UEContextReleaseCommand.h"
|
||||
#include "F1AP_ProtocolIE-SingleContainer.h"
|
||||
#include "F1AP_DRBs-ToBeReleased-List.h"
|
||||
#include "F1AP_PWS-Failed-NR-CGI-List.h"
|
||||
#include "F1AP_InitialULRRCMessageTransfer.h"
|
||||
#include "F1AP_Served-Cell-Information.h"
|
||||
#include "F1AP_Served-EUTRA-Cells-Information.h"
|
||||
#include "F1AP_Cells-Broadcast-Cancelled-Item.h"
|
||||
#include "F1AP_F1SetupRequest.h"
|
||||
#include "F1AP_Served-Cells-To-Add-Item.h"
|
||||
#include "F1AP_F1SetupFailure.h"
|
||||
#include "F1AP_ULUPTNLInformation-ToBeSetup-Item.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-To-Add-Item.h"
|
||||
#include "F1AP_DUtoCURRCContainer.h"
|
||||
#include "F1AP_GNBDUResourceCoordinationRequest.h"
|
||||
#include "F1AP_DRBs-FailedToBeSetup-List.h"
|
||||
#include "F1AP_UPTransportLayerInformation.h"
|
||||
#include "F1AP_RRCContainer.h"
|
||||
#include "F1AP_Notification-Cause.h"
|
||||
#include "F1AP_UEIdentityIndexValue.h"
|
||||
#include "F1AP_SRBs-ToBeSetupMod-List.h"
|
||||
#include "F1AP_GNB-DU-Served-Cells-Item.h"
|
||||
#include "F1AP_RLCMode.h"
|
||||
#include "F1AP_NRSCS.h"
|
||||
#include "F1AP_SliceSupportList.h"
|
||||
#include "F1AP_GTP-TEID.h"
|
||||
#include "F1AP_UEContextModificationRequest.h"
|
||||
#include "F1AP_MeasConfig.h"
|
||||
#include "F1AP_Flows-Mapped-To-DRB-List.h"
|
||||
#include "F1AP_Cells-to-be-Deactivated-List-Item.h"
|
||||
#include "F1AP_QoSFlowLevelQoSParameters.h"
|
||||
#include "F1AP_GNB-CU-UE-F1AP-ID.h"
|
||||
#include "F1AP_CauseTransport.h"
|
||||
#include "F1AP_DRBs-ToBeReleased-Item.h"
|
||||
#include "F1AP_SCell-ToBeSetupMod-Item.h"
|
||||
#include "F1AP_CellGroupConfig.h"
|
||||
#include "F1AP_PWSSystemInformation.h"
|
||||
#include "F1AP_DRBs-Modified-List.h"
|
||||
#include "F1AP_HandoverPreparationInformation.h"
|
||||
#include "F1AP_InactivityMonitoringResponse.h"
|
||||
#include "F1AP_Served-Cells-To-Delete-List.h"
|
||||
#include "F1AP_ProtocolExtensionField.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-To-Remove-List.h"
|
||||
#include "F1AP_SRBID.h"
|
||||
#include "F1AP_DRB-Activity-List.h"
|
||||
#include "F1AP_DRBs-FailedToBeModified-Item.h"
|
||||
#include "F1AP_TransactionID.h"
|
||||
#include "F1AP_AllocationAndRetentionPriority.h"
|
||||
#include "F1AP_ShortDRXCycleLength.h"
|
||||
#include "F1AP_BroadcastPLMNs-Item.h"
|
||||
#include "F1AP_DRB-Information.h"
|
||||
#include "F1AP_TimeToWait.h"
|
||||
#include "F1AP_NonDynamic5QIDescriptor.h"
|
||||
#include "F1AP_C-RNTI.h"
|
||||
#include "F1AP_MIB-message.h"
|
||||
#include "F1AP_SIBtype-Item.h"
|
||||
#include "F1AP_Served-Cells-To-Modify-List.h"
|
||||
#include "F1AP_NRCGI.h"
|
||||
#include "F1AP_DuplicationActivation.h"
|
||||
#include "F1AP_CauseProtocol.h"
|
||||
#include "F1AP_SCell-FailedtoSetup-Item.h"
|
||||
#include "F1AP_PagingIdentity.h"
|
||||
#include "F1AP_NGRANAllocationAndRetentionPriority.h"
|
||||
#include "F1AP_TypeOfError.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-To-Add-List.h"
|
||||
#include "F1AP_DRBs-Required-ToBeReleased-Item.h"
|
||||
#include "F1AP_EUTRA-Mode-Info.h"
|
||||
#include "F1AP_FiveGS-TAC.h"
|
||||
#include "F1AP_Cells-to-be-Activated-List.h"
|
||||
#include "F1AP_PagingCell-list.h"
|
||||
#include "F1AP_NotificationControl.h"
|
||||
#include "F1AP_ProtectedEUTRAResourceIndication.h"
|
||||
#include "F1AP_CUtoDURRCInformation.h"
|
||||
#include "F1AP_SystemInformationDeliveryCommand.h"
|
||||
#include "F1AP_AveragingWindow.h"
|
||||
#include "F1AP_SRBs-ToBeSetupMod-Item.h"
|
||||
#include "F1AP_NumberOfBroadcasts.h"
|
||||
#include "F1AP_Cells-Broadcast-Completed-List.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-Setup-Item.h"
|
||||
#include "F1AP_PWSCancelResponse.h"
|
||||
#include "F1AP_SpectrumSharingGroupID.h"
|
||||
#include "F1AP_RANUEPagingIdentity.h"
|
||||
#include "F1AP_CG-ConfigInfo.h"
|
||||
#include "F1AP_PagingCell-Item.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-To-Remove-Item.h"
|
||||
#include "F1AP_UE-CapabilityRAT-ContainerList.h"
|
||||
#include "F1AP_PWSCancelRequest.h"
|
||||
#include "F1AP_PriorityLevel.h"
|
||||
#include "F1AP_ProtocolIE-ContainerPair.h"
|
||||
#include "F1AP_FullConfiguration.h"
|
||||
#include "F1AP_NRCellIdentity.h"
|
||||
#include "F1AP_ProtocolExtensionContainer.h"
|
||||
#include "F1AP_PWSRestartIndication.h"
|
||||
#include "F1AP_DRBs-ModifiedConf-List.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-Failed-To-Setup-List.h"
|
||||
#include "F1AP_UEContextSetupRequest.h"
|
||||
#include "F1AP_PWSFailureIndication.h"
|
||||
#include "F1AP_UE-associatedLogicalF1-ConnectionListResAck.h"
|
||||
#include "F1AP_DRBs-ToBeSetupMod-Item.h"
|
||||
#include "F1AP_SRBs-FailedToBeSetup-List.h"
|
||||
#include "F1AP_Criticality.h"
|
||||
#include "F1AP_UEContextModificationConfirm.h"
|
||||
#include "F1AP_Broadcast-To-Be-Cancelled-List.h"
|
||||
#include "F1AP_UEContextReleaseComplete.h"
|
||||
#include "F1AP_PrivateIE-Container.h"
|
||||
#include "F1AP_CellULConfigured.h"
|
||||
#include "F1AP_DRB-Activity.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-Failed-To-Setup-Item.h"
|
||||
#include "F1AP_PrivateIE-ID.h"
|
||||
#include "F1AP_WriteReplaceWarningResponse.h"
|
||||
#include "F1AP_CauseMisc.h"
|
||||
#include "F1AP_SRBs-Required-ToBeReleased-Item.h"
|
||||
#include "F1AP_Cells-Broadcast-Cancelled-List.h"
|
||||
#include "F1AP_ULUEConfiguration.h"
|
||||
#include "F1AP_RAT-FrequencySelectionPriority.h"
|
||||
#include "F1AP_UEInactivityNotification.h"
|
||||
#include "F1AP_DLRRCMessageTransfer.h"
|
||||
#include "F1AP_TriggeringMessage.h"
|
||||
#include "F1AP_DRBs-ToBeSetup-List.h"
|
||||
#include "F1AP_Cells-to-be-Barred-Item.h"
|
||||
#include "F1AP_UE-associatedLogicalF1-ConnectionItem.h"
|
||||
#include "F1AP_Cancel-all-Warning-Messages-Indicator.h"
|
||||
#include "F1AP_SCell-FailedtoSetupMod-Item.h"
|
||||
#include "F1AP_DRBs-FailedToBeSetupMod-List.h"
|
||||
#include "F1AP_ProtocolIE-ID.h"
|
||||
#include "F1AP_TransportLayerAddress.h"
|
||||
#include "F1AP_GNB-DU-System-Information.h"
|
||||
#include "F1AP_PWS-Failed-NR-CGI-Item.h"
|
||||
#include "F1AP_Notify.h"
|
||||
#include "F1AP_UEContextModificationResponse.h"
|
||||
#include "F1AP_DRBID.h"
|
||||
#include "F1AP_GNBDUResourceCoordinationResponse.h"
|
||||
#include "F1AP_UEContextModificationRequired.h"
|
||||
#include "F1AP_InitiatingMessage.h"
|
||||
#include "F1AP_SliceSupportItem.h"
|
||||
#include "F1AP_ProtocolIE-FieldPair.h"
|
||||
#include "F1AP_EUTRA-TDD-Info.h"
|
||||
#include "F1AP_GNBDUConfigurationUpdateFailure.h"
|
||||
#include "F1AP_ULUPTNLInformation-ToBeSetup-List.h"
|
||||
#include "F1AP_WriteReplaceWarningRequest.h"
|
||||
#include "F1AP_ServCellIndex.h"
|
||||
#include "F1AP_ResetAcknowledge.h"
|
||||
#include "F1AP_SRBs-FailedToBeSetupMod-Item.h"
|
||||
#include "F1AP_OffsetToPointA.h"
|
||||
#include "F1AP_ProcedureCode.h"
|
||||
#include "F1AP_GTPTunnel.h"
|
||||
#include "F1AP_TDD-Info.h"
|
||||
#include "F1AP_Pre-emptionCapability.h"
|
||||
#include "F1AP_MaxDataBurstVolume.h"
|
||||
#include "F1AP_SUL-Information.h"
|
||||
#include "F1AP_CriticalityDiagnostics-IE-List.h"
|
||||
#include "F1AP_EUTRA-FDD-Info.h"
|
||||
#include "F1AP_BroadcastPLMNs-List.h"
|
||||
#include "F1AP_Served-Cells-To-Delete-Item.h"
|
||||
#include "F1AP_ListofEUTRACellsinGNBDUCoordination.h"
|
||||
#include "F1AP_Candidate-SpCell-Item.h"
|
||||
#include "F1AP_Cells-To-Be-Broadcast-List.h"
|
||||
#include "F1AP_ULRRCMessageTransfer.h"
|
||||
#include "F1AP_Cells-to-be-Deactivated-List.h"
|
||||
#include "F1AP_DRBs-Required-ToBeReleased-List.h"
|
||||
#include "F1AP_Served-Cells-To-Add-List.h"
|
||||
#include "F1AP_Potential-SpCell-List.h"
|
||||
#include "F1AP_EUTRANQoS.h"
|
||||
#include "F1AP_Dynamic5QIDescriptor.h"
|
||||
#include "F1AP_GNBCUConfigurationUpdateFailure.h"
|
||||
#include "F1AP_DuplicationIndication.h"
|
||||
#include "F1AP_GNB-DU-Served-Cells-List.h"
|
||||
#include "F1AP_QoS-Characteristics.h"
|
||||
#include "F1AP_UE-associatedLogicalF1-ConnectionListRes.h"
|
||||
#include "F1AP_ResourceCoordinationTransferContainer.h"
|
||||
#include "F1AP_DRXCycle.h"
|
||||
#include "F1AP_DRBs-FailedToBeSetup-Item.h"
|
||||
#include "F1AP_PrivateIE-Field.h"
|
||||
#include "F1AP_SRBs-ToBeReleased-List.h"
|
||||
#include "F1AP_MeasGapConfig.h"
|
||||
#include "F1AP_NR-Mode-Info.h"
|
||||
#include "F1AP_Active-Cells-Item.h"
|
||||
#include "F1AP_Protected-EUTRA-Resources-List.h"
|
||||
#include "F1AP_SRBs-FailedToBeSetup-Item.h"
|
||||
#include "F1AP_ResetAll.h"
|
||||
#include "F1AP_SCell-FailedtoSetup-List.h"
|
||||
#include "F1AP_UEContextModificationFailure.h"
|
||||
#include "F1AP_CNUEPagingIdentity.h"
|
||||
#include "F1AP_DRBs-ToBeSetupMod-List.h"
|
||||
#include "F1AP_GNBDUConfigurationUpdate.h"
|
||||
#include "F1AP_DRBs-ToBeSetup-Item.h"
|
||||
#include "F1AP_UnsuccessfulOutcome.h"
|
||||
#include "F1AP_SRBs-FailedToBeSetupMod-List.h"
|
||||
#include "F1AP_SCell-ToBeRemoved-Item.h"
|
||||
#include "F1AP_InactivityMonitoringRequest.h"
|
||||
#include "F1AP_Cells-Failed-to-be-Activated-List-Item.h"
|
||||
#include "F1AP_DRBs-Modified-Item.h"
|
||||
#include "F1AP_SRBs-Required-ToBeReleased-List.h"
|
||||
#include "F1AP_GBR-QosInformation.h"
|
||||
#include "F1AP_SCell-ToBeRemoved-List.h"
|
||||
#include "F1AP_RANAC.h"
|
||||
#include "F1AP_GNB-DU-UE-F1AP-ID.h"
|
||||
#include "F1AP_CauseRadioNetwork.h"
|
||||
#include "F1AP_DRB-Notify-Item.h"
|
||||
#include "F1AP_GNBDUConfigurationUpdateAcknowledge.h"
|
||||
#include "F1AP_GNB-CUSystemInformation.h"
|
||||
#include "F1AP_ProtocolIE-Field.h"
|
||||
#include "F1AP_Served-Cells-To-Modify-Item.h"
|
||||
#include "F1AP_Flows-Mapped-To-DRB-Item.h"
|
||||
#include "F1AP_SupportedSULFreqBandItem.h"
|
||||
#include "F1AP_UEContextReleaseRequest.h"
|
||||
#include "F1AP_GNB-DU-Name.h"
|
||||
#include "F1AP_DRBs-ToBeModified-Item.h"
|
||||
#include "F1AP_SIBtype-List.h"
|
||||
#include "F1AP_EUTRA-NR-CellResourceCoordinationReq-Container.h"
|
||||
#include "F1AP_DRBs-SetupMod-List.h"
|
||||
#include "F1AP_DRBs-Required-ToBeModified-List.h"
|
||||
#include "F1AP_DUtoCURRCInformation.h"
|
||||
#include "F1AP_MaxPacketLossRate.h"
|
||||
#include "F1AP_PacketDelayBudget.h"
|
||||
#include "F1AP_GNBCUConfigurationUpdate.h"
|
||||
#include "F1AP_Cells-Broadcast-Completed-Item.h"
|
||||
#include "F1AP_RRCRconfigurationCompleteIndicator.h"
|
||||
#include "F1AP_PagingPriority.h"
|
||||
#include "F1AP_Cells-Failed-to-be-Activated-List.h"
|
||||
#include "F1AP_Endpoint-IP-address-and-port.h"
|
||||
#include "F1AP_PacketErrorRate.h"
|
||||
#include "F1AP_PLMN-Identity.h"
|
||||
#include "F1AP_asn_constant.h"
|
||||
#include "F1AP_ResetType.h"
|
||||
#include "F1AP_FDD-Info.h"
|
||||
#include "F1AP_DLUPTNLInformation-ToBeSetup-List.h"
|
||||
#include "F1AP_QoSFlowIndicator.h"
|
||||
#include "F1AP_NR-CGI-List-For-Restart-List.h"
|
||||
#include "F1AP_F1SetupResponse.h"
|
||||
#include "F1AP_UEContextSetupResponse.h"
|
||||
#include "F1AP_CP-TransportLayerAddress.h"
|
||||
#include "F1AP_Broadcast-To-Be-Cancelled-Item.h"
|
||||
#include "F1AP_ErrorIndication.h"
|
||||
#include "F1AP_SubscriberProfileIDforRFP.h"
|
||||
#include "F1AP_SNSSAI.h"
|
||||
#include "F1AP_DRBs-ModifiedConf-Item.h"
|
||||
#include "F1AP_GNB-CU-TNL-Association-Setup-List.h"
|
||||
#include "F1AP_DRB-Activity-Item.h"
|
||||
#include "F1AP_LCID.h"
|
||||
#include "F1AP_ULConfiguration.h"
|
||||
#include "F1AP_ShortDRXCycleTimer.h"
|
||||
#include "F1AP_FreqBandNrItem.h"
|
||||
#include "F1AP_Cells-to-be-Barred-List.h"
|
||||
#include "F1AP_Presence.h"
|
||||
#include "F1AP_CellBarred.h"
|
||||
#include "F1AP_SIBtype.h"
|
||||
#include "F1AP_RequestType.h"
|
||||
#include "F1AP_NRFreqInfo.h"
|
||||
#include "F1AP_Potential-SpCell-Item.h"
|
||||
#include "F1AP_NumberofBroadcastRequest.h"
|
||||
#include "F1AP_TNLAssociationUsage.h"
|
||||
#include "F1AP_SCell-ToBeSetupMod-List.h"
|
||||
#include "F1AP_DRBs-Setup-List.h"
|
||||
#include "F1AP_Reset.h"
|
||||
#include "F1AP_CriticalityDiagnostics.h"
|
||||
#include "F1AP_Paging.h"
|
||||
#include "F1AP_LongDRXCycleLength.h"
|
||||
#include "F1AP_GNB-DU-ID.h"
|
||||
#include "F1AP_SuccessfulOutcome.h"
|
||||
#include "F1AP_Configured-EPS-TAC.h"
|
||||
#include "F1AP_Candidate-SpCell-List.h"
|
||||
#include "F1AP_SRBs-ToBeReleased-Item.h"
|
||||
#include "F1AP_QoSInformation.h"
|
||||
#include "F1AP_SCell-ToBeSetup-Item.h"
|
||||
#include "F1AP_SRBs-ToBeSetup-Item.h"
|
||||
#include "F1AP_GBR-QoSFlowInformation.h"
|
||||
#include "F1AP_SCellIndex.h"
|
||||
#include "F1AP_DRBs-SetupMod-Item.h"
|
||||
#include "F1AP_TransmissionStopIndicator.h"
|
||||
#include "F1AP_UEContextSetupFailure.h"
|
||||
#include "F1AP_DRBs-FailedToBeModified-List.h"
|
||||
#include "F1AP_DRBs-FailedToBeSetupMod-Item.h"
|
||||
#include "F1AP_ProtocolExtensionID.h"
|
||||
#include "F1AP_Cells-To-Be-Broadcast-Item.h"
|
||||
#include "F1AP_QCI.h"
|
||||
|
||||
/* Checking version of ASN1C compiler */
|
||||
#if (ASN1C_ENVIRONMENT_VERSION < ASN1C_MINIMUM_VERSION)
|
||||
# error "You are compiling f1ap with the wrong version of ASN1C"
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
# define FALSE (0)
|
||||
#endif
|
||||
#ifndef TRUE
|
||||
# define TRUE (!FALSE)
|
||||
#endif
|
||||
|
||||
#define F1AP_UE_ID_FMT "0x%06"PRIX32
|
||||
|
||||
extern int asn_debug;
|
||||
extern int asn1_xer_print;
|
||||
|
||||
#include "assertions.h"
|
||||
|
||||
#if defined(ENB_MODE)
|
||||
# include "log.h"
|
||||
# include "f1ap_default_values.h"
|
||||
# define F1AP_ERROR(x, args...) LOG_E(F1AP, x, ##args)
|
||||
# define F1AP_WARN(x, args...) LOG_W(F1AP, x, ##args)
|
||||
# define F1AP_TRAF(x, args...) LOG_I(F1AP, x, ##args)
|
||||
# define F1AP_INFO(x, args...) LOG_I(F1AP, x, ##args)
|
||||
# define F1AP_DEBUG(x, args...) LOG_I(F1AP, x, ##args)
|
||||
#else
|
||||
//# include "mme_default_values.h"
|
||||
# define F1AP_ERROR(x, args...) do { fprintf(stdout, "[F1AP][E]"x, ##args); } while(0)
|
||||
# define F1AP_WARN(x, args...) do { fprintf(stdout, "[F1AP][W]"x, ##args); } while(0)
|
||||
# define F1AP_TRAF(x, args...) do { fprintf(stdout, "[F1AP][T]"x, ##args); } while(0)
|
||||
# define F1AP_INFO(x, args...) do { fprintf(stdout, "[F1AP][I]"x, ##args); } while(0)
|
||||
# define F1AP_DEBUG(x, args...) do { fprintf(stdout, "[F1AP][D]"x, ##args); } while(0)
|
||||
#endif
|
||||
|
||||
//Forward declaration
|
||||
//struct f1ap_message_s;
|
||||
|
||||
typedef struct f1ap_message_s {
|
||||
F1AP_ProtocolIE_ID_t id;
|
||||
F1AP_Criticality_t criticality;
|
||||
uint8_t direction;
|
||||
union {
|
||||
F1AP_F1SetupRequestIEs_t f1ap_F1SetupRequestIEs;
|
||||
} msg;
|
||||
} f1ap_message;
|
||||
|
||||
/** \brief Function callback prototype.
|
||||
**/
|
||||
/*typedef int (*f1ap_message_decoded_callback)(
|
||||
uint32_t assoc_id,
|
||||
uint32_t stream,
|
||||
struct f1ap_message_s *message_p
|
||||
);*/
|
||||
|
||||
/** \brief Encode a successfull outcome message
|
||||
\param buffer pointer to buffer in which data will be encoded
|
||||
\param length pointer to the length of buffer
|
||||
\param procedureCode Procedure code for the message
|
||||
\param criticality Criticality of the message
|
||||
\param td ASN1C type descriptor of the sptr
|
||||
\param sptr Deferenced pointer to the structure to encode
|
||||
@returns size in bytes encded on success or 0 on failure
|
||||
**/
|
||||
/*ssize_t f1ap_generate_successfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_F1ap_ProcedureCode procedureCode,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr);
|
||||
*/
|
||||
/** \brief Encode an initiating message
|
||||
\param buffer pointer to buffer in which data will be encoded
|
||||
\param length pointer to the length of buffer
|
||||
\param procedureCode Procedure code for the message
|
||||
\param criticality Criticality of the message
|
||||
\param td ASN1C type descriptor of the sptr
|
||||
\param sptr Deferenced pointer to the structure to encode
|
||||
@returns size in bytes encded on success or 0 on failure
|
||||
**/
|
||||
/*ssize_t f1ap_generate_initiating_message(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_F1ap_ProcedureCode procedureCode,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr);
|
||||
*/
|
||||
/** \brief Encode an unsuccessfull outcome message
|
||||
\param buffer pointer to buffer in which data will be encoded
|
||||
\param length pointer to the length of buffer
|
||||
\param procedureCode Procedure code for the message
|
||||
\param criticality Criticality of the message
|
||||
\param td ASN1C type descriptor of the sptr
|
||||
\param sptr Deferenced pointer to the structure to encode
|
||||
@returns size in bytes encded on success or 0 on failure
|
||||
**/
|
||||
/*ssize_t f1ap_generate_unsuccessfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_F1ap_ProcedureCode procedureCode,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr);
|
||||
*/
|
||||
/** \brief Generate a new IE
|
||||
\param id Protocol ie id of the IE
|
||||
\param criticality Criticality of the IE
|
||||
\param type ASN1 type descriptor of the IE value
|
||||
\param sptr Structure to be encoded in the value field
|
||||
@returns a pointer to the newly created IE structure or NULL in case of failure
|
||||
**/
|
||||
/*F1ap_IE_t *f1ap_new_ie(F1ap_ProtocolIE_ID_t id,
|
||||
F1ap_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *type,
|
||||
void *sptr);
|
||||
*/
|
||||
/** \brief Handle criticality
|
||||
\param criticality Criticality of the IE
|
||||
@returns void
|
||||
**/
|
||||
//void f1ap_handle_criticality(F1ap_Criticality_t criticality);
|
||||
|
||||
#endif /* F1AP_COMMON_H_ */
|
||||
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
* 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 f1ap_decoder.c
|
||||
* \brief f1ap pdu decode procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "assertions.h"
|
||||
|
||||
#include "intertask_interface.h"
|
||||
|
||||
#include "f1ap_common.h"
|
||||
#include "f1ap_ies_defs.h"
|
||||
#include "f1ap_decoder.h"
|
||||
|
||||
static int f1ap_decode_initiating_message(f1ap_message *message,
|
||||
F1ap_InitiatingMessage_t *initiating_p)
|
||||
{
|
||||
int ret = -1;
|
||||
MessageDef *message_p;
|
||||
char *message_string = NULL;
|
||||
size_t message_string_size;
|
||||
MessagesIds message_id;
|
||||
|
||||
DevAssert(initiating_p != NULL);
|
||||
|
||||
message_string = calloc(10000, sizeof(char));
|
||||
|
||||
f1ap_string_total_size = 0;
|
||||
|
||||
message->procedureCode = initiating_p->procedureCode;
|
||||
message->criticality = initiating_p->criticality;
|
||||
|
||||
switch(initiating_p->procedureCode) {
|
||||
|
||||
case F1ap_ProcedureCode_id_InitialContextSetup:
|
||||
ret = f1ap_decode_f1ap_initialcontextsetuprequesties(
|
||||
&message->msg.f1ap_InitialContextSetupRequestIEs, &initiating_p->value);
|
||||
f1ap_xer_print_f1ap_initialcontextsetuprequest(f1ap_xer__print2sp, message_string, message);
|
||||
message_id = F1AP_INITIAL_CONTEXT_SETUP_LOG;
|
||||
message_string_size = strlen(message_string);
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP,
|
||||
message_id,
|
||||
message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_initial_context_setup_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_initial_context_setup_log.text, message_string, message_string_size);
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
free(message_string);
|
||||
break;
|
||||
|
||||
case F1ap_ProcedureCode_id_UEContextRelease:
|
||||
ret = f1ap_decode_f1ap_uecontextreleasecommandies(
|
||||
&message->msg.f1ap_UEContextReleaseCommandIEs, &initiating_p->value);
|
||||
f1ap_xer_print_f1ap_uecontextreleasecommand(f1ap_xer__print2sp, message_string, message);
|
||||
message_id = F1AP_UE_CONTEXT_RELEASE_COMMAND_LOG;
|
||||
message_string_size = strlen(message_string);
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP,
|
||||
message_id,
|
||||
message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_ue_context_release_command_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_ue_context_release_command_log.text, message_string, message_string_size);
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
free(message_string);
|
||||
break;
|
||||
|
||||
case F1ap_ProcedureCode_id_ErrorIndication:
|
||||
ret = f1ap_decode_f1ap_errorindicationies(
|
||||
&message->msg.f1ap_ErrorIndicationIEs, &initiating_p->value);
|
||||
f1ap_xer_print_f1ap_errorindication(f1ap_xer__print2sp, message_string, message);
|
||||
message_id = F1AP_E_RAB_ERROR_INDICATION_LOG;
|
||||
message_string_size = strlen(message_string);
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP,
|
||||
message_id,
|
||||
message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_e_rab_release_request_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_error_indication_log.text, message_string, message_string_size);
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
free(message_string);
|
||||
F1AP_INFO("ErrorIndication initiating message\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
F1AP_ERROR("Unknown procedure ID (%d) for initiating message\n",
|
||||
(int)initiating_p->procedureCode);
|
||||
AssertFatal( 0 , "Unknown procedure ID (%d) for initiating message\n",
|
||||
(int)initiating_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int f1ap_decode_successful_outcome(f1ap_message *message,
|
||||
F1ap_SuccessfulOutcome_t *successfullOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
MessageDef *message_p;
|
||||
char *message_string = NULL;
|
||||
size_t message_string_size;
|
||||
MessagesIds message_id;
|
||||
|
||||
DevAssert(successfullOutcome_p != NULL);
|
||||
|
||||
message_string = malloc(sizeof(char) * 10000);
|
||||
memset((void*)message_string,0,sizeof(char) * 10000);
|
||||
|
||||
f1ap_string_total_size = 0;
|
||||
|
||||
message->procedureCode = successfullOutcome_p->procedureCode;
|
||||
message->criticality = successfullOutcome_p->criticality;
|
||||
|
||||
switch(successfullOutcome_p->procedureCode) {
|
||||
case F1ap_ProcedureCode_id_F1Setup:
|
||||
ret = f1ap_decode_f1ap_f1setupresponseies(
|
||||
&message->msg.f1ap_F1SetupResponseIEs, &successfullOutcome_p->value);
|
||||
f1ap_xer_print_f1ap_f1setupresponse(f1ap_xer__print2sp, message_string, message);
|
||||
message_id = F1AP_F1_SETUP_LOG;
|
||||
break;
|
||||
|
||||
default:
|
||||
F1AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n",
|
||||
(int)successfullOutcome_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
message_string_size = strlen(message_string);
|
||||
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP, message_id, message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_f1_setup_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_f1_setup_log.text, message_string, message_string_size);
|
||||
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
|
||||
free(message_string);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int f1ap_decode_unsuccessful_outcome(f1ap_message *message,
|
||||
F1ap_UnsuccessfulOutcome_t *unSuccessfullOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
DevAssert(unSuccessfullOutcome_p != NULL);
|
||||
|
||||
message->procedureCode = unSuccessfullOutcome_p->procedureCode;
|
||||
message->criticality = unSuccessfullOutcome_p->criticality;
|
||||
|
||||
switch(unSuccessfullOutcome_p->procedureCode) {
|
||||
case F1ap_ProcedureCode_id_F1Setup:
|
||||
return f1ap_decode_f1ap_f1setupfailureies(
|
||||
&message->msg.f1ap_F1SetupFailureIEs, &unSuccessfullOutcome_p->value);
|
||||
|
||||
default:
|
||||
F1AP_ERROR("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
||||
(int)unSuccessfullOutcome_p->procedureCode);
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int f1ap_decode_pdu(f1ap_message *message, const uint8_t * const buffer,
|
||||
const uint32_t length)
|
||||
{
|
||||
F1AP_PDU_t pdu;
|
||||
F1AP_PDU_t *pdu_p = &pdu;
|
||||
asn_dec_rval_t dec_ret;
|
||||
|
||||
DevAssert(buffer != NULL);
|
||||
|
||||
memset((void *)pdu_p, 0, sizeof(F1AP_PDU_t));
|
||||
|
||||
dec_ret = aper_decode(NULL,
|
||||
&asn_DEF_F1AP_PDU,
|
||||
(void **)&pdu_p,
|
||||
buffer,
|
||||
length,
|
||||
0,
|
||||
0);
|
||||
|
||||
if (dec_ret.code != RC_OK) {
|
||||
F1AP_ERROR("Failed to decode pdu\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
message->direction = pdu_p->present;
|
||||
|
||||
switch(pdu_p->present) {
|
||||
case F1AP_F1AP_PDU_PR_initiatingMessage:
|
||||
return f1ap_decode_initiating_message(message,
|
||||
&pdu_p->choice.initiatingMessage);
|
||||
|
||||
case F1AP_F1AP_PDU_PR_successfulOutcome:
|
||||
return f1ap_decode_successful_outcome(message,
|
||||
&pdu_p->choice.successfulOutcome);
|
||||
|
||||
case F1AP_F1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return f1ap_decode_unsuccessful_outcome(message,
|
||||
&pdu_p->choice.unsuccessfulOutcome);
|
||||
|
||||
default:
|
||||
F1AP_DEBUG("Unknown presence (%d) or not implemented\n", (int)pdu_p->present);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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 f1ap_decoder.h
|
||||
* \brief f1ap pdu decode procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "f1ap_ies_defs.h"
|
||||
|
||||
#ifndef F1AP_DECODER_H_
|
||||
#define F1AP_DECODER_H_
|
||||
|
||||
int f1ap_decode_pdu(f1ap_message *message, const uint8_t * const buffer,
|
||||
const uint32_t length) __attribute__ ((warn_unused_result));
|
||||
|
||||
#endif /* F1AP_DECODER_H_ */
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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 f1ap_default_values.h
|
||||
* \brief default values for f1ap procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#ifndef F1AP_DEFAULT_VALUES_H_
|
||||
#define F1AP_DEFAULT_VALUES_H_
|
||||
|
||||
#define ENB_TAC (1)
|
||||
#define ENB_MCC (208)
|
||||
#define ENB_MNC (92)
|
||||
|
||||
#define ENB_NAME "Eurecom ENB"
|
||||
#define ENB_NAME_FORMAT (ENB_NAME" %u")
|
||||
|
||||
#define F1AP_PORT_NUMBER (3642)
|
||||
#define F1AP_SCTP_PPID (62)
|
||||
|
||||
#endif /* F1AP_DEFAULT_VALUES_H_ */
|
||||
@@ -0,0 +1,382 @@
|
||||
/*
|
||||
* 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 f1ap_encoder.c
|
||||
* \brief f1ap pdu encode procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "assertions.h"
|
||||
|
||||
#include "conversions.h"
|
||||
|
||||
#include "intertask_interface.h"
|
||||
|
||||
#include "f1ap_common.h"
|
||||
#include "f1ap_ies_defs.h"
|
||||
#include "f1ap_encoder.h"
|
||||
|
||||
static inline int f1ap_encode_initiating(f1ap_message *message,
|
||||
uint8_t **buffer,
|
||||
uint32_t *len);
|
||||
|
||||
static inline int f1ap_encode_successfull_outcome(f1ap_message *message,
|
||||
uint8_t **buffer, uint32_t *len);
|
||||
|
||||
static inline int f1ap_encode_unsuccessfull_outcome(f1ap_message *message,
|
||||
uint8_t **buffer, uint32_t *len);
|
||||
|
||||
static inline int f1ap_encode_f1_setup_request(
|
||||
F1ap_F1SetupRequestIEs_t *f1SetupRequestIEs, uint8_t **buffer, uint32_t *length);
|
||||
|
||||
static inline int f1ap_encode_trace_failure(F1ap_TraceFailureIndicationIEs_t
|
||||
*trace_failure_ies_p, uint8_t **buffer,
|
||||
uint32_t *length);
|
||||
|
||||
static inline int f1ap_encode_initial_context_setup_response(
|
||||
F1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length);
|
||||
|
||||
static inline
|
||||
int f1ap_encode_ue_context_release_complete(
|
||||
F1ap_UEContextReleaseCompleteIEs_t *f1ap_UEContextReleaseCompleteIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length);
|
||||
|
||||
static inline
|
||||
int f1ap_encode_ue_context_release_request(
|
||||
F1ap_UEContextReleaseRequestIEs_t *f1ap_UEContextReleaseRequestIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length);
|
||||
|
||||
int f1ap_encode_pdu(f1ap_message *message, uint8_t **buffer, uint32_t *len)
|
||||
{
|
||||
DevAssert(message != NULL);
|
||||
DevAssert(buffer != NULL);
|
||||
DevAssert(len != NULL);
|
||||
|
||||
switch(message->direction) { // Need Check (present)?
|
||||
case F1AP_F1AP_PDU_PR_initiatingMessage:
|
||||
return f1ap_encode_initiating(message, buffer, len);
|
||||
|
||||
case F1AP_F1AP_PDU_PR_successfulOutcome:
|
||||
return f1ap_encode_successfull_outcome(message, buffer, len);
|
||||
|
||||
case F1AP_F1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return f1ap_encode_unsuccessfull_outcome(message, buffer, len);
|
||||
|
||||
default:
|
||||
F1AP_DEBUG("Unknown message outcome (%d) or not implemented",
|
||||
(int)message->direction);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_initiating(f1ap_message *f1ap_message_p,
|
||||
uint8_t **buffer, uint32_t *len)
|
||||
{
|
||||
int ret = -1;
|
||||
MessageDef *message_p;
|
||||
char *message_string = NULL;
|
||||
size_t message_string_size;
|
||||
MessagesIds message_id;
|
||||
|
||||
DevAssert(f1ap_message_p != NULL);
|
||||
|
||||
message_string = calloc(10000, sizeof(char));
|
||||
|
||||
f1ap_string_total_size = 0;
|
||||
|
||||
switch(f1ap_message_p->procedureCode) {
|
||||
case F1ap_ProcedureCode_id_F1Setup:
|
||||
ret = f1ap_encode_f1_setup_request(
|
||||
&f1ap_message_p->msg.f1ap_F1SetupRequestIEs, buffer, len);
|
||||
//f1ap_xer_print_f1ap_f1setuprequest(f1ap_xer__print2sp, message_string, f1ap_message_p);
|
||||
message_id = F1AP_F1_SETUP_LOG;
|
||||
break;
|
||||
|
||||
case F1ap_ProcedureCode_id_UEContextReleaseRequest:
|
||||
ret = f1ap_encode_ue_context_release_request(
|
||||
&f1ap_message_p->msg.f1ap_UEContextReleaseRequestIEs, buffer, len);
|
||||
//f1ap_xer_print_f1ap_uecontextreleaserequest(f1ap_xer__print2sp,
|
||||
// message_string, f1ap_message_p);
|
||||
message_id = F1AP_UE_CONTEXT_RELEASE_REQ_LOG;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
F1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
|
||||
(int)f1ap_message_p->procedureCode);
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
|
||||
message_string_size = strlen(message_string);
|
||||
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP, message_id, message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_f1_setup_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_f1_setup_log.text, message_string, message_string_size);
|
||||
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
|
||||
free(message_string);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_successfull_outcome(f1ap_message *f1ap_message_p,
|
||||
uint8_t **buffer, uint32_t *len)
|
||||
{
|
||||
int ret = -1;
|
||||
MessageDef *message_p;
|
||||
char *message_string = NULL;
|
||||
size_t message_string_size;
|
||||
MessagesIds message_id;
|
||||
|
||||
DevAssert(f1ap_message_p != NULL);
|
||||
|
||||
message_string = calloc(10000, sizeof(char));
|
||||
|
||||
f1ap_string_total_size = 0;
|
||||
message_string_size = strlen(message_string);
|
||||
|
||||
|
||||
switch(f1ap_message_p->procedureCode) {
|
||||
case F1ap_ProcedureCode_id_InitialContextSetup:
|
||||
ret = f1ap_encode_initial_context_setup_response(
|
||||
&f1ap_message_p->msg.f1ap_InitialContextSetupResponseIEs, buffer, len);
|
||||
|
||||
f1ap_xer_print_f1ap_initialcontextsetupresponse(f1ap_xer__print2sp, message_string, f1ap_message_p);
|
||||
message_id = F1AP_INITIAL_CONTEXT_SETUP_LOG;
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP, message_id, message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_initial_context_setup_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_initial_context_setup_log.text, message_string, message_string_size);
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
free(message_string);
|
||||
break;
|
||||
|
||||
case F1ap_ProcedureCode_id_UEContextRelease:
|
||||
ret = f1ap_encode_ue_context_release_complete(
|
||||
&f1ap_message_p->msg.f1ap_UEContextReleaseCompleteIEs, buffer, len);
|
||||
f1ap_xer_print_f1ap_uecontextreleasecomplete(f1ap_xer__print2sp, message_string, f1ap_message_p);
|
||||
message_id = F1AP_UE_CONTEXT_RELEASE_COMPLETE_LOG;
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP, message_id, message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_ue_context_release_complete_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_ue_context_release_complete_log.text, message_string, message_string_size);
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
free(message_string);
|
||||
break;
|
||||
|
||||
default:
|
||||
F1AP_WARN("Unknown procedure ID (%d) for successfull outcome message\n",
|
||||
(int)f1ap_message_p->procedureCode);
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_unsuccessfull_outcome(f1ap_message *f1ap_message_p,
|
||||
uint8_t **buffer, uint32_t *len)
|
||||
{
|
||||
int ret = -1;
|
||||
MessageDef *message_p;
|
||||
char *message_string = NULL;
|
||||
size_t message_string_size;
|
||||
MessagesIds message_id;
|
||||
|
||||
DevAssert(f1ap_message_p != NULL);
|
||||
|
||||
message_string = calloc(10000, sizeof(char));
|
||||
|
||||
f1ap_string_total_size = 0;
|
||||
|
||||
switch(f1ap_message_p->procedureCode) {
|
||||
case F1ap_ProcedureCode_id_InitialContextSetup:
|
||||
// ret = f1ap_encode_f1ap_initialcontextsetupfailureies(
|
||||
// &f1ap_message_p->ittiMsg.f1ap_InitialContextSetupFailureIEs, buffer, len);
|
||||
f1ap_xer_print_f1ap_initialcontextsetupfailure(f1ap_xer__print2sp, message_string, f1ap_message_p);
|
||||
message_id = F1AP_INITIAL_CONTEXT_SETUP_LOG;
|
||||
break;
|
||||
|
||||
default:
|
||||
F1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
||||
(int)f1ap_message_p->procedureCode);
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
|
||||
message_string_size = strlen(message_string);
|
||||
|
||||
message_p = itti_alloc_new_message_sized(TASK_F1AP, message_id, message_string_size + sizeof (IttiMsgText));
|
||||
message_p->ittiMsg.f1ap_initial_context_setup_log.size = message_string_size;
|
||||
memcpy(&message_p->ittiMsg.f1ap_initial_context_setup_log.text, message_string, message_string_size);
|
||||
|
||||
itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
|
||||
|
||||
free(message_string);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_f1_setup_request(
|
||||
F1ap_F1SetupRequestIEs_t *f1SetupRequestIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length)
|
||||
{
|
||||
F1ap_F1SetupRequest_t f1SetupRequest;
|
||||
F1ap_F1SetupRequest_t *f1SetupRequest_p = &f1SetupRequest;
|
||||
|
||||
memset((void *)f1SetupRequest_p, 0, sizeof(f1SetupRequest));
|
||||
|
||||
if (f1ap_encode_f1ap_f1setuprequesties(f1SetupRequest_p, f1SetupRequestIEs) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return f1ap_generate_initiating_message(buffer,
|
||||
length,
|
||||
F1ap_ProcedureCode_id_F1Setup,
|
||||
F1ap_Criticality_reject,
|
||||
&asn_DEF_F1ap_F1SetupRequest,
|
||||
f1SetupRequest_p);
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_trace_failure(
|
||||
F1ap_TraceFailureIndicationIEs_t *trace_failure_ies_p,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length)
|
||||
{
|
||||
F1ap_TraceFailureIndication_t trace_failure;
|
||||
F1ap_TraceFailureIndication_t *trace_failure_p = &trace_failure;
|
||||
|
||||
memset((void *)trace_failure_p, 0, sizeof(trace_failure));
|
||||
|
||||
if (f1ap_encode_f1ap_tracefailureindicationies(
|
||||
trace_failure_p, trace_failure_ies_p) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return f1ap_generate_initiating_message(buffer,
|
||||
length,
|
||||
F1ap_ProcedureCode_id_TraceFailureIndication,
|
||||
F1ap_Criticality_reject,
|
||||
&asn_DEF_F1ap_TraceFailureIndication,
|
||||
trace_failure_p);
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_initial_context_setup_response(
|
||||
F1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length)
|
||||
{
|
||||
F1ap_InitialContextSetupResponse_t initial_context_setup_response;
|
||||
F1ap_InitialContextSetupResponse_t *initial_context_setup_response_p =
|
||||
&initial_context_setup_response;
|
||||
|
||||
memset((void *)initial_context_setup_response_p, 0,
|
||||
sizeof(initial_context_setup_response));
|
||||
|
||||
if (f1ap_encode_f1ap_initialcontextsetupresponseies(
|
||||
initial_context_setup_response_p, initialContextSetupResponseIEs) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return f1ap_generate_successfull_outcome(buffer,
|
||||
length,
|
||||
F1ap_ProcedureCode_id_InitialContextSetup,
|
||||
F1ap_Criticality_reject,
|
||||
&asn_DEF_F1ap_InitialContextSetupResponse,
|
||||
initial_context_setup_response_p);
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_ue_context_release_complete(
|
||||
F1ap_UEContextReleaseCompleteIEs_t *f1ap_UEContextReleaseCompleteIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length)
|
||||
{
|
||||
F1ap_UEContextReleaseComplete_t ue_context_release_complete;
|
||||
F1ap_UEContextReleaseComplete_t *ue_context_release_complete_p =
|
||||
&ue_context_release_complete;
|
||||
|
||||
memset((void *)ue_context_release_complete_p, 0,
|
||||
sizeof(ue_context_release_complete));
|
||||
|
||||
if (f1ap_encode_f1ap_uecontextreleasecompleteies(
|
||||
ue_context_release_complete_p, f1ap_UEContextReleaseCompleteIEs) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return f1ap_generate_successfull_outcome(buffer,
|
||||
length,
|
||||
F1ap_ProcedureCode_id_UEContextRelease,
|
||||
F1ap_Criticality_reject,
|
||||
&asn_DEF_F1ap_UEContextReleaseComplete,
|
||||
ue_context_release_complete_p);
|
||||
}
|
||||
|
||||
static inline
|
||||
int f1ap_encode_ue_context_release_request(
|
||||
F1ap_UEContextReleaseRequestIEs_t *f1ap_UEContextReleaseRequestIEs,
|
||||
uint8_t **buffer,
|
||||
uint32_t *length)
|
||||
{
|
||||
F1ap_UEContextReleaseRequest_t ue_context_release_request;
|
||||
F1ap_UEContextReleaseRequest_t *ue_context_release_request_p =
|
||||
&ue_context_release_request;
|
||||
|
||||
memset((void *)ue_context_release_request_p, 0,
|
||||
sizeof(ue_context_release_request));
|
||||
|
||||
if (f1ap_encode_f1ap_uecontextreleaserequesties(
|
||||
ue_context_release_request_p, f1ap_UEContextReleaseRequestIEs) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return f1ap_generate_initiating_message(buffer,
|
||||
length,
|
||||
F1ap_ProcedureCode_id_UEContextReleaseRequest,
|
||||
F1ap_Criticality_reject,
|
||||
&asn_DEF_F1ap_UEContextReleaseRequest,
|
||||
ue_context_release_request_p);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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 f1ap_encoder.h
|
||||
* \brief f1ap pdu encode procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#ifndef F1AP_ENCODER_H_
|
||||
#define F1AP_ENCODER_H_
|
||||
|
||||
int f1ap_encode_pdu(f1ap_message *message, uint8_t **buffer, uint32_t *len)
|
||||
__attribute__ ((warn_unused_result));
|
||||
|
||||
#endif /* F1AP_ENCODER_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 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 f1ap_handlers.h
|
||||
* \brief f1ap messages handlers
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#ifndef F1AP_HANDLERS_H_
|
||||
#define F1AP_HANDLERS_H_
|
||||
|
||||
void f1ap_handle_f1_setup_message(f1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown);
|
||||
|
||||
int f1ap_handle_message(uint32_t assoc_id, int32_t stream,
|
||||
const uint8_t * const data, const uint32_t data_length);
|
||||
|
||||
#endif /* F1AP_HANDLERS_H_ */
|
||||
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* 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 f1ap_messaging.c
|
||||
* \brief f1ap procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
|
||||
#include "intertask_interface.h"
|
||||
|
||||
#include "f1ap_messaging.h"
|
||||
|
||||
void f1ap_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
|
||||
uint32_t buffer_length, uint16_t stream)
|
||||
{
|
||||
MessageDef *message_p;
|
||||
sctp_data_req_t *sctp_data_req;
|
||||
|
||||
message_p = itti_alloc_new_message(TASK_F1AP, SCTP_DATA_REQ);
|
||||
|
||||
sctp_data_req = &message_p->ittiMsg.sctp_data_req;
|
||||
|
||||
sctp_data_req->assoc_id = assoc_id;
|
||||
sctp_data_req->buffer = buffer;
|
||||
sctp_data_req->buffer_length = buffer_length;
|
||||
sctp_data_req->stream = stream;
|
||||
|
||||
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
|
||||
}
|
||||
|
||||
void f1ap_send_nas_downlink_ind(instance_t instance,
|
||||
uint16_t ue_initial_id,
|
||||
uint32_t eNB_ue_s1ap_id,
|
||||
uint8_t *nas_pdu,
|
||||
uint32_t nas_pdu_length)
|
||||
{
|
||||
MessageDef *message_p;
|
||||
f1ap_downlink_nas_t *f1ap_downlink_nas;
|
||||
|
||||
message_p = itti_alloc_new_message(TASK_F1AP, F1AP_DOWNLINK_NAS);
|
||||
|
||||
f1ap_downlink_nas = &message_p->ittiMsg.f1ap_downlink_nas;
|
||||
|
||||
f1ap_downlink_nas->ue_initial_id = ue_initial_id;
|
||||
f1ap_downlink_nas->eNB_ue_s1ap_id = eNB_ue_f1ap_id;
|
||||
f1ap_downlink_nas->nas_pdu.buffer = nas_pdu;
|
||||
f1ap_downlink_nas->nas_pdu.length = nas_pdu_length;
|
||||
|
||||
itti_send_msg_to_task(TASK_RRC_ENB, instance, message_p);
|
||||
}
|
||||
|
||||
void f1ap_send_sctp_close_association(instance_t instance, int32_t assoc_id)
|
||||
{
|
||||
MessageDef *message_p = NULL;
|
||||
sctp_close_association_t *sctp_close_association_p = NULL;
|
||||
|
||||
message_p = itti_alloc_new_message(TASK_F1AP, SCTP_CLOSE_ASSOCIATION);
|
||||
sctp_close_association_p = &message_p->ittiMsg.sctp_close_association;
|
||||
sctp_close_association_p->assoc_id = assoc_id;
|
||||
|
||||
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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 f1ap_messaging.h
|
||||
* \brief f1ap procedures
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
|
||||
|
||||
#ifndef F1AP_MESSAGING_H_
|
||||
#define F1AP_MESSAGING_H_
|
||||
|
||||
void f1ap_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
|
||||
uint32_t buffer_length, uint16_t stream);
|
||||
|
||||
void f1ap_send_nas_downlink_ind(instance_t instance,
|
||||
uint16_t ue_initial_id,
|
||||
uint32_t eNB_ue_f1ap_id,
|
||||
uint8_t *nas_pdu,
|
||||
uint32_t nas_pdu_length);
|
||||
|
||||
void f1ap_send_sctp_close_association(instance_t instance,
|
||||
int32_t assoc_id);
|
||||
|
||||
|
||||
#endif /* F1AP_MESSAGING_H_ */
|
||||
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
* 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 sctp_server.c
|
||||
* \brief sctp server procedures for f1ap
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/sctp.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <pthread.h>
|
||||
#include <unistd.h> // for close
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAX_BUFFER 1024
|
||||
|
||||
/* server */
|
||||
|
||||
int sfd, cfd, len, flags;
|
||||
struct sctp_sndrcvinfo sndrcvinfo;
|
||||
struct sockaddr_in saddr, caddr;
|
||||
struct sctp_initmsg initmsg;
|
||||
uint8_t buff[INET_ADDRSTRLEN];
|
||||
|
||||
void send_func(int cfd) {
|
||||
uint8_t buffer_send[MAX_BUFFER+1];
|
||||
/* Changing 9th character the character after # in the message buffer */
|
||||
buffer_send[0] = rand();
|
||||
sctp_sendmsg( cfd, (void *)buffer_send, (size_t)strlen(buffer_send),
|
||||
NULL, 0, htons(62), 0, 1 /* stream */, 0, 0 );
|
||||
printf("S - Sent: %s\n", buffer_send);
|
||||
}
|
||||
|
||||
void *recv_func(void *cfd) {
|
||||
int ret;
|
||||
uint8_t buffer_recv[MAX_BUFFER+1];
|
||||
|
||||
//recv message
|
||||
bzero( (void *)&buffer_recv, sizeof(buffer_recv) );
|
||||
while(ret = sctp_recvmsg( *(int*)cfd, (void *)buffer_recv, sizeof(buffer_recv),
|
||||
(struct sockaddr *)NULL, 0, &sndrcvinfo, &flags )) {
|
||||
//send_func(*(int*)cfd);
|
||||
//printf("S - cfd = %d\n", *(int*)cfd);
|
||||
printf("S - Received following data on ppid %d, data is: %x\n",
|
||||
sndrcvinfo.sinfo_ppid, buffer_recv);
|
||||
printf("S - Received following data on stream %d, data is: \n", sndrcvinfo.sinfo_stream);
|
||||
|
||||
int i_ret;
|
||||
for (i_ret = 0; i_ret < sizeof(buffer_recv); i_ret++) {
|
||||
printf("%x ", *(buffer_recv+i_ret));
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
f1ap_decode_pdu(NULL , buffer_recv, sizeof(buffer_recv));
|
||||
}
|
||||
printf("ret = %d\n", ret);
|
||||
close( *(int*)cfd );
|
||||
}
|
||||
|
||||
int sctp_cu_init() {
|
||||
pthread_t threads;
|
||||
printf("S - Waiting for socket_accept\n");
|
||||
|
||||
sfd = socket( AF_INET, SOCK_STREAM, IPPROTO_SCTP );
|
||||
bzero( (void *)&saddr, sizeof(saddr) );
|
||||
saddr.sin_family = AF_INET;
|
||||
saddr.sin_addr.s_addr = htonl( INADDR_ANY );
|
||||
saddr.sin_port = htons(29008);
|
||||
|
||||
bind( sfd, (struct sockaddr *)&saddr, sizeof(saddr) );
|
||||
|
||||
/* Maximum of 3 streams will be available per socket */
|
||||
memset( &initmsg, 0, sizeof(initmsg) );
|
||||
initmsg.sinit_num_ostreams = 3;
|
||||
initmsg.sinit_max_instreams = 3;
|
||||
initmsg.sinit_max_attempts = 2;
|
||||
setsockopt( sfd, IPPROTO_SCTP, SCTP_INITMSG,
|
||||
&initmsg, sizeof(initmsg) );
|
||||
|
||||
listen( sfd, 5 );
|
||||
|
||||
while(cfd=accept(sfd, (struct sockaddr *)&caddr, (socklen_t*)&caddr)) {
|
||||
printf("-------- S - Connected to %s\n",
|
||||
inet_ntop(AF_INET, &caddr.sin_addr, buff,
|
||||
sizeof(buff)));
|
||||
int *thread_args = malloc(sizeof(int));
|
||||
*thread_args = cfd;
|
||||
pthread_create(&threads, NULL, recv_func, thread_args);
|
||||
}
|
||||
|
||||
printf("S - close\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
* 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 sctp_client.c
|
||||
* \brief sctp client procedures for f1ap
|
||||
* \author EURECOM/NTUST
|
||||
* \date 2018
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/sctp.h>
|
||||
#include <pthread.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <unistd.h> // for close
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAX_BUFFER 1024
|
||||
#define NUM_THREADS 1
|
||||
|
||||
int cfd, i, flags, ret;
|
||||
struct sockaddr_in saddr;
|
||||
struct sctp_sndrcvinfo sndrcvinfo;
|
||||
struct sctp_event_subscribe events;
|
||||
struct sctp_initmsg initmsg;
|
||||
uint8_t buffer_send[MAX_BUFFER+1];
|
||||
uint8_t buffer_recv[MAX_BUFFER+1];
|
||||
|
||||
void f1ap_du_send_message(uint8_t *buffer_send, uint32_t length)
|
||||
{
|
||||
/* Changing 9th character the character after # in the message buffer */
|
||||
//while (1) {
|
||||
//buffer_send[0] = rand();
|
||||
sctp_sendmsg( cfd, (void *)buffer_send, length,
|
||||
NULL, 0, htonl(62), 0, 1 /* stream */, 0, 0 );
|
||||
printf("C - Sent: ");
|
||||
|
||||
int i_ret;
|
||||
for (i_ret = 0; i_ret < length; i_ret++) {
|
||||
printf("%x ", *(buffer_send+i_ret));
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
//}
|
||||
}
|
||||
|
||||
/* for test*/
|
||||
void *send_func(void *argument)
|
||||
{
|
||||
/* Changing 9th character the character after # in the message buffer */
|
||||
while (1) {
|
||||
buffer_send[0] = rand();
|
||||
sctp_sendmsg( cfd, (void *)buffer_send, (size_t)strlen(buffer_send),
|
||||
NULL, 0, 0, 0, 1 /* stream */, 0, 0 );
|
||||
printf("C - Sent: %s\n", buffer_send);
|
||||
}
|
||||
}
|
||||
|
||||
void *recv_func(void *argument)
|
||||
{
|
||||
bzero( (void *)&buffer_recv, sizeof(buffer_recv) );
|
||||
|
||||
while(ret = sctp_recvmsg( cfd, (void *)buffer_recv, sizeof(buffer_recv),
|
||||
(struct sockaddr *)NULL, 0, &sndrcvinfo, &flags )) {
|
||||
|
||||
printf("C - Received following data on stream %d, data is: %s\n",
|
||||
sndrcvinfo.sinfo_stream, buffer_recv);
|
||||
}
|
||||
close(cfd);
|
||||
printf("C - close\n");
|
||||
}
|
||||
|
||||
int sctp_du_init()
|
||||
{
|
||||
pthread_t threads[NUM_THREADS];
|
||||
|
||||
char *ipadd;
|
||||
ipadd = "127.0.0.1";
|
||||
printf("Use default ipaddress %s \n", ipadd);
|
||||
|
||||
cfd = socket( AF_INET, SOCK_STREAM, IPPROTO_SCTP );
|
||||
|
||||
/* Specify that a maximum of 3 streams will be available per socket */
|
||||
memset( &initmsg, 0, sizeof(initmsg) );
|
||||
initmsg.sinit_num_ostreams = 3;
|
||||
initmsg.sinit_max_instreams = 3;
|
||||
initmsg.sinit_max_attempts = 2;
|
||||
setsockopt( cfd, IPPROTO_SCTP, SCTP_INITMSG,
|
||||
&initmsg, sizeof(initmsg) );
|
||||
|
||||
bzero( (void *)&saddr, sizeof(saddr) );
|
||||
saddr.sin_family = AF_INET;
|
||||
inet_pton(AF_INET, ipadd, &saddr.sin_addr);
|
||||
saddr.sin_port = htons(29008);
|
||||
|
||||
int ret;
|
||||
ret = connect( cfd, (struct sockaddr *)&saddr, sizeof(saddr) );
|
||||
if (ret == -1) {
|
||||
printf("C - Not founded Server, close\n");
|
||||
return 0;
|
||||
}
|
||||
memset( (void *)&events, 0, sizeof(events) );
|
||||
events.sctp_data_io_event = 1;
|
||||
setsockopt( cfd, SOL_SCTP, SCTP_EVENTS,
|
||||
(const void *)&events, sizeof(events) );
|
||||
|
||||
/* Sending three messages on different streams */
|
||||
// send message
|
||||
//pthread_create(&threads[0], NULL, send_func, (void *)0);
|
||||
|
||||
pthread_create(&threads[0], NULL, recv_func, (void *)0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
/* Test */
|
||||
void CU_handle_F1_SETUP_REQUEST(void);
|
||||
/**/
|
||||
|
||||
int main(void) {
|
||||
/* Test */
|
||||
F1AP_CU_task();
|
||||
//CU_handle_F1_SETUP_REQUEST();
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
int main(void) {
|
||||
F1AP_DU_task();
|
||||
return 0;
|
||||
}
|
||||
@@ -251,6 +251,37 @@ do { \
|
||||
+ pLMN.MNCdigit2 * 10 + pLMN.MNCdigit1; \
|
||||
} while(0)
|
||||
|
||||
|
||||
/* TS 38.473 v15.1.1 section 9.3.2.1:
|
||||
* NR CELL ID
|
||||
*/
|
||||
#define TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(mACRO, bITsTRING) \
|
||||
do { \
|
||||
(bITsTRING)->buf = calloc(5, sizeof(uint8_t)); \
|
||||
(bITsTRING)->buf[0] = (mACRO) >> 28; \
|
||||
(bITsTRING)->buf[1] = (mACRO) >> 20; \
|
||||
(bITsTRING)->buf[2] = (mACRO) >> 12; \
|
||||
(bITsTRING)->buf[3] = (mACRO) >> 4; \
|
||||
(bITsTRING)->buf[4] = ((mACRO) & 0x0f) << 4; \
|
||||
(bITsTRING)->size = 5; \
|
||||
(bITsTRING)->bits_unused = 4; \
|
||||
} while(0)
|
||||
|
||||
/* TS 38.473 v15.1.1 section 9.3.1.12:
|
||||
* NR CELL ID
|
||||
*/
|
||||
#define NR_CELL_ID_TO_BIT_STRING(mACRO, bITsTRING) \
|
||||
do { \
|
||||
(bITsTRING)->buf = calloc(5, sizeof(uint8_t)); \
|
||||
(bITsTRING)->buf[0] = (mACRO) >> 28; \
|
||||
(bITsTRING)->buf[1] = (mACRO) >> 20; \
|
||||
(bITsTRING)->buf[2] = (mACRO) >> 12; \
|
||||
(bITsTRING)->buf[3] = (mACRO) >> 4; \
|
||||
(bITsTRING)->buf[4] = ((mACRO) & 0x0f) << 4; \
|
||||
(bITsTRING)->size = 5; \
|
||||
(bITsTRING)->bits_unused = 4; \
|
||||
} while(0)
|
||||
|
||||
/* TS 36.413 v10.9.0 section 9.2.1.37:
|
||||
* Macro eNB ID:
|
||||
* Equal to the 20 leftmost bits of the Cell
|
||||
|
||||
Reference in New Issue
Block a user