encoder message print is added

This commit is contained in:
Sukchan Lee 2017-02-10 22:16:22 +09:00
parent 32db40e300
commit 93fe0f7704
4 changed files with 81 additions and 30 deletions

View File

@ -1,6 +1,7 @@
#define TRACE_MODULE _s1dec
#include "core_debug.h"
#include "core_lib.h"
#include "s1ap_codecs.h"
static int s1ap_decode_initiating(s1ap_message *message,
@ -10,7 +11,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
S1ap_UnsuccessfulOutcome_t *unSuccessfulOutcome_p);
static void s1ap_xer_print_message(
static void s1ap_decode_xer_print_message(
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
void *app_key, s1ap_message *message_p),
asn_app_consume_bytes_f *cb, s1ap_message *message_p);
@ -81,7 +82,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
ret = s1ap_decode_s1ap_uplinknastransport_ies(
&message->msg.s1ap_UplinkNASTransport_IEs,
&initiating_p->value);
s1ap_xer_print_message(s1ap_xer_print_s1ap_uplinknastransport,
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_uplinknastransport,
s1ap_xer__print2sp, message);
break;
@ -89,7 +90,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
ret = s1ap_decode_s1ap_s1setuprequesties(
&message->msg.s1ap_S1SetupRequestIEs,
&initiating_p->value);
s1ap_xer_print_message(s1ap_xer_print_s1ap_s1setuprequest,
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_s1setuprequest,
s1ap_xer__print2sp, message);
break;
@ -97,14 +98,14 @@ static int s1ap_decode_initiating(s1ap_message *message,
ret = s1ap_decode_s1ap_initialuemessage_ies(
&message->msg.s1ap_InitialUEMessage_IEs,
&initiating_p->value);
s1ap_xer_print_message(s1ap_xer_print_s1ap_initialuemessage,
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_initialuemessage,
s1ap_xer__print2sp, message);
break;
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
ret = s1ap_decode_s1ap_uecontextreleaserequest_ies(
&message->msg.s1ap_UEContextReleaseRequest_IEs, &initiating_p->value);
s1ap_xer_print_message(s1ap_xer_print_s1ap_uecontextreleaserequest,
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_uecontextreleaserequest,
s1ap_xer__print2sp, message);
break;
@ -112,7 +113,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
ret = s1ap_decode_s1ap_uecapabilityinfoindicationies(
&message->msg.s1ap_UECapabilityInfoIndicationIEs,
&initiating_p->value);
s1ap_xer_print_message(
s1ap_decode_xer_print_message(
s1ap_xer_print_s1ap_uecapabilityinfoindication,
s1ap_xer__print2sp, message);
break;
@ -121,7 +122,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
ret = s1ap_decode_s1ap_nasnondeliveryindication_ies(
&message->msg.s1ap_NASNonDeliveryIndication_IEs,
&initiating_p->value);
s1ap_xer_print_message(s1ap_xer_print_s1ap_nasnondeliveryindication,
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_nasnondeliveryindication,
s1ap_xer__print2sp, message);
break;
@ -151,7 +152,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
ret = s1ap_decode_s1ap_initialcontextsetupresponseies(
&message->msg.s1ap_InitialContextSetupResponseIEs,
&successfullOutcome_p->value);
s1ap_xer_print_message(
s1ap_decode_xer_print_message(
s1ap_xer_print_s1ap_initialcontextsetupresponse,
s1ap_xer__print2sp, message);
break;
@ -160,7 +161,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
ret = s1ap_decode_s1ap_uecontextreleasecomplete_ies(
&message->msg.s1ap_UEContextReleaseComplete_IEs,
&successfullOutcome_p->value);
s1ap_xer_print_message(
s1ap_decode_xer_print_message(
s1ap_xer_print_s1ap_uecontextreleasecomplete,
s1ap_xer__print2sp, message);
break;
@ -188,7 +189,7 @@ static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
ret = s1ap_decode_s1ap_initialcontextsetupfailureies(
&message->msg.s1ap_InitialContextSetupFailureIEs,
&unSuccessfulOutcome_p->value);
s1ap_xer_print_message(
s1ap_decode_xer_print_message(
s1ap_xer_print_s1ap_initialcontextsetupfailure,
s1ap_xer__print2sp, message);
break;
@ -203,10 +204,9 @@ static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
return ret;
}
#define S1AP_MAX_MESSAGE_STRING 2048
static char s1ap_message_string[S1AP_MAX_MESSAGE_STRING];
static char s1ap_decode_message_string[HUGE_STRING_LEN];
static void s1ap_xer_print_message(
static void s1ap_decode_xer_print_message(
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
void *app_key, s1ap_message *message_p),
asn_app_consume_bytes_f *cb, s1ap_message *message_p)
@ -214,11 +214,11 @@ static void s1ap_xer_print_message(
if (g_trace_mask && TRACE_MODULE >= 3)
{
s1ap_string_total_size = 0;
memset(s1ap_message_string, 0, S1AP_MAX_MESSAGE_STRING);
memset(s1ap_decode_message_string, 0, HUGE_STRING_LEN);
func(cb, s1ap_message_string, message_p);
func(cb, s1ap_decode_message_string, message_p);
printf("%s\n", s1ap_message_string);
printf("%s\n", s1ap_decode_message_string);
}
}

View File

@ -1,6 +1,7 @@
#define TRACE_MODULE _s1enc
#include "core_debug.h"
#include "core_lib.h"
#include "s1ap_codecs.h"
static inline int s1ap_encode_initiating_message(
@ -23,6 +24,11 @@ static inline int s1ap_encode_downlink_nas_transport(
static inline int s1ap_encode_ue_context_release_command(
s1ap_message *message_p, pkbuf_t *pkbuf);
static void s1ap_encode_xer_print_message(
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
void *app_key, s1ap_message *message_p),
asn_app_consume_bytes_f *cb, s1ap_message *message_p);
int s1ap_encode_pdu(pkbuf_t **pkb, s1ap_message *message_p)
{
int encoded = -1;
@ -66,53 +72,76 @@ int s1ap_encode_pdu(pkbuf_t **pkb, s1ap_message *message_p)
static inline int s1ap_encode_initiating_message(
s1ap_message *message_p, pkbuf_t *pkbuf)
{
int ret = -1;
switch (message_p->procedureCode)
{
case S1ap_ProcedureCode_id_S1Setup:
return s1ap_encode_s1setup_request(message_p, pkbuf);
s1ap_encode_xer_print_message(
s1ap_xer_print_s1ap_s1setuprequest,
s1ap_xer__print2sp, message_p);
ret = s1ap_encode_s1setup_request(message_p, pkbuf);
break;
case S1ap_ProcedureCode_id_downlinkNASTransport:
return s1ap_encode_downlink_nas_transport(message_p, pkbuf);
s1ap_encode_xer_print_message(
s1ap_xer_print_s1ap_downlinknastransport,
s1ap_xer__print2sp, message_p);
ret = s1ap_encode_downlink_nas_transport(message_p, pkbuf);
break;
case S1ap_ProcedureCode_id_InitialContextSetup:
return s1ap_encode_initial_context_setup_request(message_p, pkbuf);
s1ap_encode_xer_print_message(
s1ap_xer_print_s1ap_initialcontextsetuprequest,
s1ap_xer__print2sp, message_p);
ret = s1ap_encode_initial_context_setup_request(message_p, pkbuf);
break;
case S1ap_ProcedureCode_id_UEContextRelease:
return s1ap_encode_ue_context_release_command(message_p, pkbuf);
s1ap_encode_xer_print_message(
s1ap_xer_print_s1ap_uecontextreleasecommand,
s1ap_xer__print2sp, message_p);
ret = s1ap_encode_ue_context_release_command(message_p, pkbuf);
break;
default:
d_warn("Unknown procedure ID (%d) for initiating message_p\n",
(int)message_p->procedureCode);
break;
}
return -1;
return ret;
}
static inline int s1ap_encode_successfull_outcome(
s1ap_message *message_p, pkbuf_t *pkbuf)
{
int ret = -1;
switch (message_p->procedureCode)
{
case S1ap_ProcedureCode_id_S1Setup:
return s1ap_encode_s1setup_response(message_p, pkbuf);
s1ap_encode_xer_print_message(
s1ap_xer_print_s1ap_s1setupresponse,
s1ap_xer__print2sp, message_p);
ret = s1ap_encode_s1setup_response(message_p, pkbuf);
break;
default:
d_warn("Unknown procedure ID (%d) for successfull "
"outcome message\n", (int)message_p->procedureCode);
break;
}
return -1;
return ret;
}
static inline int s1ap_encode_unsuccessfull_outcome(
s1ap_message *message_p, pkbuf_t *pkbuf)
{
int ret = -1;
switch (message_p->procedureCode)
{
case S1ap_ProcedureCode_id_S1Setup:
return s1ap_encode_s1setup_failure(message_p, pkbuf);
s1ap_encode_xer_print_message(
s1ap_xer_print_s1ap_s1setupfailure,
s1ap_xer__print2sp, message_p);
ret = s1ap_encode_s1setup_failure(message_p, pkbuf);
break;
default:
d_warn("Unknown procedure ID (%d) for unsuccessfull "
@ -120,7 +149,7 @@ static inline int s1ap_encode_unsuccessfull_outcome(
break;
}
return -1;
return ret;
}
static inline int s1ap_encode_initial_context_setup_request(
@ -353,3 +382,22 @@ static inline int s1ap_encode_ue_context_release_command(
return enc_ret.encoded;
}
static char s1ap_encode_message_string[HUGE_STRING_LEN];
static void s1ap_encode_xer_print_message(
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
void *app_key, s1ap_message *message_p),
asn_app_consume_bytes_f *cb, s1ap_message *message_p)
{
if (g_trace_mask && TRACE_MODULE >= 3)
{
s1ap_string_total_size = 0;
memset(s1ap_encode_message_string, 0, HUGE_STRING_LEN);
func(cb, s1ap_encode_message_string, message_p);
printf("%s\n", s1ap_encode_message_string);
}
}

1
main.c
View File

@ -234,6 +234,7 @@ int main(int argc, char *argv[])
}
show_version();
d_info("CellWire daemon start");
threads_start();

View File

@ -139,8 +139,10 @@ abts_suite *test_s1ap(abts_suite *suite)
{
suite = ADD_SUITE(suite)
{
extern int _s1enc;
extern int _s1dec;
d_trace_level(&_s1dec, 100);
d_trace_level(&_s1enc, 0);
d_trace_level(&_s1dec, 0);
}
abts_run_test(suite, s1ap_test1, NULL);