intermediate

This commit is contained in:
Sukchan Lee 2017-02-09 20:22:44 +09:00
parent d60ccdbb2d
commit 5e1b768b92
8 changed files with 1653 additions and 39 deletions

View File

@ -9,7 +9,7 @@ libasn_la_SOURCES = \
nodist_libasn_la_SOURCES = \
s1ap_encoder.c s1ap_decoder.c \
s1ap_ies_encoder.c s1ap_ies_decoder.c s1ap_ies_xer_print.c
s1ap_ies_encoder.c s1ap_ies_decoder.c s1ap_ies_free.c s1ap_ies_xer_print.c
libasn_la_DEPENDENCIES = \
$(top_srcdir)/lib/asn/src/asn1c/libasn1c.la

View File

@ -30,7 +30,7 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v1.0.2
* Please do not modify this file but regenerate it via script.
* Created on: 2017-02-09 17:41:53.013825 by acetcom
* Created on: 2017-02-09 20:10:36.264314 by acetcom
* from ['S1AP-PDU.asn']
******************************************************************************/
#define TRACE_MODULE ies_decoder

File diff suppressed because it is too large Load Diff

View File

@ -30,7 +30,7 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v1.0.2
* Please do not modify this file but regenerate it via script.
* Created on: 2017-02-09 17:41:53.036672 by acetcom
* Created on: 2017-02-09 20:10:36.295032 by acetcom
* from ['S1AP-PDU.asn']
******************************************************************************/
#include "core_debug.h"

1043
lib/asn/src/s1ap_ies_free.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -30,7 +30,7 @@
/*******************************************************************************
* This file had been created by asn1tostruct.py script v1.0.2
* Please do not modify this file but regenerate it via script.
* Created on: 2017-02-09 17:41:53.053901 by acetcom
* Created on: 2017-02-09 20:10:36.321592 by acetcom
* from ['S1AP-PDU.asn']
******************************************************************************/
#include <stdlib.h>

View File

