aboutsummaryrefslogtreecommitdiffstats
path: root/src/hnbap
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2015-09-10 10:52:18 +0200
committerHarald Welte <laforge@gnumonks.org>2015-09-10 10:53:37 +0200
commit0ec7f1366761fffcd73ba359969ea1029ed5dc79 (patch)
tree73bb156c8a322c9e511f02f9446cb4291333f59a /src/hnbap
parentb90c37dbaffe28626ca8ddefc4c03876644c7552 (diff)
Cleanups (rename 'asn1c' to 'hnbap', Makefile sanitizing)
Diffstat (limited to 'src/hnbap')
-rw-r--r--src/hnbap/.gitignore60
-rw-r--r--src/hnbap/Access-stratum-release-indicator.c176
-rw-r--r--src/hnbap/Access-stratum-release-indicator.h56
-rw-r--r--src/hnbap/AccessResult.c168
-rw-r--r--src/hnbap/AccessResult.h52
-rw-r--r--src/hnbap/AdditionalNeighbourInfoList.c60
-rw-r--r--src/hnbap/AdditionalNeighbourInfoList.h44
-rw-r--r--src/hnbap/AltitudeAndDirection.c261
-rw-r--r--src/hnbap/AltitudeAndDirection.h51
-rw-r--r--src/hnbap/BackoffTimer.c166
-rw-r--r--src/hnbap/BackoffTimer.h43
-rw-r--r--src/hnbap/BindingID.c167
-rw-r--r--src/hnbap/BindingID.h43
-rw-r--r--src/hnbap/CELL-FACHMobilitySupport.c166
-rw-r--r--src/hnbap/CELL-FACHMobilitySupport.h51
-rw-r--r--src/hnbap/CGI.c94
-rw-r--r--src/hnbap/CGI.h49
-rw-r--r--src/hnbap/CI.c167
-rw-r--r--src/hnbap/CI.h43
-rw-r--r--src/hnbap/CN-DomainIndicator.c166
-rw-r--r--src/hnbap/CN-DomainIndicator.h49
-rw-r--r--src/hnbap/CSG-Capability.c168
-rw-r--r--src/hnbap/CSG-Capability.h52
-rw-r--r--src/hnbap/CSG-ID.c172
-rw-r--r--src/hnbap/CSG-ID.h43
-rw-r--r--src/hnbap/CSGMembershipStatus.c168
-rw-r--r--src/hnbap/CSGMembershipStatus.h52
-rw-r--r--src/hnbap/CSGMembershipUpdate.c146
-rw-r--r--src/hnbap/CSGMembershipUpdate.h54
-rw-r--r--src/hnbap/Cause.c93
-rw-r--r--src/hnbap/Cause.h62
-rw-r--r--src/hnbap/CauseMisc.c172
-rw-r--r--src/hnbap/CauseMisc.h54
-rw-r--r--src/hnbap/CauseProtocol.c178
-rw-r--r--src/hnbap/CauseProtocol.h57
-rw-r--r--src/hnbap/CauseRadioNetwork.c196
-rw-r--r--src/hnbap/CauseRadioNetwork.h66
-rw-r--r--src/hnbap/CauseTransport.c168
-rw-r--r--src/hnbap/CauseTransport.h52
-rw-r--r--src/hnbap/CellIdentity.c172
-rw-r--r--src/hnbap/CellIdentity.h43
-rw-r--r--src/hnbap/ConfigurationInformation.c73
-rw-r--r--src/hnbap/ConfigurationInformation.h56
-rw-r--r--src/hnbap/Context-ID.c172
-rw-r--r--src/hnbap/Context-ID.h43
-rw-r--r--src/hnbap/Criticality.c168
-rw-r--r--src/hnbap/Criticality.h50
-rw-r--r--src/hnbap/CriticalityDiagnostics-IE-List.c146
-rw-r--r--src/hnbap/CriticalityDiagnostics-IE-List.h60
-rw-r--r--src/hnbap/CriticalityDiagnostics.c104
-rw-r--r--src/hnbap/CriticalityDiagnostics.h56
-rw-r--r--src/hnbap/ESN.c172
-rw-r--r--src/hnbap/ESN.h43
-rw-r--r--src/hnbap/ErrorIndication.c146
-rw-r--r--src/hnbap/ErrorIndication.h54
-rw-r--r--src/hnbap/GTP-TEI.c167
-rw-r--r--src/hnbap/GTP-TEI.h43
-rw-r--r--src/hnbap/GeographicalCoordinates.c313
-rw-r--r--src/hnbap/GeographicalCoordinates.h59
-rw-r--r--src/hnbap/GeographicalLocation.c84
-rw-r--r--src/hnbap/GeographicalLocation.h51
-rw-r--r--src/hnbap/HNB-Cell-Access-Mode.c170
-rw-r--r--src/hnbap/HNB-Cell-Access-Mode.h53
-rw-r--r--src/hnbap/HNB-Cell-Identifier.c84
-rw-r--r--src/hnbap/HNB-Cell-Identifier.h51
-rw-r--r--src/hnbap/HNB-GWResponse.c83
-rw-r--r--src/hnbap/HNB-GWResponse.h59
-rw-r--r--src/hnbap/HNB-Identity-Info.c167
-rw-r--r--src/hnbap/HNB-Identity-Info.h43
-rw-r--r--src/hnbap/HNB-Identity.c74
-rw-r--r--src/hnbap/HNB-Identity.h49
-rw-r--r--src/hnbap/HNB-Location-Information.c84
-rw-r--r--src/hnbap/HNB-Location-Information.h53
-rw-r--r--src/hnbap/HNB-RNL-Identity.c63
-rw-r--r--src/hnbap/HNB-RNL-Identity.h53
-rw-r--r--src/hnbap/HNBAP-PDU.c83
-rw-r--r--src/hnbap/HNBAP-PDU.h59
-rw-r--r--src/hnbap/HNBCapacity.c166
-rw-r--r--src/hnbap/HNBCapacity.h43
-rw-r--r--src/hnbap/HNBConfigInfo.c84
-rw-r--r--src/hnbap/HNBConfigInfo.h51
-rw-r--r--src/hnbap/HNBConfigTransferRequest.c146
-rw-r--r--src/hnbap/HNBConfigTransferRequest.h54
-rw-r--r--src/hnbap/HNBConfigTransferResponse.c146
-rw-r--r--src/hnbap/HNBConfigTransferResponse.h54
-rw-r--r--src/hnbap/HNBConfigurationInformationMissing.c74
-rw-r--r--src/hnbap/HNBConfigurationInformationMissing.h49
-rw-r--r--src/hnbap/HNBConfigurationInformationProvided.c104
-rw-r--r--src/hnbap/HNBConfigurationInformationProvided.h55
-rw-r--r--src/hnbap/HNBDe-Register.c146
-rw-r--r--src/hnbap/HNBDe-Register.h54
-rw-r--r--src/hnbap/HNBRegisterAccept.c146
-rw-r--r--src/hnbap/HNBRegisterAccept.h54
-rw-r--r--src/hnbap/HNBRegisterReject.c146
-rw-r--r--src/hnbap/HNBRegisterReject.h54
-rw-r--r--src/hnbap/HNBRegisterRequest.c146
-rw-r--r--src/hnbap/HNBRegisterRequest.h54
-rw-r--r--src/hnbap/IE-Extensions.c60
-rw-r--r--src/hnbap/IE-Extensions.h44
-rw-r--r--src/hnbap/IE.c82
-rw-r--r--src/hnbap/IE.h42
-rw-r--r--src/hnbap/IMEI.c172
-rw-r--r--src/hnbap/IMEI.h43
-rw-r--r--src/hnbap/IMSI.c167
-rw-r--r--src/hnbap/IMSI.h43
-rw-r--r--src/hnbap/IMSIDS41.c167
-rw-r--r--src/hnbap/IMSIDS41.h43
-rw-r--r--src/hnbap/IMSIESN.c72
-rw-r--r--src/hnbap/IMSIESN.h40
-rw-r--r--src/hnbap/IP-Address.c139
-rw-r--r--src/hnbap/IP-Address.h73
-rw-r--r--src/hnbap/InitiatingMessage.c82
-rw-r--r--src/hnbap/InitiatingMessage.h42
-rw-r--r--src/hnbap/Ipv4Address.c167
-rw-r--r--src/hnbap/Ipv4Address.h43
-rw-r--r--src/hnbap/Ipv6Address.c167
-rw-r--r--src/hnbap/Ipv6Address.h43
-rw-r--r--src/hnbap/Iurh-Signalling-TNL-AddressList.c60
-rw-r--r--src/hnbap/Iurh-Signalling-TNL-AddressList.h44
-rw-r--r--src/hnbap/LAC.c167
-rw-r--r--src/hnbap/LAC.h43
-rw-r--r--src/hnbap/LAI.c72
-rw-r--r--src/hnbap/LAI.h44
-rw-r--r--src/hnbap/MacroCellID.c73
-rw-r--r--src/hnbap/MacroCellID.h56
-rw-r--r--src/hnbap/MacroCoverageInformation.c74
-rw-r--r--src/hnbap/MacroCoverageInformation.h49
-rw-r--r--src/hnbap/Makefile262
-rw-r--r--src/hnbap/MuxPortNumber.c166
-rw-r--r--src/hnbap/MuxPortNumber.h43
-rw-r--r--src/hnbap/NeighbourCellIdentityList.c60
-rw-r--r--src/hnbap/NeighbourCellIdentityList.h44
-rw-r--r--src/hnbap/NeighbourIdentity.c73
-rw-r--r--src/hnbap/NeighbourIdentity.h56
-rw-r--r--src/hnbap/NeighbourInfoList.c60
-rw-r--r--src/hnbap/NeighbourInfoList.h44
-rw-r--r--src/hnbap/NeighbourInfoRequestItem.c74
-rw-r--r--src/hnbap/NeighbourInfoRequestItem.h49
-rw-r--r--src/hnbap/NeighbourInfoRequestList.c60
-rw-r--r--src/hnbap/NeighbourInfoRequestList.h44
-rw-r--r--src/hnbap/PLMNidentity.c167
-rw-r--r--src/hnbap/PLMNidentity.h43
-rw-r--r--src/hnbap/PSC.c172
-rw-r--r--src/hnbap/PSC.h43
-rw-r--r--src/hnbap/PTMSI.c172
-rw-r--r--src/hnbap/PTMSI.h43
-rw-r--r--src/hnbap/PTMSIRAI.c72
-rw-r--r--src/hnbap/PTMSIRAI.h44
-rw-r--r--src/hnbap/Presence.c168
-rw-r--r--src/hnbap/Presence.h50
-rw-r--r--src/hnbap/PrivateIE-ID.c103
-rw-r--r--src/hnbap/PrivateIE-ID.h50
-rw-r--r--src/hnbap/PrivateMessage.c146
-rw-r--r--src/hnbap/PrivateMessage.h54
-rw-r--r--src/hnbap/ProcedureCode.c166
-rw-r--r--src/hnbap/ProcedureCode.h58
-rw-r--r--src/hnbap/ProtocolIE-ID.c166
-rw-r--r--src/hnbap/ProtocolIE-ID.h89
-rw-r--r--src/hnbap/RAB-ID.c172
-rw-r--r--src/hnbap/RAB-ID.h43
-rw-r--r--src/hnbap/RABList.c60
-rw-r--r--src/hnbap/RABList.h44
-rw-r--r--src/hnbap/RABListItem.c104
-rw-r--r--src/hnbap/RABListItem.h54
-rw-r--r--src/hnbap/RAC.c167
-rw-r--r--src/hnbap/RAC.h43
-rw-r--r--src/hnbap/RAI.c72
-rw-r--r--src/hnbap/RAI.h44
-rw-r--r--src/hnbap/RNC-ID.c166
-rw-r--r--src/hnbap/RNC-ID.h43
-rw-r--r--src/hnbap/Registration-Cause.c170
-rw-r--r--src/hnbap/Registration-Cause.h53
-rw-r--r--src/hnbap/RelocationComplete.c146
-rw-r--r--src/hnbap/RelocationComplete.h54
-rw-r--r--src/hnbap/S-RNTIPrefix.c172
-rw-r--r--src/hnbap/S-RNTIPrefix.h43
-rw-r--r--src/hnbap/SAC.c167
-rw-r--r--src/hnbap/SAC.h43
-rw-r--r--src/hnbap/SuccessfulOutcome.c82
-rw-r--r--src/hnbap/SuccessfulOutcome.h42
-rw-r--r--src/hnbap/TMSIDS41.c167
-rw-r--r--src/hnbap/TMSIDS41.h43
-rw-r--r--src/hnbap/TMSILAI.c108
-rw-r--r--src/hnbap/TMSILAI.h40
-rw-r--r--src/hnbap/TNLUpdateFailure.c146
-rw-r--r--src/hnbap/TNLUpdateFailure.h54
-rw-r--r--src/hnbap/TNLUpdateRequest.c146
-rw-r--r--src/hnbap/TNLUpdateRequest.h54
-rw-r--r--src/hnbap/TNLUpdateResponse.c146
-rw-r--r--src/hnbap/TNLUpdateResponse.h54
-rw-r--r--src/hnbap/TransportInfo.c149
-rw-r--r--src/hnbap/TransportInfo.h75
-rw-r--r--src/hnbap/TransportLayerAddress.c172
-rw-r--r--src/hnbap/TransportLayerAddress.h43
-rw-r--r--src/hnbap/TriggeringMessage.c168
-rw-r--r--src/hnbap/TriggeringMessage.h50
-rw-r--r--src/hnbap/Tunnel-Information.c84
-rw-r--r--src/hnbap/Tunnel-Information.h51
-rw-r--r--src/hnbap/TypeOfError.c168
-rw-r--r--src/hnbap/TypeOfError.h52
-rw-r--r--src/hnbap/U-RNTI.c172
-rw-r--r--src/hnbap/U-RNTI.h43
-rw-r--r--src/hnbap/U-RNTIQueryRequest.c146
-rw-r--r--src/hnbap/U-RNTIQueryRequest.h54
-rw-r--r--src/hnbap/U-RNTIQueryResponse.c146
-rw-r--r--src/hnbap/U-RNTIQueryResponse.h54
-rw-r--r--src/hnbap/UDP-Port-Number.c167
-rw-r--r--src/hnbap/UDP-Port-Number.h43
-rw-r--r--src/hnbap/UE-Capabilities.c84
-rw-r--r--src/hnbap/UE-Capabilities.h51
-rw-r--r--src/hnbap/UE-Identity.c133
-rw-r--r--src/hnbap/UE-Identity.h74
-rw-r--r--src/hnbap/UEDe-Register.c146
-rw-r--r--src/hnbap/UEDe-Register.h54
-rw-r--r--src/hnbap/UERegisterAccept.c146
-rw-r--r--src/hnbap/UERegisterAccept.h54
-rw-r--r--src/hnbap/UERegisterReject.c146
-rw-r--r--src/hnbap/UERegisterReject.h54
-rw-r--r--src/hnbap/UERegisterRequest.c146
-rw-r--r--src/hnbap/UERegisterRequest.h54
-rw-r--r--src/hnbap/URAIdentity.c166
-rw-r--r--src/hnbap/URAIdentity.h43
-rw-r--r--src/hnbap/URAIdentityList.c60
-rw-r--r--src/hnbap/URAIdentityList.h39
-rw-r--r--src/hnbap/UTRANCellID.c104
-rw-r--r--src/hnbap/UTRANCellID.h51
-rw-r--r--src/hnbap/UnknownU-RNTIIndication.c166
-rw-r--r--src/hnbap/UnknownU-RNTIIndication.h51
-rw-r--r--src/hnbap/UnsuccessfulOutcome.c82
-rw-r--r--src/hnbap/UnsuccessfulOutcome.h42
-rw-r--r--src/hnbap/Update-cause.c166
-rw-r--r--src/hnbap/Update-cause.h51
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>