diff options
author | Harald Welte <laforge@gnumonks.org> | 2015-09-10 10:52:18 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2015-09-10 10:53:37 +0200 |
commit | 0ec7f1366761fffcd73ba359969ea1029ed5dc79 (patch) | |
tree | 73bb156c8a322c9e511f02f9446cb4291333f59a /src/hnbap | |
parent | b90c37dbaffe28626ca8ddefc4c03876644c7552 (diff) |
Cleanups (rename 'asn1c' to 'hnbap', Makefile sanitizing)
Diffstat (limited to 'src/hnbap')
232 files changed, 21610 insertions, 0 deletions
diff --git a/src/hnbap/.gitignore b/src/hnbap/.gitignore new file mode 100644 index 0000000..3698ce1 --- /dev/null +++ b/src/hnbap/.gitignore @@ -0,0 +1,60 @@ +ANY.c +ANY.h +BIT_STRING.c +BIT_STRING.h +INTEGER.c +INTEGER.h +Makefile.am.sample +NativeEnumerated.c +NativeEnumerated.h +NativeInteger.c +NativeInteger.h +OBJECT_IDENTIFIER.c +OBJECT_IDENTIFIER.h +OCTET_STRING.c +OCTET_STRING.h +asn_SEQUENCE_OF.c +asn_SEQUENCE_OF.h +asn_SET_OF.c +asn_SET_OF.h +asn_application.h +asn_codecs.h +asn_codecs_prim.c +asn_codecs_prim.h +asn_internal.h +asn_system.h +ber_decoder.c +ber_decoder.h +ber_tlv_length.c +ber_tlv_length.h +ber_tlv_tag.c +ber_tlv_tag.h +constr_CHOICE.c +constr_CHOICE.h +constr_SEQUENCE.c +constr_SEQUENCE.h +constr_SEQUENCE_OF.c +constr_SEQUENCE_OF.h +constr_SET_OF.c +constr_SET_OF.h +constr_TYPE.c +constr_TYPE.h +constraints.c +constraints.h +converter-sample.c +der_encoder.c +der_encoder.h +per_decoder.c +per_decoder.h +per_encoder.c +per_encoder.h +per_opentype.c +per_opentype.h +per_support.c +per_support.h +xer_decoder.c +xer_decoder.h +xer_encoder.c +xer_encoder.h +xer_support.c +xer_support.h diff --git a/src/hnbap/Access-stratum-release-indicator.c b/src/hnbap/Access-stratum-release-indicator.c new file mode 100644 index 0000000..1b13cd9 --- /dev/null +++ b/src/hnbap/Access-stratum-release-indicator.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Access-stratum-release-indicator.h" + +int +Access_stratum_release_indicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +Access_stratum_release_indicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +Access_stratum_release_indicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Access_stratum_release_indicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Access_stratum_release_indicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Access_stratum_release_indicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Access_stratum_release_indicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Access_stratum_release_indicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Access_stratum_release_indicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Access_stratum_release_indicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Access_stratum_release_indicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Access_stratum_release_indicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Access_stratum_release_indicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Access_stratum_release_indicator_value2enum_1[] = { + { 0, 3, "r99" }, + { 1, 5, "rel-4" }, + { 2, 5, "rel-5" }, + { 3, 5, "rel-6" }, + { 4, 5, "rel-7" }, + { 5, 16, "rel-8-and-beyond" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Access_stratum_release_indicator_enum2value_1[] = { + 0, /* r99(0) */ + 1, /* rel-4(1) */ + 2, /* rel-5(2) */ + 3, /* rel-6(3) */ + 4, /* rel-7(4) */ + 5 /* rel-8-and-beyond(5) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Access_stratum_release_indicator_specs_1 = { + asn_MAP_Access_stratum_release_indicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Access_stratum_release_indicator_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Access_stratum_release_indicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Access_stratum_release_indicator = { + "Access-stratum-release-indicator", + "Access-stratum-release-indicator", + Access_stratum_release_indicator_free, + Access_stratum_release_indicator_print, + Access_stratum_release_indicator_constraint, + Access_stratum_release_indicator_decode_ber, + Access_stratum_release_indicator_encode_der, + Access_stratum_release_indicator_decode_xer, + Access_stratum_release_indicator_encode_xer, + Access_stratum_release_indicator_decode_uper, + Access_stratum_release_indicator_encode_uper, + Access_stratum_release_indicator_decode_aper, + Access_stratum_release_indicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Access_stratum_release_indicator_tags_1, + sizeof(asn_DEF_Access_stratum_release_indicator_tags_1) + /sizeof(asn_DEF_Access_stratum_release_indicator_tags_1[0]), /* 1 */ + asn_DEF_Access_stratum_release_indicator_tags_1, /* Same as above */ + sizeof(asn_DEF_Access_stratum_release_indicator_tags_1) + /sizeof(asn_DEF_Access_stratum_release_indicator_tags_1[0]), /* 1 */ + &asn_PER_type_Access_stratum_release_indicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Access_stratum_release_indicator_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Access-stratum-release-indicator.h b/src/hnbap/Access-stratum-release-indicator.h new file mode 100644 index 0000000..1e1f7e1 --- /dev/null +++ b/src/hnbap/Access-stratum-release-indicator.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Access_stratum_release_indicator_H_ +#define _Access_stratum_release_indicator_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Access_stratum_release_indicator { + Access_stratum_release_indicator_r99 = 0, + Access_stratum_release_indicator_rel_4 = 1, + Access_stratum_release_indicator_rel_5 = 2, + Access_stratum_release_indicator_rel_6 = 3, + Access_stratum_release_indicator_rel_7 = 4, + Access_stratum_release_indicator_rel_8_and_beyond = 5 + /* + * Enumeration is extensible + */ +} e_Access_stratum_release_indicator; + +/* Access-stratum-release-indicator */ +typedef long Access_stratum_release_indicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Access_stratum_release_indicator; +asn_struct_free_f Access_stratum_release_indicator_free; +asn_struct_print_f Access_stratum_release_indicator_print; +asn_constr_check_f Access_stratum_release_indicator_constraint; +ber_type_decoder_f Access_stratum_release_indicator_decode_ber; +der_type_encoder_f Access_stratum_release_indicator_encode_der; +xer_type_decoder_f Access_stratum_release_indicator_decode_xer; +xer_type_encoder_f Access_stratum_release_indicator_encode_xer; +per_type_decoder_f Access_stratum_release_indicator_decode_uper; +per_type_encoder_f Access_stratum_release_indicator_encode_uper; +per_type_decoder_f Access_stratum_release_indicator_decode_aper; +per_type_encoder_f Access_stratum_release_indicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Access_stratum_release_indicator_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/AccessResult.c b/src/hnbap/AccessResult.c new file mode 100644 index 0000000..0e6cda0 --- /dev/null +++ b/src/hnbap/AccessResult.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "AccessResult.h" + +int +AccessResult_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +AccessResult_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +AccessResult_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + AccessResult_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +AccessResult_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +AccessResult_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +AccessResult_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +AccessResult_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +AccessResult_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +AccessResult_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +AccessResult_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +AccessResult_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +AccessResult_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + AccessResult_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_AccessResult_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AccessResult_value2enum_1[] = { + { 0, 7, "allowed" }, + { 1, 10, "notAllowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AccessResult_enum2value_1[] = { + 0, /* allowed(0) */ + 1 /* notAllowed(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_AccessResult_specs_1 = { + asn_MAP_AccessResult_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AccessResult_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AccessResult_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccessResult = { + "AccessResult", + "AccessResult", + AccessResult_free, + AccessResult_print, + AccessResult_constraint, + AccessResult_decode_ber, + AccessResult_encode_der, + AccessResult_decode_xer, + AccessResult_encode_xer, + AccessResult_decode_uper, + AccessResult_encode_uper, + AccessResult_decode_aper, + AccessResult_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_AccessResult_tags_1, + sizeof(asn_DEF_AccessResult_tags_1) + /sizeof(asn_DEF_AccessResult_tags_1[0]), /* 1 */ + asn_DEF_AccessResult_tags_1, /* Same as above */ + sizeof(asn_DEF_AccessResult_tags_1) + /sizeof(asn_DEF_AccessResult_tags_1[0]), /* 1 */ + &asn_PER_type_AccessResult_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AccessResult_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/AccessResult.h b/src/hnbap/AccessResult.h new file mode 100644 index 0000000..e9f8087 --- /dev/null +++ b/src/hnbap/AccessResult.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _AccessResult_H_ +#define _AccessResult_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccessResult { + AccessResult_allowed = 0, + AccessResult_notAllowed = 1 + /* + * Enumeration is extensible + */ +} e_AccessResult; + +/* AccessResult */ +typedef long AccessResult_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccessResult; +asn_struct_free_f AccessResult_free; +asn_struct_print_f AccessResult_print; +asn_constr_check_f AccessResult_constraint; +ber_type_decoder_f AccessResult_decode_ber; +der_type_encoder_f AccessResult_encode_der; +xer_type_decoder_f AccessResult_decode_xer; +xer_type_encoder_f AccessResult_encode_xer; +per_type_decoder_f AccessResult_decode_uper; +per_type_encoder_f AccessResult_encode_uper; +per_type_decoder_f AccessResult_decode_aper; +per_type_encoder_f AccessResult_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccessResult_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/AdditionalNeighbourInfoList.c b/src/hnbap/AdditionalNeighbourInfoList.c new file mode 100644 index 0000000..e592c7f --- /dev/null +++ b/src/hnbap/AdditionalNeighbourInfoList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "AdditionalNeighbourInfoList.h" + +static asn_per_constraints_t asn_PER_type_AdditionalNeighbourInfoList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_AdditionalNeighbourInfoList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HNBConfigInfo, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_AdditionalNeighbourInfoList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_AdditionalNeighbourInfoList_specs_1 = { + sizeof(struct AdditionalNeighbourInfoList), + offsetof(struct AdditionalNeighbourInfoList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalNeighbourInfoList = { + "AdditionalNeighbourInfoList", + "AdditionalNeighbourInfoList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_AdditionalNeighbourInfoList_tags_1, + sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1) + /sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1[0]), /* 1 */ + asn_DEF_AdditionalNeighbourInfoList_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1) + /sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1[0]), /* 1 */ + &asn_PER_type_AdditionalNeighbourInfoList_constr_1, + asn_MBR_AdditionalNeighbourInfoList_1, + 1, /* Single element */ + &asn_SPC_AdditionalNeighbourInfoList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/AdditionalNeighbourInfoList.h b/src/hnbap/AdditionalNeighbourInfoList.h new file mode 100644 index 0000000..7e15f4b --- /dev/null +++ b/src/hnbap/AdditionalNeighbourInfoList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _AdditionalNeighbourInfoList_H_ +#define _AdditionalNeighbourInfoList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HNBConfigInfo; + +/* AdditionalNeighbourInfoList */ +typedef struct AdditionalNeighbourInfoList { + A_SEQUENCE_OF(struct HNBConfigInfo) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalNeighbourInfoList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdditionalNeighbourInfoList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "HNBConfigInfo.h" + +#endif /* _AdditionalNeighbourInfoList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/AltitudeAndDirection.c b/src/hnbap/AltitudeAndDirection.c new file mode 100644 index 0000000..a747406 --- /dev/null +++ b/src/hnbap/AltitudeAndDirection.c @@ -0,0 +1,261 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "AltitudeAndDirection.h" + +static int +directionOfAltitude_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +directionOfAltitude_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +static void +directionOfAltitude_2_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +static int +directionOfAltitude_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +static asn_dec_rval_t +directionOfAltitude_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +static asn_enc_rval_t +directionOfAltitude_2_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +static asn_dec_rval_t +directionOfAltitude_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +static asn_enc_rval_t +directionOfAltitude_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +static asn_dec_rval_t +directionOfAltitude_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_enc_rval_t +directionOfAltitude_2_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +static asn_enc_rval_t +directionOfAltitude_2_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +static asn_dec_rval_t +directionOfAltitude_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + directionOfAltitude_2_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static int +memb_altitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 32767l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_directionOfAltitude_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_altitude_constr_5 GCC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0l, 32767l } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_directionOfAltitude_value2enum_2[] = { + { 0, 6, "height" }, + { 1, 5, "depth" } +}; +static const unsigned int asn_MAP_directionOfAltitude_enum2value_2[] = { + 1, /* depth(1) */ + 0 /* height(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_directionOfAltitude_specs_2 = { + asn_MAP_directionOfAltitude_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_directionOfAltitude_enum2value_2, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_directionOfAltitude_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_directionOfAltitude_2 = { + "directionOfAltitude", + "directionOfAltitude", + directionOfAltitude_2_free, + directionOfAltitude_2_print, + directionOfAltitude_2_constraint, + directionOfAltitude_2_decode_ber, + directionOfAltitude_2_encode_der, + directionOfAltitude_2_decode_xer, + directionOfAltitude_2_encode_xer, + directionOfAltitude_2_decode_uper, + directionOfAltitude_2_encode_uper, + directionOfAltitude_2_decode_aper, + directionOfAltitude_2_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_directionOfAltitude_tags_2, + sizeof(asn_DEF_directionOfAltitude_tags_2) + /sizeof(asn_DEF_directionOfAltitude_tags_2[0]) - 1, /* 1 */ + asn_DEF_directionOfAltitude_tags_2, /* Same as above */ + sizeof(asn_DEF_directionOfAltitude_tags_2) + /sizeof(asn_DEF_directionOfAltitude_tags_2[0]), /* 2 */ + &asn_PER_type_directionOfAltitude_constr_2, + 0, 0, /* Defined elsewhere */ + &asn_SPC_directionOfAltitude_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_AltitudeAndDirection_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AltitudeAndDirection, directionOfAltitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_directionOfAltitude_2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "directionOfAltitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct AltitudeAndDirection, altitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + memb_altitude_constraint_1, + &asn_PER_memb_altitude_constr_5, + 0, + "altitude" + }, +}; +static const ber_tlv_tag_t asn_DEF_AltitudeAndDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AltitudeAndDirection_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* directionOfAltitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altitude */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_AltitudeAndDirection_specs_1 = { + sizeof(struct AltitudeAndDirection), + offsetof(struct AltitudeAndDirection, _asn_ctx), + asn_MAP_AltitudeAndDirection_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_AltitudeAndDirection = { + "AltitudeAndDirection", + "AltitudeAndDirection", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_AltitudeAndDirection_tags_1, + sizeof(asn_DEF_AltitudeAndDirection_tags_1) + /sizeof(asn_DEF_AltitudeAndDirection_tags_1[0]), /* 1 */ + asn_DEF_AltitudeAndDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_AltitudeAndDirection_tags_1) + /sizeof(asn_DEF_AltitudeAndDirection_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_AltitudeAndDirection_1, + 2, /* Elements count */ + &asn_SPC_AltitudeAndDirection_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/AltitudeAndDirection.h b/src/hnbap/AltitudeAndDirection.h new file mode 100644 index 0000000..7ea3dfd --- /dev/null +++ b/src/hnbap/AltitudeAndDirection.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _AltitudeAndDirection_H_ +#define _AltitudeAndDirection_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> +#include <NativeInteger.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum directionOfAltitude { + directionOfAltitude_height = 0, + directionOfAltitude_depth = 1 +} e_directionOfAltitude; + +/* AltitudeAndDirection */ +typedef struct AltitudeAndDirection { + long directionOfAltitude; + long altitude; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AltitudeAndDirection_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_directionOfAltitude_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_AltitudeAndDirection; + +#ifdef __cplusplus +} +#endif + +#endif /* _AltitudeAndDirection_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/BackoffTimer.c b/src/hnbap/BackoffTimer.c new file mode 100644 index 0000000..7dee227 --- /dev/null +++ b/src/hnbap/BackoffTimer.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "BackoffTimer.h" + +int +BackoffTimer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 3600l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +BackoffTimer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +BackoffTimer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +BackoffTimer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +BackoffTimer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +BackoffTimer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +BackoffTimer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +BackoffTimer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +BackoffTimer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +BackoffTimer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +BackoffTimer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +BackoffTimer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + BackoffTimer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_BackoffTimer_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0l, 3600l } /* (0..3600) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BackoffTimer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BackoffTimer = { + "BackoffTimer", + "BackoffTimer", + BackoffTimer_free, + BackoffTimer_print, + BackoffTimer_constraint, + BackoffTimer_decode_ber, + BackoffTimer_encode_der, + BackoffTimer_decode_xer, + BackoffTimer_encode_xer, + BackoffTimer_decode_uper, + BackoffTimer_encode_uper, + BackoffTimer_decode_aper, + BackoffTimer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_BackoffTimer_tags_1, + sizeof(asn_DEF_BackoffTimer_tags_1) + /sizeof(asn_DEF_BackoffTimer_tags_1[0]), /* 1 */ + asn_DEF_BackoffTimer_tags_1, /* Same as above */ + sizeof(asn_DEF_BackoffTimer_tags_1) + /sizeof(asn_DEF_BackoffTimer_tags_1[0]), /* 1 */ + &asn_PER_type_BackoffTimer_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/BackoffTimer.h b/src/hnbap/BackoffTimer.h new file mode 100644 index 0000000..9b6b01f --- /dev/null +++ b/src/hnbap/BackoffTimer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _BackoffTimer_H_ +#define _BackoffTimer_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* BackoffTimer */ +typedef long BackoffTimer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BackoffTimer; +asn_struct_free_f BackoffTimer_free; +asn_struct_print_f BackoffTimer_print; +asn_constr_check_f BackoffTimer_constraint; +ber_type_decoder_f BackoffTimer_decode_ber; +der_type_encoder_f BackoffTimer_encode_der; +xer_type_decoder_f BackoffTimer_decode_xer; +xer_type_encoder_f BackoffTimer_encode_xer; +per_type_decoder_f BackoffTimer_decode_uper; +per_type_encoder_f BackoffTimer_encode_uper; +per_type_decoder_f BackoffTimer_decode_aper; +per_type_encoder_f BackoffTimer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BackoffTimer_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/BindingID.c b/src/hnbap/BindingID.c new file mode 100644 index 0000000..7021128 --- /dev/null +++ b/src/hnbap/BindingID.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "BindingID.h" + +int +BindingID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1l && size <= 4l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +BindingID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +BindingID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + BindingID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +BindingID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +BindingID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +BindingID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +BindingID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +BindingID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +BindingID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +BindingID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +BindingID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +BindingID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + BindingID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_BindingID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 1l, 4l } /* (SIZE(1..4,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BindingID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BindingID = { + "BindingID", + "BindingID", + BindingID_free, + BindingID_print, + BindingID_constraint, + BindingID_decode_ber, + BindingID_encode_der, + BindingID_decode_xer, + BindingID_encode_xer, + BindingID_decode_uper, + BindingID_encode_uper, + BindingID_decode_aper, + BindingID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_BindingID_tags_1, + sizeof(asn_DEF_BindingID_tags_1) + /sizeof(asn_DEF_BindingID_tags_1[0]), /* 1 */ + asn_DEF_BindingID_tags_1, /* Same as above */ + sizeof(asn_DEF_BindingID_tags_1) + /sizeof(asn_DEF_BindingID_tags_1[0]), /* 1 */ + &asn_PER_type_BindingID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/BindingID.h b/src/hnbap/BindingID.h new file mode 100644 index 0000000..ad1a142 --- /dev/null +++ b/src/hnbap/BindingID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _BindingID_H_ +#define _BindingID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* BindingID */ +typedef OCTET_STRING_t BindingID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BindingID; +asn_struct_free_f BindingID_free; +asn_struct_print_f BindingID_print; +asn_constr_check_f BindingID_constraint; +ber_type_decoder_f BindingID_decode_ber; +der_type_encoder_f BindingID_encode_der; +xer_type_decoder_f BindingID_decode_xer; +xer_type_encoder_f BindingID_encode_xer; +per_type_decoder_f BindingID_decode_uper; +per_type_encoder_f BindingID_encode_uper; +per_type_decoder_f BindingID_decode_aper; +per_type_encoder_f BindingID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BindingID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CELL-FACHMobilitySupport.c b/src/hnbap/CELL-FACHMobilitySupport.c new file mode 100644 index 0000000..e2bc3cb --- /dev/null +++ b/src/hnbap/CELL-FACHMobilitySupport.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CELL-FACHMobilitySupport.h" + +int +CELL_FACHMobilitySupport_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CELL_FACHMobilitySupport_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CELL_FACHMobilitySupport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CELL_FACHMobilitySupport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CELL_FACHMobilitySupport_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CELL_FACHMobilitySupport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CELL_FACHMobilitySupport_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CELL_FACHMobilitySupport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CELL_FACHMobilitySupport_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CELL_FACHMobilitySupport_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CELL_FACHMobilitySupport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CELL_FACHMobilitySupport_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CELL_FACHMobilitySupport_value2enum_1[] = { + { 0, 9, "supported" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CELL_FACHMobilitySupport_enum2value_1[] = { + 0 /* supported(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CELL_FACHMobilitySupport_specs_1 = { + asn_MAP_CELL_FACHMobilitySupport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CELL_FACHMobilitySupport_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CELL_FACHMobilitySupport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CELL_FACHMobilitySupport = { + "CELL-FACHMobilitySupport", + "CELL-FACHMobilitySupport", + CELL_FACHMobilitySupport_free, + CELL_FACHMobilitySupport_print, + CELL_FACHMobilitySupport_constraint, + CELL_FACHMobilitySupport_decode_ber, + CELL_FACHMobilitySupport_encode_der, + CELL_FACHMobilitySupport_decode_xer, + CELL_FACHMobilitySupport_encode_xer, + CELL_FACHMobilitySupport_decode_uper, + CELL_FACHMobilitySupport_encode_uper, + CELL_FACHMobilitySupport_decode_aper, + CELL_FACHMobilitySupport_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CELL_FACHMobilitySupport_tags_1, + sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1) + /sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1[0]), /* 1 */ + asn_DEF_CELL_FACHMobilitySupport_tags_1, /* Same as above */ + sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1) + /sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1[0]), /* 1 */ + &asn_PER_type_CELL_FACHMobilitySupport_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CELL_FACHMobilitySupport_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CELL-FACHMobilitySupport.h b/src/hnbap/CELL-FACHMobilitySupport.h new file mode 100644 index 0000000..3d6b588 --- /dev/null +++ b/src/hnbap/CELL-FACHMobilitySupport.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CELL_FACHMobilitySupport_H_ +#define _CELL_FACHMobilitySupport_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CELL_FACHMobilitySupport { + CELL_FACHMobilitySupport_supported = 0 + /* + * Enumeration is extensible + */ +} e_CELL_FACHMobilitySupport; + +/* CELL-FACHMobilitySupport */ +typedef long CELL_FACHMobilitySupport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CELL_FACHMobilitySupport; +asn_struct_free_f CELL_FACHMobilitySupport_free; +asn_struct_print_f CELL_FACHMobilitySupport_print; +asn_constr_check_f CELL_FACHMobilitySupport_constraint; +ber_type_decoder_f CELL_FACHMobilitySupport_decode_ber; +der_type_encoder_f CELL_FACHMobilitySupport_encode_der; +xer_type_decoder_f CELL_FACHMobilitySupport_decode_xer; +xer_type_encoder_f CELL_FACHMobilitySupport_encode_xer; +per_type_decoder_f CELL_FACHMobilitySupport_decode_uper; +per_type_encoder_f CELL_FACHMobilitySupport_encode_uper; +per_type_decoder_f CELL_FACHMobilitySupport_decode_aper; +per_type_encoder_f CELL_FACHMobilitySupport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CELL_FACHMobilitySupport_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CGI.c b/src/hnbap/CGI.c new file mode 100644 index 0000000..07ee72a --- /dev/null +++ b/src/hnbap/CGI.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CGI.h" + +static asn_TYPE_member_t asn_MBR_CGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CGI, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNidentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct CGI, lAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LAC, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "lAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct CGI, cI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cI" + }, + { ATF_POINTER, 1, offsetof(struct CGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_CGI_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_CGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CGI_specs_1 = { + sizeof(struct CGI), + offsetof(struct CGI, _asn_ctx), + asn_MAP_CGI_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_CGI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_CGI = { + "CGI", + "CGI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CGI_tags_1, + sizeof(asn_DEF_CGI_tags_1) + /sizeof(asn_DEF_CGI_tags_1[0]), /* 1 */ + asn_DEF_CGI_tags_1, /* Same as above */ + sizeof(asn_DEF_CGI_tags_1) + /sizeof(asn_DEF_CGI_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_CGI_1, + 4, /* Elements count */ + &asn_SPC_CGI_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CGI.h b/src/hnbap/CGI.h new file mode 100644 index 0000000..802fc9a --- /dev/null +++ b/src/hnbap/CGI.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CGI_H_ +#define _CGI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "PLMNidentity.h" +#include "LAC.h" +#include "CI.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* CGI */ +typedef struct CGI { + PLMNidentity_t pLMNidentity; + LAC_t lAC; + CI_t cI; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CGI; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _CGI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CI.c b/src/hnbap/CI.c new file mode 100644 index 0000000..0f96301 --- /dev/null +++ b/src/hnbap/CI.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CI.h" + +int +CI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +CI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +CI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CI = { + "CI", + "CI", + CI_free, + CI_print, + CI_constraint, + CI_decode_ber, + CI_encode_der, + CI_decode_xer, + CI_encode_xer, + CI_decode_uper, + CI_encode_uper, + CI_decode_aper, + CI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CI_tags_1, + sizeof(asn_DEF_CI_tags_1) + /sizeof(asn_DEF_CI_tags_1[0]), /* 1 */ + asn_DEF_CI_tags_1, /* Same as above */ + sizeof(asn_DEF_CI_tags_1) + /sizeof(asn_DEF_CI_tags_1[0]), /* 1 */ + &asn_PER_type_CI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/CI.h b/src/hnbap/CI.h new file mode 100644 index 0000000..8efd030 --- /dev/null +++ b/src/hnbap/CI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CI_H_ +#define _CI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* CI */ +typedef OCTET_STRING_t CI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CI; +asn_struct_free_f CI_free; +asn_struct_print_f CI_print; +asn_constr_check_f CI_constraint; +ber_type_decoder_f CI_decode_ber; +der_type_encoder_f CI_encode_der; +xer_type_decoder_f CI_decode_xer; +xer_type_encoder_f CI_encode_xer; +per_type_decoder_f CI_decode_uper; +per_type_encoder_f CI_encode_uper; +per_type_decoder_f CI_decode_aper; +per_type_encoder_f CI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CN-DomainIndicator.c b/src/hnbap/CN-DomainIndicator.c new file mode 100644 index 0000000..75fbca7 --- /dev/null +++ b/src/hnbap/CN-DomainIndicator.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CN-DomainIndicator.h" + +int +CN_DomainIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CN_DomainIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CN_DomainIndicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CN_DomainIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CN_DomainIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CN_DomainIndicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CN_DomainIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CN_DomainIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CN_DomainIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CN_DomainIndicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CN_DomainIndicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CN_DomainIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CN_DomainIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CN_DomainIndicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CN_DomainIndicator_value2enum_1[] = { + { 0, 9, "cs-domain" }, + { 1, 9, "ps-domain" } +}; +static const unsigned int asn_MAP_CN_DomainIndicator_enum2value_1[] = { + 0, /* cs-domain(0) */ + 1 /* ps-domain(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CN_DomainIndicator_specs_1 = { + asn_MAP_CN_DomainIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CN_DomainIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CN_DomainIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CN_DomainIndicator = { + "CN-DomainIndicator", + "CN-DomainIndicator", + CN_DomainIndicator_free, + CN_DomainIndicator_print, + CN_DomainIndicator_constraint, + CN_DomainIndicator_decode_ber, + CN_DomainIndicator_encode_der, + CN_DomainIndicator_decode_xer, + CN_DomainIndicator_encode_xer, + CN_DomainIndicator_decode_uper, + CN_DomainIndicator_encode_uper, + CN_DomainIndicator_decode_aper, + CN_DomainIndicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CN_DomainIndicator_tags_1, + sizeof(asn_DEF_CN_DomainIndicator_tags_1) + /sizeof(asn_DEF_CN_DomainIndicator_tags_1[0]), /* 1 */ + asn_DEF_CN_DomainIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_CN_DomainIndicator_tags_1) + /sizeof(asn_DEF_CN_DomainIndicator_tags_1[0]), /* 1 */ + &asn_PER_type_CN_DomainIndicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CN_DomainIndicator_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CN-DomainIndicator.h b/src/hnbap/CN-DomainIndicator.h new file mode 100644 index 0000000..854f375 --- /dev/null +++ b/src/hnbap/CN-DomainIndicator.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CN_DomainIndicator_H_ +#define _CN_DomainIndicator_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CN_DomainIndicator { + CN_DomainIndicator_cs_domain = 0, + CN_DomainIndicator_ps_domain = 1 +} e_CN_DomainIndicator; + +/* CN-DomainIndicator */ +typedef long CN_DomainIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CN_DomainIndicator; +asn_struct_free_f CN_DomainIndicator_free; +asn_struct_print_f CN_DomainIndicator_print; +asn_constr_check_f CN_DomainIndicator_constraint; +ber_type_decoder_f CN_DomainIndicator_decode_ber; +der_type_encoder_f CN_DomainIndicator_encode_der; +xer_type_decoder_f CN_DomainIndicator_decode_xer; +xer_type_encoder_f CN_DomainIndicator_encode_xer; +per_type_decoder_f CN_DomainIndicator_decode_uper; +per_type_encoder_f CN_DomainIndicator_encode_uper; +per_type_decoder_f CN_DomainIndicator_decode_aper; +per_type_encoder_f CN_DomainIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CN_DomainIndicator_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CSG-Capability.c b/src/hnbap/CSG-Capability.c new file mode 100644 index 0000000..b07caeb --- /dev/null +++ b/src/hnbap/CSG-Capability.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CSG-Capability.h" + +int +CSG_Capability_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CSG_Capability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CSG_Capability_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CSG_Capability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CSG_Capability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CSG_Capability_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CSG_Capability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CSG_Capability_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CSG_Capability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CSG_Capability_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CSG_Capability_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CSG_Capability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CSG_Capability_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CSG_Capability_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CSG_Capability_value2enum_1[] = { + { 0, 11, "csg-capable" }, + { 1, 15, "not-csg-capable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CSG_Capability_enum2value_1[] = { + 0, /* csg-capable(0) */ + 1 /* not-csg-capable(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CSG_Capability_specs_1 = { + asn_MAP_CSG_Capability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CSG_Capability_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CSG_Capability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSG_Capability = { + "CSG-Capability", + "CSG-Capability", + CSG_Capability_free, + CSG_Capability_print, + CSG_Capability_constraint, + CSG_Capability_decode_ber, + CSG_Capability_encode_der, + CSG_Capability_decode_xer, + CSG_Capability_encode_xer, + CSG_Capability_decode_uper, + CSG_Capability_encode_uper, + CSG_Capability_decode_aper, + CSG_Capability_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CSG_Capability_tags_1, + sizeof(asn_DEF_CSG_Capability_tags_1) + /sizeof(asn_DEF_CSG_Capability_tags_1[0]), /* 1 */ + asn_DEF_CSG_Capability_tags_1, /* Same as above */ + sizeof(asn_DEF_CSG_Capability_tags_1) + /sizeof(asn_DEF_CSG_Capability_tags_1[0]), /* 1 */ + &asn_PER_type_CSG_Capability_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CSG_Capability_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CSG-Capability.h b/src/hnbap/CSG-Capability.h new file mode 100644 index 0000000..f6df34d --- /dev/null +++ b/src/hnbap/CSG-Capability.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CSG_Capability_H_ +#define _CSG_Capability_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CSG_Capability { + CSG_Capability_csg_capable = 0, + CSG_Capability_not_csg_capable = 1 + /* + * Enumeration is extensible + */ +} e_CSG_Capability; + +/* CSG-Capability */ +typedef long CSG_Capability_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSG_Capability; +asn_struct_free_f CSG_Capability_free; +asn_struct_print_f CSG_Capability_print; +asn_constr_check_f CSG_Capability_constraint; +ber_type_decoder_f CSG_Capability_decode_ber; +der_type_encoder_f CSG_Capability_encode_der; +xer_type_decoder_f CSG_Capability_decode_xer; +xer_type_encoder_f CSG_Capability_encode_xer; +per_type_decoder_f CSG_Capability_decode_uper; +per_type_encoder_f CSG_Capability_encode_uper; +per_type_decoder_f CSG_Capability_decode_aper; +per_type_encoder_f CSG_Capability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSG_Capability_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CSG-ID.c b/src/hnbap/CSG-ID.c new file mode 100644 index 0000000..e7c2653 --- /dev/null +++ b/src/hnbap/CSG-ID.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CSG-ID.h" + +int +CSG_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 27l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +CSG_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +CSG_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CSG_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CSG_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CSG_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CSG_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CSG_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CSG_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CSG_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CSG_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CSG_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CSG_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CSG_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CSG_ID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 27l, 27l } /* (SIZE(27..27)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CSG_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSG_ID = { + "CSG-ID", + "CSG-ID", + CSG_ID_free, + CSG_ID_print, + CSG_ID_constraint, + CSG_ID_decode_ber, + CSG_ID_encode_der, + CSG_ID_decode_xer, + CSG_ID_encode_xer, + CSG_ID_decode_uper, + CSG_ID_encode_uper, + CSG_ID_decode_aper, + CSG_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CSG_ID_tags_1, + sizeof(asn_DEF_CSG_ID_tags_1) + /sizeof(asn_DEF_CSG_ID_tags_1[0]), /* 1 */ + asn_DEF_CSG_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_CSG_ID_tags_1) + /sizeof(asn_DEF_CSG_ID_tags_1[0]), /* 1 */ + &asn_PER_type_CSG_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/CSG-ID.h b/src/hnbap/CSG-ID.h new file mode 100644 index 0000000..dfffa81 --- /dev/null +++ b/src/hnbap/CSG-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CSG_ID_H_ +#define _CSG_ID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* CSG-ID */ +typedef BIT_STRING_t CSG_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSG_ID; +asn_struct_free_f CSG_ID_free; +asn_struct_print_f CSG_ID_print; +asn_constr_check_f CSG_ID_constraint; +ber_type_decoder_f CSG_ID_decode_ber; +der_type_encoder_f CSG_ID_encode_der; +xer_type_decoder_f CSG_ID_decode_xer; +xer_type_encoder_f CSG_ID_encode_xer; +per_type_decoder_f CSG_ID_decode_uper; +per_type_encoder_f CSG_ID_encode_uper; +per_type_decoder_f CSG_ID_decode_aper; +per_type_encoder_f CSG_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSG_ID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CSGMembershipStatus.c b/src/hnbap/CSGMembershipStatus.c new file mode 100644 index 0000000..32abdca --- /dev/null +++ b/src/hnbap/CSGMembershipStatus.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CSGMembershipStatus.h" + +int +CSGMembershipStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CSGMembershipStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CSGMembershipStatus_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CSGMembershipStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CSGMembershipStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CSGMembershipStatus_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CSGMembershipStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CSGMembershipStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CSGMembershipStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CSGMembershipStatus_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CSGMembershipStatus_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CSGMembershipStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CSGMembershipStatus_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CSGMembershipStatus_value2enum_1[] = { + { 0, 6, "member" }, + { 1, 10, "non-member" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CSGMembershipStatus_enum2value_1[] = { + 0, /* member(0) */ + 1 /* non-member(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1 = { + asn_MAP_CSGMembershipStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CSGMembershipStatus_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CSGMembershipStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus = { + "CSGMembershipStatus", + "CSGMembershipStatus", + CSGMembershipStatus_free, + CSGMembershipStatus_print, + CSGMembershipStatus_constraint, + CSGMembershipStatus_decode_ber, + CSGMembershipStatus_encode_der, + CSGMembershipStatus_decode_xer, + CSGMembershipStatus_encode_xer, + CSGMembershipStatus_decode_uper, + CSGMembershipStatus_encode_uper, + CSGMembershipStatus_decode_aper, + CSGMembershipStatus_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CSGMembershipStatus_tags_1, + sizeof(asn_DEF_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */ + asn_DEF_CSGMembershipStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */ + &asn_PER_type_CSGMembershipStatus_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CSGMembershipStatus_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CSGMembershipStatus.h b/src/hnbap/CSGMembershipStatus.h new file mode 100644 index 0000000..5f7e88c --- /dev/null +++ b/src/hnbap/CSGMembershipStatus.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CSGMembershipStatus_H_ +#define _CSGMembershipStatus_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CSGMembershipStatus { + CSGMembershipStatus_member = 0, + CSGMembershipStatus_non_member = 1 + /* + * Enumeration is extensible + */ +} e_CSGMembershipStatus; + +/* CSGMembershipStatus */ +typedef long CSGMembershipStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus; +asn_struct_free_f CSGMembershipStatus_free; +asn_struct_print_f CSGMembershipStatus_print; +asn_constr_check_f CSGMembershipStatus_constraint; +ber_type_decoder_f CSGMembershipStatus_decode_ber; +der_type_encoder_f CSGMembershipStatus_encode_der; +xer_type_decoder_f CSGMembershipStatus_decode_xer; +xer_type_encoder_f CSGMembershipStatus_encode_xer; +per_type_decoder_f CSGMembershipStatus_decode_uper; +per_type_encoder_f CSGMembershipStatus_encode_uper; +per_type_decoder_f CSGMembershipStatus_decode_aper; +per_type_encoder_f CSGMembershipStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSGMembershipStatus_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CSGMembershipUpdate.c b/src/hnbap/CSGMembershipUpdate.c new file mode 100644 index 0000000..bb5f940 --- /dev/null +++ b/src/hnbap/CSGMembershipUpdate.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "CSGMembershipUpdate.h" + +static int +memb_csgMembershipUpdate_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_csgMembershipUpdate_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_csgMembershipUpdate_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_csgMembershipUpdate_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_csgMembershipUpdate_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_csgMembershipUpdate_ies_specs_2 = { + sizeof(struct csgMembershipUpdate_ies), + offsetof(struct csgMembershipUpdate_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_csgMembershipUpdate_ies_2 = { + "csgMembershipUpdate-ies", + "csgMembershipUpdate-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_csgMembershipUpdate_ies_tags_2, + sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2) + /sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_csgMembershipUpdate_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2) + /sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2[0]), /* 2 */ + &asn_PER_type_csgMembershipUpdate_ies_constr_2, + asn_MBR_csgMembershipUpdate_ies_2, + 1, /* Single element */ + &asn_SPC_csgMembershipUpdate_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_CSGMembershipUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSGMembershipUpdate, csgMembershipUpdate_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_csgMembershipUpdate_ies_2, + memb_csgMembershipUpdate_ies_constraint_1, + &asn_PER_memb_csgMembershipUpdate_ies_constr_2, + 0, + "csgMembershipUpdate-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSGMembershipUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSGMembershipUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* csgMembershipUpdate-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CSGMembershipUpdate_specs_1 = { + sizeof(struct CSGMembershipUpdate), + offsetof(struct CSGMembershipUpdate, _asn_ctx), + asn_MAP_CSGMembershipUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_CSGMembershipUpdate = { + "CSGMembershipUpdate", + "CSGMembershipUpdate", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CSGMembershipUpdate_tags_1, + sizeof(asn_DEF_CSGMembershipUpdate_tags_1) + /sizeof(asn_DEF_CSGMembershipUpdate_tags_1[0]), /* 1 */ + asn_DEF_CSGMembershipUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_CSGMembershipUpdate_tags_1) + /sizeof(asn_DEF_CSGMembershipUpdate_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_CSGMembershipUpdate_1, + 1, /* Elements count */ + &asn_SPC_CSGMembershipUpdate_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CSGMembershipUpdate.h b/src/hnbap/CSGMembershipUpdate.h new file mode 100644 index 0000000..30fd770 --- /dev/null +++ b/src/hnbap/CSGMembershipUpdate.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CSGMembershipUpdate_H_ +#define _CSGMembershipUpdate_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* CSGMembershipUpdate */ +typedef struct CSGMembershipUpdate { + struct csgMembershipUpdate_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } csgMembershipUpdate_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSGMembershipUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipUpdate; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _CSGMembershipUpdate_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Cause.c b/src/hnbap/Cause.c new file mode 100644 index 0000000..0dd34e3 --- /dev/null +++ b/src/hnbap/Cause.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Cause.h" + +static asn_per_constraints_t asn_PER_type_Cause_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.radioNetwork), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRadioNetwork, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "radioNetwork" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { + sizeof(struct Cause), + offsetof(struct Cause, _asn_ctx), + offsetof(struct Cause, present), + sizeof(((struct Cause *)0)->present), + asn_MAP_Cause_tag2el_1, + 4, /* Count of tags in the map */ + 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Cause = { + "Cause", + "Cause", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_Cause_constr_1, + asn_MBR_Cause_1, + 4, /* Elements count */ + &asn_SPC_Cause_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Cause.h b/src/hnbap/Cause.h new file mode 100644 index 0000000..9802bf6 --- /dev/null +++ b/src/hnbap/Cause.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Cause_H_ +#define _Cause_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "CauseRadioNetwork.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_radioNetwork, + Cause_PR_transport, + Cause_PR_protocol, + Cause_PR_misc, + /* Extensions may appear below */ + +} Cause_PR; + +/* Cause */ +typedef struct Cause { + Cause_PR present; + union Cause_u { + CauseRadioNetwork_t radioNetwork; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Cause; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cause_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CauseMisc.c b/src/hnbap/CauseMisc.c new file mode 100644 index 0000000..47b1a6f --- /dev/null +++ b/src/hnbap/CauseMisc.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CauseMisc.h" + +int +CauseMisc_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CauseMisc_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CauseMisc_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CauseMisc_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CauseMisc_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CauseMisc_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CauseMisc_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CauseMisc_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CauseMisc_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CauseMisc_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CauseMisc_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CauseMisc_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CauseMisc_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseMisc_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { + { 0, 19, "processing-overload" }, + { 1, 16, "hardware-failure" }, + { 2, 20, "o-and-m-intervention" }, + { 3, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { + 1, /* hardware-failure(1) */ + 2, /* o-and-m-intervention(2) */ + 0, /* processing-overload(0) */ + 3 /* unspecified(3) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { + asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseMisc = { + "CauseMisc", + "CauseMisc", + CauseMisc_free, + CauseMisc_print, + CauseMisc_constraint, + CauseMisc_decode_ber, + CauseMisc_encode_der, + CauseMisc_decode_xer, + CauseMisc_encode_xer, + CauseMisc_decode_uper, + CauseMisc_encode_uper, + CauseMisc_decode_aper, + CauseMisc_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CauseMisc_tags_1, + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + &asn_PER_type_CauseMisc_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CauseMisc.h b/src/hnbap/CauseMisc.h new file mode 100644 index 0000000..7863364 --- /dev/null +++ b/src/hnbap/CauseMisc.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CauseMisc_H_ +#define _CauseMisc_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseMisc { + CauseMisc_processing_overload = 0, + CauseMisc_hardware_failure = 1, + CauseMisc_o_and_m_intervention = 2, + CauseMisc_unspecified = 3 + /* + * Enumeration is extensible + */ +} e_CauseMisc; + +/* CauseMisc */ +typedef long CauseMisc_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseMisc_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CauseProtocol.c b/src/hnbap/CauseProtocol.c new file mode 100644 index 0000000..dee71e1 --- /dev/null +++ b/src/hnbap/CauseProtocol.c @@ -0,0 +1,178 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CauseProtocol.h" + +int +CauseProtocol_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CauseProtocol_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CauseProtocol_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CauseProtocol_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CauseProtocol_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CauseProtocol_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CauseProtocol_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CauseProtocol_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CauseProtocol_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CauseProtocol_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CauseProtocol_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CauseProtocol_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 6l } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { + { 0, 21, "transfer-syntax-error" }, + { 1, 28, "abstract-syntax-error-reject" }, + { 2, 39, "abstract-syntax-error-ignore-and-notify" }, + { 3, 42, "message-not-compatible-with-receiver-state" }, + { 4, 14, "semantic-error" }, + { 5, 11, "unspecified" }, + { 6, 49, "abstract-syntax-error-falsely-constructed-message" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { + 6, /* abstract-syntax-error-falsely-constructed-message(6) */ + 2, /* abstract-syntax-error-ignore-and-notify(2) */ + 1, /* abstract-syntax-error-reject(1) */ + 3, /* message-not-compatible-with-receiver-state(3) */ + 4, /* semantic-error(4) */ + 0, /* transfer-syntax-error(0) */ + 5 /* unspecified(5) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { + asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + CauseProtocol_free, + CauseProtocol_print, + CauseProtocol_constraint, + CauseProtocol_decode_ber, + CauseProtocol_encode_der, + CauseProtocol_decode_xer, + CauseProtocol_encode_xer, + CauseProtocol_decode_uper, + CauseProtocol_encode_uper, + CauseProtocol_decode_aper, + CauseProtocol_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CauseProtocol_tags_1, + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + &asn_PER_type_CauseProtocol_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CauseProtocol.h b/src/hnbap/CauseProtocol.h new file mode 100644 index 0000000..1dc187c --- /dev/null +++ b/src/hnbap/CauseProtocol.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CauseProtocol_H_ +#define _CauseProtocol_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseProtocol { + CauseProtocol_transfer_syntax_error = 0, + CauseProtocol_abstract_syntax_error_reject = 1, + CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + CauseProtocol_message_not_compatible_with_receiver_state = 3, + CauseProtocol_semantic_error = 4, + CauseProtocol_unspecified = 5, + CauseProtocol_abstract_syntax_error_falsely_constructed_message = 6 + /* + * Enumeration is extensible + */ +} e_CauseProtocol; + +/* CauseProtocol */ +typedef long CauseProtocol_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseProtocol_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CauseRadioNetwork.c b/src/hnbap/CauseRadioNetwork.c new file mode 100644 index 0000000..54a6dbf --- /dev/null +++ b/src/hnbap/CauseRadioNetwork.c @@ -0,0 +1,196 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CauseRadioNetwork.h" + +int +CauseRadioNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CauseRadioNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CauseRadioNetwork_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CauseRadioNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CauseRadioNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CauseRadioNetwork_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CauseRadioNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CauseRadioNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CauseRadioNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CauseRadioNetwork_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CauseRadioNetwork_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CauseRadioNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CauseRadioNetwork_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0l, 13l } /* (0..13,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRadioNetwork_value2enum_1[] = { + { 0, 8, "overload" }, + { 1, 21, "unauthorised-Location" }, + { 2, 16, "unauthorised-HNB" }, + { 3, 22, "hNB-parameter-mismatch" }, + { 4, 19, "invalid-UE-identity" }, + { 5, 26, "uE-not-allowed-on-this-HNB" }, + { 6, 15, "uE-unauthorised" }, + { 7, 23, "connection-with-UE-lost" }, + { 8, 14, "ue-RRC-release" }, + { 9, 18, "hNB-not-registered" }, + { 10, 11, "unspecified" }, + { 11, 6, "normal" }, + { 12, 12, "uE-relocated" }, + { 13, 28, "ue-registered-in-another-HNB" }, + { 14, 34, "no-neighbour-information-available" }, + { 15, 45, "iurh-connection-to-that-neighbour-not-Allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRadioNetwork_enum2value_1[] = { + 7, /* connection-with-UE-lost(7) */ + 9, /* hNB-not-registered(9) */ + 3, /* hNB-parameter-mismatch(3) */ + 4, /* invalid-UE-identity(4) */ + 15, /* iurh-connection-to-that-neighbour-not-Allowed(15) */ + 14, /* no-neighbour-information-available(14) */ + 11, /* normal(11) */ + 0, /* overload(0) */ + 5, /* uE-not-allowed-on-this-HNB(5) */ + 12, /* uE-relocated(12) */ + 6, /* uE-unauthorised(6) */ + 8, /* ue-RRC-release(8) */ + 13, /* ue-registered-in-another-HNB(13) */ + 2, /* unauthorised-HNB(2) */ + 1, /* unauthorised-Location(1) */ + 10 /* unspecified(10) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1 = { + asn_MAP_CauseRadioNetwork_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRadioNetwork_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 15, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRadioNetwork_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork = { + "CauseRadioNetwork", + "CauseRadioNetwork", + CauseRadioNetwork_free, + CauseRadioNetwork_print, + CauseRadioNetwork_constraint, + CauseRadioNetwork_decode_ber, + CauseRadioNetwork_encode_der, + CauseRadioNetwork_decode_xer, + CauseRadioNetwork_encode_xer, + CauseRadioNetwork_decode_uper, + CauseRadioNetwork_encode_uper, + CauseRadioNetwork_decode_aper, + CauseRadioNetwork_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CauseRadioNetwork_tags_1, + sizeof(asn_DEF_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */ + asn_DEF_CauseRadioNetwork_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */ + &asn_PER_type_CauseRadioNetwork_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRadioNetwork_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CauseRadioNetwork.h b/src/hnbap/CauseRadioNetwork.h new file mode 100644 index 0000000..54d8b50 --- /dev/null +++ b/src/hnbap/CauseRadioNetwork.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CauseRadioNetwork_H_ +#define _CauseRadioNetwork_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRadioNetwork { + CauseRadioNetwork_overload = 0, + CauseRadioNetwork_unauthorised_Location = 1, + CauseRadioNetwork_unauthorised_HNB = 2, + CauseRadioNetwork_hNB_parameter_mismatch = 3, + CauseRadioNetwork_invalid_UE_identity = 4, + CauseRadioNetwork_uE_not_allowed_on_this_HNB = 5, + CauseRadioNetwork_uE_unauthorised = 6, + CauseRadioNetwork_connection_with_UE_lost = 7, + CauseRadioNetwork_ue_RRC_release = 8, + CauseRadioNetwork_hNB_not_registered = 9, + CauseRadioNetwork_unspecified = 10, + CauseRadioNetwork_normal = 11, + CauseRadioNetwork_uE_relocated = 12, + CauseRadioNetwork_ue_registered_in_another_HNB = 13, + /* + * Enumeration is extensible + */ + CauseRadioNetwork_no_neighbour_information_available = 14, + CauseRadioNetwork_iurh_connection_to_that_neighbour_not_Allowed = 15 +} e_CauseRadioNetwork; + +/* CauseRadioNetwork */ +typedef long CauseRadioNetwork_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork; +asn_struct_free_f CauseRadioNetwork_free; +asn_struct_print_f CauseRadioNetwork_print; +asn_constr_check_f CauseRadioNetwork_constraint; +ber_type_decoder_f CauseRadioNetwork_decode_ber; +der_type_encoder_f CauseRadioNetwork_encode_der; +xer_type_decoder_f CauseRadioNetwork_decode_xer; +xer_type_encoder_f CauseRadioNetwork_encode_xer; +per_type_decoder_f CauseRadioNetwork_decode_uper; +per_type_encoder_f CauseRadioNetwork_encode_uper; +per_type_decoder_f CauseRadioNetwork_decode_aper; +per_type_encoder_f CauseRadioNetwork_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRadioNetwork_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CauseTransport.c b/src/hnbap/CauseTransport.c new file mode 100644 index 0000000..835b182 --- /dev/null +++ b/src/hnbap/CauseTransport.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CauseTransport.h" + +int +CauseTransport_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +CauseTransport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +CauseTransport_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CauseTransport_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CauseTransport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CauseTransport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CauseTransport_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CauseTransport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CauseTransport_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CauseTransport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CauseTransport_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CauseTransport_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CauseTransport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CauseTransport_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { + { 0, 30, "transport-resource-unavailable" }, + { 1, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { + 0, /* transport-resource-unavailable(0) */ + 1 /* unspecified(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { + asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseTransport = { + "CauseTransport", + "CauseTransport", + CauseTransport_free, + CauseTransport_print, + CauseTransport_constraint, + CauseTransport_decode_ber, + CauseTransport_encode_der, + CauseTransport_decode_xer, + CauseTransport_encode_xer, + CauseTransport_decode_uper, + CauseTransport_encode_uper, + CauseTransport_decode_aper, + CauseTransport_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CauseTransport_tags_1, + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + &asn_PER_type_CauseTransport_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CauseTransport.h b/src/hnbap/CauseTransport.h new file mode 100644 index 0000000..ea445e9 --- /dev/null +++ b/src/hnbap/CauseTransport.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CauseTransport_H_ +#define _CauseTransport_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseTransport { + CauseTransport_transport_resource_unavailable = 0, + CauseTransport_unspecified = 1 + /* + * Enumeration is extensible + */ +} e_CauseTransport; + +/* CauseTransport */ +typedef long CauseTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseTransport_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CellIdentity.c b/src/hnbap/CellIdentity.c new file mode 100644 index 0000000..8357943 --- /dev/null +++ b/src/hnbap/CellIdentity.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CellIdentity.h" + +int +CellIdentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +CellIdentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +CellIdentity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + CellIdentity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +CellIdentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +CellIdentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +CellIdentity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +CellIdentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +CellIdentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +CellIdentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +CellIdentity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +CellIdentity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +CellIdentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + CellIdentity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_CellIdentity_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28l, 28l } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CellIdentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellIdentity = { + "CellIdentity", + "CellIdentity", + CellIdentity_free, + CellIdentity_print, + CellIdentity_constraint, + CellIdentity_decode_ber, + CellIdentity_encode_der, + CellIdentity_decode_xer, + CellIdentity_encode_xer, + CellIdentity_decode_uper, + CellIdentity_encode_uper, + CellIdentity_decode_aper, + CellIdentity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CellIdentity_tags_1, + sizeof(asn_DEF_CellIdentity_tags_1) + /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */ + asn_DEF_CellIdentity_tags_1, /* Same as above */ + sizeof(asn_DEF_CellIdentity_tags_1) + /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */ + &asn_PER_type_CellIdentity_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/CellIdentity.h b/src/hnbap/CellIdentity.h new file mode 100644 index 0000000..69b1688 --- /dev/null +++ b/src/hnbap/CellIdentity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CellIdentity_H_ +#define _CellIdentity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellIdentity */ +typedef BIT_STRING_t CellIdentity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellIdentity; +asn_struct_free_f CellIdentity_free; +asn_struct_print_f CellIdentity_print; +asn_constr_check_f CellIdentity_constraint; +ber_type_decoder_f CellIdentity_decode_ber; +der_type_encoder_f CellIdentity_encode_der; +xer_type_decoder_f CellIdentity_decode_xer; +xer_type_encoder_f CellIdentity_encode_xer; +per_type_decoder_f CellIdentity_decode_uper; +per_type_encoder_f CellIdentity_encode_uper; +per_type_decoder_f CellIdentity_decode_aper; +per_type_encoder_f CellIdentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellIdentity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/ConfigurationInformation.c b/src/hnbap/ConfigurationInformation.c new file mode 100644 index 0000000..f04f125 --- /dev/null +++ b/src/hnbap/ConfigurationInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "ConfigurationInformation.h" + +static asn_per_constraints_t asn_PER_type_ConfigurationInformation_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ConfigurationInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ConfigurationInformation, choice.provided), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HNBConfigurationInformationProvided, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "provided" + }, + { ATF_NOFLAGS, 0, offsetof(struct ConfigurationInformation, choice.missing), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HNBConfigurationInformationMissing, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "missing" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ConfigurationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* provided */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* missing */ +}; +static asn_CHOICE_specifics_t asn_SPC_ConfigurationInformation_specs_1 = { + sizeof(struct ConfigurationInformation), + offsetof(struct ConfigurationInformation, _asn_ctx), + offsetof(struct ConfigurationInformation, present), + sizeof(((struct ConfigurationInformation *)0)->present), + asn_MAP_ConfigurationInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ConfigurationInformation = { + "ConfigurationInformation", + "ConfigurationInformation", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_ConfigurationInformation_constr_1, + asn_MBR_ConfigurationInformation_1, + 2, /* Elements count */ + &asn_SPC_ConfigurationInformation_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/ConfigurationInformation.h b/src/hnbap/ConfigurationInformation.h new file mode 100644 index 0000000..347f5d2 --- /dev/null +++ b/src/hnbap/ConfigurationInformation.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _ConfigurationInformation_H_ +#define _ConfigurationInformation_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNBConfigurationInformationProvided.h" +#include "HNBConfigurationInformationMissing.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ConfigurationInformation_PR { + ConfigurationInformation_PR_NOTHING, /* No components present */ + ConfigurationInformation_PR_provided, + ConfigurationInformation_PR_missing, + /* Extensions may appear below */ + +} ConfigurationInformation_PR; + +/* ConfigurationInformation */ +typedef struct ConfigurationInformation { + ConfigurationInformation_PR present; + union ConfigurationInformation_u { + HNBConfigurationInformationProvided_t provided; + HNBConfigurationInformationMissing_t missing; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ConfigurationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ConfigurationInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _ConfigurationInformation_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Context-ID.c b/src/hnbap/Context-ID.c new file mode 100644 index 0000000..62820ae --- /dev/null +++ b/src/hnbap/Context-ID.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Context-ID.h" + +int +Context_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +Context_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +Context_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Context_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Context_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Context_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Context_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Context_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Context_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Context_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Context_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Context_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Context_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Context_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Context_ID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24l, 24l } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Context_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Context_ID = { + "Context-ID", + "Context-ID", + Context_ID_free, + Context_ID_print, + Context_ID_constraint, + Context_ID_decode_ber, + Context_ID_encode_der, + Context_ID_decode_xer, + Context_ID_encode_xer, + Context_ID_decode_uper, + Context_ID_encode_uper, + Context_ID_decode_aper, + Context_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Context_ID_tags_1, + sizeof(asn_DEF_Context_ID_tags_1) + /sizeof(asn_DEF_Context_ID_tags_1[0]), /* 1 */ + asn_DEF_Context_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Context_ID_tags_1) + /sizeof(asn_DEF_Context_ID_tags_1[0]), /* 1 */ + &asn_PER_type_Context_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/Context-ID.h b/src/hnbap/Context-ID.h new file mode 100644 index 0000000..89ba4e6 --- /dev/null +++ b/src/hnbap/Context-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Context_ID_H_ +#define _Context_ID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Context-ID */ +typedef BIT_STRING_t Context_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Context_ID; +asn_struct_free_f Context_ID_free; +asn_struct_print_f Context_ID_print; +asn_constr_check_f Context_ID_constraint; +ber_type_decoder_f Context_ID_decode_ber; +der_type_encoder_f Context_ID_encode_der; +xer_type_decoder_f Context_ID_decode_xer; +xer_type_encoder_f Context_ID_encode_xer; +per_type_decoder_f Context_ID_decode_uper; +per_type_encoder_f Context_ID_encode_uper; +per_type_decoder_f Context_ID_decode_aper; +per_type_encoder_f Context_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Context_ID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Criticality.c b/src/hnbap/Criticality.c new file mode 100644 index 0000000..56f5640 --- /dev/null +++ b/src/hnbap/Criticality.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#include "Criticality.h" + +int +Criticality_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +Criticality_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +Criticality_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Criticality_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Criticality_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Criticality_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Criticality_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Criticality_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Criticality_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Criticality_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Criticality_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Criticality_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Criticality_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Criticality_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Criticality_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { + asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Criticality = { + "Criticality", + "Criticality", + Criticality_free, + Criticality_print, + Criticality_constraint, + Criticality_decode_ber, + Criticality_encode_der, + Criticality_decode_xer, + Criticality_encode_xer, + Criticality_decode_uper, + Criticality_encode_uper, + Criticality_decode_aper, + Criticality_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Criticality_tags_1, + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + asn_DEF_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + &asn_PER_type_Criticality_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Criticality.h b/src/hnbap/Criticality.h new file mode 100644 index 0000000..c110ab9 --- /dev/null +++ b/src/hnbap/Criticality.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Criticality_H_ +#define _Criticality_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Criticality { + Criticality_reject = 0, + Criticality_ignore = 1, + Criticality_notify = 2 +} e_Criticality; + +/* Criticality */ +typedef long Criticality_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Criticality; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Criticality_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CriticalityDiagnostics-IE-List.c b/src/hnbap/CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000..4d58426 --- /dev/null +++ b/src/hnbap/CriticalityDiagnostics-IE-List.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CriticalityDiagnostics-IE-List.h" + +static asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Member, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct Member, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct Member, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfError, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "typeOfError" + }, + { ATF_POINTER, 1, offsetof(struct Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeOfError */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct Member), + offsetof(struct Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_List), + offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, + asn_MBR_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CriticalityDiagnostics-IE-List.h b/src/hnbap/CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000..05eec0a --- /dev/null +++ b/src/hnbap/CriticalityDiagnostics-IE-List.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CriticalityDiagnostics_IE_List_H_ +#define _CriticalityDiagnostics_IE_List_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include "Criticality.h" +#include "ProtocolIE-ID.h" +#include "TypeOfError.h" +#include <constr_SEQUENCE.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* CriticalityDiagnostics-IE-List */ +typedef struct CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(struct Member { + Criticality_t iECriticality; + ProtocolIE_ID_t iE_ID; + TypeOfError_t typeOfError; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _CriticalityDiagnostics_IE_List_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/CriticalityDiagnostics.c b/src/hnbap/CriticalityDiagnostics.c new file mode 100644 index 0000000..56d460f --- /dev/null +++ b/src/hnbap/CriticalityDiagnostics.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "CriticalityDiagnostics.h" + +static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TriggeringMessage, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CriticalityDiagnostics_IE_List, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iEsCriticalityDiagnostics" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { + sizeof(struct CriticalityDiagnostics), + offsetof(struct CriticalityDiagnostics, _asn_ctx), + asn_MAP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/CriticalityDiagnostics.h b/src/hnbap/CriticalityDiagnostics.h new file mode 100644 index 0000000..97936ed --- /dev/null +++ b/src/hnbap/CriticalityDiagnostics.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _CriticalityDiagnostics_H_ +#define _CriticalityDiagnostics_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TriggeringMessage.h" +#include "Criticality.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CriticalityDiagnostics_IE_List; +struct IE_Extensions; + +/* CriticalityDiagnostics */ +typedef struct CriticalityDiagnostics { + ProcedureCode_t *procedureCode /* OPTIONAL */; + TriggeringMessage_t *triggeringMessage /* OPTIONAL */; + Criticality_t *procedureCriticality /* OPTIONAL */; + struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics /* OPTIONAL */; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "CriticalityDiagnostics-IE-List.h" +#include "IE-Extensions.h" + +#endif /* _CriticalityDiagnostics_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/ESN.c b/src/hnbap/ESN.c new file mode 100644 index 0000000..1acc9f8 --- /dev/null +++ b/src/hnbap/ESN.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "ESN.h" + +int +ESN_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +ESN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +ESN_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ESN_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ESN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ESN_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ESN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ESN_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ESN_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ESN_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ESN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ESN_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ESN_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ESN_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ESN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ESN_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ESN_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ESN_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ESN_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ESN_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ESN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ESN_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_ESN_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ESN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ESN = { + "ESN", + "ESN", + ESN_free, + ESN_print, + ESN_constraint, + ESN_decode_ber, + ESN_encode_der, + ESN_decode_xer, + ESN_encode_xer, + ESN_decode_uper, + ESN_encode_uper, + ESN_decode_aper, + ESN_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ESN_tags_1, + sizeof(asn_DEF_ESN_tags_1) + /sizeof(asn_DEF_ESN_tags_1[0]), /* 1 */ + asn_DEF_ESN_tags_1, /* Same as above */ + sizeof(asn_DEF_ESN_tags_1) + /sizeof(asn_DEF_ESN_tags_1[0]), /* 1 */ + &asn_PER_type_ESN_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/ESN.h b/src/hnbap/ESN.h new file mode 100644 index 0000000..36ee2ca --- /dev/null +++ b/src/hnbap/ESN.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _ESN_H_ +#define _ESN_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* ESN */ +typedef BIT_STRING_t ESN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ESN; +asn_struct_free_f ESN_free; +asn_struct_print_f ESN_print; +asn_constr_check_f ESN_constraint; +ber_type_decoder_f ESN_decode_ber; +der_type_encoder_f ESN_encode_der; +xer_type_decoder_f ESN_decode_xer; +xer_type_encoder_f ESN_encode_xer; +per_type_decoder_f ESN_decode_uper; +per_type_encoder_f ESN_encode_uper; +per_type_decoder_f ESN_decode_aper; +per_type_encoder_f ESN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ESN_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/ErrorIndication.c b/src/hnbap/ErrorIndication.c new file mode 100644 index 0000000..7d25f8e --- /dev/null +++ b/src/hnbap/ErrorIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "ErrorIndication.h" + +static int +memb_errorIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_errorIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_errorIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_errorIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_errorIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_errorIndication_ies_specs_2 = { + sizeof(struct errorIndication_ies), + offsetof(struct errorIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_errorIndication_ies_2 = { + "errorIndication-ies", + "errorIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_errorIndication_ies_tags_2, + sizeof(asn_DEF_errorIndication_ies_tags_2) + /sizeof(asn_DEF_errorIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_errorIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_errorIndication_ies_tags_2) + /sizeof(asn_DEF_errorIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_errorIndication_ies_constr_2, + asn_MBR_errorIndication_ies_2, + 1, /* Single element */ + &asn_SPC_errorIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, errorIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_errorIndication_ies_2, + memb_errorIndication_ies_constraint_1, + &asn_PER_memb_errorIndication_ies_constr_2, + 0, + "errorIndication-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* errorIndication-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { + sizeof(struct ErrorIndication), + offsetof(struct ErrorIndication, _asn_ctx), + asn_MAP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ErrorIndication_tags_1, + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/ErrorIndication.h b/src/hnbap/ErrorIndication.h new file mode 100644 index 0000000..b68ec1b --- /dev/null +++ b/src/hnbap/ErrorIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _ErrorIndication_H_ +#define _ErrorIndication_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* ErrorIndication */ +typedef struct ErrorIndication { + struct errorIndication_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } errorIndication_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _ErrorIndication_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/GTP-TEI.c b/src/hnbap/GTP-TEI.c new file mode 100644 index 0000000..3faf842 --- /dev/null +++ b/src/hnbap/GTP-TEI.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "GTP-TEI.h" + +int +GTP_TEI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +GTP_TEI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +GTP_TEI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +GTP_TEI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +GTP_TEI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +GTP_TEI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +GTP_TEI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +GTP_TEI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +GTP_TEI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +GTP_TEI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +GTP_TEI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +GTP_TEI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + GTP_TEI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_GTP_TEI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GTP_TEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GTP_TEI = { + "GTP-TEI", + "GTP-TEI", + GTP_TEI_free, + GTP_TEI_print, + GTP_TEI_constraint, + GTP_TEI_decode_ber, + GTP_TEI_encode_der, + GTP_TEI_decode_xer, + GTP_TEI_encode_xer, + GTP_TEI_decode_uper, + GTP_TEI_encode_uper, + GTP_TEI_decode_aper, + GTP_TEI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_GTP_TEI_tags_1, + sizeof(asn_DEF_GTP_TEI_tags_1) + /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */ + asn_DEF_GTP_TEI_tags_1, /* Same as above */ + sizeof(asn_DEF_GTP_TEI_tags_1) + /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */ + &asn_PER_type_GTP_TEI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/GTP-TEI.h b/src/hnbap/GTP-TEI.h new file mode 100644 index 0000000..863c612 --- /dev/null +++ b/src/hnbap/GTP-TEI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _GTP_TEI_H_ +#define _GTP_TEI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* GTP-TEI */ +typedef OCTET_STRING_t GTP_TEI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GTP_TEI; +asn_struct_free_f GTP_TEI_free; +asn_struct_print_f GTP_TEI_print; +asn_constr_check_f GTP_TEI_constraint; +ber_type_decoder_f GTP_TEI_decode_ber; +der_type_encoder_f GTP_TEI_encode_der; +xer_type_decoder_f GTP_TEI_decode_xer; +xer_type_encoder_f GTP_TEI_encode_xer; +per_type_decoder_f GTP_TEI_decode_uper; +per_type_encoder_f GTP_TEI_encode_uper; +per_type_decoder_f GTP_TEI_decode_aper; +per_type_encoder_f GTP_TEI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GTP_TEI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/GeographicalCoordinates.c b/src/hnbap/GeographicalCoordinates.c new file mode 100644 index 0000000..8ff5810 --- /dev/null +++ b/src/hnbap/GeographicalCoordinates.c @@ -0,0 +1,313 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "GeographicalCoordinates.h" + +static int +latitudeSign_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +latitudeSign_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +static void +latitudeSign_2_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + latitudeSign_2_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +static int +latitudeSign_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +static asn_dec_rval_t +latitudeSign_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +static asn_enc_rval_t +latitudeSign_2_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +static asn_dec_rval_t +latitudeSign_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +static asn_enc_rval_t +latitudeSign_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +static asn_dec_rval_t +latitudeSign_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_enc_rval_t +latitudeSign_2_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +static asn_enc_rval_t +latitudeSign_2_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +static asn_dec_rval_t +latitudeSign_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + latitudeSign_2_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static int +memb_latitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 8388607l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_longitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -8388608ull && value <= 8388607l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_latitudeSign_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_latitude_constr_5 GCC_NOTUSED = { + { APC_CONSTRAINED, 23, -1, 0l, 8388607l } /* (0..8388607) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_longitude_constr_6 GCC_NOTUSED = { + { APC_CONSTRAINED, 24, -1, -8388608ull, 8388607l } /* (-8388608..8388607) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_latitudeSign_value2enum_2[] = { + { 0, 5, "north" }, + { 1, 5, "south" } +}; +static const unsigned int asn_MAP_latitudeSign_enum2value_2[] = { + 0, /* north(0) */ + 1 /* south(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_latitudeSign_specs_2 = { + asn_MAP_latitudeSign_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_latitudeSign_enum2value_2, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_latitudeSign_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_latitudeSign_2 = { + "latitudeSign", + "latitudeSign", + latitudeSign_2_free, + latitudeSign_2_print, + latitudeSign_2_constraint, + latitudeSign_2_decode_ber, + latitudeSign_2_encode_der, + latitudeSign_2_decode_xer, + latitudeSign_2_encode_xer, + latitudeSign_2_decode_uper, + latitudeSign_2_encode_uper, + latitudeSign_2_decode_aper, + latitudeSign_2_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_latitudeSign_tags_2, + sizeof(asn_DEF_latitudeSign_tags_2) + /sizeof(asn_DEF_latitudeSign_tags_2[0]) - 1, /* 1 */ + asn_DEF_latitudeSign_tags_2, /* Same as above */ + sizeof(asn_DEF_latitudeSign_tags_2) + /sizeof(asn_DEF_latitudeSign_tags_2[0]), /* 2 */ + &asn_PER_type_latitudeSign_constr_2, + 0, 0, /* Defined elsewhere */ + &asn_SPC_latitudeSign_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_GeographicalCoordinates_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GeographicalCoordinates, latitudeSign), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_latitudeSign_2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "latitudeSign" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeographicalCoordinates, latitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + memb_latitude_constraint_1, + &asn_PER_memb_latitude_constr_5, + 0, + "latitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeographicalCoordinates, longitude), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + memb_longitude_constraint_1, + &asn_PER_memb_longitude_constr_6, + 0, + "longitude" + }, + { ATF_POINTER, 1, offsetof(struct GeographicalCoordinates, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_GeographicalCoordinates_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_GeographicalCoordinates_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GeographicalCoordinates_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latitudeSign */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* latitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* longitude */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_GeographicalCoordinates_specs_1 = { + sizeof(struct GeographicalCoordinates), + offsetof(struct GeographicalCoordinates, _asn_ctx), + asn_MAP_GeographicalCoordinates_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_GeographicalCoordinates_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_GeographicalCoordinates = { + "GeographicalCoordinates", + "GeographicalCoordinates", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_GeographicalCoordinates_tags_1, + sizeof(asn_DEF_GeographicalCoordinates_tags_1) + /sizeof(asn_DEF_GeographicalCoordinates_tags_1[0]), /* 1 */ + asn_DEF_GeographicalCoordinates_tags_1, /* Same as above */ + sizeof(asn_DEF_GeographicalCoordinates_tags_1) + /sizeof(asn_DEF_GeographicalCoordinates_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_GeographicalCoordinates_1, + 4, /* Elements count */ + &asn_SPC_GeographicalCoordinates_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/GeographicalCoordinates.h b/src/hnbap/GeographicalCoordinates.h new file mode 100644 index 0000000..469a5cf --- /dev/null +++ b/src/hnbap/GeographicalCoordinates.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _GeographicalCoordinates_H_ +#define _GeographicalCoordinates_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> +#include <NativeInteger.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum latitudeSign { + latitudeSign_north = 0, + latitudeSign_south = 1 +} e_latitudeSign; + +/* Forward declarations */ +struct IE_Extensions; + +/* GeographicalCoordinates */ +typedef struct GeographicalCoordinates { + long latitudeSign; + long latitude; + long longitude; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GeographicalCoordinates_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_latitudeSign_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_GeographicalCoordinates; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _GeographicalCoordinates_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/GeographicalLocation.c b/src/hnbap/GeographicalLocation.c new file mode 100644 index 0000000..c76978d --- /dev/null +++ b/src/hnbap/GeographicalLocation.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "GeographicalLocation.h" + +static asn_TYPE_member_t asn_MBR_GeographicalLocation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GeographicalLocation, geographicalCoordinates), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GeographicalCoordinates, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "geographicalCoordinates" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeographicalLocation, altitudeAndDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AltitudeAndDirection, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "altitudeAndDirection" + }, + { ATF_POINTER, 1, offsetof(struct GeographicalLocation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_GeographicalLocation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GeographicalLocation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GeographicalLocation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altitudeAndDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_GeographicalLocation_specs_1 = { + sizeof(struct GeographicalLocation), + offsetof(struct GeographicalLocation, _asn_ctx), + asn_MAP_GeographicalLocation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GeographicalLocation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_GeographicalLocation = { + "GeographicalLocation", + "GeographicalLocation", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_GeographicalLocation_tags_1, + sizeof(asn_DEF_GeographicalLocation_tags_1) + /sizeof(asn_DEF_GeographicalLocation_tags_1[0]), /* 1 */ + asn_DEF_GeographicalLocation_tags_1, /* Same as above */ + sizeof(asn_DEF_GeographicalLocation_tags_1) + /sizeof(asn_DEF_GeographicalLocation_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_GeographicalLocation_1, + 3, /* Elements count */ + &asn_SPC_GeographicalLocation_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/GeographicalLocation.h b/src/hnbap/GeographicalLocation.h new file mode 100644 index 0000000..4b2688d --- /dev/null +++ b/src/hnbap/GeographicalLocation.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _GeographicalLocation_H_ +#define _GeographicalLocation_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "GeographicalCoordinates.h" +#include "AltitudeAndDirection.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* GeographicalLocation */ +typedef struct GeographicalLocation { + GeographicalCoordinates_t geographicalCoordinates; + AltitudeAndDirection_t altitudeAndDirection; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GeographicalLocation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GeographicalLocation; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _GeographicalLocation_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-Cell-Access-Mode.c b/src/hnbap/HNB-Cell-Access-Mode.c new file mode 100644 index 0000000..322c49a --- /dev/null +++ b/src/hnbap/HNB-Cell-Access-Mode.c @@ -0,0 +1,170 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-Cell-Access-Mode.h" + +int +HNB_Cell_Access_Mode_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +HNB_Cell_Access_Mode_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +HNB_Cell_Access_Mode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +HNB_Cell_Access_Mode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +HNB_Cell_Access_Mode_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +HNB_Cell_Access_Mode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +HNB_Cell_Access_Mode_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +HNB_Cell_Access_Mode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +HNB_Cell_Access_Mode_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +HNB_Cell_Access_Mode_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +HNB_Cell_Access_Mode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_HNB_Cell_Access_Mode_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_HNB_Cell_Access_Mode_value2enum_1[] = { + { 0, 6, "closed" }, + { 1, 6, "hybrid" }, + { 2, 4, "open" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_HNB_Cell_Access_Mode_enum2value_1[] = { + 0, /* closed(0) */ + 1, /* hybrid(1) */ + 2 /* open(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_HNB_Cell_Access_Mode_specs_1 = { + asn_MAP_HNB_Cell_Access_Mode_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HNB_Cell_Access_Mode_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HNB_Cell_Access_Mode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Access_Mode = { + "HNB-Cell-Access-Mode", + "HNB-Cell-Access-Mode", + HNB_Cell_Access_Mode_free, + HNB_Cell_Access_Mode_print, + HNB_Cell_Access_Mode_constraint, + HNB_Cell_Access_Mode_decode_ber, + HNB_Cell_Access_Mode_encode_der, + HNB_Cell_Access_Mode_decode_xer, + HNB_Cell_Access_Mode_encode_xer, + HNB_Cell_Access_Mode_decode_uper, + HNB_Cell_Access_Mode_encode_uper, + HNB_Cell_Access_Mode_decode_aper, + HNB_Cell_Access_Mode_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNB_Cell_Access_Mode_tags_1, + sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1) + /sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1[0]), /* 1 */ + asn_DEF_HNB_Cell_Access_Mode_tags_1, /* Same as above */ + sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1) + /sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1[0]), /* 1 */ + &asn_PER_type_HNB_Cell_Access_Mode_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HNB_Cell_Access_Mode_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNB-Cell-Access-Mode.h b/src/hnbap/HNB-Cell-Access-Mode.h new file mode 100644 index 0000000..76778e4 --- /dev/null +++ b/src/hnbap/HNB-Cell-Access-Mode.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_Cell_Access_Mode_H_ +#define _HNB_Cell_Access_Mode_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HNB_Cell_Access_Mode { + HNB_Cell_Access_Mode_closed = 0, + HNB_Cell_Access_Mode_hybrid = 1, + HNB_Cell_Access_Mode_open = 2 + /* + * Enumeration is extensible + */ +} e_HNB_Cell_Access_Mode; + +/* HNB-Cell-Access-Mode */ +typedef long HNB_Cell_Access_Mode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Access_Mode; +asn_struct_free_f HNB_Cell_Access_Mode_free; +asn_struct_print_f HNB_Cell_Access_Mode_print; +asn_constr_check_f HNB_Cell_Access_Mode_constraint; +ber_type_decoder_f HNB_Cell_Access_Mode_decode_ber; +der_type_encoder_f HNB_Cell_Access_Mode_encode_der; +xer_type_decoder_f HNB_Cell_Access_Mode_decode_xer; +xer_type_encoder_f HNB_Cell_Access_Mode_encode_xer; +per_type_decoder_f HNB_Cell_Access_Mode_decode_uper; +per_type_encoder_f HNB_Cell_Access_Mode_encode_uper; +per_type_decoder_f HNB_Cell_Access_Mode_decode_aper; +per_type_encoder_f HNB_Cell_Access_Mode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HNB_Cell_Access_Mode_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-Cell-Identifier.c b/src/hnbap/HNB-Cell-Identifier.c new file mode 100644 index 0000000..d72a3d6 --- /dev/null +++ b/src/hnbap/HNB-Cell-Identifier.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-Cell-Identifier.h" + +static asn_TYPE_member_t asn_MBR_HNB_Cell_Identifier_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNB_Cell_Identifier, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNidentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNB_Cell_Identifier, cellIdentity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellIdentity" + }, + { ATF_POINTER, 1, offsetof(struct HNB_Cell_Identifier, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_HNB_Cell_Identifier_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_HNB_Cell_Identifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNB_Cell_Identifier_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNB_Cell_Identifier_specs_1 = { + sizeof(struct HNB_Cell_Identifier), + offsetof(struct HNB_Cell_Identifier, _asn_ctx), + asn_MAP_HNB_Cell_Identifier_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_HNB_Cell_Identifier_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Identifier = { + "HNB-Cell-Identifier", + "HNB-Cell-Identifier", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNB_Cell_Identifier_tags_1, + sizeof(asn_DEF_HNB_Cell_Identifier_tags_1) + /sizeof(asn_DEF_HNB_Cell_Identifier_tags_1[0]), /* 1 */ + asn_DEF_HNB_Cell_Identifier_tags_1, /* Same as above */ + sizeof(asn_DEF_HNB_Cell_Identifier_tags_1) + /sizeof(asn_DEF_HNB_Cell_Identifier_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNB_Cell_Identifier_1, + 3, /* Elements count */ + &asn_SPC_HNB_Cell_Identifier_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNB-Cell-Identifier.h b/src/hnbap/HNB-Cell-Identifier.h new file mode 100644 index 0000000..a887096 --- /dev/null +++ b/src/hnbap/HNB-Cell-Identifier.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_Cell_Identifier_H_ +#define _HNB_Cell_Identifier_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "PLMNidentity.h" +#include "CellIdentity.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* HNB-Cell-Identifier */ +typedef struct HNB_Cell_Identifier { + PLMNidentity_t pLMNidentity; + CellIdentity_t cellIdentity; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNB_Cell_Identifier_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Identifier; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _HNB_Cell_Identifier_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-GWResponse.c b/src/hnbap/HNB-GWResponse.c new file mode 100644 index 0000000..2d782c2 --- /dev/null +++ b/src/hnbap/HNB-GWResponse.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-GWResponse.h" + +static asn_per_constraints_t asn_PER_type_HNB_GWResponse_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_HNB_GWResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNB_GWResponse, choice.hNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HNBConfigInfo, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNB_GWResponse, choice.macroRNC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RNC_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "macroRNC" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNB_GWResponse, choice.unknownU_RNTIIndication), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnknownU_RNTIIndication, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "unknownU-RNTIIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_HNB_GWResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* macroRNC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unknownU-RNTIIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_HNB_GWResponse_specs_1 = { + sizeof(struct HNB_GWResponse), + offsetof(struct HNB_GWResponse, _asn_ctx), + offsetof(struct HNB_GWResponse, present), + sizeof(((struct HNB_GWResponse *)0)->present), + asn_MAP_HNB_GWResponse_tag2el_1, + 3, /* Count of tags in the map */ + 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_HNB_GWResponse = { + "HNB-GWResponse", + "HNB-GWResponse", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_HNB_GWResponse_constr_1, + asn_MBR_HNB_GWResponse_1, + 3, /* Elements count */ + &asn_SPC_HNB_GWResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNB-GWResponse.h b/src/hnbap/HNB-GWResponse.h new file mode 100644 index 0000000..cd75a71 --- /dev/null +++ b/src/hnbap/HNB-GWResponse.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_GWResponse_H_ +#define _HNB_GWResponse_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNBConfigInfo.h" +#include "RNC-ID.h" +#include "UnknownU-RNTIIndication.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HNB_GWResponse_PR { + HNB_GWResponse_PR_NOTHING, /* No components present */ + HNB_GWResponse_PR_hNB, + HNB_GWResponse_PR_macroRNC, + HNB_GWResponse_PR_unknownU_RNTIIndication, + /* Extensions may appear below */ + +} HNB_GWResponse_PR; + +/* HNB-GWResponse */ +typedef struct HNB_GWResponse { + HNB_GWResponse_PR present; + union HNB_GWResponse_u { + HNBConfigInfo_t hNB; + RNC_ID_t macroRNC; + UnknownU_RNTIIndication_t unknownU_RNTIIndication; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNB_GWResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_GWResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _HNB_GWResponse_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-Identity-Info.c b/src/hnbap/HNB-Identity-Info.c new file mode 100644 index 0000000..3296058 --- /dev/null +++ b/src/hnbap/HNB-Identity-Info.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-Identity-Info.h" + +int +HNB_Identity_Info_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1l && size <= 255l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +HNB_Identity_Info_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +HNB_Identity_Info_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +HNB_Identity_Info_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +HNB_Identity_Info_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +HNB_Identity_Info_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +HNB_Identity_Info_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +HNB_Identity_Info_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +HNB_Identity_Info_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +HNB_Identity_Info_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +HNB_Identity_Info_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +HNB_Identity_Info_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + HNB_Identity_Info_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_HNB_Identity_Info_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 255l } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HNB_Identity_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HNB_Identity_Info = { + "HNB-Identity-Info", + "HNB-Identity-Info", + HNB_Identity_Info_free, + HNB_Identity_Info_print, + HNB_Identity_Info_constraint, + HNB_Identity_Info_decode_ber, + HNB_Identity_Info_encode_der, + HNB_Identity_Info_decode_xer, + HNB_Identity_Info_encode_xer, + HNB_Identity_Info_decode_uper, + HNB_Identity_Info_encode_uper, + HNB_Identity_Info_decode_aper, + HNB_Identity_Info_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNB_Identity_Info_tags_1, + sizeof(asn_DEF_HNB_Identity_Info_tags_1) + /sizeof(asn_DEF_HNB_Identity_Info_tags_1[0]), /* 1 */ + asn_DEF_HNB_Identity_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_HNB_Identity_Info_tags_1) + /sizeof(asn_DEF_HNB_Identity_Info_tags_1[0]), /* 1 */ + &asn_PER_type_HNB_Identity_Info_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/HNB-Identity-Info.h b/src/hnbap/HNB-Identity-Info.h new file mode 100644 index 0000000..f36ac89 --- /dev/null +++ b/src/hnbap/HNB-Identity-Info.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_Identity_Info_H_ +#define _HNB_Identity_Info_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* HNB-Identity-Info */ +typedef OCTET_STRING_t HNB_Identity_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_Identity_Info; +asn_struct_free_f HNB_Identity_Info_free; +asn_struct_print_f HNB_Identity_Info_print; +asn_constr_check_f HNB_Identity_Info_constraint; +ber_type_decoder_f HNB_Identity_Info_decode_ber; +der_type_encoder_f HNB_Identity_Info_encode_der; +xer_type_decoder_f HNB_Identity_Info_decode_xer; +xer_type_encoder_f HNB_Identity_Info_encode_xer; +per_type_decoder_f HNB_Identity_Info_decode_uper; +per_type_encoder_f HNB_Identity_Info_encode_uper; +per_type_decoder_f HNB_Identity_Info_decode_aper; +per_type_encoder_f HNB_Identity_Info_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HNB_Identity_Info_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-Identity.c b/src/hnbap/HNB-Identity.c new file mode 100644 index 0000000..3c1cbeb --- /dev/null +++ b/src/hnbap/HNB-Identity.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-Identity.h" + +static asn_TYPE_member_t asn_MBR_HNB_Identity_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNB_Identity, hNB_Identity_Info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HNB_Identity_Info, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hNB-Identity-Info" + }, + { ATF_POINTER, 1, offsetof(struct HNB_Identity, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_HNB_Identity_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_HNB_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNB_Identity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hNB-Identity-Info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNB_Identity_specs_1 = { + sizeof(struct HNB_Identity), + offsetof(struct HNB_Identity, _asn_ctx), + asn_MAP_HNB_Identity_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_HNB_Identity_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNB_Identity = { + "HNB-Identity", + "HNB-Identity", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNB_Identity_tags_1, + sizeof(asn_DEF_HNB_Identity_tags_1) + /sizeof(asn_DEF_HNB_Identity_tags_1[0]), /* 1 */ + asn_DEF_HNB_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_HNB_Identity_tags_1) + /sizeof(asn_DEF_HNB_Identity_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNB_Identity_1, + 2, /* Elements count */ + &asn_SPC_HNB_Identity_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNB-Identity.h b/src/hnbap/HNB-Identity.h new file mode 100644 index 0000000..af0a7b2 --- /dev/null +++ b/src/hnbap/HNB-Identity.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_Identity_H_ +#define _HNB_Identity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNB-Identity-Info.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* HNB-Identity */ +typedef struct HNB_Identity { + HNB_Identity_Info_t hNB_Identity_Info; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNB_Identity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_Identity; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _HNB_Identity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-Location-Information.c b/src/hnbap/HNB-Location-Information.c new file mode 100644 index 0000000..6d1150b --- /dev/null +++ b/src/hnbap/HNB-Location-Information.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-Location-Information.h" + +static asn_TYPE_member_t asn_MBR_HNB_Location_Information_1[] = { + { ATF_POINTER, 3, offsetof(struct HNB_Location_Information, macroCoverageInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MacroCoverageInformation, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "macroCoverageInfo" + }, + { ATF_POINTER, 2, offsetof(struct HNB_Location_Information, geographicalCoordinates), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GeographicalLocation, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "geographicalCoordinates" + }, + { ATF_POINTER, 1, offsetof(struct HNB_Location_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_HNB_Location_Information_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_HNB_Location_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNB_Location_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroCoverageInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* geographicalCoordinates */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNB_Location_Information_specs_1 = { + sizeof(struct HNB_Location_Information), + offsetof(struct HNB_Location_Information, _asn_ctx), + asn_MAP_HNB_Location_Information_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_HNB_Location_Information_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNB_Location_Information = { + "HNB-Location-Information", + "HNB-Location-Information", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNB_Location_Information_tags_1, + sizeof(asn_DEF_HNB_Location_Information_tags_1) + /sizeof(asn_DEF_HNB_Location_Information_tags_1[0]), /* 1 */ + asn_DEF_HNB_Location_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_HNB_Location_Information_tags_1) + /sizeof(asn_DEF_HNB_Location_Information_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNB_Location_Information_1, + 3, /* Elements count */ + &asn_SPC_HNB_Location_Information_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNB-Location-Information.h b/src/hnbap/HNB-Location-Information.h new file mode 100644 index 0000000..2450351 --- /dev/null +++ b/src/hnbap/HNB-Location-Information.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_Location_Information_H_ +#define _HNB_Location_Information_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MacroCoverageInformation; +struct GeographicalLocation; +struct IE_Extensions; + +/* HNB-Location-Information */ +typedef struct HNB_Location_Information { + struct MacroCoverageInformation *macroCoverageInfo /* OPTIONAL */; + struct GeographicalLocation *geographicalCoordinates /* OPTIONAL */; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNB_Location_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_Location_Information; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "MacroCoverageInformation.h" +#include "GeographicalLocation.h" +#include "IE-Extensions.h" + +#endif /* _HNB_Location_Information_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNB-RNL-Identity.c b/src/hnbap/HNB-RNL-Identity.c new file mode 100644 index 0000000..65769f2 --- /dev/null +++ b/src/hnbap/HNB-RNL-Identity.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNB-RNL-Identity.h" + +static asn_per_constraints_t asn_PER_type_HNB_RNL_Identity_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_HNB_RNL_Identity_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNB_RNL_Identity, choice.hNB_Identity_as_Cell_Identifier), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HNB_Cell_Identifier, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hNB-Identity-as-Cell-Identifier" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_HNB_RNL_Identity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hNB-Identity-as-Cell-Identifier */ +}; +static asn_CHOICE_specifics_t asn_SPC_HNB_RNL_Identity_specs_1 = { + sizeof(struct HNB_RNL_Identity), + offsetof(struct HNB_RNL_Identity, _asn_ctx), + offsetof(struct HNB_RNL_Identity, present), + sizeof(((struct HNB_RNL_Identity *)0)->present), + asn_MAP_HNB_RNL_Identity_tag2el_1, + 1, /* Count of tags in the map */ + 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_HNB_RNL_Identity = { + "HNB-RNL-Identity", + "HNB-RNL-Identity", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_HNB_RNL_Identity_constr_1, + asn_MBR_HNB_RNL_Identity_1, + 1, /* Elements count */ + &asn_SPC_HNB_RNL_Identity_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNB-RNL-Identity.h b/src/hnbap/HNB-RNL-Identity.h new file mode 100644 index 0000000..75f29b0 --- /dev/null +++ b/src/hnbap/HNB-RNL-Identity.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNB_RNL_Identity_H_ +#define _HNB_RNL_Identity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNB-Cell-Identifier.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HNB_RNL_Identity_PR { + HNB_RNL_Identity_PR_NOTHING, /* No components present */ + HNB_RNL_Identity_PR_hNB_Identity_as_Cell_Identifier, + /* Extensions may appear below */ + +} HNB_RNL_Identity_PR; + +/* HNB-RNL-Identity */ +typedef struct HNB_RNL_Identity { + HNB_RNL_Identity_PR present; + union HNB_RNL_Identity_u { + HNB_Cell_Identifier_t hNB_Identity_as_Cell_Identifier; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNB_RNL_Identity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNB_RNL_Identity; + +#ifdef __cplusplus +} +#endif + +#endif /* _HNB_RNL_Identity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBAP-PDU.c b/src/hnbap/HNBAP-PDU.c new file mode 100644 index 0000000..a430881 --- /dev/null +++ b/src/hnbap/HNBAP-PDU.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBAP-PDU.h" + +static asn_per_constraints_t asn_PER_type_HNBAP_PDU_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_HNBAP_PDU_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBAP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InitiatingMessage, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "initiatingMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNBAP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SuccessfulOutcome, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "successfulOutcome" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNBAP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsuccessfulOutcome, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBAP_PDU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ +}; +static asn_CHOICE_specifics_t asn_SPC_HNBAP_PDU_specs_1 = { + sizeof(struct HNBAP_PDU), + offsetof(struct HNBAP_PDU, _asn_ctx), + offsetof(struct HNBAP_PDU, present), + sizeof(((struct HNBAP_PDU *)0)->present), + asn_MAP_HNBAP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBAP_PDU = { + "HNBAP-PDU", + "HNBAP-PDU", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_HNBAP_PDU_constr_1, + asn_MBR_HNBAP_PDU_1, + 3, /* Elements count */ + &asn_SPC_HNBAP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBAP-PDU.h b/src/hnbap/HNBAP-PDU.h new file mode 100644 index 0000000..8417085 --- /dev/null +++ b/src/hnbap/HNBAP-PDU.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBAP_PDU_H_ +#define _HNBAP_PDU_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "InitiatingMessage.h" +#include "SuccessfulOutcome.h" +#include "UnsuccessfulOutcome.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HNBAP_PDU_PR { + HNBAP_PDU_PR_NOTHING, /* No components present */ + HNBAP_PDU_PR_initiatingMessage, + HNBAP_PDU_PR_successfulOutcome, + HNBAP_PDU_PR_unsuccessfulOutcome, + /* Extensions may appear below */ + +} HNBAP_PDU_PR; + +/* HNBAP-PDU */ +typedef struct HNBAP_PDU { + HNBAP_PDU_PR present; + union HNBAP_PDU_u { + InitiatingMessage_t initiatingMessage; + SuccessfulOutcome_t successfulOutcome; + UnsuccessfulOutcome_t unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBAP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBAP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _HNBAP_PDU_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBCapacity.c b/src/hnbap/HNBCapacity.c new file mode 100644 index 0000000..0c8acb9 --- /dev/null +++ b/src/hnbap/HNBCapacity.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNBCapacity.h" + +int +HNBCapacity_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 1000l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +HNBCapacity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +HNBCapacity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +HNBCapacity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +HNBCapacity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +HNBCapacity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +HNBCapacity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +HNBCapacity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +HNBCapacity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +HNBCapacity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +HNBCapacity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +HNBCapacity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + HNBCapacity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_HNBCapacity_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0l, 1000l } /* (0..1000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HNBCapacity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HNBCapacity = { + "HNBCapacity", + "HNBCapacity", + HNBCapacity_free, + HNBCapacity_print, + HNBCapacity_constraint, + HNBCapacity_decode_ber, + HNBCapacity_encode_der, + HNBCapacity_decode_xer, + HNBCapacity_encode_xer, + HNBCapacity_decode_uper, + HNBCapacity_encode_uper, + HNBCapacity_decode_aper, + HNBCapacity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBCapacity_tags_1, + sizeof(asn_DEF_HNBCapacity_tags_1) + /sizeof(asn_DEF_HNBCapacity_tags_1[0]), /* 1 */ + asn_DEF_HNBCapacity_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBCapacity_tags_1) + /sizeof(asn_DEF_HNBCapacity_tags_1[0]), /* 1 */ + &asn_PER_type_HNBCapacity_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/HNBCapacity.h b/src/hnbap/HNBCapacity.h new file mode 100644 index 0000000..2c6eea1 --- /dev/null +++ b/src/hnbap/HNBCapacity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBCapacity_H_ +#define _HNBCapacity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* HNBCapacity */ +typedef long HNBCapacity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBCapacity; +asn_struct_free_f HNBCapacity_free; +asn_struct_print_f HNBCapacity_print; +asn_constr_check_f HNBCapacity_constraint; +ber_type_decoder_f HNBCapacity_decode_ber; +der_type_encoder_f HNBCapacity_encode_der; +xer_type_decoder_f HNBCapacity_decode_xer; +xer_type_encoder_f HNBCapacity_encode_xer; +per_type_decoder_f HNBCapacity_decode_uper; +per_type_encoder_f HNBCapacity_encode_uper; +per_type_decoder_f HNBCapacity_decode_aper; +per_type_encoder_f HNBCapacity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HNBCapacity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBConfigInfo.c b/src/hnbap/HNBConfigInfo.c new file mode 100644 index 0000000..dd1ddda --- /dev/null +++ b/src/hnbap/HNBConfigInfo.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNBConfigInfo.h" + +static asn_TYPE_member_t asn_MBR_HNBConfigInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigInfo, hnb_RNL_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_HNB_RNL_Identity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hnb-RNL-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigInfo, configurationInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ConfigurationInformation, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "configurationInformation" + }, + { ATF_POINTER, 1, offsetof(struct HNBConfigInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_HNBConfigInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_HNBConfigInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBConfigInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hnb-RNL-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* configurationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigInfo_specs_1 = { + sizeof(struct HNBConfigInfo), + offsetof(struct HNBConfigInfo, _asn_ctx), + asn_MAP_HNBConfigInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_HNBConfigInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBConfigInfo = { + "HNBConfigInfo", + "HNBConfigInfo", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBConfigInfo_tags_1, + sizeof(asn_DEF_HNBConfigInfo_tags_1) + /sizeof(asn_DEF_HNBConfigInfo_tags_1[0]), /* 1 */ + asn_DEF_HNBConfigInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBConfigInfo_tags_1) + /sizeof(asn_DEF_HNBConfigInfo_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBConfigInfo_1, + 3, /* Elements count */ + &asn_SPC_HNBConfigInfo_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBConfigInfo.h b/src/hnbap/HNBConfigInfo.h new file mode 100644 index 0000000..2c45d51 --- /dev/null +++ b/src/hnbap/HNBConfigInfo.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBConfigInfo_H_ +#define _HNBConfigInfo_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNB-RNL-Identity.h" +#include "ConfigurationInformation.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* HNBConfigInfo */ +typedef struct HNBConfigInfo { + HNB_RNL_Identity_t hnb_RNL_Identity; + ConfigurationInformation_t configurationInformation; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBConfigInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBConfigInfo; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _HNBConfigInfo_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBConfigTransferRequest.c b/src/hnbap/HNBConfigTransferRequest.c new file mode 100644 index 0000000..336bd98 --- /dev/null +++ b/src/hnbap/HNBConfigTransferRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBConfigTransferRequest.h" + +static int +memb_hnbConfigTransferRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_hnbConfigTransferRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_hnbConfigTransferRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_hnbConfigTransferRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_hnbConfigTransferRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_hnbConfigTransferRequest_ies_specs_2 = { + sizeof(struct hnbConfigTransferRequest_ies), + offsetof(struct hnbConfigTransferRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_hnbConfigTransferRequest_ies_2 = { + "hnbConfigTransferRequest-ies", + "hnbConfigTransferRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_hnbConfigTransferRequest_ies_tags_2, + sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2) + /sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_hnbConfigTransferRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2) + /sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_hnbConfigTransferRequest_ies_constr_2, + asn_MBR_hnbConfigTransferRequest_ies_2, + 1, /* Single element */ + &asn_SPC_hnbConfigTransferRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_HNBConfigTransferRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigTransferRequest, hnbConfigTransferRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_hnbConfigTransferRequest_ies_2, + memb_hnbConfigTransferRequest_ies_constraint_1, + &asn_PER_memb_hnbConfigTransferRequest_ies_constr_2, + 0, + "hnbConfigTransferRequest-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_HNBConfigTransferRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBConfigTransferRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbConfigTransferRequest-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigTransferRequest_specs_1 = { + sizeof(struct HNBConfigTransferRequest), + offsetof(struct HNBConfigTransferRequest, _asn_ctx), + asn_MAP_HNBConfigTransferRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferRequest = { + "HNBConfigTransferRequest", + "HNBConfigTransferRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBConfigTransferRequest_tags_1, + sizeof(asn_DEF_HNBConfigTransferRequest_tags_1) + /sizeof(asn_DEF_HNBConfigTransferRequest_tags_1[0]), /* 1 */ + asn_DEF_HNBConfigTransferRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBConfigTransferRequest_tags_1) + /sizeof(asn_DEF_HNBConfigTransferRequest_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBConfigTransferRequest_1, + 1, /* Elements count */ + &asn_SPC_HNBConfigTransferRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBConfigTransferRequest.h b/src/hnbap/HNBConfigTransferRequest.h new file mode 100644 index 0000000..16fd0b1 --- /dev/null +++ b/src/hnbap/HNBConfigTransferRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBConfigTransferRequest_H_ +#define _HNBConfigTransferRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* HNBConfigTransferRequest */ +typedef struct HNBConfigTransferRequest { + struct hnbConfigTransferRequest_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } hnbConfigTransferRequest_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBConfigTransferRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferRequest; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _HNBConfigTransferRequest_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBConfigTransferResponse.c b/src/hnbap/HNBConfigTransferResponse.c new file mode 100644 index 0000000..da454cb --- /dev/null +++ b/src/hnbap/HNBConfigTransferResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBConfigTransferResponse.h" + +static int +memb_hnbConfigTransferResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_hnbConfigTransferResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_hnbConfigTransferResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_hnbConfigTransferResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_hnbConfigTransferResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_hnbConfigTransferResponse_ies_specs_2 = { + sizeof(struct hnbConfigTransferResponse_ies), + offsetof(struct hnbConfigTransferResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_hnbConfigTransferResponse_ies_2 = { + "hnbConfigTransferResponse-ies", + "hnbConfigTransferResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_hnbConfigTransferResponse_ies_tags_2, + sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2) + /sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_hnbConfigTransferResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2) + /sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_hnbConfigTransferResponse_ies_constr_2, + asn_MBR_hnbConfigTransferResponse_ies_2, + 1, /* Single element */ + &asn_SPC_hnbConfigTransferResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_HNBConfigTransferResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigTransferResponse, hnbConfigTransferResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_hnbConfigTransferResponse_ies_2, + memb_hnbConfigTransferResponse_ies_constraint_1, + &asn_PER_memb_hnbConfigTransferResponse_ies_constr_2, + 0, + "hnbConfigTransferResponse-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_HNBConfigTransferResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBConfigTransferResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbConfigTransferResponse-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigTransferResponse_specs_1 = { + sizeof(struct HNBConfigTransferResponse), + offsetof(struct HNBConfigTransferResponse, _asn_ctx), + asn_MAP_HNBConfigTransferResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferResponse = { + "HNBConfigTransferResponse", + "HNBConfigTransferResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBConfigTransferResponse_tags_1, + sizeof(asn_DEF_HNBConfigTransferResponse_tags_1) + /sizeof(asn_DEF_HNBConfigTransferResponse_tags_1[0]), /* 1 */ + asn_DEF_HNBConfigTransferResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBConfigTransferResponse_tags_1) + /sizeof(asn_DEF_HNBConfigTransferResponse_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBConfigTransferResponse_1, + 1, /* Elements count */ + &asn_SPC_HNBConfigTransferResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBConfigTransferResponse.h b/src/hnbap/HNBConfigTransferResponse.h new file mode 100644 index 0000000..b858332 --- /dev/null +++ b/src/hnbap/HNBConfigTransferResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBConfigTransferResponse_H_ +#define _HNBConfigTransferResponse_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* HNBConfigTransferResponse */ +typedef struct HNBConfigTransferResponse { + struct hnbConfigTransferResponse_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } hnbConfigTransferResponse_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBConfigTransferResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferResponse; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _HNBConfigTransferResponse_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBConfigurationInformationMissing.c b/src/hnbap/HNBConfigurationInformationMissing.c new file mode 100644 index 0000000..aa20d2a --- /dev/null +++ b/src/hnbap/HNBConfigurationInformationMissing.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNBConfigurationInformationMissing.h" + +static asn_TYPE_member_t asn_MBR_HNBConfigurationInformationMissing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigurationInformationMissing, cause), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cause" + }, + { ATF_POINTER, 1, offsetof(struct HNBConfigurationInformationMissing, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_HNBConfigurationInformationMissing_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_HNBConfigurationInformationMissing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBConfigurationInformationMissing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigurationInformationMissing_specs_1 = { + sizeof(struct HNBConfigurationInformationMissing), + offsetof(struct HNBConfigurationInformationMissing, _asn_ctx), + asn_MAP_HNBConfigurationInformationMissing_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_HNBConfigurationInformationMissing_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationMissing = { + "HNBConfigurationInformationMissing", + "HNBConfigurationInformationMissing", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBConfigurationInformationMissing_tags_1, + sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1) + /sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1[0]), /* 1 */ + asn_DEF_HNBConfigurationInformationMissing_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1) + /sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBConfigurationInformationMissing_1, + 2, /* Elements count */ + &asn_SPC_HNBConfigurationInformationMissing_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBConfigurationInformationMissing.h b/src/hnbap/HNBConfigurationInformationMissing.h new file mode 100644 index 0000000..6241f7b --- /dev/null +++ b/src/hnbap/HNBConfigurationInformationMissing.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBConfigurationInformationMissing_H_ +#define _HNBConfigurationInformationMissing_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "Cause.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* HNBConfigurationInformationMissing */ +typedef struct HNBConfigurationInformationMissing { + Cause_t cause; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBConfigurationInformationMissing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationMissing; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _HNBConfigurationInformationMissing_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBConfigurationInformationProvided.c b/src/hnbap/HNBConfigurationInformationProvided.c new file mode 100644 index 0000000..c620055 --- /dev/null +++ b/src/hnbap/HNBConfigurationInformationProvided.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "HNBConfigurationInformationProvided.h" + +static asn_TYPE_member_t asn_MBR_HNBConfigurationInformationProvided_1[] = { + { ATF_POINTER, 2, offsetof(struct HNBConfigurationInformationProvided, psc), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PSC, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "psc" + }, + { ATF_POINTER, 1, offsetof(struct HNBConfigurationInformationProvided, cSG_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CSG_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cSG-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigurationInformationProvided, hNB_Cell_Access_Mode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HNB_Cell_Access_Mode, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hNB-Cell-Access-Mode" + }, + { ATF_NOFLAGS, 0, offsetof(struct HNBConfigurationInformationProvided, iurh_Signalling_TNL_AddressList), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Iurh_Signalling_TNL_AddressList, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iurh-Signalling-TNL-AddressList" + }, + { ATF_POINTER, 1, offsetof(struct HNBConfigurationInformationProvided, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_HNBConfigurationInformationProvided_oms_1[] = { 0, 1, 4 }; +static const ber_tlv_tag_t asn_DEF_HNBConfigurationInformationProvided_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBConfigurationInformationProvided_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* psc */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSG-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hNB-Cell-Access-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iurh-Signalling-TNL-AddressList */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigurationInformationProvided_specs_1 = { + sizeof(struct HNBConfigurationInformationProvided), + offsetof(struct HNBConfigurationInformationProvided, _asn_ctx), + asn_MAP_HNBConfigurationInformationProvided_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_HNBConfigurationInformationProvided_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationProvided = { + "HNBConfigurationInformationProvided", + "HNBConfigurationInformationProvided", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBConfigurationInformationProvided_tags_1, + sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1) + /sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1[0]), /* 1 */ + asn_DEF_HNBConfigurationInformationProvided_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1) + /sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBConfigurationInformationProvided_1, + 5, /* Elements count */ + &asn_SPC_HNBConfigurationInformationProvided_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBConfigurationInformationProvided.h b/src/hnbap/HNBConfigurationInformationProvided.h new file mode 100644 index 0000000..ccf9504 --- /dev/null +++ b/src/hnbap/HNBConfigurationInformationProvided.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBConfigurationInformationProvided_H_ +#define _HNBConfigurationInformationProvided_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "PSC.h" +#include "CSG-ID.h" +#include "HNB-Cell-Access-Mode.h" +#include "Iurh-Signalling-TNL-AddressList.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* HNBConfigurationInformationProvided */ +typedef struct HNBConfigurationInformationProvided { + PSC_t *psc /* OPTIONAL */; + CSG_ID_t *cSG_ID /* OPTIONAL */; + HNB_Cell_Access_Mode_t hNB_Cell_Access_Mode; + Iurh_Signalling_TNL_AddressList_t iurh_Signalling_TNL_AddressList; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBConfigurationInformationProvided_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationProvided; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _HNBConfigurationInformationProvided_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBDe-Register.c b/src/hnbap/HNBDe-Register.c new file mode 100644 index 0000000..023cf9f --- /dev/null +++ b/src/hnbap/HNBDe-Register.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBDe-Register.h" + +static int +memb_hnbDe_Register_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_hnbDe_Register_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_hnbDe_Register_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_hnbDe_Register_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_hnbDe_Register_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_hnbDe_Register_ies_specs_2 = { + sizeof(struct hnbDe_Register_ies), + offsetof(struct hnbDe_Register_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_hnbDe_Register_ies_2 = { + "hnbDe-Register-ies", + "hnbDe-Register-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_hnbDe_Register_ies_tags_2, + sizeof(asn_DEF_hnbDe_Register_ies_tags_2) + /sizeof(asn_DEF_hnbDe_Register_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_hnbDe_Register_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_hnbDe_Register_ies_tags_2) + /sizeof(asn_DEF_hnbDe_Register_ies_tags_2[0]), /* 2 */ + &asn_PER_type_hnbDe_Register_ies_constr_2, + asn_MBR_hnbDe_Register_ies_2, + 1, /* Single element */ + &asn_SPC_hnbDe_Register_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_HNBDe_Register_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBDe_Register, hnbDe_Register_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_hnbDe_Register_ies_2, + memb_hnbDe_Register_ies_constraint_1, + &asn_PER_memb_hnbDe_Register_ies_constr_2, + 0, + "hnbDe-Register-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_HNBDe_Register_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBDe_Register_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbDe-Register-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBDe_Register_specs_1 = { + sizeof(struct HNBDe_Register), + offsetof(struct HNBDe_Register, _asn_ctx), + asn_MAP_HNBDe_Register_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBDe_Register = { + "HNBDe-Register", + "HNBDe-Register", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBDe_Register_tags_1, + sizeof(asn_DEF_HNBDe_Register_tags_1) + /sizeof(asn_DEF_HNBDe_Register_tags_1[0]), /* 1 */ + asn_DEF_HNBDe_Register_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBDe_Register_tags_1) + /sizeof(asn_DEF_HNBDe_Register_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBDe_Register_1, + 1, /* Elements count */ + &asn_SPC_HNBDe_Register_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBDe-Register.h b/src/hnbap/HNBDe-Register.h new file mode 100644 index 0000000..fc501d5 --- /dev/null +++ b/src/hnbap/HNBDe-Register.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBDe_Register_H_ +#define _HNBDe_Register_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* HNBDe-Register */ +typedef struct HNBDe_Register { + struct hnbDe_Register_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } hnbDe_Register_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBDe_Register_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBDe_Register; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _HNBDe_Register_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBRegisterAccept.c b/src/hnbap/HNBRegisterAccept.c new file mode 100644 index 0000000..466bb30 --- /dev/null +++ b/src/hnbap/HNBRegisterAccept.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBRegisterAccept.h" + +static int +memb_hnbRegisterAccept_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_hnbRegisterAccept_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_hnbRegisterAccept_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_hnbRegisterAccept_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_hnbRegisterAccept_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_hnbRegisterAccept_ies_specs_2 = { + sizeof(struct hnbRegisterAccept_ies), + offsetof(struct hnbRegisterAccept_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_hnbRegisterAccept_ies_2 = { + "hnbRegisterAccept-ies", + "hnbRegisterAccept-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_hnbRegisterAccept_ies_tags_2, + sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2) + /sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_hnbRegisterAccept_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2) + /sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2[0]), /* 2 */ + &asn_PER_type_hnbRegisterAccept_ies_constr_2, + asn_MBR_hnbRegisterAccept_ies_2, + 1, /* Single element */ + &asn_SPC_hnbRegisterAccept_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_HNBRegisterAccept_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBRegisterAccept, hnbRegisterAccept_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_hnbRegisterAccept_ies_2, + memb_hnbRegisterAccept_ies_constraint_1, + &asn_PER_memb_hnbRegisterAccept_ies_constr_2, + 0, + "hnbRegisterAccept-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_HNBRegisterAccept_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBRegisterAccept_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbRegisterAccept-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBRegisterAccept_specs_1 = { + sizeof(struct HNBRegisterAccept), + offsetof(struct HNBRegisterAccept, _asn_ctx), + asn_MAP_HNBRegisterAccept_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBRegisterAccept = { + "HNBRegisterAccept", + "HNBRegisterAccept", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBRegisterAccept_tags_1, + sizeof(asn_DEF_HNBRegisterAccept_tags_1) + /sizeof(asn_DEF_HNBRegisterAccept_tags_1[0]), /* 1 */ + asn_DEF_HNBRegisterAccept_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBRegisterAccept_tags_1) + /sizeof(asn_DEF_HNBRegisterAccept_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBRegisterAccept_1, + 1, /* Elements count */ + &asn_SPC_HNBRegisterAccept_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBRegisterAccept.h b/src/hnbap/HNBRegisterAccept.h new file mode 100644 index 0000000..2c0192c --- /dev/null +++ b/src/hnbap/HNBRegisterAccept.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBRegisterAccept_H_ +#define _HNBRegisterAccept_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* HNBRegisterAccept */ +typedef struct HNBRegisterAccept { + struct hnbRegisterAccept_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } hnbRegisterAccept_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBRegisterAccept_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBRegisterAccept; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _HNBRegisterAccept_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBRegisterReject.c b/src/hnbap/HNBRegisterReject.c new file mode 100644 index 0000000..f39611d --- /dev/null +++ b/src/hnbap/HNBRegisterReject.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBRegisterReject.h" + +static int +memb_hnbRegisterReject_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_hnbRegisterReject_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_hnbRegisterReject_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_hnbRegisterReject_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_hnbRegisterReject_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_hnbRegisterReject_ies_specs_2 = { + sizeof(struct hnbRegisterReject_ies), + offsetof(struct hnbRegisterReject_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_hnbRegisterReject_ies_2 = { + "hnbRegisterReject-ies", + "hnbRegisterReject-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_hnbRegisterReject_ies_tags_2, + sizeof(asn_DEF_hnbRegisterReject_ies_tags_2) + /sizeof(asn_DEF_hnbRegisterReject_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_hnbRegisterReject_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_hnbRegisterReject_ies_tags_2) + /sizeof(asn_DEF_hnbRegisterReject_ies_tags_2[0]), /* 2 */ + &asn_PER_type_hnbRegisterReject_ies_constr_2, + asn_MBR_hnbRegisterReject_ies_2, + 1, /* Single element */ + &asn_SPC_hnbRegisterReject_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_HNBRegisterReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBRegisterReject, hnbRegisterReject_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_hnbRegisterReject_ies_2, + memb_hnbRegisterReject_ies_constraint_1, + &asn_PER_memb_hnbRegisterReject_ies_constr_2, + 0, + "hnbRegisterReject-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_HNBRegisterReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBRegisterReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbRegisterReject-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBRegisterReject_specs_1 = { + sizeof(struct HNBRegisterReject), + offsetof(struct HNBRegisterReject, _asn_ctx), + asn_MAP_HNBRegisterReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBRegisterReject = { + "HNBRegisterReject", + "HNBRegisterReject", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBRegisterReject_tags_1, + sizeof(asn_DEF_HNBRegisterReject_tags_1) + /sizeof(asn_DEF_HNBRegisterReject_tags_1[0]), /* 1 */ + asn_DEF_HNBRegisterReject_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBRegisterReject_tags_1) + /sizeof(asn_DEF_HNBRegisterReject_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBRegisterReject_1, + 1, /* Elements count */ + &asn_SPC_HNBRegisterReject_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBRegisterReject.h b/src/hnbap/HNBRegisterReject.h new file mode 100644 index 0000000..830ca8a --- /dev/null +++ b/src/hnbap/HNBRegisterReject.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBRegisterReject_H_ +#define _HNBRegisterReject_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* HNBRegisterReject */ +typedef struct HNBRegisterReject { + struct hnbRegisterReject_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } hnbRegisterReject_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBRegisterReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBRegisterReject; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _HNBRegisterReject_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/HNBRegisterRequest.c b/src/hnbap/HNBRegisterRequest.c new file mode 100644 index 0000000..214a3e7 --- /dev/null +++ b/src/hnbap/HNBRegisterRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "HNBRegisterRequest.h" + +static int +memb_hnbRegisterRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_hnbRegisterRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_hnbRegisterRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_hnbRegisterRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_hnbRegisterRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_hnbRegisterRequest_ies_specs_2 = { + sizeof(struct hnbRegisterRequest_ies), + offsetof(struct hnbRegisterRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_hnbRegisterRequest_ies_2 = { + "hnbRegisterRequest-ies", + "hnbRegisterRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_hnbRegisterRequest_ies_tags_2, + sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2) + /sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_hnbRegisterRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2) + /sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_hnbRegisterRequest_ies_constr_2, + asn_MBR_hnbRegisterRequest_ies_2, + 1, /* Single element */ + &asn_SPC_hnbRegisterRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_HNBRegisterRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HNBRegisterRequest, hnbRegisterRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_hnbRegisterRequest_ies_2, + memb_hnbRegisterRequest_ies_constraint_1, + &asn_PER_memb_hnbRegisterRequest_ies_constr_2, + 0, + "hnbRegisterRequest-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_HNBRegisterRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HNBRegisterRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbRegisterRequest-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HNBRegisterRequest_specs_1 = { + sizeof(struct HNBRegisterRequest), + offsetof(struct HNBRegisterRequest, _asn_ctx), + asn_MAP_HNBRegisterRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_HNBRegisterRequest = { + "HNBRegisterRequest", + "HNBRegisterRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_HNBRegisterRequest_tags_1, + sizeof(asn_DEF_HNBRegisterRequest_tags_1) + /sizeof(asn_DEF_HNBRegisterRequest_tags_1[0]), /* 1 */ + asn_DEF_HNBRegisterRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_HNBRegisterRequest_tags_1) + /sizeof(asn_DEF_HNBRegisterRequest_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_HNBRegisterRequest_1, + 1, /* Elements count */ + &asn_SPC_HNBRegisterRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/HNBRegisterRequest.h b/src/hnbap/HNBRegisterRequest.h new file mode 100644 index 0000000..f1ccf59 --- /dev/null +++ b/src/hnbap/HNBRegisterRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _HNBRegisterRequest_H_ +#define _HNBRegisterRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* HNBRegisterRequest */ +typedef struct HNBRegisterRequest { + struct hnbRegisterRequest_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } hnbRegisterRequest_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HNBRegisterRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HNBRegisterRequest; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _HNBRegisterRequest_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IE-Extensions.c b/src/hnbap/IE-Extensions.c new file mode 100644 index 0000000..66b8965 --- /dev/null +++ b/src/hnbap/IE-Extensions.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "IE-Extensions.h" + +static asn_per_constraints_t asn_PER_type_IE_Extensions_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_IE_Extensions_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_IE_Extensions_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_IE_Extensions_specs_1 = { + sizeof(struct IE_Extensions), + offsetof(struct IE_Extensions, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_IE_Extensions = { + "IE-Extensions", + "IE-Extensions", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IE_Extensions_tags_1, + sizeof(asn_DEF_IE_Extensions_tags_1) + /sizeof(asn_DEF_IE_Extensions_tags_1[0]), /* 1 */ + asn_DEF_IE_Extensions_tags_1, /* Same as above */ + sizeof(asn_DEF_IE_Extensions_tags_1) + /sizeof(asn_DEF_IE_Extensions_tags_1[0]), /* 1 */ + &asn_PER_type_IE_Extensions_constr_1, + asn_MBR_IE_Extensions_1, + 1, /* Single element */ + &asn_SPC_IE_Extensions_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/IE-Extensions.h b/src/hnbap/IE-Extensions.h new file mode 100644 index 0000000..f666dae --- /dev/null +++ b/src/hnbap/IE-Extensions.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IE_Extensions_H_ +#define _IE_Extensions_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* IE-Extensions */ +typedef struct IE_Extensions { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IE_Extensions_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IE_Extensions; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _IE_Extensions_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IE.c b/src/hnbap/IE.c new file mode 100644 index 0000000..9d80998 --- /dev/null +++ b/src/hnbap/IE.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "IE.h" + +static asn_TYPE_member_t asn_MBR_IE_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IE, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct IE, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct IE, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_IE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IE_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_IE_specs_1 = { + sizeof(struct IE), + offsetof(struct IE, _asn_ctx), + asn_MAP_IE_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_IE = { + "IE", + "IE", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IE_tags_1, + sizeof(asn_DEF_IE_tags_1) + /sizeof(asn_DEF_IE_tags_1[0]), /* 1 */ + asn_DEF_IE_tags_1, /* Same as above */ + sizeof(asn_DEF_IE_tags_1) + /sizeof(asn_DEF_IE_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_IE_1, + 3, /* Elements count */ + &asn_SPC_IE_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/IE.h b/src/hnbap/IE.h new file mode 100644 index 0000000..e7d081f --- /dev/null +++ b/src/hnbap/IE.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IE_H_ +#define _IE_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include <ANY.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IE */ +typedef struct IE { + ProtocolIE_ID_t id; + Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IE_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IE; + +#ifdef __cplusplus +} +#endif + +#endif /* _IE_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IMEI.c b/src/hnbap/IMEI.c new file mode 100644 index 0000000..ea7dc79 --- /dev/null +++ b/src/hnbap/IMEI.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "IMEI.h" + +int +IMEI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 60l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +IMEI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +IMEI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + IMEI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +IMEI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +IMEI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +IMEI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +IMEI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +IMEI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +IMEI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +IMEI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +IMEI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +IMEI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + IMEI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_IMEI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 60l, 60l } /* (SIZE(60..60)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_IMEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IMEI = { + "IMEI", + "IMEI", + IMEI_free, + IMEI_print, + IMEI_constraint, + IMEI_decode_ber, + IMEI_encode_der, + IMEI_decode_xer, + IMEI_encode_xer, + IMEI_decode_uper, + IMEI_encode_uper, + IMEI_decode_aper, + IMEI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IMEI_tags_1, + sizeof(asn_DEF_IMEI_tags_1) + /sizeof(asn_DEF_IMEI_tags_1[0]), /* 1 */ + asn_DEF_IMEI_tags_1, /* Same as above */ + sizeof(asn_DEF_IMEI_tags_1) + /sizeof(asn_DEF_IMEI_tags_1[0]), /* 1 */ + &asn_PER_type_IMEI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/IMEI.h b/src/hnbap/IMEI.h new file mode 100644 index 0000000..41c8c9a --- /dev/null +++ b/src/hnbap/IMEI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IMEI_H_ +#define _IMEI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IMEI */ +typedef BIT_STRING_t IMEI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IMEI; +asn_struct_free_f IMEI_free; +asn_struct_print_f IMEI_print; +asn_constr_check_f IMEI_constraint; +ber_type_decoder_f IMEI_decode_ber; +der_type_encoder_f IMEI_encode_der; +xer_type_decoder_f IMEI_decode_xer; +xer_type_encoder_f IMEI_encode_xer; +per_type_decoder_f IMEI_decode_uper; +per_type_encoder_f IMEI_encode_uper; +per_type_decoder_f IMEI_decode_aper; +per_type_encoder_f IMEI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IMEI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IMSI.c b/src/hnbap/IMSI.c new file mode 100644 index 0000000..3a44270 --- /dev/null +++ b/src/hnbap/IMSI.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "IMSI.h" + +int +IMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 3l && size <= 8l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +IMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +IMSI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + IMSI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +IMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +IMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +IMSI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +IMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +IMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +IMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +IMSI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +IMSI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +IMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + IMSI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_IMSI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 3l, 8l } /* (SIZE(3..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_IMSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IMSI = { + "IMSI", + "IMSI", + IMSI_free, + IMSI_print, + IMSI_constraint, + IMSI_decode_ber, + IMSI_encode_der, + IMSI_decode_xer, + IMSI_encode_xer, + IMSI_decode_uper, + IMSI_encode_uper, + IMSI_decode_aper, + IMSI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IMSI_tags_1, + sizeof(asn_DEF_IMSI_tags_1) + /sizeof(asn_DEF_IMSI_tags_1[0]), /* 1 */ + asn_DEF_IMSI_tags_1, /* Same as above */ + sizeof(asn_DEF_IMSI_tags_1) + /sizeof(asn_DEF_IMSI_tags_1[0]), /* 1 */ + &asn_PER_type_IMSI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/IMSI.h b/src/hnbap/IMSI.h new file mode 100644 index 0000000..061520c --- /dev/null +++ b/src/hnbap/IMSI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IMSI_H_ +#define _IMSI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IMSI */ +typedef OCTET_STRING_t IMSI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IMSI; +asn_struct_free_f IMSI_free; +asn_struct_print_f IMSI_print; +asn_constr_check_f IMSI_constraint; +ber_type_decoder_f IMSI_decode_ber; +der_type_encoder_f IMSI_encode_der; +xer_type_decoder_f IMSI_decode_xer; +xer_type_encoder_f IMSI_encode_xer; +per_type_decoder_f IMSI_decode_uper; +per_type_encoder_f IMSI_encode_uper; +per_type_decoder_f IMSI_decode_aper; +per_type_encoder_f IMSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IMSI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IMSIDS41.c b/src/hnbap/IMSIDS41.c new file mode 100644 index 0000000..b68c86e --- /dev/null +++ b/src/hnbap/IMSIDS41.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "IMSIDS41.h" + +int +IMSIDS41_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 5l && size <= 7l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +IMSIDS41_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +IMSIDS41_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +IMSIDS41_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +IMSIDS41_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +IMSIDS41_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +IMSIDS41_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +IMSIDS41_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +IMSIDS41_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +IMSIDS41_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +IMSIDS41_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +IMSIDS41_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + IMSIDS41_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_IMSIDS41_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 5l, 7l } /* (SIZE(5..7)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_IMSIDS41_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IMSIDS41 = { + "IMSIDS41", + "IMSIDS41", + IMSIDS41_free, + IMSIDS41_print, + IMSIDS41_constraint, + IMSIDS41_decode_ber, + IMSIDS41_encode_der, + IMSIDS41_decode_xer, + IMSIDS41_encode_xer, + IMSIDS41_decode_uper, + IMSIDS41_encode_uper, + IMSIDS41_decode_aper, + IMSIDS41_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IMSIDS41_tags_1, + sizeof(asn_DEF_IMSIDS41_tags_1) + /sizeof(asn_DEF_IMSIDS41_tags_1[0]), /* 1 */ + asn_DEF_IMSIDS41_tags_1, /* Same as above */ + sizeof(asn_DEF_IMSIDS41_tags_1) + /sizeof(asn_DEF_IMSIDS41_tags_1[0]), /* 1 */ + &asn_PER_type_IMSIDS41_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/IMSIDS41.h b/src/hnbap/IMSIDS41.h new file mode 100644 index 0000000..e424742 --- /dev/null +++ b/src/hnbap/IMSIDS41.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IMSIDS41_H_ +#define _IMSIDS41_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IMSIDS41 */ +typedef OCTET_STRING_t IMSIDS41_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IMSIDS41; +asn_struct_free_f IMSIDS41_free; +asn_struct_print_f IMSIDS41_print; +asn_constr_check_f IMSIDS41_constraint; +ber_type_decoder_f IMSIDS41_decode_ber; +der_type_encoder_f IMSIDS41_encode_der; +xer_type_decoder_f IMSIDS41_decode_xer; +xer_type_encoder_f IMSIDS41_encode_xer; +per_type_decoder_f IMSIDS41_decode_uper; +per_type_encoder_f IMSIDS41_encode_uper; +per_type_decoder_f IMSIDS41_decode_aper; +per_type_encoder_f IMSIDS41_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IMSIDS41_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IMSIESN.c b/src/hnbap/IMSIESN.c new file mode 100644 index 0000000..7bfd73b --- /dev/null +++ b/src/hnbap/IMSIESN.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "IMSIESN.h" + +static asn_TYPE_member_t asn_MBR_IMSIESN_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IMSIESN, iMSIDS41), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IMSIDS41, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iMSIDS41" + }, + { ATF_NOFLAGS, 0, offsetof(struct IMSIESN, eSN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ESN, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "eSN" + }, +}; +static const ber_tlv_tag_t asn_DEF_IMSIESN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IMSIESN_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMSIDS41 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eSN */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_IMSIESN_specs_1 = { + sizeof(struct IMSIESN), + offsetof(struct IMSIESN, _asn_ctx), + asn_MAP_IMSIESN_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_IMSIESN = { + "IMSIESN", + "IMSIESN", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IMSIESN_tags_1, + sizeof(asn_DEF_IMSIESN_tags_1) + /sizeof(asn_DEF_IMSIESN_tags_1[0]), /* 1 */ + asn_DEF_IMSIESN_tags_1, /* Same as above */ + sizeof(asn_DEF_IMSIESN_tags_1) + /sizeof(asn_DEF_IMSIESN_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_IMSIESN_1, + 2, /* Elements count */ + &asn_SPC_IMSIESN_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/IMSIESN.h b/src/hnbap/IMSIESN.h new file mode 100644 index 0000000..442a217 --- /dev/null +++ b/src/hnbap/IMSIESN.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IMSIESN_H_ +#define _IMSIESN_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "IMSIDS41.h" +#include "ESN.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IMSIESN */ +typedef struct IMSIESN { + IMSIDS41_t iMSIDS41; + ESN_t eSN; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IMSIESN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IMSIESN; + +#ifdef __cplusplus +} +#endif + +#endif /* _IMSIESN_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/IP-Address.c b/src/hnbap/IP-Address.c new file mode 100644 index 0000000..eb2e872 --- /dev/null +++ b/src/hnbap/IP-Address.c @@ -0,0 +1,139 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "IP-Address.h" + +static asn_per_constraints_t asn_PER_type_ipaddress_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ipaddress_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ipaddress, choice.ipv4info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Ipv4Address, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "ipv4info" + }, + { ATF_NOFLAGS, 0, offsetof(struct ipaddress, choice.ipv6info), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Ipv6Address, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "ipv6info" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ipaddress_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipv4info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipv6info */ +}; +static asn_CHOICE_specifics_t asn_SPC_ipaddress_specs_2 = { + sizeof(struct ipaddress), + offsetof(struct ipaddress, _asn_ctx), + offsetof(struct ipaddress, present), + sizeof(((struct ipaddress *)0)->present), + asn_MAP_ipaddress_tag2el_2, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ipaddress_2 = { + "ipaddress", + "ipaddress", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_ipaddress_constr_2, + asn_MBR_ipaddress_2, + 2, /* Elements count */ + &asn_SPC_ipaddress_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_IP_Address_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IP_Address, ipaddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ipaddress_2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "ipaddress" + }, + { ATF_POINTER, 1, offsetof(struct IP_Address, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_IP_Address_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_IP_Address_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IP_Address_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipaddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_IP_Address_specs_1 = { + sizeof(struct IP_Address), + offsetof(struct IP_Address, _asn_ctx), + asn_MAP_IP_Address_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_IP_Address_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_IP_Address = { + "IP-Address", + "IP-Address", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_IP_Address_tags_1, + sizeof(asn_DEF_IP_Address_tags_1) + /sizeof(asn_DEF_IP_Address_tags_1[0]), /* 1 */ + asn_DEF_IP_Address_tags_1, /* Same as above */ + sizeof(asn_DEF_IP_Address_tags_1) + /sizeof(asn_DEF_IP_Address_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_IP_Address_1, + 2, /* Elements count */ + &asn_SPC_IP_Address_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/IP-Address.h b/src/hnbap/IP-Address.h new file mode 100644 index 0000000..f73bd17 --- /dev/null +++ b/src/hnbap/IP-Address.h @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _IP_Address_H_ +#define _IP_Address_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "Ipv4Address.h" +#include "Ipv6Address.h" +#include <constr_CHOICE.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ipaddress_PR { + ipaddress_PR_NOTHING, /* No components present */ + ipaddress_PR_ipv4info, + ipaddress_PR_ipv6info, + /* Extensions may appear below */ + +} ipaddress_PR; + +/* Forward declarations */ +struct IE_Extensions; + +/* IP-Address */ +typedef struct IP_Address { + struct ipaddress { + ipaddress_PR present; + union IP_Address__ipaddress_u { + Ipv4Address_t ipv4info; + Ipv6Address_t ipv6info; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ipaddress; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IP_Address_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IP_Address; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _IP_Address_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/InitiatingMessage.c b/src/hnbap/InitiatingMessage.c new file mode 100644 index 0000000..bafcc94 --- /dev/null +++ b/src/hnbap/InitiatingMessage.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "InitiatingMessage.h" + +static asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { + sizeof(struct InitiatingMessage), + offsetof(struct InitiatingMessage, _asn_ctx), + asn_MAP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_InitiatingMessage_tags_1, + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/InitiatingMessage.h b/src/hnbap/InitiatingMessage.h new file mode 100644 index 0000000..60adbe1 --- /dev/null +++ b/src/hnbap/InitiatingMessage.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _InitiatingMessage_H_ +#define _InitiatingMessage_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include <ANY.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* InitiatingMessage */ +typedef struct InitiatingMessage { + ProcedureCode_t procedureCode; + Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingMessage_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Ipv4Address.c b/src/hnbap/Ipv4Address.c new file mode 100644 index 0000000..fee44c2 --- /dev/null +++ b/src/hnbap/Ipv4Address.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Ipv4Address.h" + +int +Ipv4Address_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +Ipv4Address_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +Ipv4Address_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Ipv4Address_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Ipv4Address_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Ipv4Address_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Ipv4Address_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Ipv4Address_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Ipv4Address_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Ipv4Address_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Ipv4Address_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Ipv4Address_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Ipv4Address_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Ipv4Address_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Ipv4Address_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Ipv4Address = { + "Ipv4Address", + "Ipv4Address", + Ipv4Address_free, + Ipv4Address_print, + Ipv4Address_constraint, + Ipv4Address_decode_ber, + Ipv4Address_encode_der, + Ipv4Address_decode_xer, + Ipv4Address_encode_xer, + Ipv4Address_decode_uper, + Ipv4Address_encode_uper, + Ipv4Address_decode_aper, + Ipv4Address_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Ipv4Address_tags_1, + sizeof(asn_DEF_Ipv4Address_tags_1) + /sizeof(asn_DEF_Ipv4Address_tags_1[0]), /* 1 */ + asn_DEF_Ipv4Address_tags_1, /* Same as above */ + sizeof(asn_DEF_Ipv4Address_tags_1) + /sizeof(asn_DEF_Ipv4Address_tags_1[0]), /* 1 */ + &asn_PER_type_Ipv4Address_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/Ipv4Address.h b/src/hnbap/Ipv4Address.h new file mode 100644 index 0000000..49154ed --- /dev/null +++ b/src/hnbap/Ipv4Address.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Ipv4Address_H_ +#define _Ipv4Address_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Ipv4Address */ +typedef OCTET_STRING_t Ipv4Address_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Ipv4Address; +asn_struct_free_f Ipv4Address_free; +asn_struct_print_f Ipv4Address_print; +asn_constr_check_f Ipv4Address_constraint; +ber_type_decoder_f Ipv4Address_decode_ber; +der_type_encoder_f Ipv4Address_encode_der; +xer_type_decoder_f Ipv4Address_decode_xer; +xer_type_encoder_f Ipv4Address_encode_xer; +per_type_decoder_f Ipv4Address_decode_uper; +per_type_encoder_f Ipv4Address_encode_uper; +per_type_decoder_f Ipv4Address_decode_aper; +per_type_encoder_f Ipv4Address_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Ipv4Address_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Ipv6Address.c b/src/hnbap/Ipv6Address.c new file mode 100644 index 0000000..0a140e4 --- /dev/null +++ b/src/hnbap/Ipv6Address.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Ipv6Address.h" + +int +Ipv6Address_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 16l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +Ipv6Address_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +Ipv6Address_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Ipv6Address_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Ipv6Address_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Ipv6Address_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Ipv6Address_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Ipv6Address_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Ipv6Address_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Ipv6Address_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Ipv6Address_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Ipv6Address_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Ipv6Address_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Ipv6Address_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16l, 16l } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Ipv6Address_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Ipv6Address = { + "Ipv6Address", + "Ipv6Address", + Ipv6Address_free, + Ipv6Address_print, + Ipv6Address_constraint, + Ipv6Address_decode_ber, + Ipv6Address_encode_der, + Ipv6Address_decode_xer, + Ipv6Address_encode_xer, + Ipv6Address_decode_uper, + Ipv6Address_encode_uper, + Ipv6Address_decode_aper, + Ipv6Address_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Ipv6Address_tags_1, + sizeof(asn_DEF_Ipv6Address_tags_1) + /sizeof(asn_DEF_Ipv6Address_tags_1[0]), /* 1 */ + asn_DEF_Ipv6Address_tags_1, /* Same as above */ + sizeof(asn_DEF_Ipv6Address_tags_1) + /sizeof(asn_DEF_Ipv6Address_tags_1[0]), /* 1 */ + &asn_PER_type_Ipv6Address_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/Ipv6Address.h b/src/hnbap/Ipv6Address.h new file mode 100644 index 0000000..5268e4c --- /dev/null +++ b/src/hnbap/Ipv6Address.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Ipv6Address_H_ +#define _Ipv6Address_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Ipv6Address */ +typedef OCTET_STRING_t Ipv6Address_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Ipv6Address; +asn_struct_free_f Ipv6Address_free; +asn_struct_print_f Ipv6Address_print; +asn_constr_check_f Ipv6Address_constraint; +ber_type_decoder_f Ipv6Address_decode_ber; +der_type_encoder_f Ipv6Address_encode_der; +xer_type_decoder_f Ipv6Address_decode_xer; +xer_type_encoder_f Ipv6Address_encode_xer; +per_type_decoder_f Ipv6Address_decode_uper; +per_type_encoder_f Ipv6Address_encode_uper; +per_type_decoder_f Ipv6Address_decode_aper; +per_type_encoder_f Ipv6Address_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Ipv6Address_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Iurh-Signalling-TNL-AddressList.c b/src/hnbap/Iurh-Signalling-TNL-AddressList.c new file mode 100644 index 0000000..cd2830f --- /dev/null +++ b/src/hnbap/Iurh-Signalling-TNL-AddressList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Iurh-Signalling-TNL-AddressList.h" + +static asn_per_constraints_t asn_PER_type_Iurh_Signalling_TNL_AddressList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1l, 3l } /* (SIZE(1..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Iurh_Signalling_TNL_AddressList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IP_Address, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_Iurh_Signalling_TNL_AddressList_specs_1 = { + sizeof(struct Iurh_Signalling_TNL_AddressList), + offsetof(struct Iurh_Signalling_TNL_AddressList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Iurh_Signalling_TNL_AddressList = { + "Iurh-Signalling-TNL-AddressList", + "Iurh-Signalling-TNL-AddressList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1, + sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1) + /sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1[0]), /* 1 */ + asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1, /* Same as above */ + sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1) + /sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1[0]), /* 1 */ + &asn_PER_type_Iurh_Signalling_TNL_AddressList_constr_1, + asn_MBR_Iurh_Signalling_TNL_AddressList_1, + 1, /* Single element */ + &asn_SPC_Iurh_Signalling_TNL_AddressList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Iurh-Signalling-TNL-AddressList.h b/src/hnbap/Iurh-Signalling-TNL-AddressList.h new file mode 100644 index 0000000..cd86644 --- /dev/null +++ b/src/hnbap/Iurh-Signalling-TNL-AddressList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Iurh_Signalling_TNL_AddressList_H_ +#define _Iurh_Signalling_TNL_AddressList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IP_Address; + +/* Iurh-Signalling-TNL-AddressList */ +typedef struct Iurh_Signalling_TNL_AddressList { + A_SEQUENCE_OF(struct IP_Address) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Iurh_Signalling_TNL_AddressList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Iurh_Signalling_TNL_AddressList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IP-Address.h" + +#endif /* _Iurh_Signalling_TNL_AddressList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/LAC.c b/src/hnbap/LAC.c new file mode 100644 index 0000000..2ff94dc --- /dev/null +++ b/src/hnbap/LAC.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "LAC.h" + +int +LAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +LAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +LAC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + LAC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +LAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + LAC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +LAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + LAC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +LAC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + LAC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +LAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + LAC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +LAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + LAC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +LAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + LAC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +LAC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + LAC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +LAC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + LAC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +LAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + LAC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_LAC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LAC = { + "LAC", + "LAC", + LAC_free, + LAC_print, + LAC_constraint, + LAC_decode_ber, + LAC_encode_der, + LAC_decode_xer, + LAC_encode_xer, + LAC_decode_uper, + LAC_encode_uper, + LAC_decode_aper, + LAC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_LAC_tags_1, + sizeof(asn_DEF_LAC_tags_1) + /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */ + asn_DEF_LAC_tags_1, /* Same as above */ + sizeof(asn_DEF_LAC_tags_1) + /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */ + &asn_PER_type_LAC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/LAC.h b/src/hnbap/LAC.h new file mode 100644 index 0000000..462fd4c --- /dev/null +++ b/src/hnbap/LAC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _LAC_H_ +#define _LAC_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* LAC */ +typedef OCTET_STRING_t LAC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LAC; +asn_struct_free_f LAC_free; +asn_struct_print_f LAC_print; +asn_constr_check_f LAC_constraint; +ber_type_decoder_f LAC_decode_ber; +der_type_encoder_f LAC_encode_der; +xer_type_decoder_f LAC_decode_xer; +xer_type_encoder_f LAC_encode_xer; +per_type_decoder_f LAC_decode_uper; +per_type_encoder_f LAC_encode_uper; +per_type_decoder_f LAC_decode_aper; +per_type_encoder_f LAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LAC_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/LAI.c b/src/hnbap/LAI.c new file mode 100644 index 0000000..2fddfd2 --- /dev/null +++ b/src/hnbap/LAI.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "LAI.h" + +static asn_TYPE_member_t asn_MBR_LAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LAI, pLMNID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNidentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pLMNID" + }, + { ATF_NOFLAGS, 0, offsetof(struct LAI, lAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LAC, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "lAC" + }, +}; +static const ber_tlv_tag_t asn_DEF_LAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lAC */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_LAI_specs_1 = { + sizeof(struct LAI), + offsetof(struct LAI, _asn_ctx), + asn_MAP_LAI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_LAI = { + "LAI", + "LAI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_LAI_tags_1, + sizeof(asn_DEF_LAI_tags_1) + /sizeof(asn_DEF_LAI_tags_1[0]), /* 1 */ + asn_DEF_LAI_tags_1, /* Same as above */ + sizeof(asn_DEF_LAI_tags_1) + /sizeof(asn_DEF_LAI_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_LAI_1, + 2, /* Elements count */ + &asn_SPC_LAI_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/LAI.h b/src/hnbap/LAI.h new file mode 100644 index 0000000..36c0981 --- /dev/null +++ b/src/hnbap/LAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _LAI_H_ +#define _LAI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "PLMNidentity.h" +#include "LAC.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* LAI */ +typedef struct LAI { + PLMNidentity_t pLMNID; + LAC_t lAC; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LAI; + +#ifdef __cplusplus +} +#endif + +#endif /* _LAI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/MacroCellID.c b/src/hnbap/MacroCellID.c new file mode 100644 index 0000000..416dc1c --- /dev/null +++ b/src/hnbap/MacroCellID.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "MacroCellID.h" + +static asn_per_constraints_t asn_PER_type_MacroCellID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_MacroCellID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MacroCellID, choice.uTRANCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UTRANCellID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uTRANCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct MacroCellID, choice.gERANCellID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CGI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "gERANCellID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MacroCellID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uTRANCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gERANCellID */ +}; +static asn_CHOICE_specifics_t asn_SPC_MacroCellID_specs_1 = { + sizeof(struct MacroCellID), + offsetof(struct MacroCellID, _asn_ctx), + offsetof(struct MacroCellID, present), + sizeof(((struct MacroCellID *)0)->present), + asn_MAP_MacroCellID_tag2el_1, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MacroCellID = { + "MacroCellID", + "MacroCellID", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_MacroCellID_constr_1, + asn_MBR_MacroCellID_1, + 2, /* Elements count */ + &asn_SPC_MacroCellID_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/MacroCellID.h b/src/hnbap/MacroCellID.h new file mode 100644 index 0000000..f266925 --- /dev/null +++ b/src/hnbap/MacroCellID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _MacroCellID_H_ +#define _MacroCellID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "UTRANCellID.h" +#include "CGI.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MacroCellID_PR { + MacroCellID_PR_NOTHING, /* No components present */ + MacroCellID_PR_uTRANCellID, + MacroCellID_PR_gERANCellID, + /* Extensions may appear below */ + +} MacroCellID_PR; + +/* MacroCellID */ +typedef struct MacroCellID { + MacroCellID_PR present; + union MacroCellID_u { + UTRANCellID_t uTRANCellID; + CGI_t gERANCellID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MacroCellID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MacroCellID; + +#ifdef __cplusplus +} +#endif + +#endif /* _MacroCellID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/MacroCoverageInformation.c b/src/hnbap/MacroCoverageInformation.c new file mode 100644 index 0000000..18ded6c --- /dev/null +++ b/src/hnbap/MacroCoverageInformation.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "MacroCoverageInformation.h" + +static asn_TYPE_member_t asn_MBR_MacroCoverageInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MacroCoverageInformation, cellIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MacroCellID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellIdentity" + }, + { ATF_POINTER, 1, offsetof(struct MacroCoverageInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_MacroCoverageInformation_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_MacroCoverageInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MacroCoverageInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MacroCoverageInformation_specs_1 = { + sizeof(struct MacroCoverageInformation), + offsetof(struct MacroCoverageInformation, _asn_ctx), + asn_MAP_MacroCoverageInformation_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_MacroCoverageInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_MacroCoverageInformation = { + "MacroCoverageInformation", + "MacroCoverageInformation", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_MacroCoverageInformation_tags_1, + sizeof(asn_DEF_MacroCoverageInformation_tags_1) + /sizeof(asn_DEF_MacroCoverageInformation_tags_1[0]), /* 1 */ + asn_DEF_MacroCoverageInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MacroCoverageInformation_tags_1) + /sizeof(asn_DEF_MacroCoverageInformation_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_MacroCoverageInformation_1, + 2, /* Elements count */ + &asn_SPC_MacroCoverageInformation_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/MacroCoverageInformation.h b/src/hnbap/MacroCoverageInformation.h new file mode 100644 index 0000000..547e03e --- /dev/null +++ b/src/hnbap/MacroCoverageInformation.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _MacroCoverageInformation_H_ +#define _MacroCoverageInformation_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "MacroCellID.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* MacroCoverageInformation */ +typedef struct MacroCoverageInformation { + MacroCellID_t cellIdentity; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MacroCoverageInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MacroCoverageInformation; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _MacroCoverageInformation_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Makefile b/src/hnbap/Makefile new file mode 100644 index 0000000..aea7e32 --- /dev/null +++ b/src/hnbap/Makefile @@ -0,0 +1,262 @@ +ASN_MODULE_SOURCES= \ + Criticality.c \ + Presence.c \ + PrivateIE-ID.c \ + ProcedureCode.c \ + ProtocolIE-ID.c \ + TriggeringMessage.c \ + IE-Extensions.c \ + Access-stratum-release-indicator.c \ + AccessResult.c \ + AltitudeAndDirection.c \ + BackoffTimer.c \ + BindingID.c \ + Cause.c \ + CauseRadioNetwork.c \ + CauseTransport.c \ + CauseProtocol.c \ + CauseMisc.c \ + CellIdentity.c \ + CELL-FACHMobilitySupport.c \ + Context-ID.c \ + CriticalityDiagnostics.c \ + CriticalityDiagnostics-IE-List.c \ + CSG-ID.c \ + CSG-Capability.c \ + CSGMembershipStatus.c \ + CGI.c \ + CI.c \ + CN-DomainIndicator.c \ + ESN.c \ + GeographicalLocation.c \ + GeographicalCoordinates.c \ + GTP-TEI.c \ + HNBCapacity.c \ + HNB-Cell-Access-Mode.c \ + HNB-Cell-Identifier.c \ + HNB-GWResponse.c \ + HNB-RNL-Identity.c \ + HNBConfigInfo.c \ + ConfigurationInformation.c \ + HNBConfigurationInformationProvided.c \ + HNBConfigurationInformationMissing.c \ + HNB-Location-Information.c \ + HNB-Identity.c \ + HNB-Identity-Info.c \ + IMEI.c \ + IMSI.c \ + IMSIDS41.c \ + IMSIESN.c \ + IP-Address.c \ + Ipv4Address.c \ + Ipv6Address.c \ + Iurh-Signalling-TNL-AddressList.c \ + LAC.c \ + LAI.c \ + MacroCoverageInformation.c \ + MacroCellID.c \ + MuxPortNumber.c \ + NeighbourCellIdentityList.c \ + NeighbourIdentity.c \ + NeighbourInfoList.c \ + AdditionalNeighbourInfoList.c \ + NeighbourInfoRequestList.c \ + NeighbourInfoRequestItem.c \ + PLMNidentity.c \ + PSC.c \ + PTMSI.c \ + PTMSIRAI.c \ + RAB-ID.c \ + RABList.c \ + RABListItem.c \ + RAC.c \ + RAI.c \ + Registration-Cause.c \ + RNC-ID.c \ + SAC.c \ + S-RNTIPrefix.c \ + TMSILAI.c \ + TMSIDS41.c \ + TransportInfo.c \ + TransportLayerAddress.c \ + Tunnel-Information.c \ + TypeOfError.c \ + UDP-Port-Number.c \ + UE-Capabilities.c \ + UTRANCellID.c \ + UE-Identity.c \ + Update-cause.c \ + URAIdentityList.c \ + URAIdentity.c \ + U-RNTI.c \ + UnknownU-RNTIIndication.c \ + HNBAP-PDU.c \ + InitiatingMessage.c \ + SuccessfulOutcome.c \ + UnsuccessfulOutcome.c \ + HNBRegisterRequest.c \ + HNBRegisterAccept.c \ + HNBRegisterReject.c \ + UERegisterRequest.c \ + UERegisterAccept.c \ + UERegisterReject.c \ + UEDe-Register.c \ + HNBDe-Register.c \ + ErrorIndication.c \ + CSGMembershipUpdate.c \ + TNLUpdateRequest.c \ + TNLUpdateResponse.c \ + TNLUpdateFailure.c \ + HNBConfigTransferRequest.c \ + HNBConfigTransferResponse.c \ + RelocationComplete.c \ + U-RNTIQueryRequest.c \ + U-RNTIQueryResponse.c \ + PrivateMessage.c \ + IE.c + +ASN_MODULE_HEADERS= \ + Criticality.h \ + Presence.h \ + PrivateIE-ID.h \ + ProcedureCode.h \ + ProtocolIE-ID.h \ + TriggeringMessage.h \ + IE-Extensions.h \ + Access-stratum-release-indicator.h \ + AccessResult.h \ + AltitudeAndDirection.h \ + BackoffTimer.h \ + BindingID.h \ + Cause.h \ + CauseRadioNetwork.h \ + CauseTransport.h \ + CauseProtocol.h \ + CauseMisc.h \ + CellIdentity.h \ + CELL-FACHMobilitySupport.h \ + Context-ID.h \ + CriticalityDiagnostics.h \ + CriticalityDiagnostics-IE-List.h \ + CSG-ID.h \ + CSG-Capability.h \ + CSGMembershipStatus.h \ + CGI.h \ + CI.h \ + CN-DomainIndicator.h \ + ESN.h \ + GeographicalLocation.h \ + GeographicalCoordinates.h \ + GTP-TEI.h \ + HNBCapacity.h \ + HNB-Cell-Access-Mode.h \ + HNB-Cell-Identifier.h \ + HNB-GWResponse.h \ + HNB-RNL-Identity.h \ + HNBConfigInfo.h \ + ConfigurationInformation.h \ + HNBConfigurationInformationProvided.h \ + HNBConfigurationInformationMissing.h \ + HNB-Location-Information.h \ + HNB-Identity.h \ + HNB-Identity-Info.h \ + IMEI.h \ + IMSI.h \ + IMSIDS41.h \ + IMSIESN.h \ + IP-Address.h \ + Ipv4Address.h \ + Ipv6Address.h \ + Iurh-Signalling-TNL-AddressList.h \ + LAC.h \ + LAI.h \ + MacroCoverageInformation.h \ + MacroCellID.h \ + MuxPortNumber.h \ + NeighbourCellIdentityList.h \ + NeighbourIdentity.h \ + NeighbourInfoList.h \ + AdditionalNeighbourInfoList.h \ + NeighbourInfoRequestList.h \ + NeighbourInfoRequestItem.h \ + PLMNidentity.h \ + PSC.h \ + PTMSI.h \ + PTMSIRAI.h \ + RAB-ID.h \ + RABList.h \ + RABListItem.h \ + RAC.h \ + RAI.h \ + Registration-Cause.h \ + RNC-ID.h \ + SAC.h \ + S-RNTIPrefix.h \ + TMSILAI.h \ + TMSIDS41.h \ + TransportInfo.h \ + TransportLayerAddress.h \ + Tunnel-Information.h \ + TypeOfError.h \ + UDP-Port-Number.h \ + UE-Capabilities.h \ + UTRANCellID.h \ + UE-Identity.h \ + Update-cause.h \ + URAIdentityList.h \ + URAIdentity.h \ + U-RNTI.h \ + UnknownU-RNTIIndication.h \ + HNBAP-PDU.h \ + InitiatingMessage.h \ + SuccessfulOutcome.h \ + UnsuccessfulOutcome.h \ + HNBRegisterRequest.h \ + HNBRegisterAccept.h \ + HNBRegisterReject.h \ + UERegisterRequest.h \ + UERegisterAccept.h \ + UERegisterReject.h \ + UEDe-Register.h \ + HNBDe-Register.h \ + ErrorIndication.h \ + CSGMembershipUpdate.h \ + TNLUpdateRequest.h \ + TNLUpdateResponse.h \ + TNLUpdateFailure.h \ + HNBConfigTransferRequest.h \ + HNBConfigTransferResponse.h \ + RelocationComplete.h \ + U-RNTIQueryRequest.h \ + U-RNTIQueryResponse.h \ + PrivateMessage.h \ + IE.h + +lib_LTLIBRARIES=libsomething.la +libsomething_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS) + +# This file may be used as an input for make(3) +# Remove the lines below to convert it into a pure .am file +CFLAGS += -I. +OBJS=${ASN_MODULE_SOURCES:.c=.o} + +all: libosmo-asn1-hnbap.a + +libosmo-asn1-hnbap.a: ${OBJS} + $(AR) r $@ $^ + +.SUFFIXES: +.SUFFIXES: .c .o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + +clean: + rm -f libosmo-asn1-hnbap.a + rm -f $(OBJS) + +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c -gen-PER -fnative-types ../../asn1/hnbap/HNBAP-CommonDataTypes.asn ../../asn1/hnbap/HNBAP-Constants.asn ../../asn1/hnbap/HNBAP-IEs.asn ../../asn1/hnbap/HNBAP-PDU.asn + diff --git a/src/hnbap/MuxPortNumber.c b/src/hnbap/MuxPortNumber.c new file mode 100644 index 0000000..eed1c1a --- /dev/null +++ b/src/hnbap/MuxPortNumber.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "MuxPortNumber.h" + +int +MuxPortNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1024l && value <= 65535l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +MuxPortNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +MuxPortNumber_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +MuxPortNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +MuxPortNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +MuxPortNumber_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +MuxPortNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +MuxPortNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +MuxPortNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +MuxPortNumber_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +MuxPortNumber_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +MuxPortNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + MuxPortNumber_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_MuxPortNumber_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 1024l, 65535l } /* (1024..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MuxPortNumber_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MuxPortNumber = { + "MuxPortNumber", + "MuxPortNumber", + MuxPortNumber_free, + MuxPortNumber_print, + MuxPortNumber_constraint, + MuxPortNumber_decode_ber, + MuxPortNumber_encode_der, + MuxPortNumber_decode_xer, + MuxPortNumber_encode_xer, + MuxPortNumber_decode_uper, + MuxPortNumber_encode_uper, + MuxPortNumber_decode_aper, + MuxPortNumber_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_MuxPortNumber_tags_1, + sizeof(asn_DEF_MuxPortNumber_tags_1) + /sizeof(asn_DEF_MuxPortNumber_tags_1[0]), /* 1 */ + asn_DEF_MuxPortNumber_tags_1, /* Same as above */ + sizeof(asn_DEF_MuxPortNumber_tags_1) + /sizeof(asn_DEF_MuxPortNumber_tags_1[0]), /* 1 */ + &asn_PER_type_MuxPortNumber_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/MuxPortNumber.h b/src/hnbap/MuxPortNumber.h new file mode 100644 index 0000000..2e07f73 --- /dev/null +++ b/src/hnbap/MuxPortNumber.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _MuxPortNumber_H_ +#define _MuxPortNumber_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* MuxPortNumber */ +typedef long MuxPortNumber_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MuxPortNumber; +asn_struct_free_f MuxPortNumber_free; +asn_struct_print_f MuxPortNumber_print; +asn_constr_check_f MuxPortNumber_constraint; +ber_type_decoder_f MuxPortNumber_decode_ber; +der_type_encoder_f MuxPortNumber_encode_der; +xer_type_decoder_f MuxPortNumber_decode_xer; +xer_type_encoder_f MuxPortNumber_encode_xer; +per_type_decoder_f MuxPortNumber_decode_uper; +per_type_encoder_f MuxPortNumber_encode_uper; +per_type_decoder_f MuxPortNumber_decode_aper; +per_type_encoder_f MuxPortNumber_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MuxPortNumber_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/NeighbourCellIdentityList.c b/src/hnbap/NeighbourCellIdentityList.c new file mode 100644 index 0000000..432e7f5 --- /dev/null +++ b/src/hnbap/NeighbourCellIdentityList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "NeighbourCellIdentityList.h" + +static asn_per_constraints_t asn_PER_type_NeighbourCellIdentityList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 0l, 128l } /* (SIZE(0..128)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_NeighbourCellIdentityList_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_NeighbourIdentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NeighbourCellIdentityList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_NeighbourCellIdentityList_specs_1 = { + sizeof(struct NeighbourCellIdentityList), + offsetof(struct NeighbourCellIdentityList, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_NeighbourCellIdentityList = { + "NeighbourCellIdentityList", + "NeighbourCellIdentityList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_NeighbourCellIdentityList_tags_1, + sizeof(asn_DEF_NeighbourCellIdentityList_tags_1) + /sizeof(asn_DEF_NeighbourCellIdentityList_tags_1[0]), /* 1 */ + asn_DEF_NeighbourCellIdentityList_tags_1, /* Same as above */ + sizeof(asn_DEF_NeighbourCellIdentityList_tags_1) + /sizeof(asn_DEF_NeighbourCellIdentityList_tags_1[0]), /* 1 */ + &asn_PER_type_NeighbourCellIdentityList_constr_1, + asn_MBR_NeighbourCellIdentityList_1, + 1, /* Single element */ + &asn_SPC_NeighbourCellIdentityList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/NeighbourCellIdentityList.h b/src/hnbap/NeighbourCellIdentityList.h new file mode 100644 index 0000000..c1eb6ec --- /dev/null +++ b/src/hnbap/NeighbourCellIdentityList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _NeighbourCellIdentityList_H_ +#define _NeighbourCellIdentityList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NeighbourIdentity; + +/* NeighbourCellIdentityList */ +typedef struct NeighbourCellIdentityList { + A_SEQUENCE_OF(struct NeighbourIdentity) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NeighbourCellIdentityList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NeighbourCellIdentityList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NeighbourIdentity.h" + +#endif /* _NeighbourCellIdentityList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/NeighbourIdentity.c b/src/hnbap/NeighbourIdentity.c new file mode 100644 index 0000000..8ddefab --- /dev/null +++ b/src/hnbap/NeighbourIdentity.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "NeighbourIdentity.h" + +static asn_per_constraints_t asn_PER_type_NeighbourIdentity_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_NeighbourIdentity_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NeighbourIdentity, choice.hNB_RNL_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_HNB_RNL_Identity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hNB-RNL-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct NeighbourIdentity, choice.cell_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cell-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NeighbourIdentity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hNB-RNL-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cell-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_NeighbourIdentity_specs_1 = { + sizeof(struct NeighbourIdentity), + offsetof(struct NeighbourIdentity, _asn_ctx), + offsetof(struct NeighbourIdentity, present), + sizeof(((struct NeighbourIdentity *)0)->present), + asn_MAP_NeighbourIdentity_tag2el_1, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NeighbourIdentity = { + "NeighbourIdentity", + "NeighbourIdentity", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_NeighbourIdentity_constr_1, + asn_MBR_NeighbourIdentity_1, + 2, /* Elements count */ + &asn_SPC_NeighbourIdentity_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/NeighbourIdentity.h b/src/hnbap/NeighbourIdentity.h new file mode 100644 index 0000000..8335e5d --- /dev/null +++ b/src/hnbap/NeighbourIdentity.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _NeighbourIdentity_H_ +#define _NeighbourIdentity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNB-RNL-Identity.h" +#include "CellIdentity.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NeighbourIdentity_PR { + NeighbourIdentity_PR_NOTHING, /* No components present */ + NeighbourIdentity_PR_hNB_RNL_Identity, + NeighbourIdentity_PR_cell_ID, + /* Extensions may appear below */ + +} NeighbourIdentity_PR; + +/* NeighbourIdentity */ +typedef struct NeighbourIdentity { + NeighbourIdentity_PR present; + union NeighbourIdentity_u { + HNB_RNL_Identity_t hNB_RNL_Identity; + CellIdentity_t cell_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NeighbourIdentity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NeighbourIdentity; + +#ifdef __cplusplus +} +#endif + +#endif /* _NeighbourIdentity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/NeighbourInfoList.c b/src/hnbap/NeighbourInfoList.c new file mode 100644 index 0000000..52364b4 --- /dev/null +++ b/src/hnbap/NeighbourInfoList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "NeighbourInfoList.h" + +static asn_per_constraints_t asn_PER_type_NeighbourInfoList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_NeighbourInfoList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HNBConfigInfo, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NeighbourInfoList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_NeighbourInfoList_specs_1 = { + sizeof(struct NeighbourInfoList), + offsetof(struct NeighbourInfoList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NeighbourInfoList = { + "NeighbourInfoList", + "NeighbourInfoList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_NeighbourInfoList_tags_1, + sizeof(asn_DEF_NeighbourInfoList_tags_1) + /sizeof(asn_DEF_NeighbourInfoList_tags_1[0]), /* 1 */ + asn_DEF_NeighbourInfoList_tags_1, /* Same as above */ + sizeof(asn_DEF_NeighbourInfoList_tags_1) + /sizeof(asn_DEF_NeighbourInfoList_tags_1[0]), /* 1 */ + &asn_PER_type_NeighbourInfoList_constr_1, + asn_MBR_NeighbourInfoList_1, + 1, /* Single element */ + &asn_SPC_NeighbourInfoList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/NeighbourInfoList.h b/src/hnbap/NeighbourInfoList.h new file mode 100644 index 0000000..cce2734 --- /dev/null +++ b/src/hnbap/NeighbourInfoList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _NeighbourInfoList_H_ +#define _NeighbourInfoList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HNBConfigInfo; + +/* NeighbourInfoList */ +typedef struct NeighbourInfoList { + A_SEQUENCE_OF(struct HNBConfigInfo) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NeighbourInfoList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NeighbourInfoList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "HNBConfigInfo.h" + +#endif /* _NeighbourInfoList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/NeighbourInfoRequestItem.c b/src/hnbap/NeighbourInfoRequestItem.c new file mode 100644 index 0000000..0e5a2e5 --- /dev/null +++ b/src/hnbap/NeighbourInfoRequestItem.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "NeighbourInfoRequestItem.h" + +static asn_TYPE_member_t asn_MBR_NeighbourInfoRequestItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NeighbourInfoRequestItem, hnb_RNL_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_HNB_RNL_Identity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hnb-RNL-Identity" + }, + { ATF_POINTER, 1, offsetof(struct NeighbourInfoRequestItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_NeighbourInfoRequestItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_NeighbourInfoRequestItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NeighbourInfoRequestItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hnb-RNL-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_NeighbourInfoRequestItem_specs_1 = { + sizeof(struct NeighbourInfoRequestItem), + offsetof(struct NeighbourInfoRequestItem, _asn_ctx), + asn_MAP_NeighbourInfoRequestItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_NeighbourInfoRequestItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestItem = { + "NeighbourInfoRequestItem", + "NeighbourInfoRequestItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_NeighbourInfoRequestItem_tags_1, + sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1) + /sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1[0]), /* 1 */ + asn_DEF_NeighbourInfoRequestItem_tags_1, /* Same as above */ + sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1) + /sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_NeighbourInfoRequestItem_1, + 2, /* Elements count */ + &asn_SPC_NeighbourInfoRequestItem_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/NeighbourInfoRequestItem.h b/src/hnbap/NeighbourInfoRequestItem.h new file mode 100644 index 0000000..e3fa668 --- /dev/null +++ b/src/hnbap/NeighbourInfoRequestItem.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _NeighbourInfoRequestItem_H_ +#define _NeighbourInfoRequestItem_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "HNB-RNL-Identity.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* NeighbourInfoRequestItem */ +typedef struct NeighbourInfoRequestItem { + HNB_RNL_Identity_t hnb_RNL_Identity; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NeighbourInfoRequestItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestItem; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _NeighbourInfoRequestItem_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/NeighbourInfoRequestList.c b/src/hnbap/NeighbourInfoRequestList.c new file mode 100644 index 0000000..03e4c44 --- /dev/null +++ b/src/hnbap/NeighbourInfoRequestList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "NeighbourInfoRequestList.h" + +static asn_per_constraints_t asn_PER_type_NeighbourInfoRequestList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_NeighbourInfoRequestList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NeighbourInfoRequestItem, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NeighbourInfoRequestList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_NeighbourInfoRequestList_specs_1 = { + sizeof(struct NeighbourInfoRequestList), + offsetof(struct NeighbourInfoRequestList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestList = { + "NeighbourInfoRequestList", + "NeighbourInfoRequestList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_NeighbourInfoRequestList_tags_1, + sizeof(asn_DEF_NeighbourInfoRequestList_tags_1) + /sizeof(asn_DEF_NeighbourInfoRequestList_tags_1[0]), /* 1 */ + asn_DEF_NeighbourInfoRequestList_tags_1, /* Same as above */ + sizeof(asn_DEF_NeighbourInfoRequestList_tags_1) + /sizeof(asn_DEF_NeighbourInfoRequestList_tags_1[0]), /* 1 */ + &asn_PER_type_NeighbourInfoRequestList_constr_1, + asn_MBR_NeighbourInfoRequestList_1, + 1, /* Single element */ + &asn_SPC_NeighbourInfoRequestList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/NeighbourInfoRequestList.h b/src/hnbap/NeighbourInfoRequestList.h new file mode 100644 index 0000000..5546368 --- /dev/null +++ b/src/hnbap/NeighbourInfoRequestList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _NeighbourInfoRequestList_H_ +#define _NeighbourInfoRequestList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NeighbourInfoRequestItem; + +/* NeighbourInfoRequestList */ +typedef struct NeighbourInfoRequestList { + A_SEQUENCE_OF(struct NeighbourInfoRequestItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NeighbourInfoRequestList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "NeighbourInfoRequestItem.h" + +#endif /* _NeighbourInfoRequestList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/PLMNidentity.c b/src/hnbap/PLMNidentity.c new file mode 100644 index 0000000..d69e0bb --- /dev/null +++ b/src/hnbap/PLMNidentity.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "PLMNidentity.h" + +int +PLMNidentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +PLMNidentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +PLMNidentity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +PLMNidentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +PLMNidentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +PLMNidentity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +PLMNidentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +PLMNidentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +PLMNidentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +PLMNidentity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +PLMNidentity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +PLMNidentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_PLMNidentity_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PLMNidentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMNidentity = { + "PLMNidentity", + "PLMNidentity", + PLMNidentity_free, + PLMNidentity_print, + PLMNidentity_constraint, + PLMNidentity_decode_ber, + PLMNidentity_encode_der, + PLMNidentity_decode_xer, + PLMNidentity_encode_xer, + PLMNidentity_decode_uper, + PLMNidentity_encode_uper, + PLMNidentity_decode_aper, + PLMNidentity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PLMNidentity_tags_1, + sizeof(asn_DEF_PLMNidentity_tags_1) + /sizeof(asn_DEF_PLMNidentity_tags_1[0]), /* 1 */ + asn_DEF_PLMNidentity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMNidentity_tags_1) + /sizeof(asn_DEF_PLMNidentity_tags_1[0]), /* 1 */ + &asn_PER_type_PLMNidentity_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/PLMNidentity.h b/src/hnbap/PLMNidentity.h new file mode 100644 index 0000000..3abe97a --- /dev/null +++ b/src/hnbap/PLMNidentity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _PLMNidentity_H_ +#define _PLMNidentity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMNidentity */ +typedef OCTET_STRING_t PLMNidentity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PLMNidentity; +asn_struct_free_f PLMNidentity_free; +asn_struct_print_f PLMNidentity_print; +asn_constr_check_f PLMNidentity_constraint; +ber_type_decoder_f PLMNidentity_decode_ber; +der_type_encoder_f PLMNidentity_encode_der; +xer_type_decoder_f PLMNidentity_decode_xer; +xer_type_encoder_f PLMNidentity_encode_xer; +per_type_decoder_f PLMNidentity_decode_uper; +per_type_encoder_f PLMNidentity_encode_uper; +per_type_decoder_f PLMNidentity_decode_aper; +per_type_encoder_f PLMNidentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMNidentity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/PSC.c b/src/hnbap/PSC.c new file mode 100644 index 0000000..f7b9004 --- /dev/null +++ b/src/hnbap/PSC.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "PSC.h" + +int +PSC_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 9l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +PSC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +PSC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + PSC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +PSC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + PSC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +PSC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + PSC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +PSC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + PSC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +PSC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + PSC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +PSC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + PSC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +PSC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + PSC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +PSC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + PSC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +PSC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + PSC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +PSC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + PSC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_PSC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 9l, 9l } /* (SIZE(9..9)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PSC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PSC = { + "PSC", + "PSC", + PSC_free, + PSC_print, + PSC_constraint, + PSC_decode_ber, + PSC_encode_der, + PSC_decode_xer, + PSC_encode_xer, + PSC_decode_uper, + PSC_encode_uper, + PSC_decode_aper, + PSC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PSC_tags_1, + sizeof(asn_DEF_PSC_tags_1) + /sizeof(asn_DEF_PSC_tags_1[0]), /* 1 */ + asn_DEF_PSC_tags_1, /* Same as above */ + sizeof(asn_DEF_PSC_tags_1) + /sizeof(asn_DEF_PSC_tags_1[0]), /* 1 */ + &asn_PER_type_PSC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/PSC.h b/src/hnbap/PSC.h new file mode 100644 index 0000000..4fbd4be --- /dev/null +++ b/src/hnbap/PSC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _PSC_H_ +#define _PSC_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* PSC */ +typedef BIT_STRING_t PSC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PSC; +asn_struct_free_f PSC_free; +asn_struct_print_f PSC_print; +asn_constr_check_f PSC_constraint; +ber_type_decoder_f PSC_decode_ber; +der_type_encoder_f PSC_encode_der; +xer_type_decoder_f PSC_decode_xer; +xer_type_encoder_f PSC_encode_xer; +per_type_decoder_f PSC_decode_uper; +per_type_encoder_f PSC_encode_uper; +per_type_decoder_f PSC_decode_aper; +per_type_encoder_f PSC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PSC_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/PTMSI.c b/src/hnbap/PTMSI.c new file mode 100644 index 0000000..8c8fb6f --- /dev/null +++ b/src/hnbap/PTMSI.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "PTMSI.h" + +int +PTMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +PTMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +PTMSI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + PTMSI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +PTMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +PTMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +PTMSI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +PTMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +PTMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +PTMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +PTMSI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +PTMSI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +PTMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + PTMSI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_PTMSI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PTMSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PTMSI = { + "PTMSI", + "PTMSI", + PTMSI_free, + PTMSI_print, + PTMSI_constraint, + PTMSI_decode_ber, + PTMSI_encode_der, + PTMSI_decode_xer, + PTMSI_encode_xer, + PTMSI_decode_uper, + PTMSI_encode_uper, + PTMSI_decode_aper, + PTMSI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PTMSI_tags_1, + sizeof(asn_DEF_PTMSI_tags_1) + /sizeof(asn_DEF_PTMSI_tags_1[0]), /* 1 */ + asn_DEF_PTMSI_tags_1, /* Same as above */ + sizeof(asn_DEF_PTMSI_tags_1) + /sizeof(asn_DEF_PTMSI_tags_1[0]), /* 1 */ + &asn_PER_type_PTMSI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/PTMSI.h b/src/hnbap/PTMSI.h new file mode 100644 index 0000000..6853624 --- /dev/null +++ b/src/hnbap/PTMSI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _PTMSI_H_ +#define _PTMSI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* PTMSI */ +typedef BIT_STRING_t PTMSI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PTMSI; +asn_struct_free_f PTMSI_free; +asn_struct_print_f PTMSI_print; +asn_constr_check_f PTMSI_constraint; +ber_type_decoder_f PTMSI_decode_ber; +der_type_encoder_f PTMSI_encode_der; +xer_type_decoder_f PTMSI_decode_xer; +xer_type_encoder_f PTMSI_encode_xer; +per_type_decoder_f PTMSI_decode_uper; +per_type_encoder_f PTMSI_encode_uper; +per_type_decoder_f PTMSI_decode_aper; +per_type_encoder_f PTMSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PTMSI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/PTMSIRAI.c b/src/hnbap/PTMSIRAI.c new file mode 100644 index 0000000..018f59c --- /dev/null +++ b/src/hnbap/PTMSIRAI.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "PTMSIRAI.h" + +static asn_TYPE_member_t asn_MBR_PTMSIRAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PTMSIRAI, pTMSI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PTMSI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pTMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct PTMSIRAI, rAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "rAI" + }, +}; +static const ber_tlv_tag_t asn_DEF_PTMSIRAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PTMSIRAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pTMSI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rAI */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_PTMSIRAI_specs_1 = { + sizeof(struct PTMSIRAI), + offsetof(struct PTMSIRAI, _asn_ctx), + asn_MAP_PTMSIRAI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_PTMSIRAI = { + "PTMSIRAI", + "PTMSIRAI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PTMSIRAI_tags_1, + sizeof(asn_DEF_PTMSIRAI_tags_1) + /sizeof(asn_DEF_PTMSIRAI_tags_1[0]), /* 1 */ + asn_DEF_PTMSIRAI_tags_1, /* Same as above */ + sizeof(asn_DEF_PTMSIRAI_tags_1) + /sizeof(asn_DEF_PTMSIRAI_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_PTMSIRAI_1, + 2, /* Elements count */ + &asn_SPC_PTMSIRAI_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/PTMSIRAI.h b/src/hnbap/PTMSIRAI.h new file mode 100644 index 0000000..940a62c --- /dev/null +++ b/src/hnbap/PTMSIRAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _PTMSIRAI_H_ +#define _PTMSIRAI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "PTMSI.h" +#include "RAI.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* PTMSIRAI */ +typedef struct PTMSIRAI { + PTMSI_t pTMSI; + RAI_t rAI; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PTMSIRAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PTMSIRAI; + +#ifdef __cplusplus +} +#endif + +#endif /* _PTMSIRAI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Presence.c b/src/hnbap/Presence.c new file mode 100644 index 0000000..087fb95 --- /dev/null +++ b/src/hnbap/Presence.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#include "Presence.h" + +int +Presence_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +Presence_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +Presence_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Presence_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Presence_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Presence_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Presence_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Presence_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Presence_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Presence_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Presence_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Presence_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Presence_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Presence_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Presence_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Presence_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Presence_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Presence_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Presence_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Presence_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Presence_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Presence_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Presence_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { + asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Presence = { + "Presence", + "Presence", + Presence_free, + Presence_print, + Presence_constraint, + Presence_decode_ber, + Presence_encode_der, + Presence_decode_xer, + Presence_encode_xer, + Presence_decode_uper, + Presence_encode_uper, + Presence_decode_aper, + Presence_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Presence_tags_1, + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + asn_DEF_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + &asn_PER_type_Presence_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Presence_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Presence.h b/src/hnbap/Presence.h new file mode 100644 index 0000000..a3773aa --- /dev/null +++ b/src/hnbap/Presence.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Presence_H_ +#define _Presence_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Presence { + Presence_optional = 0, + Presence_conditional = 1, + Presence_mandatory = 2 +} e_Presence; + +/* Presence */ +typedef long Presence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Presence; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Presence_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/PrivateIE-ID.c b/src/hnbap/PrivateIE-ID.c new file mode 100644 index 0000000..d35272a --- /dev/null +++ b/src/hnbap/PrivateIE-ID.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#include "PrivateIE-ID.h" + +static int +memb_local_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 65535l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_local_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_PrivateIE_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_PrivateIE_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.local), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + memb_local_constraint_1, + &asn_PER_memb_local_constr_2, + 0, + "local" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.global), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OBJECT_IDENTIFIER, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "global" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateIE_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */ +}; +static asn_CHOICE_specifics_t asn_SPC_PrivateIE_ID_specs_1 = { + sizeof(struct PrivateIE_ID), + offsetof(struct PrivateIE_ID, _asn_ctx), + offsetof(struct PrivateIE_ID, present), + sizeof(((struct PrivateIE_ID *)0)->present), + asn_MAP_PrivateIE_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID = { + "PrivateIE-ID", + "PrivateIE-ID", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_PrivateIE_ID_constr_1, + asn_MBR_PrivateIE_ID_1, + 2, /* Elements count */ + &asn_SPC_PrivateIE_ID_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/PrivateIE-ID.h b/src/hnbap/PrivateIE-ID.h new file mode 100644 index 0000000..890974e --- /dev/null +++ b/src/hnbap/PrivateIE-ID.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#ifndef _PrivateIE_ID_H_ +#define _PrivateIE_ID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> +#include <OBJECT_IDENTIFIER.h> +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrivateIE_ID_PR { + PrivateIE_ID_PR_NOTHING, /* No components present */ + PrivateIE_ID_PR_local, + PrivateIE_ID_PR_global +} PrivateIE_ID_PR; + +/* PrivateIE-ID */ +typedef struct PrivateIE_ID { + PrivateIE_ID_PR present; + union PrivateIE_ID_u { + long local; + OBJECT_IDENTIFIER_t global; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_ID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/PrivateMessage.c b/src/hnbap/PrivateMessage.c new file mode 100644 index 0000000..f512d69 --- /dev/null +++ b/src/hnbap/PrivateMessage.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "PrivateMessage.h" + +static int +memb_privateMessage_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_privateMessage_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_privateMessage_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_privateMessage_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_privateMessage_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_privateMessage_ies_specs_2 = { + sizeof(struct privateMessage_ies), + offsetof(struct privateMessage_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_privateMessage_ies_2 = { + "privateMessage-ies", + "privateMessage-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_privateMessage_ies_tags_2, + sizeof(asn_DEF_privateMessage_ies_tags_2) + /sizeof(asn_DEF_privateMessage_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_privateMessage_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_privateMessage_ies_tags_2) + /sizeof(asn_DEF_privateMessage_ies_tags_2[0]), /* 2 */ + &asn_PER_type_privateMessage_ies_constr_2, + asn_MBR_privateMessage_ies_2, + 1, /* Single element */ + &asn_SPC_privateMessage_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_PrivateMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage, privateMessage_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_privateMessage_ies_2, + memb_privateMessage_ies_constraint_1, + &asn_PER_memb_privateMessage_ies_constr_2, + 0, + "privateMessage-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateMessage-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_specs_1 = { + sizeof(struct PrivateMessage), + offsetof(struct PrivateMessage, _asn_ctx), + asn_MAP_PrivateMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateMessage = { + "PrivateMessage", + "PrivateMessage", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PrivateMessage_tags_1, + sizeof(asn_DEF_PrivateMessage_tags_1) + /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */ + asn_DEF_PrivateMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateMessage_tags_1) + /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_PrivateMessage_1, + 1, /* Elements count */ + &asn_SPC_PrivateMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/PrivateMessage.h b/src/hnbap/PrivateMessage.h new file mode 100644 index 0000000..6d3d15e --- /dev/null +++ b/src/hnbap/PrivateMessage.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _PrivateMessage_H_ +#define _PrivateMessage_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* PrivateMessage */ +typedef struct PrivateMessage { + struct privateMessage_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } privateMessage_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateMessage; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _PrivateMessage_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/ProcedureCode.c b/src/hnbap/ProcedureCode.c new file mode 100644 index 0000000..ddd920f --- /dev/null +++ b/src/hnbap/ProcedureCode.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#include "ProcedureCode.h" + +int +ProcedureCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 255l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +ProcedureCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +ProcedureCode_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProcedureCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProcedureCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProcedureCode_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProcedureCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProcedureCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProcedureCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProcedureCode_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProcedureCode_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProcedureCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + ProcedureCode_free, + ProcedureCode_print, + ProcedureCode_constraint, + ProcedureCode_decode_ber, + ProcedureCode_encode_der, + ProcedureCode_decode_xer, + ProcedureCode_encode_xer, + ProcedureCode_decode_uper, + ProcedureCode_encode_uper, + ProcedureCode_decode_aper, + ProcedureCode_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProcedureCode_tags_1, + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + &asn_PER_type_ProcedureCode_constr_1, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/ProcedureCode.h b/src/hnbap/ProcedureCode.h new file mode 100644 index 0000000..a48f453 --- /dev/null +++ b/src/hnbap/ProcedureCode.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#ifndef _ProcedureCode_H_ +#define _ProcedureCode_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProcedureCode { + ProcedureCode_id_HNBRegister = 1, + ProcedureCode_id_HNBDe_Register = 2, + ProcedureCode_id_UERegister = 3, + ProcedureCode_id_UEDe_Register = 4, + ProcedureCode_id_ErrorIndication = 5, + ProcedureCode_id_privateMessage = 6, + ProcedureCode_id_CSGMembershipUpdate = 7, + ProcedureCode_id_TNLUpdate = 9, + ProcedureCode_id_HNBConfigTransfer = 10, + ProcedureCode_id_RelocationComplete = 11, + ProcedureCode_id_U_RNTIQuery = 14 +} e_ProcedureCode; + +/* ProcedureCode */ +typedef long ProcedureCode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; +asn_struct_free_f ProcedureCode_free; +asn_struct_print_f ProcedureCode_print; +asn_constr_check_f ProcedureCode_constraint; +ber_type_decoder_f ProcedureCode_decode_ber; +der_type_encoder_f ProcedureCode_encode_der; +xer_type_decoder_f ProcedureCode_decode_xer; +xer_type_encoder_f ProcedureCode_encode_xer; +per_type_decoder_f ProcedureCode_decode_uper; +per_type_encoder_f ProcedureCode_encode_uper; +per_type_decoder_f ProcedureCode_decode_aper; +per_type_encoder_f ProcedureCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProcedureCode_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/ProtocolIE-ID.c b/src/hnbap/ProtocolIE-ID.c new file mode 100644 index 0000000..5ac3206 --- /dev/null +++ b/src/hnbap/ProtocolIE-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#include "ProtocolIE-ID.h" + +int +ProtocolIE_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 65535l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +ProtocolIE_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + ProtocolIE_ID_free, + ProtocolIE_ID_print, + ProtocolIE_ID_constraint, + ProtocolIE_ID_decode_ber, + ProtocolIE_ID_encode_der, + ProtocolIE_ID_decode_xer, + ProtocolIE_ID_encode_xer, + ProtocolIE_ID_decode_uper, + ProtocolIE_ID_encode_uper, + ProtocolIE_ID_decode_aper, + ProtocolIE_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + &asn_PER_type_ProtocolIE_ID_constr_1, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/ProtocolIE-ID.h b/src/hnbap/ProtocolIE-ID.h new file mode 100644 index 0000000..3252e97 --- /dev/null +++ b/src/hnbap/ProtocolIE-ID.h @@ -0,0 +1,89 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#ifndef _ProtocolIE_ID_H_ +#define _ProtocolIE_ID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProtocolIE_ID { + ProtocolIE_ID_id_Cause = 1, + ProtocolIE_ID_id_CriticalityDiagnostics = 2, + ProtocolIE_ID_id_HNB_Identity = 3, + ProtocolIE_ID_id_Context_ID = 4, + ProtocolIE_ID_id_UE_Identity = 5, + ProtocolIE_ID_id_LAC = 6, + ProtocolIE_ID_id_RAC = 7, + ProtocolIE_ID_id_HNB_Location_Information = 8, + ProtocolIE_ID_id_PLMNidentity = 9, + ProtocolIE_ID_id_SAC = 10, + ProtocolIE_ID_id_CellIdentity = 11, + ProtocolIE_ID_id_Registration_Cause = 12, + ProtocolIE_ID_id_UE_Capabilities = 13, + ProtocolIE_ID_id_RNC_ID = 14, + ProtocolIE_ID_id_CSG_ID = 15, + ProtocolIE_ID_id_BackoffTimer = 16, + ProtocolIE_ID_id_HNB_Internet_Information = 17, + ProtocolIE_ID_id_HNB_Cell_Access_Mode = 18, + ProtocolIE_ID_id_MuxPortNumber = 19, + ProtocolIE_ID_id_Service_Area_For_Broadcast = 20, + ProtocolIE_ID_id_CSGMembershipStatus = 21, + ProtocolIE_ID_id_RABList = 22, + ProtocolIE_ID_id_HNBConfigInfo = 23, + ProtocolIE_ID_id_AccessResult = 25, + ProtocolIE_ID_id_Update_cause = 26, + ProtocolIE_ID_id_NeighbourInfoList = 27, + ProtocolIE_ID_id_NeighbourInfoRequestList = 28, + ProtocolIE_ID_id_Iurh_Signalling_TNL_Address = 29, + ProtocolIE_ID_id_PSC = 30, + ProtocolIE_ID_id_HNB_Cell_Identifier = 31, + ProtocolIE_ID_id_Tunnel_Information = 41, + ProtocolIE_ID_id_CELL_FACHMobilitySupport = 42, + ProtocolIE_ID_id_S_RNTIPrefix = 43, + ProtocolIE_ID_id_URAIdentity = 44, + ProtocolIE_ID_id_NeighbourIdentity = 45, + ProtocolIE_ID_id_HNBCapacity = 46, + ProtocolIE_ID_id_NeighbourCellIdentityList = 47, + ProtocolIE_ID_id_AdditionalNeighbourInfoList = 48, + ProtocolIE_ID_id_U_RNTI = 49, + ProtocolIE_ID_id_UnknownU_RNTIIndication = 50, + ProtocolIE_ID_id_HNB_GWResponse = 51, + ProtocolIE_ID_id_URAIdentityList = 52 +} e_ProtocolIE_ID; + +/* ProtocolIE-ID */ +typedef long ProtocolIE_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; +asn_struct_free_f ProtocolIE_ID_free; +asn_struct_print_f ProtocolIE_ID_print; +asn_constr_check_f ProtocolIE_ID_constraint; +ber_type_decoder_f ProtocolIE_ID_decode_ber; +der_type_encoder_f ProtocolIE_ID_encode_der; +xer_type_decoder_f ProtocolIE_ID_decode_xer; +xer_type_encoder_f ProtocolIE_ID_encode_xer; +per_type_decoder_f ProtocolIE_ID_decode_uper; +per_type_encoder_f ProtocolIE_ID_encode_uper; +per_type_decoder_f ProtocolIE_ID_decode_aper; +per_type_encoder_f ProtocolIE_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RAB-ID.c b/src/hnbap/RAB-ID.c new file mode 100644 index 0000000..db9874f --- /dev/null +++ b/src/hnbap/RAB-ID.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "RAB-ID.h" + +int +RAB_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +RAB_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +RAB_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + RAB_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +RAB_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +RAB_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +RAB_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +RAB_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +RAB_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +RAB_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +RAB_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +RAB_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +RAB_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + RAB_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_RAB_ID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RAB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RAB_ID = { + "RAB-ID", + "RAB-ID", + RAB_ID_free, + RAB_ID_print, + RAB_ID_constraint, + RAB_ID_decode_ber, + RAB_ID_encode_der, + RAB_ID_decode_xer, + RAB_ID_encode_xer, + RAB_ID_decode_uper, + RAB_ID_encode_uper, + RAB_ID_decode_aper, + RAB_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RAB_ID_tags_1, + sizeof(asn_DEF_RAB_ID_tags_1) + /sizeof(asn_DEF_RAB_ID_tags_1[0]), /* 1 */ + asn_DEF_RAB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_RAB_ID_tags_1) + /sizeof(asn_DEF_RAB_ID_tags_1[0]), /* 1 */ + &asn_PER_type_RAB_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/RAB-ID.h b/src/hnbap/RAB-ID.h new file mode 100644 index 0000000..45cf69e --- /dev/null +++ b/src/hnbap/RAB-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RAB_ID_H_ +#define _RAB_ID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* RAB-ID */ +typedef BIT_STRING_t RAB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RAB_ID; +asn_struct_free_f RAB_ID_free; +asn_struct_print_f RAB_ID_print; +asn_constr_check_f RAB_ID_constraint; +ber_type_decoder_f RAB_ID_decode_ber; +der_type_encoder_f RAB_ID_encode_der; +xer_type_decoder_f RAB_ID_decode_xer; +xer_type_encoder_f RAB_ID_encode_xer; +per_type_decoder_f RAB_ID_decode_uper; +per_type_encoder_f RAB_ID_encode_uper; +per_type_decoder_f RAB_ID_decode_aper; +per_type_encoder_f RAB_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RAB_ID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RABList.c b/src/hnbap/RABList.c new file mode 100644 index 0000000..c7acd62 --- /dev/null +++ b/src/hnbap/RABList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "RABList.h" + +static asn_per_constraints_t asn_PER_type_RABList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RABList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RABListItem, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RABList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RABList_specs_1 = { + sizeof(struct RABList), + offsetof(struct RABList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RABList = { + "RABList", + "RABList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RABList_tags_1, + sizeof(asn_DEF_RABList_tags_1) + /sizeof(asn_DEF_RABList_tags_1[0]), /* 1 */ + asn_DEF_RABList_tags_1, /* Same as above */ + sizeof(asn_DEF_RABList_tags_1) + /sizeof(asn_DEF_RABList_tags_1[0]), /* 1 */ + &asn_PER_type_RABList_constr_1, + asn_MBR_RABList_1, + 1, /* Single element */ + &asn_SPC_RABList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/RABList.h b/src/hnbap/RABList.h new file mode 100644 index 0000000..f4834de --- /dev/null +++ b/src/hnbap/RABList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RABList_H_ +#define _RABList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RABListItem; + +/* RABList */ +typedef struct RABList { + A_SEQUENCE_OF(struct RABListItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RABList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RABList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "RABListItem.h" + +#endif /* _RABList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RABListItem.c b/src/hnbap/RABListItem.c new file mode 100644 index 0000000..447c0f7 --- /dev/null +++ b/src/hnbap/RABListItem.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "RABListItem.h" + +static asn_TYPE_member_t asn_MBR_RABListItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RABListItem, rAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RAB_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "rAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RABListItem, old_transport_Info), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportInfo, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "old-transport-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct RABListItem, new_transport_Info), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportInfo, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "new-transport-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct RABListItem, cn_domain_indicator), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CN_DomainIndicator, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cn-domain-indicator" + }, + { ATF_POINTER, 1, offsetof(struct RABListItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_RABListItem_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_RABListItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RABListItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* old-transport-Info */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* new-transport-Info */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cn-domain-indicator */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RABListItem_specs_1 = { + sizeof(struct RABListItem), + offsetof(struct RABListItem, _asn_ctx), + asn_MAP_RABListItem_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_RABListItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_RABListItem = { + "RABListItem", + "RABListItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RABListItem_tags_1, + sizeof(asn_DEF_RABListItem_tags_1) + /sizeof(asn_DEF_RABListItem_tags_1[0]), /* 1 */ + asn_DEF_RABListItem_tags_1, /* Same as above */ + sizeof(asn_DEF_RABListItem_tags_1) + /sizeof(asn_DEF_RABListItem_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_RABListItem_1, + 5, /* Elements count */ + &asn_SPC_RABListItem_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/RABListItem.h b/src/hnbap/RABListItem.h new file mode 100644 index 0000000..d610453 --- /dev/null +++ b/src/hnbap/RABListItem.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RABListItem_H_ +#define _RABListItem_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "RAB-ID.h" +#include "TransportInfo.h" +#include "CN-DomainIndicator.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* RABListItem */ +typedef struct RABListItem { + RAB_ID_t rAB_ID; + TransportInfo_t old_transport_Info; + TransportInfo_t new_transport_Info; + CN_DomainIndicator_t cn_domain_indicator; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RABListItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RABListItem; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _RABListItem_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RAC.c b/src/hnbap/RAC.c new file mode 100644 index 0000000..5f0136c --- /dev/null +++ b/src/hnbap/RAC.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "RAC.h" + +int +RAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +RAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +RAC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + RAC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +RAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + RAC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +RAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + RAC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +RAC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + RAC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +RAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + RAC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +RAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + RAC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +RAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + RAC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +RAC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + RAC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +RAC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + RAC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +RAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + RAC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_RAC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RAC = { + "RAC", + "RAC", + RAC_free, + RAC_print, + RAC_constraint, + RAC_decode_ber, + RAC_encode_der, + RAC_decode_xer, + RAC_encode_xer, + RAC_decode_uper, + RAC_encode_uper, + RAC_decode_aper, + RAC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RAC_tags_1, + sizeof(asn_DEF_RAC_tags_1) + /sizeof(asn_DEF_RAC_tags_1[0]), /* 1 */ + asn_DEF_RAC_tags_1, /* Same as above */ + sizeof(asn_DEF_RAC_tags_1) + /sizeof(asn_DEF_RAC_tags_1[0]), /* 1 */ + &asn_PER_type_RAC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/RAC.h b/src/hnbap/RAC.h new file mode 100644 index 0000000..bf61f44 --- /dev/null +++ b/src/hnbap/RAC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RAC_H_ +#define _RAC_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* RAC */ +typedef OCTET_STRING_t RAC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RAC; +asn_struct_free_f RAC_free; +asn_struct_print_f RAC_print; +asn_constr_check_f RAC_constraint; +ber_type_decoder_f RAC_decode_ber; +der_type_encoder_f RAC_encode_der; +xer_type_decoder_f RAC_decode_xer; +xer_type_encoder_f RAC_encode_xer; +per_type_decoder_f RAC_decode_uper; +per_type_encoder_f RAC_encode_uper; +per_type_decoder_f RAC_decode_aper; +per_type_encoder_f RAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RAC_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RAI.c b/src/hnbap/RAI.c new file mode 100644 index 0000000..da7308c --- /dev/null +++ b/src/hnbap/RAI.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "RAI.h" + +static asn_TYPE_member_t asn_MBR_RAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RAI, lAI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "lAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RAI, rAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RAC, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "rAC" + }, +}; +static const ber_tlv_tag_t asn_DEF_RAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rAC */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RAI_specs_1 = { + sizeof(struct RAI), + offsetof(struct RAI, _asn_ctx), + asn_MAP_RAI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_RAI = { + "RAI", + "RAI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RAI_tags_1, + sizeof(asn_DEF_RAI_tags_1) + /sizeof(asn_DEF_RAI_tags_1[0]), /* 1 */ + asn_DEF_RAI_tags_1, /* Same as above */ + sizeof(asn_DEF_RAI_tags_1) + /sizeof(asn_DEF_RAI_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_RAI_1, + 2, /* Elements count */ + &asn_SPC_RAI_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/RAI.h b/src/hnbap/RAI.h new file mode 100644 index 0000000..faa8e3d --- /dev/null +++ b/src/hnbap/RAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RAI_H_ +#define _RAI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "LAI.h" +#include "RAC.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* RAI */ +typedef struct RAI { + LAI_t lAI; + RAC_t rAC; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RAI; + +#ifdef __cplusplus +} +#endif + +#endif /* _RAI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RNC-ID.c b/src/hnbap/RNC-ID.c new file mode 100644 index 0000000..f386fd1 --- /dev/null +++ b/src/hnbap/RNC-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "RNC-ID.h" + +int +RNC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 65535l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +RNC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +RNC_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + RNC_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +RNC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +RNC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +RNC_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +RNC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +RNC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +RNC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +RNC_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +RNC_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +RNC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + RNC_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_RNC_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RNC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RNC_ID = { + "RNC-ID", + "RNC-ID", + RNC_ID_free, + RNC_ID_print, + RNC_ID_constraint, + RNC_ID_decode_ber, + RNC_ID_encode_der, + RNC_ID_decode_xer, + RNC_ID_encode_xer, + RNC_ID_decode_uper, + RNC_ID_encode_uper, + RNC_ID_decode_aper, + RNC_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RNC_ID_tags_1, + sizeof(asn_DEF_RNC_ID_tags_1) + /sizeof(asn_DEF_RNC_ID_tags_1[0]), /* 1 */ + asn_DEF_RNC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_RNC_ID_tags_1) + /sizeof(asn_DEF_RNC_ID_tags_1[0]), /* 1 */ + &asn_PER_type_RNC_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/RNC-ID.h b/src/hnbap/RNC-ID.h new file mode 100644 index 0000000..c42f984 --- /dev/null +++ b/src/hnbap/RNC-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RNC_ID_H_ +#define _RNC_ID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* RNC-ID */ +typedef long RNC_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RNC_ID; +asn_struct_free_f RNC_ID_free; +asn_struct_print_f RNC_ID_print; +asn_constr_check_f RNC_ID_constraint; +ber_type_decoder_f RNC_ID_decode_ber; +der_type_encoder_f RNC_ID_encode_der; +xer_type_decoder_f RNC_ID_decode_xer; +xer_type_encoder_f RNC_ID_encode_xer; +per_type_decoder_f RNC_ID_decode_uper; +per_type_encoder_f RNC_ID_encode_uper; +per_type_decoder_f RNC_ID_decode_aper; +per_type_encoder_f RNC_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RNC_ID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Registration-Cause.c b/src/hnbap/Registration-Cause.c new file mode 100644 index 0000000..e04843c --- /dev/null +++ b/src/hnbap/Registration-Cause.c @@ -0,0 +1,170 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Registration-Cause.h" + +int +Registration_Cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +Registration_Cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +Registration_Cause_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Registration_Cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Registration_Cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Registration_Cause_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Registration_Cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Registration_Cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Registration_Cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Registration_Cause_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Registration_Cause_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Registration_Cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Registration_Cause_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Registration_Cause_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Registration_Cause_value2enum_1[] = { + { 0, 14, "emergency-call" }, + { 1, 6, "normal" }, + { 2, 13, "ue-relocation" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Registration_Cause_enum2value_1[] = { + 0, /* emergency-call(0) */ + 1, /* normal(1) */ + 2 /* ue-relocation(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Registration_Cause_specs_1 = { + asn_MAP_Registration_Cause_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Registration_Cause_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Registration_Cause_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Registration_Cause = { + "Registration-Cause", + "Registration-Cause", + Registration_Cause_free, + Registration_Cause_print, + Registration_Cause_constraint, + Registration_Cause_decode_ber, + Registration_Cause_encode_der, + Registration_Cause_decode_xer, + Registration_Cause_encode_xer, + Registration_Cause_decode_uper, + Registration_Cause_encode_uper, + Registration_Cause_decode_aper, + Registration_Cause_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Registration_Cause_tags_1, + sizeof(asn_DEF_Registration_Cause_tags_1) + /sizeof(asn_DEF_Registration_Cause_tags_1[0]), /* 1 */ + asn_DEF_Registration_Cause_tags_1, /* Same as above */ + sizeof(asn_DEF_Registration_Cause_tags_1) + /sizeof(asn_DEF_Registration_Cause_tags_1[0]), /* 1 */ + &asn_PER_type_Registration_Cause_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Registration_Cause_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Registration-Cause.h b/src/hnbap/Registration-Cause.h new file mode 100644 index 0000000..c137068 --- /dev/null +++ b/src/hnbap/Registration-Cause.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Registration_Cause_H_ +#define _Registration_Cause_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Registration_Cause { + Registration_Cause_emergency_call = 0, + Registration_Cause_normal = 1, + /* + * Enumeration is extensible + */ + Registration_Cause_ue_relocation = 2 +} e_Registration_Cause; + +/* Registration-Cause */ +typedef long Registration_Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Registration_Cause; +asn_struct_free_f Registration_Cause_free; +asn_struct_print_f Registration_Cause_print; +asn_constr_check_f Registration_Cause_constraint; +ber_type_decoder_f Registration_Cause_decode_ber; +der_type_encoder_f Registration_Cause_encode_der; +xer_type_decoder_f Registration_Cause_decode_xer; +xer_type_encoder_f Registration_Cause_encode_xer; +per_type_decoder_f Registration_Cause_decode_uper; +per_type_encoder_f Registration_Cause_encode_uper; +per_type_decoder_f Registration_Cause_decode_aper; +per_type_encoder_f Registration_Cause_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Registration_Cause_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/RelocationComplete.c b/src/hnbap/RelocationComplete.c new file mode 100644 index 0000000..f5677b8 --- /dev/null +++ b/src/hnbap/RelocationComplete.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "RelocationComplete.h" + +static int +memb_relocationComplete_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_relocationComplete_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_relocationComplete_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_relocationComplete_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_relocationComplete_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_relocationComplete_ies_specs_2 = { + sizeof(struct relocationComplete_ies), + offsetof(struct relocationComplete_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_relocationComplete_ies_2 = { + "relocationComplete-ies", + "relocationComplete-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_relocationComplete_ies_tags_2, + sizeof(asn_DEF_relocationComplete_ies_tags_2) + /sizeof(asn_DEF_relocationComplete_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_relocationComplete_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_relocationComplete_ies_tags_2) + /sizeof(asn_DEF_relocationComplete_ies_tags_2[0]), /* 2 */ + &asn_PER_type_relocationComplete_ies_constr_2, + asn_MBR_relocationComplete_ies_2, + 1, /* Single element */ + &asn_SPC_relocationComplete_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_RelocationComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelocationComplete, relocationComplete_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_relocationComplete_ies_2, + memb_relocationComplete_ies_constraint_1, + &asn_PER_memb_relocationComplete_ies_constr_2, + 0, + "relocationComplete-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_RelocationComplete_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RelocationComplete_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationComplete-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RelocationComplete_specs_1 = { + sizeof(struct RelocationComplete), + offsetof(struct RelocationComplete, _asn_ctx), + asn_MAP_RelocationComplete_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_RelocationComplete = { + "RelocationComplete", + "RelocationComplete", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_RelocationComplete_tags_1, + sizeof(asn_DEF_RelocationComplete_tags_1) + /sizeof(asn_DEF_RelocationComplete_tags_1[0]), /* 1 */ + asn_DEF_RelocationComplete_tags_1, /* Same as above */ + sizeof(asn_DEF_RelocationComplete_tags_1) + /sizeof(asn_DEF_RelocationComplete_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_RelocationComplete_1, + 1, /* Elements count */ + &asn_SPC_RelocationComplete_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/RelocationComplete.h b/src/hnbap/RelocationComplete.h new file mode 100644 index 0000000..a14ddb7 --- /dev/null +++ b/src/hnbap/RelocationComplete.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _RelocationComplete_H_ +#define _RelocationComplete_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* RelocationComplete */ +typedef struct RelocationComplete { + struct relocationComplete_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } relocationComplete_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RelocationComplete_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RelocationComplete; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _RelocationComplete_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/S-RNTIPrefix.c b/src/hnbap/S-RNTIPrefix.c new file mode 100644 index 0000000..2ea4857 --- /dev/null +++ b/src/hnbap/S-RNTIPrefix.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "S-RNTIPrefix.h" + +int +S_RNTIPrefix_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1l && size <= 16l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S_RNTIPrefix_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S_RNTIPrefix_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S_RNTIPrefix_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S_RNTIPrefix_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S_RNTIPrefix_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S_RNTIPrefix_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S_RNTIPrefix_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S_RNTIPrefix_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S_RNTIPrefix_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S_RNTIPrefix_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S_RNTIPrefix_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S_RNTIPrefix_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S_RNTIPrefix_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1l, 16l } /* (SIZE(1..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S_RNTIPrefix_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S_RNTIPrefix = { + "S-RNTIPrefix", + "S-RNTIPrefix", + S_RNTIPrefix_free, + S_RNTIPrefix_print, + S_RNTIPrefix_constraint, + S_RNTIPrefix_decode_ber, + S_RNTIPrefix_encode_der, + S_RNTIPrefix_decode_xer, + S_RNTIPrefix_encode_xer, + S_RNTIPrefix_decode_uper, + S_RNTIPrefix_encode_uper, + S_RNTIPrefix_decode_aper, + S_RNTIPrefix_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S_RNTIPrefix_tags_1, + sizeof(asn_DEF_S_RNTIPrefix_tags_1) + /sizeof(asn_DEF_S_RNTIPrefix_tags_1[0]), /* 1 */ + asn_DEF_S_RNTIPrefix_tags_1, /* Same as above */ + sizeof(asn_DEF_S_RNTIPrefix_tags_1) + /sizeof(asn_DEF_S_RNTIPrefix_tags_1[0]), /* 1 */ + &asn_PER_type_S_RNTIPrefix_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/S-RNTIPrefix.h b/src/hnbap/S-RNTIPrefix.h new file mode 100644 index 0000000..072e305 --- /dev/null +++ b/src/hnbap/S-RNTIPrefix.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _S_RNTIPrefix_H_ +#define _S_RNTIPrefix_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* S-RNTIPrefix */ +typedef BIT_STRING_t S_RNTIPrefix_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S_RNTIPrefix; +asn_struct_free_f S_RNTIPrefix_free; +asn_struct_print_f S_RNTIPrefix_print; +asn_constr_check_f S_RNTIPrefix_constraint; +ber_type_decoder_f S_RNTIPrefix_decode_ber; +der_type_encoder_f S_RNTIPrefix_encode_der; +xer_type_decoder_f S_RNTIPrefix_decode_xer; +xer_type_encoder_f S_RNTIPrefix_encode_xer; +per_type_decoder_f S_RNTIPrefix_decode_uper; +per_type_encoder_f S_RNTIPrefix_encode_uper; +per_type_decoder_f S_RNTIPrefix_decode_aper; +per_type_encoder_f S_RNTIPrefix_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S_RNTIPrefix_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/SAC.c b/src/hnbap/SAC.c new file mode 100644 index 0000000..78f2815 --- /dev/null +++ b/src/hnbap/SAC.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "SAC.h" + +int +SAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +SAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +SAC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + SAC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +SAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + SAC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +SAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + SAC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +SAC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + SAC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +SAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + SAC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +SAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + SAC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +SAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + SAC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +SAC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + SAC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +SAC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + SAC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +SAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + SAC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_SAC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SAC = { + "SAC", + "SAC", + SAC_free, + SAC_print, + SAC_constraint, + SAC_decode_ber, + SAC_encode_der, + SAC_decode_xer, + SAC_encode_xer, + SAC_decode_uper, + SAC_encode_uper, + SAC_decode_aper, + SAC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_SAC_tags_1, + sizeof(asn_DEF_SAC_tags_1) + /sizeof(asn_DEF_SAC_tags_1[0]), /* 1 */ + asn_DEF_SAC_tags_1, /* Same as above */ + sizeof(asn_DEF_SAC_tags_1) + /sizeof(asn_DEF_SAC_tags_1[0]), /* 1 */ + &asn_PER_type_SAC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/SAC.h b/src/hnbap/SAC.h new file mode 100644 index 0000000..5362968 --- /dev/null +++ b/src/hnbap/SAC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _SAC_H_ +#define _SAC_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* SAC */ +typedef OCTET_STRING_t SAC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SAC; +asn_struct_free_f SAC_free; +asn_struct_print_f SAC_print; +asn_constr_check_f SAC_constraint; +ber_type_decoder_f SAC_decode_ber; +der_type_encoder_f SAC_encode_der; +xer_type_decoder_f SAC_decode_xer; +xer_type_encoder_f SAC_encode_xer; +per_type_decoder_f SAC_decode_uper; +per_type_encoder_f SAC_encode_uper; +per_type_decoder_f SAC_decode_aper; +per_type_encoder_f SAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SAC_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/SuccessfulOutcome.c b/src/hnbap/SuccessfulOutcome.c new file mode 100644 index 0000000..ffdaaa8 --- /dev/null +++ b/src/hnbap/SuccessfulOutcome.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "SuccessfulOutcome.h" + +static asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { + sizeof(struct SuccessfulOutcome), + offsetof(struct SuccessfulOutcome, _asn_ctx), + asn_MAP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/SuccessfulOutcome.h b/src/hnbap/SuccessfulOutcome.h new file mode 100644 index 0000000..b831b5f --- /dev/null +++ b/src/hnbap/SuccessfulOutcome.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _SuccessfulOutcome_H_ +#define _SuccessfulOutcome_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include <ANY.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* SuccessfulOutcome */ +typedef struct SuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; + +#ifdef __cplusplus +} +#endif + +#endif /* _SuccessfulOutcome_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TMSIDS41.c b/src/hnbap/TMSIDS41.c new file mode 100644 index 0000000..1aaecfb --- /dev/null +++ b/src/hnbap/TMSIDS41.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "TMSIDS41.h" + +int +TMSIDS41_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 2l && size <= 17l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +TMSIDS41_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +TMSIDS41_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +TMSIDS41_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +TMSIDS41_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +TMSIDS41_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +TMSIDS41_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +TMSIDS41_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +TMSIDS41_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +TMSIDS41_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +TMSIDS41_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +TMSIDS41_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TMSIDS41_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_TMSIDS41_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 2l, 17l } /* (SIZE(2..17)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TMSIDS41_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TMSIDS41 = { + "TMSIDS41", + "TMSIDS41", + TMSIDS41_free, + TMSIDS41_print, + TMSIDS41_constraint, + TMSIDS41_decode_ber, + TMSIDS41_encode_der, + TMSIDS41_decode_xer, + TMSIDS41_encode_xer, + TMSIDS41_decode_uper, + TMSIDS41_encode_uper, + TMSIDS41_decode_aper, + TMSIDS41_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TMSIDS41_tags_1, + sizeof(asn_DEF_TMSIDS41_tags_1) + /sizeof(asn_DEF_TMSIDS41_tags_1[0]), /* 1 */ + asn_DEF_TMSIDS41_tags_1, /* Same as above */ + sizeof(asn_DEF_TMSIDS41_tags_1) + /sizeof(asn_DEF_TMSIDS41_tags_1[0]), /* 1 */ + &asn_PER_type_TMSIDS41_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/TMSIDS41.h b/src/hnbap/TMSIDS41.h new file mode 100644 index 0000000..1cd21a4 --- /dev/null +++ b/src/hnbap/TMSIDS41.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TMSIDS41_H_ +#define _TMSIDS41_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* TMSIDS41 */ +typedef OCTET_STRING_t TMSIDS41_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TMSIDS41; +asn_struct_free_f TMSIDS41_free; +asn_struct_print_f TMSIDS41_print; +asn_constr_check_f TMSIDS41_constraint; +ber_type_decoder_f TMSIDS41_decode_ber; +der_type_encoder_f TMSIDS41_encode_der; +xer_type_decoder_f TMSIDS41_decode_xer; +xer_type_encoder_f TMSIDS41_encode_xer; +per_type_decoder_f TMSIDS41_decode_uper; +per_type_encoder_f TMSIDS41_encode_uper; +per_type_decoder_f TMSIDS41_decode_aper; +per_type_encoder_f TMSIDS41_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TMSIDS41_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TMSILAI.c b/src/hnbap/TMSILAI.c new file mode 100644 index 0000000..2880c58 --- /dev/null +++ b/src/hnbap/TMSILAI.c @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "TMSILAI.h" + +static int +memb_tMSI_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_tMSI_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_TMSILAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TMSILAI, tMSI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + memb_tMSI_constraint_1, + &asn_PER_memb_tMSI_constr_2, + 0, + "tMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct TMSILAI, lAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "lAI" + }, +}; +static const ber_tlv_tag_t asn_DEF_TMSILAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TMSILAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMSI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lAI */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_TMSILAI_specs_1 = { + sizeof(struct TMSILAI), + offsetof(struct TMSILAI, _asn_ctx), + asn_MAP_TMSILAI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_TMSILAI = { + "TMSILAI", + "TMSILAI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TMSILAI_tags_1, + sizeof(asn_DEF_TMSILAI_tags_1) + /sizeof(asn_DEF_TMSILAI_tags_1[0]), /* 1 */ + asn_DEF_TMSILAI_tags_1, /* Same as above */ + sizeof(asn_DEF_TMSILAI_tags_1) + /sizeof(asn_DEF_TMSILAI_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_TMSILAI_1, + 2, /* Elements count */ + &asn_SPC_TMSILAI_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TMSILAI.h b/src/hnbap/TMSILAI.h new file mode 100644 index 0000000..ca71008 --- /dev/null +++ b/src/hnbap/TMSILAI.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TMSILAI_H_ +#define _TMSILAI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> +#include "LAI.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* TMSILAI */ +typedef struct TMSILAI { + BIT_STRING_t tMSI; + LAI_t lAI; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TMSILAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TMSILAI; + +#ifdef __cplusplus +} +#endif + +#endif /* _TMSILAI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TNLUpdateFailure.c b/src/hnbap/TNLUpdateFailure.c new file mode 100644 index 0000000..829cc13 --- /dev/null +++ b/src/hnbap/TNLUpdateFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "TNLUpdateFailure.h" + +static int +memb_tnlUpdateFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_tnlUpdateFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_tnlUpdateFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_tnlUpdateFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_tnlUpdateFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_tnlUpdateFailure_ies_specs_2 = { + sizeof(struct tnlUpdateFailure_ies), + offsetof(struct tnlUpdateFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_tnlUpdateFailure_ies_2 = { + "tnlUpdateFailure-ies", + "tnlUpdateFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_tnlUpdateFailure_ies_tags_2, + sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2) + /sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_tnlUpdateFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2) + /sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_tnlUpdateFailure_ies_constr_2, + asn_MBR_tnlUpdateFailure_ies_2, + 1, /* Single element */ + &asn_SPC_tnlUpdateFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_TNLUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TNLUpdateFailure, tnlUpdateFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_tnlUpdateFailure_ies_2, + memb_tnlUpdateFailure_ies_constraint_1, + &asn_PER_memb_tnlUpdateFailure_ies_constr_2, + 0, + "tnlUpdateFailure-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_TNLUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TNLUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlUpdateFailure-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_TNLUpdateFailure_specs_1 = { + sizeof(struct TNLUpdateFailure), + offsetof(struct TNLUpdateFailure, _asn_ctx), + asn_MAP_TNLUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_TNLUpdateFailure = { + "TNLUpdateFailure", + "TNLUpdateFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TNLUpdateFailure_tags_1, + sizeof(asn_DEF_TNLUpdateFailure_tags_1) + /sizeof(asn_DEF_TNLUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_TNLUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_TNLUpdateFailure_tags_1) + /sizeof(asn_DEF_TNLUpdateFailure_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_TNLUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_TNLUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TNLUpdateFailure.h b/src/hnbap/TNLUpdateFailure.h new file mode 100644 index 0000000..5bd0c05 --- /dev/null +++ b/src/hnbap/TNLUpdateFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TNLUpdateFailure_H_ +#define _TNLUpdateFailure_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* TNLUpdateFailure */ +typedef struct TNLUpdateFailure { + struct tnlUpdateFailure_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } tnlUpdateFailure_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TNLUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TNLUpdateFailure; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _TNLUpdateFailure_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TNLUpdateRequest.c b/src/hnbap/TNLUpdateRequest.c new file mode 100644 index 0000000..1917269 --- /dev/null +++ b/src/hnbap/TNLUpdateRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "TNLUpdateRequest.h" + +static int +memb_tnlUpdateRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_tnlUpdateRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_tnlUpdateRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_tnlUpdateRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_tnlUpdateRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_tnlUpdateRequest_ies_specs_2 = { + sizeof(struct tnlUpdateRequest_ies), + offsetof(struct tnlUpdateRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_tnlUpdateRequest_ies_2 = { + "tnlUpdateRequest-ies", + "tnlUpdateRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_tnlUpdateRequest_ies_tags_2, + sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2) + /sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_tnlUpdateRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2) + /sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_tnlUpdateRequest_ies_constr_2, + asn_MBR_tnlUpdateRequest_ies_2, + 1, /* Single element */ + &asn_SPC_tnlUpdateRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_TNLUpdateRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TNLUpdateRequest, tnlUpdateRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_tnlUpdateRequest_ies_2, + memb_tnlUpdateRequest_ies_constraint_1, + &asn_PER_memb_tnlUpdateRequest_ies_constr_2, + 0, + "tnlUpdateRequest-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_TNLUpdateRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TNLUpdateRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlUpdateRequest-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_TNLUpdateRequest_specs_1 = { + sizeof(struct TNLUpdateRequest), + offsetof(struct TNLUpdateRequest, _asn_ctx), + asn_MAP_TNLUpdateRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_TNLUpdateRequest = { + "TNLUpdateRequest", + "TNLUpdateRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TNLUpdateRequest_tags_1, + sizeof(asn_DEF_TNLUpdateRequest_tags_1) + /sizeof(asn_DEF_TNLUpdateRequest_tags_1[0]), /* 1 */ + asn_DEF_TNLUpdateRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_TNLUpdateRequest_tags_1) + /sizeof(asn_DEF_TNLUpdateRequest_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_TNLUpdateRequest_1, + 1, /* Elements count */ + &asn_SPC_TNLUpdateRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TNLUpdateRequest.h b/src/hnbap/TNLUpdateRequest.h new file mode 100644 index 0000000..52a4b38 --- /dev/null +++ b/src/hnbap/TNLUpdateRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TNLUpdateRequest_H_ +#define _TNLUpdateRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* TNLUpdateRequest */ +typedef struct TNLUpdateRequest { + struct tnlUpdateRequest_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } tnlUpdateRequest_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TNLUpdateRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TNLUpdateRequest; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _TNLUpdateRequest_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TNLUpdateResponse.c b/src/hnbap/TNLUpdateResponse.c new file mode 100644 index 0000000..a956010 --- /dev/null +++ b/src/hnbap/TNLUpdateResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "TNLUpdateResponse.h" + +static int +memb_tnlUpdateResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_tnlUpdateResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_tnlUpdateResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_tnlUpdateResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_tnlUpdateResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_tnlUpdateResponse_ies_specs_2 = { + sizeof(struct tnlUpdateResponse_ies), + offsetof(struct tnlUpdateResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_tnlUpdateResponse_ies_2 = { + "tnlUpdateResponse-ies", + "tnlUpdateResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_tnlUpdateResponse_ies_tags_2, + sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2) + /sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_tnlUpdateResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2) + /sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_tnlUpdateResponse_ies_constr_2, + asn_MBR_tnlUpdateResponse_ies_2, + 1, /* Single element */ + &asn_SPC_tnlUpdateResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_TNLUpdateResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TNLUpdateResponse, tnlUpdateResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_tnlUpdateResponse_ies_2, + memb_tnlUpdateResponse_ies_constraint_1, + &asn_PER_memb_tnlUpdateResponse_ies_constr_2, + 0, + "tnlUpdateResponse-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_TNLUpdateResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TNLUpdateResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlUpdateResponse-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_TNLUpdateResponse_specs_1 = { + sizeof(struct TNLUpdateResponse), + offsetof(struct TNLUpdateResponse, _asn_ctx), + asn_MAP_TNLUpdateResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_TNLUpdateResponse = { + "TNLUpdateResponse", + "TNLUpdateResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TNLUpdateResponse_tags_1, + sizeof(asn_DEF_TNLUpdateResponse_tags_1) + /sizeof(asn_DEF_TNLUpdateResponse_tags_1[0]), /* 1 */ + asn_DEF_TNLUpdateResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_TNLUpdateResponse_tags_1) + /sizeof(asn_DEF_TNLUpdateResponse_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_TNLUpdateResponse_1, + 1, /* Elements count */ + &asn_SPC_TNLUpdateResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TNLUpdateResponse.h b/src/hnbap/TNLUpdateResponse.h new file mode 100644 index 0000000..b01cd30 --- /dev/null +++ b/src/hnbap/TNLUpdateResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TNLUpdateResponse_H_ +#define _TNLUpdateResponse_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* TNLUpdateResponse */ +typedef struct TNLUpdateResponse { + struct tnlUpdateResponse_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } tnlUpdateResponse_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TNLUpdateResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TNLUpdateResponse; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _TNLUpdateResponse_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TransportInfo.c b/src/hnbap/TransportInfo.c new file mode 100644 index 0000000..d511012 --- /dev/null +++ b/src/hnbap/TransportInfo.c @@ -0,0 +1,149 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "TransportInfo.h" + +static asn_per_constraints_t asn_PER_type_transportAssociation_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_transportAssociation_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct transportAssociation, choice.gtp_TEI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTP_TEI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "gtp-TEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct transportAssociation, choice.bindingID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BindingID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "bindingID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_transportAssociation_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gtp-TEI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* bindingID */ +}; +static asn_CHOICE_specifics_t asn_SPC_transportAssociation_specs_3 = { + sizeof(struct transportAssociation), + offsetof(struct transportAssociation, _asn_ctx), + offsetof(struct transportAssociation, present), + sizeof(((struct transportAssociation *)0)->present), + asn_MAP_transportAssociation_tag2el_3, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_transportAssociation_3 = { + "transportAssociation", + "transportAssociation", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_transportAssociation_constr_3, + asn_MBR_transportAssociation_3, + 2, /* Elements count */ + &asn_SPC_transportAssociation_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_TransportInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TransportInfo, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportLayerAddress, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct TransportInfo, transportAssociation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_transportAssociation_3, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "transportAssociation" + }, + { ATF_POINTER, 1, offsetof(struct TransportInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_TransportInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_TransportInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TransportInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportAssociation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_TransportInfo_specs_1 = { + sizeof(struct TransportInfo), + offsetof(struct TransportInfo, _asn_ctx), + asn_MAP_TransportInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TransportInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_TransportInfo = { + "TransportInfo", + "TransportInfo", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TransportInfo_tags_1, + sizeof(asn_DEF_TransportInfo_tags_1) + /sizeof(asn_DEF_TransportInfo_tags_1[0]), /* 1 */ + asn_DEF_TransportInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_TransportInfo_tags_1) + /sizeof(asn_DEF_TransportInfo_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_TransportInfo_1, + 3, /* Elements count */ + &asn_SPC_TransportInfo_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TransportInfo.h b/src/hnbap/TransportInfo.h new file mode 100644 index 0000000..6176761 --- /dev/null +++ b/src/hnbap/TransportInfo.h @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TransportInfo_H_ +#define _TransportInfo_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "TransportLayerAddress.h" +#include "GTP-TEI.h" +#include "BindingID.h" +#include <constr_CHOICE.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum transportAssociation_PR { + transportAssociation_PR_NOTHING, /* No components present */ + transportAssociation_PR_gtp_TEI, + transportAssociation_PR_bindingID, + /* Extensions may appear below */ + +} transportAssociation_PR; + +/* Forward declarations */ +struct IE_Extensions; + +/* TransportInfo */ +typedef struct TransportInfo { + TransportLayerAddress_t transportLayerAddress; + struct transportAssociation { + transportAssociation_PR present; + union TransportInfo__transportAssociation_u { + GTP_TEI_t gtp_TEI; + BindingID_t bindingID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } transportAssociation; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TransportInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TransportInfo; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _TransportInfo_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TransportLayerAddress.c b/src/hnbap/TransportLayerAddress.c new file mode 100644 index 0000000..db4b0da --- /dev/null +++ b/src/hnbap/TransportLayerAddress.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "TransportLayerAddress.h" + +int +TransportLayerAddress_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1l && size <= 160l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +TransportLayerAddress_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +TransportLayerAddress_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +TransportLayerAddress_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +TransportLayerAddress_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +TransportLayerAddress_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +TransportLayerAddress_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +TransportLayerAddress_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +TransportLayerAddress_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +TransportLayerAddress_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +TransportLayerAddress_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +TransportLayerAddress_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_TransportLayerAddress_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1l, 160l } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TransportLayerAddress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress = { + "TransportLayerAddress", + "TransportLayerAddress", + TransportLayerAddress_free, + TransportLayerAddress_print, + TransportLayerAddress_constraint, + TransportLayerAddress_decode_ber, + TransportLayerAddress_encode_der, + TransportLayerAddress_decode_xer, + TransportLayerAddress_encode_xer, + TransportLayerAddress_decode_uper, + TransportLayerAddress_encode_uper, + TransportLayerAddress_decode_aper, + TransportLayerAddress_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TransportLayerAddress_tags_1, + sizeof(asn_DEF_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */ + asn_DEF_TransportLayerAddress_tags_1, /* Same as above */ + sizeof(asn_DEF_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */ + &asn_PER_type_TransportLayerAddress_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/TransportLayerAddress.h b/src/hnbap/TransportLayerAddress.h new file mode 100644 index 0000000..d320738 --- /dev/null +++ b/src/hnbap/TransportLayerAddress.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TransportLayerAddress_H_ +#define _TransportLayerAddress_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* TransportLayerAddress */ +typedef BIT_STRING_t TransportLayerAddress_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress; +asn_struct_free_f TransportLayerAddress_free; +asn_struct_print_f TransportLayerAddress_print; +asn_constr_check_f TransportLayerAddress_constraint; +ber_type_decoder_f TransportLayerAddress_decode_ber; +der_type_encoder_f TransportLayerAddress_encode_der; +xer_type_decoder_f TransportLayerAddress_decode_xer; +xer_type_encoder_f TransportLayerAddress_encode_xer; +per_type_decoder_f TransportLayerAddress_decode_uper; +per_type_encoder_f TransportLayerAddress_encode_uper; +per_type_decoder_f TransportLayerAddress_decode_aper; +per_type_encoder_f TransportLayerAddress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransportLayerAddress_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TriggeringMessage.c b/src/hnbap/TriggeringMessage.c new file mode 100644 index 0000000..0f2ab4e --- /dev/null +++ b/src/hnbap/TriggeringMessage.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#include "TriggeringMessage.h" + +int +TriggeringMessage_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +TriggeringMessage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +TriggeringMessage_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +TriggeringMessage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +TriggeringMessage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +TriggeringMessage_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +TriggeringMessage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +TriggeringMessage_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +TriggeringMessage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +TriggeringMessage_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +TriggeringMessage_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +TriggeringMessage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 20, "unsuccessful-outcome" } +}; +static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessful-outcome(2) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { + asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + TriggeringMessage_free, + TriggeringMessage_print, + TriggeringMessage_constraint, + TriggeringMessage_decode_ber, + TriggeringMessage_encode_der, + TriggeringMessage_decode_xer, + TriggeringMessage_encode_xer, + TriggeringMessage_decode_uper, + TriggeringMessage_encode_uper, + TriggeringMessage_decode_aper, + TriggeringMessage_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TriggeringMessage_tags_1, + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + &asn_PER_type_TriggeringMessage_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TriggeringMessage.h b/src/hnbap/TriggeringMessage.h new file mode 100644 index 0000000..3854505 --- /dev/null +++ b/src/hnbap/TriggeringMessage.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-CommonDataTypes" + * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TriggeringMessage_H_ +#define _TriggeringMessage_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TriggeringMessage { + TriggeringMessage_initiating_message = 0, + TriggeringMessage_successful_outcome = 1, + TriggeringMessage_unsuccessful_outcome = 2 +} e_TriggeringMessage; + +/* TriggeringMessage */ +typedef long TriggeringMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TriggeringMessage_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Tunnel-Information.c b/src/hnbap/Tunnel-Information.c new file mode 100644 index 0000000..dcb0dd7 --- /dev/null +++ b/src/hnbap/Tunnel-Information.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Tunnel-Information.h" + +static asn_TYPE_member_t asn_MBR_Tunnel_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information, iP_Address), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IP_Address, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iP-Address" + }, + { ATF_POINTER, 2, offsetof(struct Tunnel_Information, uDP_Port_Number), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UDP_Port_Number, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uDP-Port-Number" + }, + { ATF_POINTER, 1, offsetof(struct Tunnel_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_Tunnel_Information_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Tunnel_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Tunnel_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iP-Address */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uDP-Port-Number */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_specs_1 = { + sizeof(struct Tunnel_Information), + offsetof(struct Tunnel_Information, _asn_ctx), + asn_MAP_Tunnel_Information_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_Tunnel_Information_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_Tunnel_Information = { + "Tunnel-Information", + "Tunnel-Information", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Tunnel_Information_tags_1, + sizeof(asn_DEF_Tunnel_Information_tags_1) + /sizeof(asn_DEF_Tunnel_Information_tags_1[0]), /* 1 */ + asn_DEF_Tunnel_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_Tunnel_Information_tags_1) + /sizeof(asn_DEF_Tunnel_Information_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_Tunnel_Information_1, + 3, /* Elements count */ + &asn_SPC_Tunnel_Information_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Tunnel-Information.h b/src/hnbap/Tunnel-Information.h new file mode 100644 index 0000000..964b3e9 --- /dev/null +++ b/src/hnbap/Tunnel-Information.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Tunnel_Information_H_ +#define _Tunnel_Information_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "IP-Address.h" +#include "UDP-Port-Number.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* Tunnel-Information */ +typedef struct Tunnel_Information { + IP_Address_t iP_Address; + UDP_Port_Number_t *uDP_Port_Number /* OPTIONAL */; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Tunnel_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Tunnel_Information; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _Tunnel_Information_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/TypeOfError.c b/src/hnbap/TypeOfError.c new file mode 100644 index 0000000..97e81f0 --- /dev/null +++ b/src/hnbap/TypeOfError.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "TypeOfError.h" + +int +TypeOfError_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +TypeOfError_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +TypeOfError_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + TypeOfError_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +TypeOfError_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +TypeOfError_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +TypeOfError_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +TypeOfError_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +TypeOfError_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +TypeOfError_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +TypeOfError_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +TypeOfError_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +TypeOfError_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + TypeOfError_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { + asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfError = { + "TypeOfError", + "TypeOfError", + TypeOfError_free, + TypeOfError_print, + TypeOfError_constraint, + TypeOfError_decode_ber, + TypeOfError_encode_der, + TypeOfError_decode_xer, + TypeOfError_encode_xer, + TypeOfError_decode_uper, + TypeOfError_encode_uper, + TypeOfError_decode_aper, + TypeOfError_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_TypeOfError_tags_1, + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + &asn_PER_type_TypeOfError_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/TypeOfError.h b/src/hnbap/TypeOfError.h new file mode 100644 index 0000000..7e0fcf0 --- /dev/null +++ b/src/hnbap/TypeOfError.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _TypeOfError_H_ +#define _TypeOfError_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfError { + TypeOfError_not_understood = 0, + TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_TypeOfError; + +/* TypeOfError */ +typedef long TypeOfError_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfError_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/U-RNTI.c b/src/hnbap/U-RNTI.c new file mode 100644 index 0000000..0e06a13 --- /dev/null +++ b/src/hnbap/U-RNTI.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "U-RNTI.h" + +int +U_RNTI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static void +U_RNTI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +U_RNTI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + U_RNTI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +U_RNTI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +U_RNTI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +U_RNTI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +U_RNTI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +U_RNTI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +U_RNTI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +U_RNTI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +U_RNTI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +U_RNTI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + U_RNTI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_U_RNTI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_U_RNTI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_U_RNTI = { + "U-RNTI", + "U-RNTI", + U_RNTI_free, + U_RNTI_print, + U_RNTI_constraint, + U_RNTI_decode_ber, + U_RNTI_encode_der, + U_RNTI_decode_xer, + U_RNTI_encode_xer, + U_RNTI_decode_uper, + U_RNTI_encode_uper, + U_RNTI_decode_aper, + U_RNTI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_U_RNTI_tags_1, + sizeof(asn_DEF_U_RNTI_tags_1) + /sizeof(asn_DEF_U_RNTI_tags_1[0]), /* 1 */ + asn_DEF_U_RNTI_tags_1, /* Same as above */ + sizeof(asn_DEF_U_RNTI_tags_1) + /sizeof(asn_DEF_U_RNTI_tags_1[0]), /* 1 */ + &asn_PER_type_U_RNTI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/U-RNTI.h b/src/hnbap/U-RNTI.h new file mode 100644 index 0000000..81ab168 --- /dev/null +++ b/src/hnbap/U-RNTI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _U_RNTI_H_ +#define _U_RNTI_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* U-RNTI */ +typedef BIT_STRING_t U_RNTI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_U_RNTI; +asn_struct_free_f U_RNTI_free; +asn_struct_print_f U_RNTI_print; +asn_constr_check_f U_RNTI_constraint; +ber_type_decoder_f U_RNTI_decode_ber; +der_type_encoder_f U_RNTI_encode_der; +xer_type_decoder_f U_RNTI_decode_xer; +xer_type_encoder_f U_RNTI_encode_xer; +per_type_decoder_f U_RNTI_decode_uper; +per_type_encoder_f U_RNTI_encode_uper; +per_type_decoder_f U_RNTI_decode_aper; +per_type_encoder_f U_RNTI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _U_RNTI_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/U-RNTIQueryRequest.c b/src/hnbap/U-RNTIQueryRequest.c new file mode 100644 index 0000000..8a64aa5 --- /dev/null +++ b/src/hnbap/U-RNTIQueryRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "U-RNTIQueryRequest.h" + +static int +memb_u_RNTIQueryRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_u_RNTIQueryRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_u_RNTIQueryRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_u_RNTIQueryRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_u_RNTIQueryRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_u_RNTIQueryRequest_ies_specs_2 = { + sizeof(struct u_RNTIQueryRequest_ies), + offsetof(struct u_RNTIQueryRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_u_RNTIQueryRequest_ies_2 = { + "u-RNTIQueryRequest-ies", + "u-RNTIQueryRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_u_RNTIQueryRequest_ies_tags_2, + sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2) + /sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_u_RNTIQueryRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2) + /sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_u_RNTIQueryRequest_ies_constr_2, + asn_MBR_u_RNTIQueryRequest_ies_2, + 1, /* Single element */ + &asn_SPC_u_RNTIQueryRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_U_RNTIQueryRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct U_RNTIQueryRequest, u_RNTIQueryRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_u_RNTIQueryRequest_ies_2, + memb_u_RNTIQueryRequest_ies_constraint_1, + &asn_PER_memb_u_RNTIQueryRequest_ies_constr_2, + 0, + "u-RNTIQueryRequest-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_U_RNTIQueryRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_U_RNTIQueryRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* u-RNTIQueryRequest-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_U_RNTIQueryRequest_specs_1 = { + sizeof(struct U_RNTIQueryRequest), + offsetof(struct U_RNTIQueryRequest, _asn_ctx), + asn_MAP_U_RNTIQueryRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryRequest = { + "U-RNTIQueryRequest", + "U-RNTIQueryRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_U_RNTIQueryRequest_tags_1, + sizeof(asn_DEF_U_RNTIQueryRequest_tags_1) + /sizeof(asn_DEF_U_RNTIQueryRequest_tags_1[0]), /* 1 */ + asn_DEF_U_RNTIQueryRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_U_RNTIQueryRequest_tags_1) + /sizeof(asn_DEF_U_RNTIQueryRequest_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_U_RNTIQueryRequest_1, + 1, /* Elements count */ + &asn_SPC_U_RNTIQueryRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/U-RNTIQueryRequest.h b/src/hnbap/U-RNTIQueryRequest.h new file mode 100644 index 0000000..b460dd1 --- /dev/null +++ b/src/hnbap/U-RNTIQueryRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _U_RNTIQueryRequest_H_ +#define _U_RNTIQueryRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* U-RNTIQueryRequest */ +typedef struct U_RNTIQueryRequest { + struct u_RNTIQueryRequest_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } u_RNTIQueryRequest_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} U_RNTIQueryRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryRequest; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _U_RNTIQueryRequest_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/U-RNTIQueryResponse.c b/src/hnbap/U-RNTIQueryResponse.c new file mode 100644 index 0000000..61222c0 --- /dev/null +++ b/src/hnbap/U-RNTIQueryResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "U-RNTIQueryResponse.h" + +static int +memb_u_RNTIQueryResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_u_RNTIQueryResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_u_RNTIQueryResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_u_RNTIQueryResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_u_RNTIQueryResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_u_RNTIQueryResponse_ies_specs_2 = { + sizeof(struct u_RNTIQueryResponse_ies), + offsetof(struct u_RNTIQueryResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_u_RNTIQueryResponse_ies_2 = { + "u-RNTIQueryResponse-ies", + "u-RNTIQueryResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_u_RNTIQueryResponse_ies_tags_2, + sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2) + /sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_u_RNTIQueryResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2) + /sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_u_RNTIQueryResponse_ies_constr_2, + asn_MBR_u_RNTIQueryResponse_ies_2, + 1, /* Single element */ + &asn_SPC_u_RNTIQueryResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_U_RNTIQueryResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct U_RNTIQueryResponse, u_RNTIQueryResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_u_RNTIQueryResponse_ies_2, + memb_u_RNTIQueryResponse_ies_constraint_1, + &asn_PER_memb_u_RNTIQueryResponse_ies_constr_2, + 0, + "u-RNTIQueryResponse-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_U_RNTIQueryResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_U_RNTIQueryResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* u-RNTIQueryResponse-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_U_RNTIQueryResponse_specs_1 = { + sizeof(struct U_RNTIQueryResponse), + offsetof(struct U_RNTIQueryResponse, _asn_ctx), + asn_MAP_U_RNTIQueryResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryResponse = { + "U-RNTIQueryResponse", + "U-RNTIQueryResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_U_RNTIQueryResponse_tags_1, + sizeof(asn_DEF_U_RNTIQueryResponse_tags_1) + /sizeof(asn_DEF_U_RNTIQueryResponse_tags_1[0]), /* 1 */ + asn_DEF_U_RNTIQueryResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_U_RNTIQueryResponse_tags_1) + /sizeof(asn_DEF_U_RNTIQueryResponse_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_U_RNTIQueryResponse_1, + 1, /* Elements count */ + &asn_SPC_U_RNTIQueryResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/U-RNTIQueryResponse.h b/src/hnbap/U-RNTIQueryResponse.h new file mode 100644 index 0000000..3b27078 --- /dev/null +++ b/src/hnbap/U-RNTIQueryResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _U_RNTIQueryResponse_H_ +#define _U_RNTIQueryResponse_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* U-RNTIQueryResponse */ +typedef struct U_RNTIQueryResponse { + struct u_RNTIQueryResponse_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } u_RNTIQueryResponse_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} U_RNTIQueryResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryResponse; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _U_RNTIQueryResponse_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UDP-Port-Number.c b/src/hnbap/UDP-Port-Number.c new file mode 100644 index 0000000..7154553 --- /dev/null +++ b/src/hnbap/UDP-Port-Number.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "UDP-Port-Number.h" + +int +UDP_Port_Number_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +UDP_Port_Number_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +UDP_Port_Number_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +UDP_Port_Number_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +UDP_Port_Number_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +UDP_Port_Number_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +UDP_Port_Number_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +UDP_Port_Number_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +UDP_Port_Number_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +UDP_Port_Number_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +UDP_Port_Number_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +UDP_Port_Number_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + UDP_Port_Number_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_UDP_Port_Number_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UDP_Port_Number_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UDP_Port_Number = { + "UDP-Port-Number", + "UDP-Port-Number", + UDP_Port_Number_free, + UDP_Port_Number_print, + UDP_Port_Number_constraint, + UDP_Port_Number_decode_ber, + UDP_Port_Number_encode_der, + UDP_Port_Number_decode_xer, + UDP_Port_Number_encode_xer, + UDP_Port_Number_decode_uper, + UDP_Port_Number_encode_uper, + UDP_Port_Number_decode_aper, + UDP_Port_Number_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UDP_Port_Number_tags_1, + sizeof(asn_DEF_UDP_Port_Number_tags_1) + /sizeof(asn_DEF_UDP_Port_Number_tags_1[0]), /* 1 */ + asn_DEF_UDP_Port_Number_tags_1, /* Same as above */ + sizeof(asn_DEF_UDP_Port_Number_tags_1) + /sizeof(asn_DEF_UDP_Port_Number_tags_1[0]), /* 1 */ + &asn_PER_type_UDP_Port_Number_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/UDP-Port-Number.h b/src/hnbap/UDP-Port-Number.h new file mode 100644 index 0000000..0f350cb --- /dev/null +++ b/src/hnbap/UDP-Port-Number.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UDP_Port_Number_H_ +#define _UDP_Port_Number_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <OCTET_STRING.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* UDP-Port-Number */ +typedef OCTET_STRING_t UDP_Port_Number_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UDP_Port_Number; +asn_struct_free_f UDP_Port_Number_free; +asn_struct_print_f UDP_Port_Number_print; +asn_constr_check_f UDP_Port_Number_constraint; +ber_type_decoder_f UDP_Port_Number_decode_ber; +der_type_encoder_f UDP_Port_Number_encode_der; +xer_type_decoder_f UDP_Port_Number_decode_xer; +xer_type_encoder_f UDP_Port_Number_encode_xer; +per_type_decoder_f UDP_Port_Number_decode_uper; +per_type_encoder_f UDP_Port_Number_encode_uper; +per_type_decoder_f UDP_Port_Number_decode_aper; +per_type_encoder_f UDP_Port_Number_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UDP_Port_Number_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UE-Capabilities.c b/src/hnbap/UE-Capabilities.c new file mode 100644 index 0000000..9e69fb2 --- /dev/null +++ b/src/hnbap/UE-Capabilities.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "UE-Capabilities.h" + +static asn_TYPE_member_t asn_MBR_UE_Capabilities_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_Capabilities, access_stratum_release_indicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Access_stratum_release_indicator, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "access-stratum-release-indicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Capabilities, csg_capability), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CSG_Capability, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "csg-capability" + }, + { ATF_POINTER, 1, offsetof(struct UE_Capabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_Capabilities_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UE_Capabilities_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_Capabilities_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* access-stratum-release-indicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csg-capability */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_Capabilities_specs_1 = { + sizeof(struct UE_Capabilities), + offsetof(struct UE_Capabilities, _asn_ctx), + asn_MAP_UE_Capabilities_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UE_Capabilities_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_Capabilities = { + "UE-Capabilities", + "UE-Capabilities", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UE_Capabilities_tags_1, + sizeof(asn_DEF_UE_Capabilities_tags_1) + /sizeof(asn_DEF_UE_Capabilities_tags_1[0]), /* 1 */ + asn_DEF_UE_Capabilities_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_Capabilities_tags_1) + /sizeof(asn_DEF_UE_Capabilities_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UE_Capabilities_1, + 3, /* Elements count */ + &asn_SPC_UE_Capabilities_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UE-Capabilities.h b/src/hnbap/UE-Capabilities.h new file mode 100644 index 0000000..221e434 --- /dev/null +++ b/src/hnbap/UE-Capabilities.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UE_Capabilities_H_ +#define _UE_Capabilities_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "Access-stratum-release-indicator.h" +#include "CSG-Capability.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* UE-Capabilities */ +typedef struct UE_Capabilities { + Access_stratum_release_indicator_t access_stratum_release_indicator; + CSG_Capability_t csg_capability; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_Capabilities_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_Capabilities; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _UE_Capabilities_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UE-Identity.c b/src/hnbap/UE-Identity.c new file mode 100644 index 0000000..b6bd6f6 --- /dev/null +++ b/src/hnbap/UE-Identity.c @@ -0,0 +1,133 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "UE-Identity.h" + +static asn_per_constraints_t asn_PER_type_UE_Identity_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_UE_Identity_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMSI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IMSI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.tMSILAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TMSILAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tMSILAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.pTMSIRAI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PTMSIRAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pTMSIRAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMEI), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IMEI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.eSN), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ESN, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "eSN" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMSIDS41), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IMSIDS41, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iMSIDS41" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMSIESN), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IMSIESN, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iMSIESN" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.tMSIDS41), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TMSIDS41, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tMSIDS41" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_Identity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMSI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tMSILAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pTMSIRAI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iMEI */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* eSN */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* iMSIDS41 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* iMSIESN */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* tMSIDS41 */ +}; +static asn_CHOICE_specifics_t asn_SPC_UE_Identity_specs_1 = { + sizeof(struct UE_Identity), + offsetof(struct UE_Identity, _asn_ctx), + offsetof(struct UE_Identity, present), + sizeof(((struct UE_Identity *)0)->present), + asn_MAP_UE_Identity_tag2el_1, + 8, /* Count of tags in the map */ + 0, + 8 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_Identity = { + "UE-Identity", + "UE-Identity", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_UE_Identity_constr_1, + asn_MBR_UE_Identity_1, + 8, /* Elements count */ + &asn_SPC_UE_Identity_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UE-Identity.h b/src/hnbap/UE-Identity.h new file mode 100644 index 0000000..8c6d0d1 --- /dev/null +++ b/src/hnbap/UE-Identity.h @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UE_Identity_H_ +#define _UE_Identity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "IMSI.h" +#include "TMSILAI.h" +#include "PTMSIRAI.h" +#include "IMEI.h" +#include "ESN.h" +#include "IMSIDS41.h" +#include "IMSIESN.h" +#include "TMSIDS41.h" +#include <constr_CHOICE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UE_Identity_PR { + UE_Identity_PR_NOTHING, /* No components present */ + UE_Identity_PR_iMSI, + UE_Identity_PR_tMSILAI, + UE_Identity_PR_pTMSIRAI, + UE_Identity_PR_iMEI, + UE_Identity_PR_eSN, + UE_Identity_PR_iMSIDS41, + UE_Identity_PR_iMSIESN, + UE_Identity_PR_tMSIDS41, + /* Extensions may appear below */ + +} UE_Identity_PR; + +/* UE-Identity */ +typedef struct UE_Identity { + UE_Identity_PR present; + union UE_Identity_u { + IMSI_t iMSI; + TMSILAI_t tMSILAI; + PTMSIRAI_t pTMSIRAI; + IMEI_t iMEI; + ESN_t eSN; + IMSIDS41_t iMSIDS41; + IMSIESN_t iMSIESN; + TMSIDS41_t tMSIDS41; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_Identity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_Identity; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_Identity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UEDe-Register.c b/src/hnbap/UEDe-Register.c new file mode 100644 index 0000000..967aad8 --- /dev/null +++ b/src/hnbap/UEDe-Register.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "UEDe-Register.h" + +static int +memb_ueDe_Register_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ueDe_Register_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ueDe_Register_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ueDe_Register_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ueDe_Register_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ueDe_Register_ies_specs_2 = { + sizeof(struct ueDe_Register_ies), + offsetof(struct ueDe_Register_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ueDe_Register_ies_2 = { + "ueDe-Register-ies", + "ueDe-Register-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ueDe_Register_ies_tags_2, + sizeof(asn_DEF_ueDe_Register_ies_tags_2) + /sizeof(asn_DEF_ueDe_Register_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_ueDe_Register_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_ueDe_Register_ies_tags_2) + /sizeof(asn_DEF_ueDe_Register_ies_tags_2[0]), /* 2 */ + &asn_PER_type_ueDe_Register_ies_constr_2, + asn_MBR_ueDe_Register_ies_2, + 1, /* Single element */ + &asn_SPC_ueDe_Register_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_UEDe_Register_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEDe_Register, ueDe_Register_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_ueDe_Register_ies_2, + memb_ueDe_Register_ies_constraint_1, + &asn_PER_memb_ueDe_Register_ies_constr_2, + 0, + "ueDe-Register-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEDe_Register_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEDe_Register_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueDe-Register-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UEDe_Register_specs_1 = { + sizeof(struct UEDe_Register), + offsetof(struct UEDe_Register, _asn_ctx), + asn_MAP_UEDe_Register_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UEDe_Register = { + "UEDe-Register", + "UEDe-Register", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UEDe_Register_tags_1, + sizeof(asn_DEF_UEDe_Register_tags_1) + /sizeof(asn_DEF_UEDe_Register_tags_1[0]), /* 1 */ + asn_DEF_UEDe_Register_tags_1, /* Same as above */ + sizeof(asn_DEF_UEDe_Register_tags_1) + /sizeof(asn_DEF_UEDe_Register_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UEDe_Register_1, + 1, /* Elements count */ + &asn_SPC_UEDe_Register_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UEDe-Register.h b/src/hnbap/UEDe-Register.h new file mode 100644 index 0000000..85a4e75 --- /dev/null +++ b/src/hnbap/UEDe-Register.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UEDe_Register_H_ +#define _UEDe_Register_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* UEDe-Register */ +typedef struct UEDe_Register { + struct ueDe_Register_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ueDe_Register_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEDe_Register_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEDe_Register; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _UEDe_Register_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UERegisterAccept.c b/src/hnbap/UERegisterAccept.c new file mode 100644 index 0000000..a9c3589 --- /dev/null +++ b/src/hnbap/UERegisterAccept.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "UERegisterAccept.h" + +static int +memb_ueRegisterAccept_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ueRegisterAccept_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ueRegisterAccept_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ueRegisterAccept_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ueRegisterAccept_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ueRegisterAccept_ies_specs_2 = { + sizeof(struct ueRegisterAccept_ies), + offsetof(struct ueRegisterAccept_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ueRegisterAccept_ies_2 = { + "ueRegisterAccept-ies", + "ueRegisterAccept-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ueRegisterAccept_ies_tags_2, + sizeof(asn_DEF_ueRegisterAccept_ies_tags_2) + /sizeof(asn_DEF_ueRegisterAccept_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_ueRegisterAccept_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_ueRegisterAccept_ies_tags_2) + /sizeof(asn_DEF_ueRegisterAccept_ies_tags_2[0]), /* 2 */ + &asn_PER_type_ueRegisterAccept_ies_constr_2, + asn_MBR_ueRegisterAccept_ies_2, + 1, /* Single element */ + &asn_SPC_ueRegisterAccept_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_UERegisterAccept_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UERegisterAccept, ueRegisterAccept_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_ueRegisterAccept_ies_2, + memb_ueRegisterAccept_ies_constraint_1, + &asn_PER_memb_ueRegisterAccept_ies_constr_2, + 0, + "ueRegisterAccept-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_UERegisterAccept_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UERegisterAccept_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRegisterAccept-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UERegisterAccept_specs_1 = { + sizeof(struct UERegisterAccept), + offsetof(struct UERegisterAccept, _asn_ctx), + asn_MAP_UERegisterAccept_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UERegisterAccept = { + "UERegisterAccept", + "UERegisterAccept", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UERegisterAccept_tags_1, + sizeof(asn_DEF_UERegisterAccept_tags_1) + /sizeof(asn_DEF_UERegisterAccept_tags_1[0]), /* 1 */ + asn_DEF_UERegisterAccept_tags_1, /* Same as above */ + sizeof(asn_DEF_UERegisterAccept_tags_1) + /sizeof(asn_DEF_UERegisterAccept_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UERegisterAccept_1, + 1, /* Elements count */ + &asn_SPC_UERegisterAccept_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UERegisterAccept.h b/src/hnbap/UERegisterAccept.h new file mode 100644 index 0000000..8b9bdae --- /dev/null +++ b/src/hnbap/UERegisterAccept.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UERegisterAccept_H_ +#define _UERegisterAccept_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* UERegisterAccept */ +typedef struct UERegisterAccept { + struct ueRegisterAccept_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ueRegisterAccept_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UERegisterAccept_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UERegisterAccept; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _UERegisterAccept_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UERegisterReject.c b/src/hnbap/UERegisterReject.c new file mode 100644 index 0000000..49a439e --- /dev/null +++ b/src/hnbap/UERegisterReject.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "UERegisterReject.h" + +static int +memb_ueRegisterReject_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ueRegisterReject_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ueRegisterReject_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ueRegisterReject_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ueRegisterReject_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ueRegisterReject_ies_specs_2 = { + sizeof(struct ueRegisterReject_ies), + offsetof(struct ueRegisterReject_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ueRegisterReject_ies_2 = { + "ueRegisterReject-ies", + "ueRegisterReject-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ueRegisterReject_ies_tags_2, + sizeof(asn_DEF_ueRegisterReject_ies_tags_2) + /sizeof(asn_DEF_ueRegisterReject_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_ueRegisterReject_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_ueRegisterReject_ies_tags_2) + /sizeof(asn_DEF_ueRegisterReject_ies_tags_2[0]), /* 2 */ + &asn_PER_type_ueRegisterReject_ies_constr_2, + asn_MBR_ueRegisterReject_ies_2, + 1, /* Single element */ + &asn_SPC_ueRegisterReject_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_UERegisterReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UERegisterReject, ueRegisterReject_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_ueRegisterReject_ies_2, + memb_ueRegisterReject_ies_constraint_1, + &asn_PER_memb_ueRegisterReject_ies_constr_2, + 0, + "ueRegisterReject-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_UERegisterReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UERegisterReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRegisterReject-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UERegisterReject_specs_1 = { + sizeof(struct UERegisterReject), + offsetof(struct UERegisterReject, _asn_ctx), + asn_MAP_UERegisterReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UERegisterReject = { + "UERegisterReject", + "UERegisterReject", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UERegisterReject_tags_1, + sizeof(asn_DEF_UERegisterReject_tags_1) + /sizeof(asn_DEF_UERegisterReject_tags_1[0]), /* 1 */ + asn_DEF_UERegisterReject_tags_1, /* Same as above */ + sizeof(asn_DEF_UERegisterReject_tags_1) + /sizeof(asn_DEF_UERegisterReject_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UERegisterReject_1, + 1, /* Elements count */ + &asn_SPC_UERegisterReject_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UERegisterReject.h b/src/hnbap/UERegisterReject.h new file mode 100644 index 0000000..4130147 --- /dev/null +++ b/src/hnbap/UERegisterReject.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UERegisterReject_H_ +#define _UERegisterReject_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* UERegisterReject */ +typedef struct UERegisterReject { + struct ueRegisterReject_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ueRegisterReject_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UERegisterReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UERegisterReject; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _UERegisterReject_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UERegisterRequest.c b/src/hnbap/UERegisterRequest.c new file mode 100644 index 0000000..052ac69 --- /dev/null +++ b/src/hnbap/UERegisterRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "UERegisterRequest.h" + +static int +memb_ueRegisterRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 65535l)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ueRegisterRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ueRegisterRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ueRegisterRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ueRegisterRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ueRegisterRequest_ies_specs_2 = { + sizeof(struct ueRegisterRequest_ies), + offsetof(struct ueRegisterRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ueRegisterRequest_ies_2 = { + "ueRegisterRequest-ies", + "ueRegisterRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ueRegisterRequest_ies_tags_2, + sizeof(asn_DEF_ueRegisterRequest_ies_tags_2) + /sizeof(asn_DEF_ueRegisterRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_ueRegisterRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_ueRegisterRequest_ies_tags_2) + /sizeof(asn_DEF_ueRegisterRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_ueRegisterRequest_ies_constr_2, + asn_MBR_ueRegisterRequest_ies_2, + 1, /* Single element */ + &asn_SPC_ueRegisterRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_UERegisterRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UERegisterRequest, ueRegisterRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_ueRegisterRequest_ies_2, + memb_ueRegisterRequest_ies_constraint_1, + &asn_PER_memb_ueRegisterRequest_ies_constr_2, + 0, + "ueRegisterRequest-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_UERegisterRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UERegisterRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRegisterRequest-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UERegisterRequest_specs_1 = { + sizeof(struct UERegisterRequest), + offsetof(struct UERegisterRequest, _asn_ctx), + asn_MAP_UERegisterRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UERegisterRequest = { + "UERegisterRequest", + "UERegisterRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UERegisterRequest_tags_1, + sizeof(asn_DEF_UERegisterRequest_tags_1) + /sizeof(asn_DEF_UERegisterRequest_tags_1[0]), /* 1 */ + asn_DEF_UERegisterRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_UERegisterRequest_tags_1) + /sizeof(asn_DEF_UERegisterRequest_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UERegisterRequest_1, + 1, /* Elements count */ + &asn_SPC_UERegisterRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UERegisterRequest.h b/src/hnbap/UERegisterRequest.h new file mode 100644 index 0000000..c637a1f --- /dev/null +++ b/src/hnbap/UERegisterRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UERegisterRequest_H_ +#define _UERegisterRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE; + +/* UERegisterRequest */ +typedef struct UERegisterRequest { + struct ueRegisterRequest_ies { + A_SEQUENCE_OF(struct IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ueRegisterRequest_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UERegisterRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UERegisterRequest; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE.h" + +#endif /* _UERegisterRequest_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/URAIdentity.c b/src/hnbap/URAIdentity.c new file mode 100644 index 0000000..63dfeb5 --- /dev/null +++ b/src/hnbap/URAIdentity.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "URAIdentity.h" + +int +URAIdentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + _ASN_CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0l && value <= 65535l)) { + /* Constraint check succeeded */ + return 0; + } else { + _ASN_CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static void +URAIdentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +URAIdentity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + URAIdentity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +URAIdentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +URAIdentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +URAIdentity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +URAIdentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +URAIdentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +URAIdentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +URAIdentity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +URAIdentity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +URAIdentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + URAIdentity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_URAIdentity_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_URAIdentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_URAIdentity = { + "URAIdentity", + "URAIdentity", + URAIdentity_free, + URAIdentity_print, + URAIdentity_constraint, + URAIdentity_decode_ber, + URAIdentity_encode_der, + URAIdentity_decode_xer, + URAIdentity_encode_xer, + URAIdentity_decode_uper, + URAIdentity_encode_uper, + URAIdentity_decode_aper, + URAIdentity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_URAIdentity_tags_1, + sizeof(asn_DEF_URAIdentity_tags_1) + /sizeof(asn_DEF_URAIdentity_tags_1[0]), /* 1 */ + asn_DEF_URAIdentity_tags_1, /* Same as above */ + sizeof(asn_DEF_URAIdentity_tags_1) + /sizeof(asn_DEF_URAIdentity_tags_1[0]), /* 1 */ + &asn_PER_type_URAIdentity_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/src/hnbap/URAIdentity.h b/src/hnbap/URAIdentity.h new file mode 100644 index 0000000..ec2c4bc --- /dev/null +++ b/src/hnbap/URAIdentity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _URAIdentity_H_ +#define _URAIdentity_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* URAIdentity */ +typedef long URAIdentity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_URAIdentity; +asn_struct_free_f URAIdentity_free; +asn_struct_print_f URAIdentity_print; +asn_constr_check_f URAIdentity_constraint; +ber_type_decoder_f URAIdentity_decode_ber; +der_type_encoder_f URAIdentity_encode_der; +xer_type_decoder_f URAIdentity_decode_xer; +xer_type_encoder_f URAIdentity_encode_xer; +per_type_decoder_f URAIdentity_decode_uper; +per_type_encoder_f URAIdentity_encode_uper; +per_type_decoder_f URAIdentity_decode_aper; +per_type_encoder_f URAIdentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _URAIdentity_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/URAIdentityList.c b/src/hnbap/URAIdentityList.c new file mode 100644 index 0000000..e539ee2 --- /dev/null +++ b/src/hnbap/URAIdentityList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "URAIdentityList.h" + +static asn_per_constraints_t asn_PER_type_URAIdentityList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 0l, 8l } /* (SIZE(0..8)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_URAIdentityList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_URAIdentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_URAIdentityList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_URAIdentityList_specs_1 = { + sizeof(struct URAIdentityList), + offsetof(struct URAIdentityList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_URAIdentityList = { + "URAIdentityList", + "URAIdentityList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_URAIdentityList_tags_1, + sizeof(asn_DEF_URAIdentityList_tags_1) + /sizeof(asn_DEF_URAIdentityList_tags_1[0]), /* 1 */ + asn_DEF_URAIdentityList_tags_1, /* Same as above */ + sizeof(asn_DEF_URAIdentityList_tags_1) + /sizeof(asn_DEF_URAIdentityList_tags_1[0]), /* 1 */ + &asn_PER_type_URAIdentityList_constr_1, + asn_MBR_URAIdentityList_1, + 1, /* Single element */ + &asn_SPC_URAIdentityList_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/URAIdentityList.h b/src/hnbap/URAIdentityList.h new file mode 100644 index 0000000..25e436f --- /dev/null +++ b/src/hnbap/URAIdentityList.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _URAIdentityList_H_ +#define _URAIdentityList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "URAIdentity.h" +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* URAIdentityList */ +typedef struct URAIdentityList { + A_SEQUENCE_OF(URAIdentity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} URAIdentityList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_URAIdentityList; + +#ifdef __cplusplus +} +#endif + +#endif /* _URAIdentityList_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UTRANCellID.c b/src/hnbap/UTRANCellID.c new file mode 100644 index 0000000..928c0d3 --- /dev/null +++ b/src/hnbap/UTRANCellID.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "UTRANCellID.h" + +static asn_TYPE_member_t asn_MBR_UTRANCellID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, lAC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LAC, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "lAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, rAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RAC, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "rAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNidentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, uTRANcellID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdentity, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uTRANcellID" + }, + { ATF_POINTER, 1, offsetof(struct UTRANCellID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IE_Extensions, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_UTRANCellID_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_UTRANCellID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UTRANCellID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uTRANcellID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UTRANCellID_specs_1 = { + sizeof(struct UTRANCellID), + offsetof(struct UTRANCellID, _asn_ctx), + asn_MAP_UTRANCellID_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_UTRANCellID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UTRANCellID = { + "UTRANCellID", + "UTRANCellID", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UTRANCellID_tags_1, + sizeof(asn_DEF_UTRANCellID_tags_1) + /sizeof(asn_DEF_UTRANCellID_tags_1[0]), /* 1 */ + asn_DEF_UTRANCellID_tags_1, /* Same as above */ + sizeof(asn_DEF_UTRANCellID_tags_1) + /sizeof(asn_DEF_UTRANCellID_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UTRANCellID_1, + 5, /* Elements count */ + &asn_SPC_UTRANCellID_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UTRANCellID.h b/src/hnbap/UTRANCellID.h new file mode 100644 index 0000000..bed91f5 --- /dev/null +++ b/src/hnbap/UTRANCellID.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UTRANCellID_H_ +#define _UTRANCellID_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "LAC.h" +#include "RAC.h" +#include "PLMNidentity.h" +#include "CellIdentity.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct IE_Extensions; + +/* UTRANCellID */ +typedef struct UTRANCellID { + LAC_t lAC; + RAC_t rAC; + PLMNidentity_t pLMNidentity; + CellIdentity_t uTRANcellID; + struct IE_Extensions *iE_Extensions /* OPTIONAL */; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UTRANCellID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UTRANCellID; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "IE-Extensions.h" + +#endif /* _UTRANCellID_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UnknownU-RNTIIndication.c b/src/hnbap/UnknownU-RNTIIndication.c new file mode 100644 index 0000000..c5b9f77 --- /dev/null +++ b/src/hnbap/UnknownU-RNTIIndication.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "UnknownU-RNTIIndication.h" + +int +UnknownU_RNTIIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +UnknownU_RNTIIndication_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +UnknownU_RNTIIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +UnknownU_RNTIIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +UnknownU_RNTIIndication_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +UnknownU_RNTIIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +UnknownU_RNTIIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +UnknownU_RNTIIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +UnknownU_RNTIIndication_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +UnknownU_RNTIIndication_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +UnknownU_RNTIIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_UnknownU_RNTIIndication_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UnknownU_RNTIIndication_value2enum_1[] = { + { 0, 7, "unknown" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UnknownU_RNTIIndication_enum2value_1[] = { + 0 /* unknown(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_UnknownU_RNTIIndication_specs_1 = { + asn_MAP_UnknownU_RNTIIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UnknownU_RNTIIndication_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_UnknownU_RNTIIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UnknownU_RNTIIndication = { + "UnknownU-RNTIIndication", + "UnknownU-RNTIIndication", + UnknownU_RNTIIndication_free, + UnknownU_RNTIIndication_print, + UnknownU_RNTIIndication_constraint, + UnknownU_RNTIIndication_decode_ber, + UnknownU_RNTIIndication_encode_der, + UnknownU_RNTIIndication_decode_xer, + UnknownU_RNTIIndication_encode_xer, + UnknownU_RNTIIndication_decode_uper, + UnknownU_RNTIIndication_encode_uper, + UnknownU_RNTIIndication_decode_aper, + UnknownU_RNTIIndication_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UnknownU_RNTIIndication_tags_1, + sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1) + /sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1[0]), /* 1 */ + asn_DEF_UnknownU_RNTIIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1) + /sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1[0]), /* 1 */ + &asn_PER_type_UnknownU_RNTIIndication_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UnknownU_RNTIIndication_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UnknownU-RNTIIndication.h b/src/hnbap/UnknownU-RNTIIndication.h new file mode 100644 index 0000000..d0f2a9a --- /dev/null +++ b/src/hnbap/UnknownU-RNTIIndication.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UnknownU_RNTIIndication_H_ +#define _UnknownU_RNTIIndication_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnknownU_RNTIIndication { + UnknownU_RNTIIndication_unknown = 0 + /* + * Enumeration is extensible + */ +} e_UnknownU_RNTIIndication; + +/* UnknownU-RNTIIndication */ +typedef long UnknownU_RNTIIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnknownU_RNTIIndication; +asn_struct_free_f UnknownU_RNTIIndication_free; +asn_struct_print_f UnknownU_RNTIIndication_print; +asn_constr_check_f UnknownU_RNTIIndication_constraint; +ber_type_decoder_f UnknownU_RNTIIndication_decode_ber; +der_type_encoder_f UnknownU_RNTIIndication_encode_der; +xer_type_decoder_f UnknownU_RNTIIndication_decode_xer; +xer_type_encoder_f UnknownU_RNTIIndication_encode_xer; +per_type_decoder_f UnknownU_RNTIIndication_decode_uper; +per_type_encoder_f UnknownU_RNTIIndication_encode_uper; +per_type_decoder_f UnknownU_RNTIIndication_decode_aper; +per_type_encoder_f UnknownU_RNTIIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnknownU_RNTIIndication_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/UnsuccessfulOutcome.c b/src/hnbap/UnsuccessfulOutcome.c new file mode 100644 index 0000000..bb5947c --- /dev/null +++ b/src/hnbap/UnsuccessfulOutcome.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#include "UnsuccessfulOutcome.h" + +static asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { + sizeof(struct UnsuccessfulOutcome), + offsetof(struct UnsuccessfulOutcome, _asn_ctx), + asn_MAP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/UnsuccessfulOutcome.h b/src/hnbap/UnsuccessfulOutcome.h new file mode 100644 index 0000000..91090d0 --- /dev/null +++ b/src/hnbap/UnsuccessfulOutcome.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-PDU" + * found in "../../asn1/hnbap/HNBAP-PDU.asn" + * `asn1c -gen-PER` + */ + +#ifndef _UnsuccessfulOutcome_H_ +#define _UnsuccessfulOutcome_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include <ANY.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* UnsuccessfulOutcome */ +typedef struct UnsuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsuccessfulOutcome_H_ */ +#include <asn_internal.h> diff --git a/src/hnbap/Update-cause.c b/src/hnbap/Update-cause.c new file mode 100644 index 0000000..f9ba133 --- /dev/null +++ b/src/hnbap/Update-cause.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#include "Update-cause.h" + +int +Update_cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +Update_cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +Update_cause_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + Update_cause_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +Update_cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +Update_cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +Update_cause_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +Update_cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +Update_cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +Update_cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +Update_cause_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +Update_cause_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +Update_cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + Update_cause_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_Update_cause_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Update_cause_value2enum_1[] = { + { 0, 22, "relocation-preparation" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Update_cause_enum2value_1[] = { + 0 /* relocation-preparation(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_Update_cause_specs_1 = { + asn_MAP_Update_cause_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Update_cause_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Update_cause_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Update_cause = { + "Update-cause", + "Update-cause", + Update_cause_free, + Update_cause_print, + Update_cause_constraint, + Update_cause_decode_ber, + Update_cause_encode_der, + Update_cause_decode_xer, + Update_cause_encode_xer, + Update_cause_decode_uper, + Update_cause_encode_uper, + Update_cause_decode_aper, + Update_cause_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_Update_cause_tags_1, + sizeof(asn_DEF_Update_cause_tags_1) + /sizeof(asn_DEF_Update_cause_tags_1[0]), /* 1 */ + asn_DEF_Update_cause_tags_1, /* Same as above */ + sizeof(asn_DEF_Update_cause_tags_1) + /sizeof(asn_DEF_Update_cause_tags_1[0]), /* 1 */ + &asn_PER_type_Update_cause_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Update_cause_specs_1 /* Additional specs */ +}; + diff --git a/src/hnbap/Update-cause.h b/src/hnbap/Update-cause.h new file mode 100644 index 0000000..cff96e1 --- /dev/null +++ b/src/hnbap/Update-cause.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "HNBAP-IEs" + * found in "../../asn1/hnbap/HNBAP-IEs.asn" + * `asn1c -gen-PER` + */ + +#ifndef _Update_cause_H_ +#define _Update_cause_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeEnumerated.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Update_cause { + Update_cause_relocation_preparation = 0 + /* + * Enumeration is extensible + */ +} e_Update_cause; + +/* Update-cause */ +typedef long Update_cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Update_cause; +asn_struct_free_f Update_cause_free; +asn_struct_print_f Update_cause_print; +asn_constr_check_f Update_cause_constraint; +ber_type_decoder_f Update_cause_decode_ber; +der_type_encoder_f Update_cause_encode_der; +xer_type_decoder_f Update_cause_decode_xer; +xer_type_encoder_f Update_cause_encode_xer; +per_type_decoder_f Update_cause_decode_uper; +per_type_encoder_f Update_cause_encode_uper; +per_type_decoder_f Update_cause_decode_aper; +per_type_encoder_f Update_cause_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Update_cause_H_ */ +#include <asn_internal.h> |