@ -299,6 +299,12 @@ for key in iesDefs:
f.write(" %s_t *%s,\n" % (asn1cStruct, firstlower))
f.write(" %s_t *%s);\n\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
f.write("/** \\brief Free function for %s ies.\n" % (key))
f.write(" * \\param %s Pointer to the IES structure.\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
f.write(" **/\n")
f.write("void %s_free_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
f.write(" %s_t *%s);\n\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
for key in iesDefs:
if key not in ieofielist.values():
continue
@ -319,6 +325,11 @@ for key in iesDefs:
f.write("int %s_decode_%s(\n" % (fileprefix, firstlower.lower()))
f.write(" %s_IEs_t *%sIEs,\n" % (asn1cStruct, firstlower))
f.write(" %s_t *%s);\n\n" % (asn1cStruct, lowerFirstCamelWord(asn1cStruct)))
f.write("/** \\brief Free function for %s ies.\n" % (key))
f.write(" * \\param %s Pointer to the IES structure.\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
f.write(" **/\n")
f.write("void %s_free_%s(\n" % (fileprefix, firstlower.lower()))
f.write(" %s_IEs_t *%sIEs);\n\n" % (asn1cStruct, firstlower))
for key in iesDefs:
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
@ -641,6 +652,58 @@ f.write("""S1ap_IE_t *s1ap_new_ie(S1ap_ProtocolIE_ID_t id, S1ap_Criticality_t cr
""")
#Generate Free functions
f = open(outdir + fileprefix + '_ies_free.c', 'w')
outputHeaderToFile(f, filename)
f.write("#define TRACE_MODULE ies_free\n#include \"core_debug.h\"\n#include \"%s_ies_defs.h\"\n\n" % (fileprefix))
for key in iesDefs:
if key in ieofielist.values():
continue
structName = re.sub('ies', '', key)
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', key))
if asn1cStruct.rfind('_') == len(asn1cStruct) - 1:
asn1cStruct = asn1cStruct[:-1]
asn1cStruct = re.sub('Item', 'List', asn1cStruct)
ielistname = re.sub('UE', 'ue', asn1cStruct)
ielistnamefirstlower = ielistname[:1].lower() + ielistname[1:]
asn1cStructfirstlower = asn1cStruct[:1].lower() + asn1cStruct[1:]
keyName = re.sub('-', '_', key)
keyupperunderscore = keyName.upper()
firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
f.write("void %s_free_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
f.write(" %s_t *%s)\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
f.write("{\n\n")
for ie in iesDefs[key]["ies"]:
iename = re.sub('id-', '', ie[0])
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
ienameunderscorefirstlower = lowerFirstCamelWord(ienameunderscore)
ietypesubst = re.sub('-', '', ie[2])
ietypeunderscore = re.sub('-', '_', ie[2])
ieupperunderscore = re.sub('-', '_', re.sub('id-', '', ie[0])).upper()
if ie[3] == "optional":
f.write(" /* Optional field */\n")
elif ie[3] == "conditional":
f.write(" /* Conditional field */\n")
if ie[2] in ieofielist.keys():
f.write(" %s_free_%s(&%s->%s);\n" % (fileprefix, ietypeunderscore.lower(), lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore))
else:
f.write(" ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_%s, &%s->%s);\n" % (ietypeunderscore, lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore))
f.write("}\n\n")
for key in iesDefs:
if key not in ieofielist.values():
continue
keyname = re.sub('IEs', '', re.sub('Item', 'List', key))
f.write("void %s_free_%s(\n" % (fileprefix, re.sub('-', '_', keyname).lower()))
f.write(" %s_IEs_t *%sIEs)\n" % (re.sub('-', '_', keyname), lowerFirstCamelWord(re.sub('-', '_', keyname))))
f.write("{\n\n")
f.write("}\n\n")
#Generate xer print functions
f = open(outdir + fileprefix + '_ies_xer_print.c', 'w')
outputHeaderToFile(f, filename)

View File

@ -16,7 +16,6 @@ static void s1ap_test1(abts_case *tc, void *data)
};
s1ap_message message;
S1ap_S1SetupRequestIEs_t *ie = &message.msg.s1ap_S1SetupRequestIEs;
pkbuf_t *pkbuf;
int result;
@ -28,16 +27,7 @@ static void s1ap_test1(abts_case *tc, void *data)
result = s1ap_decode_pdu(&message, pkbuf);
ABTS_INT_EQUAL(tc, 0, result);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_Global_ENB_ID,
&ie->global_ENB_ID);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENBname,
&ie->eNBname);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_SupportedTAs,
&ie->supportedTAs);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_PagingDRX,
&ie->defaultPagingDRX);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CSG_IdList,
&ie->csG_IdList);
s1ap_free_s1ap_s1setuprequesties(&message.msg.s1ap_S1SetupRequestIEs);
pkbuf_free(pkbuf);
}
@ -50,7 +40,6 @@ static void s1ap_test2(abts_case *tc, void *data)
};
s1ap_message message;
S1ap_InitialUEMessage_IEs_t *ie = &message.msg.s1ap_InitialUEMessage_IEs;
pkbuf_t *pkbuf;
int result;
@ -62,28 +51,7 @@ static void s1ap_test2(abts_case *tc, void *data)
result = s1ap_decode_pdu(&message, pkbuf);
ABTS_INT_EQUAL(tc, 0, result);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ENB_UE_S1AP_ID,
&ie->eNB_UE_S1AP_ID);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_NAS_PDU,
&ie->nas_pdu);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TAI,
&ie->tai);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_EUTRAN_CGI,
&ie->eutran_cgi);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_RRC_Establishment_Cause,
&ie->rrC_Establishment_Cause);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_S_TMSI,
&ie->s_tmsi);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CSG_Id,
&ie->csG_Id);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_GUMMEI,
&ie->gummei_id);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_CellAccessMode,
&ie->cellAccessMode);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TransportLayerAddress,
&ie->gW_TransportLayerAddress);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_RelayNode_Indicator,
&ie->relayNode_Indicator);
s1ap_free_s1ap_initialuemessage_ies(&message.msg.s1ap_InitialUEMessage_IEs);
pkbuf_free(pkbuf);
}