diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index bb70757e3e..53d461cbec 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -543,6 +543,7 @@ add_library(F1AP #${F1AP_DIR}/test.c ${F1AP_DIR}/DU_F1AP.c ${F1AP_DIR}/CU_F1AP.c + ${F1AP_DIR}/f1ap_encoder.c ${F1AP_DIR}/f1ap_decoder.c ${F1AP_DIR}/f1ap_handlers.c ${F1AP_DIR}/sctp_du.c diff --git a/openair2/F1AP/CU_F1AP.c b/openair2/F1AP/CU_F1AP.c index a3dac96635..c0bdeaf1a2 100644 --- a/openair2/F1AP/CU_F1AP.c +++ b/openair2/F1AP/CU_F1AP.c @@ -334,46 +334,6 @@ void CU_send_F1_SETUP_RESPONSE(void) { } -int f1ap_encode_pdu(F1AP_F1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *length) { - DevAssert(pdu != NULL); - DevAssert(buffer != NULL); - DevAssert(length != NULL); - - - xer_fprint(stdout, &asn_DEF_F1AP_F1AP_PDU, pdu); - - - ssize_t encoded; - - // asn_DEF_F1AP_F1SetupRequest - // asn_DEF_F1AP_F1AP_PDU - - /* We can safely free list of IE from sptr */ - //ASN_STRUCT_FREE_CONTENTS_ONLY(&asn_DEF_F1AP_F1SetupRequest, pdu); - - - if ((encoded = aper_encode_to_new_buffer(&asn_DEF_F1AP_F1AP_PDU, 0, - pdu, - - (void **)buffer)) < 0) { - printf("\nencoded len = %ld\n", encoded); - return -1; - } - - printf("encoded len = %ld\n", encoded); - printf("buffer = \n"); - - int i_ret; - for (i_ret = 0; i_ret < encoded; i_ret++) { - printf("%x ", *((*buffer)+i_ret)); - } - printf("\n"); - *length = encoded; - // ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_F1AP_F1AP_PDU, pdu); - return encoded; -} - - // int f1ap_decode_pdu(F1AP_F1AP_PDU_t *message, uint8_t *buffer, uint32_t length) { // //LOG_I(F1AP,"Entering main loop of DU F1AP pdu receiver\n"); diff --git a/openair2/F1AP/DU_F1AP.c b/openair2/F1AP/DU_F1AP.c index f16b876b0e..359a2b9415 100644 --- a/openair2/F1AP/DU_F1AP.c +++ b/openair2/F1AP/DU_F1AP.c @@ -33,6 +33,8 @@ #include "conversions.h" #include "f1ap_common.h" #include "du_f1ap_defs.h" +#include "f1ap_encoder.h" +#include "f1ap_decoder.h" #include "platform_types.h" #include "common/utils/LOG/log.h" #include "sctp_du.h" @@ -506,47 +508,6 @@ void DU_send_F1_SETUP_REQUEST(module_id_t enb_mod_idP, module_id_t du_mod_idP, f } -// ============================================================================== - -int f1ap_encode_pdu(F1AP_F1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *length) { - DevAssert(pdu != NULL); - DevAssert(buffer != NULL); - DevAssert(length != NULL); - - - xer_fprint(stdout, &asn_DEF_F1AP_F1AP_PDU, pdu); - - - ssize_t encoded; - - // asn_DEF_F1AP_F1SetupRequest - // asn_DEF_F1AP_F1AP_PDU - - /* We can safely free list of IE from sptr */ - //ASN_STRUCT_FREE_CONTENTS_ONLY(&asn_DEF_F1AP_F1SetupRequest, pdu); - - - if ((encoded = aper_encode_to_new_buffer(&asn_DEF_F1AP_F1AP_PDU, 0, - pdu, - (void **)buffer)) < 0) { - printf("encoded len = %ld\n", encoded); - return -1; - } - - printf("encoded len = %ld\n", encoded); - printf("buffer = \n"); - - int i_ret; - for (i_ret = 0; i_ret < encoded; i_ret++) { - printf("%x ", *((*buffer)+i_ret)); - } - printf("\n"); - *length = encoded; - //ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_F1AP_F1AP_PDU, pdu); - return encoded; -} - - // int f1ap_decode_pdu(F1AP_F1AP_PDU_t *message, uint8_t *buffer, uint32_t length) { // //LOG_I(F1AP,"Entering main loop of DU F1AP pdu receiver\n"); diff --git a/openair2/F1AP/f1ap_encoder.c b/openair2/F1AP/f1ap_encoder.c index 58be896eae..bc2304b656 100644 --- a/openair2/F1AP/f1ap_encoder.c +++ b/openair2/F1AP/f1ap_encoder.c @@ -41,9 +41,9 @@ #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); @@ -77,32 +77,29 @@ 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) +int f1ap_encode_pdu(F1AP_F1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *length) { - DevAssert(message != NULL); + ssize_t encoded; + DevAssert(pdu != NULL); DevAssert(buffer != NULL); - DevAssert(len != NULL); + DevAssert(length != NULL); - switch(message->direction) { // Need Check (present)? - case F1AP_F1AP_PDU_PR_initiatingMessage: - return f1ap_encode_initiating(message, buffer, len); + //xer_fprint(stdout, &asn_DEF_F1AP_F1AP_PDU, pdu); + encoded = aper_encode_to_new_buffer(&asn_DEF_F1AP_F1AP_PDU, 0, pdu, (void **)buffer); - 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; + if (encoded < 0) { + LOG_E(F1AP, "Failed to encode F1AP message\n"); + return -1; } - - return -1; + *length = encoded; + /* Is the following needed? I moved the code here from CU_F1AP.c/DU_F1AP.c */ + // ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_F1AP_F1AP_PDU, pdu); + return encoded; } +/* static inline int f1ap_encode_initiating(f1ap_message *f1ap_message_p, uint8_t **buffer, uint32_t *len) @@ -379,4 +376,4 @@ int f1ap_encode_ue_context_release_request( &asn_DEF_F1ap_UEContextReleaseRequest, ue_context_release_request_p); } - +*/