--- /dev/null
+################################################################################
+# Copyright (c) [2017-2019] [Radisys] #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+################################################################################
+
+# This is makefile for ASN
+
+include ../common/rsys_fancy.mak
+include ../common/env.mak
+
+COLOR=$(COLOR_RED)
+
+SRC_DIR=$(ROOT_DIR)/src/codec_utils/E2SM_KPM
+C_SRCS=$(wildcard $(SRC_DIR)/*.c)
+C_OBJS=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(C_SRCS))
+
+lib: $(LIB_DIR)/libasn_e2ap.a
+include $(COM_BUILD_DIR)/compile.mak
+
+I_OPTS+=-I$(SRC_DIR)/../common
+I_OPTS+=-I$(SRC_DIR)/../E2AP
+
+#-------------------------------------------------------------#
+#Linker macros
+#-------------------------------------------------------------#
+$(LIB_DIR)/libasn_e2ap.a:$(C_OBJS)
+ @echo -e "Creating Archive $(COLOR) $@ $(REVERT_COLOR)"
+ $(Q)ar -cr $(LIB_DIR)/libasn_e2ap.a $(C_OBJS)
+
+
+#-------------------------------------------------------------#
+#Clean macros
+#-------------------------------------------------------------#
+clean:
+ @echo -e "$(COLOR_RED)Cleaning ASN$(REVERT_COLOR)"
+ @echo $(SRC_DIR) $(CM_DIR)
+ $(Q)\rm -f $(LIB_DIR)/libasn_e2ap.a $(C_OBJS)
+
+#-------------------------------------------------------------#
+#End of File
+#-------------------------------------------------------------#
+
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_common.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_f1ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+ $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap_kpm.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_rrc.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/du_app.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/rlc.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_common.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_f1ap.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+ $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap_kpm.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_rrc.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/rlc.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
$(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMF-UE-NGAP-ID.h"
+
+int
+AMF_UE_NGAP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const INTEGER_t *st = (const INTEGER_t *)sptr;
+ long value;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(asn_INTEGER2long(st, &value)) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value too large (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if((value >= 0 && value <= 1099511627775)) {
+ /* 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 INTEGER,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = {
+ { 8, 1 } /* (0..1099511627775) */,
+ -1};
+asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 40, -1, 0, 1099511627775 } /* (0..1099511627775) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMF_UE_NGAP_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID = {
+ "AMF-UE-NGAP-ID",
+ "AMF-UE-NGAP-ID",
+ &asn_OP_INTEGER,
+ asn_DEF_AMF_UE_NGAP_ID_tags_1,
+ sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1)
+ /sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */
+ asn_DEF_AMF_UE_NGAP_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1)
+ /sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_AMF_UE_NGAP_ID_constr_1, &asn_PER_type_AMF_UE_NGAP_ID_constr_1, AMF_UE_NGAP_ID_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _AMF_UE_NGAP_ID_H_
+#define _AMF_UE_NGAP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMF-UE-NGAP-ID */
+typedef INTEGER_t AMF_UE_NGAP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID;
+asn_struct_free_f AMF_UE_NGAP_ID_free;
+asn_struct_print_f AMF_UE_NGAP_ID_print;
+asn_constr_check_f AMF_UE_NGAP_ID_constraint;
+ber_type_decoder_f AMF_UE_NGAP_ID_decode_ber;
+der_type_encoder_f AMF_UE_NGAP_ID_encode_der;
+xer_type_decoder_f AMF_UE_NGAP_ID_decode_xer;
+xer_type_encoder_f AMF_UE_NGAP_ID_encode_xer;
+oer_type_decoder_f AMF_UE_NGAP_ID_decode_oer;
+oer_type_encoder_f AMF_UE_NGAP_ID_encode_oer;
+per_type_decoder_f AMF_UE_NGAP_ID_decode_uper;
+per_type_encoder_f AMF_UE_NGAP_ID_encode_uper;
+per_type_decoder_f AMF_UE_NGAP_ID_decode_aper;
+per_type_encoder_f AMF_UE_NGAP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMF_UE_NGAP_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMFPointer.h"
+
+int
+AMFPointer_constraint(const 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 == 6)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_AMFPointer_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 6 /* (SIZE(6..6)) */};
+asn_per_constraints_t asn_PER_type_AMFPointer_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 6, 6 } /* (SIZE(6..6)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFPointer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFPointer = {
+ "AMFPointer",
+ "AMFPointer",
+ &asn_OP_BIT_STRING,
+ asn_DEF_AMFPointer_tags_1,
+ sizeof(asn_DEF_AMFPointer_tags_1)
+ /sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */
+ asn_DEF_AMFPointer_tags_1, /* Same as above */
+ sizeof(asn_DEF_AMFPointer_tags_1)
+ /sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */
+ { &asn_OER_type_AMFPointer_constr_1, &asn_PER_type_AMFPointer_constr_1, AMFPointer_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_BIT_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _AMFPointer_H_
+#define _AMFPointer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMFPointer */
+typedef BIT_STRING_t AMFPointer_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMFPointer_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMFPointer;
+asn_struct_free_f AMFPointer_free;
+asn_struct_print_f AMFPointer_print;
+asn_constr_check_f AMFPointer_constraint;
+ber_type_decoder_f AMFPointer_decode_ber;
+der_type_encoder_f AMFPointer_encode_der;
+xer_type_decoder_f AMFPointer_decode_xer;
+xer_type_encoder_f AMFPointer_encode_xer;
+oer_type_decoder_f AMFPointer_decode_oer;
+oer_type_encoder_f AMFPointer_encode_oer;
+per_type_decoder_f AMFPointer_decode_uper;
+per_type_encoder_f AMFPointer_encode_uper;
+per_type_decoder_f AMFPointer_decode_aper;
+per_type_encoder_f AMFPointer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMFPointer_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMFRegionID.h"
+
+int
+AMFRegionID_constraint(const 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 == 8)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_AMFRegionID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 8 /* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFRegionID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFRegionID = {
+ "AMFRegionID",
+ "AMFRegionID",
+ &asn_OP_BIT_STRING,
+ asn_DEF_AMFRegionID_tags_1,
+ sizeof(asn_DEF_AMFRegionID_tags_1)
+ /sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */
+ asn_DEF_AMFRegionID_tags_1, /* Same as above */
+ sizeof(asn_DEF_AMFRegionID_tags_1)
+ /sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */
+ { &asn_OER_type_AMFRegionID_constr_1, &asn_PER_type_AMFRegionID_constr_1, AMFRegionID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_BIT_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _AMFRegionID_H_
+#define _AMFRegionID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMFRegionID */
+typedef BIT_STRING_t AMFRegionID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMFRegionID;
+asn_struct_free_f AMFRegionID_free;
+asn_struct_print_f AMFRegionID_print;
+asn_constr_check_f AMFRegionID_constraint;
+ber_type_decoder_f AMFRegionID_decode_ber;
+der_type_encoder_f AMFRegionID_encode_der;
+xer_type_decoder_f AMFRegionID_decode_xer;
+xer_type_encoder_f AMFRegionID_encode_xer;
+oer_type_decoder_f AMFRegionID_decode_oer;
+oer_type_encoder_f AMFRegionID_encode_oer;
+per_type_decoder_f AMFRegionID_decode_uper;
+per_type_encoder_f AMFRegionID_encode_uper;
+per_type_decoder_f AMFRegionID_decode_aper;
+per_type_encoder_f AMFRegionID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMFRegionID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMFSetID.h"
+
+int
+AMFSetID_constraint(const 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 == 10)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_AMFSetID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 10 /* (SIZE(10..10)) */};
+asn_per_constraints_t asn_PER_type_AMFSetID_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 10, 10 } /* (SIZE(10..10)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFSetID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFSetID = {
+ "AMFSetID",
+ "AMFSetID",
+ &asn_OP_BIT_STRING,
+ asn_DEF_AMFSetID_tags_1,
+ sizeof(asn_DEF_AMFSetID_tags_1)
+ /sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */
+ asn_DEF_AMFSetID_tags_1, /* Same as above */
+ sizeof(asn_DEF_AMFSetID_tags_1)
+ /sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */
+ { &asn_OER_type_AMFSetID_constr_1, &asn_PER_type_AMFSetID_constr_1, AMFSetID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_BIT_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _AMFSetID_H_
+#define _AMFSetID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMFSetID */
+typedef BIT_STRING_t AMFSetID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMFSetID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMFSetID;
+asn_struct_free_f AMFSetID_free;
+asn_struct_print_f AMFSetID_print;
+asn_constr_check_f AMFSetID_constraint;
+ber_type_decoder_f AMFSetID_decode_ber;
+der_type_encoder_f AMFSetID_encode_der;
+xer_type_decoder_f AMFSetID_decode_xer;
+xer_type_encoder_f AMFSetID_encode_xer;
+oer_type_decoder_f AMFSetID_decode_oer;
+oer_type_encoder_f AMFSetID_encode_oer;
+per_type_decoder_f AMFSetID_decode_uper;
+per_type_encoder_f AMFSetID_encode_uper;
+per_type_decoder_f AMFSetID_decode_aper;
+per_type_encoder_f AMFSetID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMFSetID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinIndex.h"
+
+int
+BinIndex_constraint(const 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 >= 1 && value <= 65535)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_BinIndex_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_BinIndex_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_BinIndex_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_BinIndex = {
+ "BinIndex",
+ "BinIndex",
+ &asn_OP_NativeInteger,
+ asn_DEF_BinIndex_tags_1,
+ sizeof(asn_DEF_BinIndex_tags_1)
+ /sizeof(asn_DEF_BinIndex_tags_1[0]), /* 1 */
+ asn_DEF_BinIndex_tags_1, /* Same as above */
+ sizeof(asn_DEF_BinIndex_tags_1)
+ /sizeof(asn_DEF_BinIndex_tags_1[0]), /* 1 */
+ { &asn_OER_type_BinIndex_constr_1, &asn_PER_type_BinIndex_constr_1, BinIndex_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _BinIndex_H_
+#define _BinIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BinIndex */
+typedef long BinIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_BinIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_BinIndex;
+asn_struct_free_f BinIndex_free;
+asn_struct_print_f BinIndex_print;
+asn_constr_check_f BinIndex_constraint;
+ber_type_decoder_f BinIndex_decode_ber;
+der_type_encoder_f BinIndex_encode_der;
+xer_type_decoder_f BinIndex_decode_xer;
+xer_type_encoder_f BinIndex_encode_xer;
+oer_type_decoder_f BinIndex_decode_oer;
+oer_type_encoder_f BinIndex_encode_oer;
+per_type_decoder_f BinIndex_decode_uper;
+per_type_encoder_f BinIndex_encode_uper;
+per_type_decoder_f BinIndex_decode_aper;
+per_type_encoder_f BinIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinIndex_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeDefinition.h"
+
+#include "BinRangeList.h"
+asn_TYPE_member_t asn_MBR_BinRangeDefinition_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct BinRangeDefinition, binRangeListX),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinRangeList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binRangeListX"
+ },
+ { ATF_POINTER, 2, offsetof(struct BinRangeDefinition, binRangeListY),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinRangeList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binRangeListY"
+ },
+ { ATF_POINTER, 1, offsetof(struct BinRangeDefinition, binRangeListZ),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinRangeList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binRangeListZ"
+ },
+};
+static const int asn_MAP_BinRangeDefinition_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_BinRangeDefinition_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BinRangeDefinition_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* binRangeListX */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* binRangeListY */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeListZ */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BinRangeDefinition_specs_1 = {
+ sizeof(struct BinRangeDefinition),
+ offsetof(struct BinRangeDefinition, _asn_ctx),
+ asn_MAP_BinRangeDefinition_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_BinRangeDefinition_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeDefinition = {
+ "BinRangeDefinition",
+ "BinRangeDefinition",
+ &asn_OP_SEQUENCE,
+ asn_DEF_BinRangeDefinition_tags_1,
+ sizeof(asn_DEF_BinRangeDefinition_tags_1)
+ /sizeof(asn_DEF_BinRangeDefinition_tags_1[0]), /* 1 */
+ asn_DEF_BinRangeDefinition_tags_1, /* Same as above */
+ sizeof(asn_DEF_BinRangeDefinition_tags_1)
+ /sizeof(asn_DEF_BinRangeDefinition_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_BinRangeDefinition_1,
+ 3, /* Elements count */
+ &asn_SPC_BinRangeDefinition_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _BinRangeDefinition_H_
+#define _BinRangeDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BinRangeList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeList;
+
+/* BinRangeDefinition */
+typedef struct BinRangeDefinition {
+ BinRangeList_t binRangeListX;
+ struct BinRangeList *binRangeListY; /* OPTIONAL */
+ struct BinRangeList *binRangeListZ; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} BinRangeDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeDefinition;
+extern asn_SEQUENCE_specifics_t asn_SPC_BinRangeDefinition_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeDefinition_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeDefinition_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeItem.h"
+
+asn_TYPE_member_t asn_MBR_BinRangeItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, binIndex),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinIndex,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binIndex"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, startValue),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_BinRangeValue,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "startValue"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, endValue),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_BinRangeValue,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "endValue"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_BinRangeItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BinRangeItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* binIndex */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startValue */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* endValue */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BinRangeItem_specs_1 = {
+ sizeof(struct BinRangeItem),
+ offsetof(struct BinRangeItem, _asn_ctx),
+ asn_MAP_BinRangeItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeItem = {
+ "BinRangeItem",
+ "BinRangeItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_BinRangeItem_tags_1,
+ sizeof(asn_DEF_BinRangeItem_tags_1)
+ /sizeof(asn_DEF_BinRangeItem_tags_1[0]), /* 1 */
+ asn_DEF_BinRangeItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_BinRangeItem_tags_1)
+ /sizeof(asn_DEF_BinRangeItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_BinRangeItem_1,
+ 3, /* Elements count */
+ &asn_SPC_BinRangeItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _BinRangeItem_H_
+#define _BinRangeItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BinIndex.h"
+#include "BinRangeValue.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BinRangeItem */
+typedef struct BinRangeItem {
+ BinIndex_t binIndex;
+ BinRangeValue_t startValue;
+ BinRangeValue_t endValue;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} BinRangeItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_BinRangeItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeList.h"
+
+#include "BinRangeItem.h"
+static asn_oer_constraints_t asn_OER_type_BinRangeList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_BinRangeList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BinRangeList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_BinRangeItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_BinRangeList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_BinRangeList_specs_1 = {
+ sizeof(struct BinRangeList),
+ offsetof(struct BinRangeList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeList = {
+ "BinRangeList",
+ "BinRangeList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_BinRangeList_tags_1,
+ sizeof(asn_DEF_BinRangeList_tags_1)
+ /sizeof(asn_DEF_BinRangeList_tags_1[0]), /* 1 */
+ asn_DEF_BinRangeList_tags_1, /* Same as above */
+ sizeof(asn_DEF_BinRangeList_tags_1)
+ /sizeof(asn_DEF_BinRangeList_tags_1[0]), /* 1 */
+ { &asn_OER_type_BinRangeList_constr_1, &asn_PER_type_BinRangeList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_BinRangeList_1,
+ 1, /* Single element */
+ &asn_SPC_BinRangeList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _BinRangeList_H_
+#define _BinRangeList_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 BinRangeItem;
+
+/* BinRangeList */
+typedef struct BinRangeList {
+ A_SEQUENCE_OF(struct BinRangeItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} BinRangeList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeList;
+extern asn_SET_OF_specifics_t asn_SPC_BinRangeList_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeList_1[1];
+extern asn_per_constraints_t asn_PER_type_BinRangeList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeValue.h"
+
+static asn_oer_constraints_t asn_OER_type_BinRangeValue_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_BinRangeValue_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BinRangeValue_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct BinRangeValue, choice.valueInt),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueInt"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct BinRangeValue, choice.valueReal),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeReal,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueReal"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_BinRangeValue_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* valueReal */
+};
+asn_CHOICE_specifics_t asn_SPC_BinRangeValue_specs_1 = {
+ sizeof(struct BinRangeValue),
+ offsetof(struct BinRangeValue, _asn_ctx),
+ offsetof(struct BinRangeValue, present),
+ sizeof(((struct BinRangeValue *)0)->present),
+ asn_MAP_BinRangeValue_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeValue = {
+ "BinRangeValue",
+ "BinRangeValue",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_BinRangeValue_constr_1, &asn_PER_type_BinRangeValue_constr_1, CHOICE_constraint },
+ asn_MBR_BinRangeValue_1,
+ 2, /* Elements count */
+ &asn_SPC_BinRangeValue_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _BinRangeValue_H_
+#define _BinRangeValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeReal.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BinRangeValue_PR {
+ BinRangeValue_PR_NOTHING, /* No components present */
+ BinRangeValue_PR_valueInt,
+ BinRangeValue_PR_valueReal
+ /* Extensions may appear below */
+
+} BinRangeValue_PR;
+
+/* BinRangeValue */
+typedef struct BinRangeValue {
+ BinRangeValue_PR present;
+ union BinRangeValue_u {
+ long valueInt;
+ double valueReal;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} BinRangeValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeValue;
+extern asn_CHOICE_specifics_t asn_SPC_BinRangeValue_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeValue_1[2];
+extern asn_per_constraints_t asn_PER_type_BinRangeValue_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeValue_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CGI.h"
+
+#include "NR-CGI.h"
+#include "EUTRA-CGI.h"
+static asn_oer_constraints_t asn_OER_type_CGI_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_CGI_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CGI_1[] = {
+ { ATF_POINTER, 0, offsetof(struct CGI, choice.nR_CGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NR_CGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "nR-CGI"
+ },
+ { ATF_POINTER, 0, offsetof(struct CGI, choice.eUTRA_CGI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_EUTRA_CGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "eUTRA-CGI"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_CGI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA-CGI */
+};
+asn_CHOICE_specifics_t asn_SPC_CGI_specs_1 = {
+ sizeof(struct CGI),
+ offsetof(struct CGI, _asn_ctx),
+ offsetof(struct CGI, present),
+ sizeof(((struct CGI *)0)->present),
+ asn_MAP_CGI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CGI = {
+ "CGI",
+ "CGI",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_CGI_constr_1, &asn_PER_type_CGI_constr_1, CHOICE_constraint },
+ asn_MBR_CGI_1,
+ 2, /* Elements count */
+ &asn_SPC_CGI_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _CGI_H_
+#define _CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CGI_PR {
+ CGI_PR_NOTHING, /* No components present */
+ CGI_PR_nR_CGI,
+ CGI_PR_eUTRA_CGI
+ /* Extensions may appear below */
+
+} CGI_PR;
+
+/* Forward declarations */
+struct NR_CGI;
+struct EUTRA_CGI;
+
+/* CGI */
+typedef struct CGI {
+ CGI_PR present;
+ union CGI_u {
+ struct NR_CGI *nR_CGI;
+ struct EUTRA_CGI *eUTRA_CGI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CGI;
+extern asn_CHOICE_specifics_t asn_SPC_CGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_CGI_1[2];
+extern asn_per_constraints_t asn_PER_type_CGI_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CGI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DistMeasurementBinRangeItem.h"
+
+asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct DistMeasurementBinRangeItem, measType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_MeasurementType,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measType"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct DistMeasurementBinRangeItem, binRangeDef),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinRangeDefinition,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binRangeDef"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_DistMeasurementBinRangeItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DistMeasurementBinRangeItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* binRangeDef */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DistMeasurementBinRangeItem_specs_1 = {
+ sizeof(struct DistMeasurementBinRangeItem),
+ offsetof(struct DistMeasurementBinRangeItem, _asn_ctx),
+ asn_MAP_DistMeasurementBinRangeItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeItem = {
+ "DistMeasurementBinRangeItem",
+ "DistMeasurementBinRangeItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_DistMeasurementBinRangeItem_tags_1,
+ sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1)
+ /sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1[0]), /* 1 */
+ asn_DEF_DistMeasurementBinRangeItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1)
+ /sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_DistMeasurementBinRangeItem_1,
+ 2, /* Elements count */
+ &asn_SPC_DistMeasurementBinRangeItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _DistMeasurementBinRangeItem_H_
+#define _DistMeasurementBinRangeItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "BinRangeDefinition.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DistMeasurementBinRangeItem */
+typedef struct DistMeasurementBinRangeItem {
+ MeasurementType_t measType;
+ BinRangeDefinition_t binRangeDef;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} DistMeasurementBinRangeItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_DistMeasurementBinRangeItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DistMeasurementBinRangeItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DistMeasurementBinRangeList.h"
+
+#include "DistMeasurementBinRangeItem.h"
+static asn_oer_constraints_t asn_OER_type_DistMeasurementBinRangeList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_DistMeasurementBinRangeList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_DistMeasurementBinRangeItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_DistMeasurementBinRangeList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_DistMeasurementBinRangeList_specs_1 = {
+ sizeof(struct DistMeasurementBinRangeList),
+ offsetof(struct DistMeasurementBinRangeList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeList = {
+ "DistMeasurementBinRangeList",
+ "DistMeasurementBinRangeList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_DistMeasurementBinRangeList_tags_1,
+ sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1)
+ /sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1[0]), /* 1 */
+ asn_DEF_DistMeasurementBinRangeList_tags_1, /* Same as above */
+ sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1)
+ /sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1[0]), /* 1 */
+ { &asn_OER_type_DistMeasurementBinRangeList_constr_1, &asn_PER_type_DistMeasurementBinRangeList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_DistMeasurementBinRangeList_1,
+ 1, /* Single element */
+ &asn_SPC_DistMeasurementBinRangeList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _DistMeasurementBinRangeList_H_
+#define _DistMeasurementBinRangeList_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 DistMeasurementBinRangeItem;
+
+/* DistMeasurementBinRangeList */
+typedef struct DistMeasurementBinRangeList {
+ A_SEQUENCE_OF(struct DistMeasurementBinRangeItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} DistMeasurementBinRangeList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeList;
+extern asn_SET_OF_specifics_t asn_SPC_DistMeasurementBinRangeList_specs_1;
+extern asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeList_1[1];
+extern asn_per_constraints_t asn_PER_type_DistMeasurementBinRangeList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DistMeasurementBinRangeList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+
+#include "CGI.h"
+#include "DistMeasurementBinRangeList.h"
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, measInfoList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementInfoList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measInfoList"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, granulPeriod),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GranularityPeriod,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "granulPeriod"
+ },
+ { ATF_POINTER, 2, offsetof(struct E2SM_KPM_ActionDefinition_Format1, cellGlobalID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_CGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "cellGlobalID"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_ActionDefinition_Format1, distMeasBinRangeInfo),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_DistMeasurementBinRangeList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "distMeasBinRangeInfo"
+ },
+};
+static const int asn_MAP_E2SM_KPM_ActionDefinition_Format1_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measInfoList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* granulPeriod */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellGlobalID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* distMeasBinRangeInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1 = {
+ sizeof(struct E2SM_KPM_ActionDefinition_Format1),
+ offsetof(struct E2SM_KPM_ActionDefinition_Format1, _asn_ctx),
+ asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_E2SM_KPM_ActionDefinition_Format1_oms_1, /* Optional members */
+ 1, 1, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1 = {
+ "E2SM-KPM-ActionDefinition-Format1",
+ "E2SM-KPM-ActionDefinition-Format1",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_ActionDefinition_Format1_1,
+ 4, /* Elements count */
+ &asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_ActionDefinition_Format1_H_
+#define _E2SM_KPM_ActionDefinition_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementInfoList.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CGI;
+struct DistMeasurementBinRangeList;
+
+/* E2SM-KPM-ActionDefinition-Format1 */
+typedef struct E2SM_KPM_ActionDefinition_Format1 {
+ MeasurementInfoList_t measInfoList;
+ GranularityPeriod_t granulPeriod;
+ struct CGI *cellGlobalID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct DistMeasurementBinRangeList *distMeasBinRangeInfo; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format1_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format2.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format2_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format2, ueID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_UEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ueID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format2, subscriptInfo),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "subscriptInfo"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format2_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1 = {
+ sizeof(struct E2SM_KPM_ActionDefinition_Format2),
+ offsetof(struct E2SM_KPM_ActionDefinition_Format2, _asn_ctx),
+ asn_MAP_E2SM_KPM_ActionDefinition_Format2_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format2 = {
+ "E2SM-KPM-ActionDefinition-Format2",
+ "E2SM-KPM-ActionDefinition-Format2",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_ActionDefinition_Format2_1,
+ 2, /* Elements count */
+ &asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_ActionDefinition_Format2_H_
+#define _E2SM_KPM_ActionDefinition_Format2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format2 */
+typedef struct E2SM_KPM_ActionDefinition_Format2 {
+ UEID_t ueID;
+ E2SM_KPM_ActionDefinition_Format1_t subscriptInfo;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format2_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format2;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format2_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format2_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format3.h"
+
+#include "CGI.h"
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format3_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format3, measCondList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementCondList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measCondList"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format3, granulPeriod),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GranularityPeriod,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "granulPeriod"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_ActionDefinition_Format3, cellGlobalID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_CGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "cellGlobalID"
+ },
+};
+static const int asn_MAP_E2SM_KPM_ActionDefinition_Format3_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format3_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measCondList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* granulPeriod */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellGlobalID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1 = {
+ sizeof(struct E2SM_KPM_ActionDefinition_Format3),
+ offsetof(struct E2SM_KPM_ActionDefinition_Format3, _asn_ctx),
+ asn_MAP_E2SM_KPM_ActionDefinition_Format3_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_E2SM_KPM_ActionDefinition_Format3_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format3 = {
+ "E2SM-KPM-ActionDefinition-Format3",
+ "E2SM-KPM-ActionDefinition-Format3",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_ActionDefinition_Format3_1,
+ 3, /* Elements count */
+ &asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_ActionDefinition_Format3_H_
+#define _E2SM_KPM_ActionDefinition_Format3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementCondList.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CGI;
+
+/* E2SM-KPM-ActionDefinition-Format3 */
+typedef struct E2SM_KPM_ActionDefinition_Format3 {
+ MeasurementCondList_t measCondList;
+ GranularityPeriod_t granulPeriod;
+ struct CGI *cellGlobalID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format3;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format3_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format3_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format4.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format4_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format4, matchingUeCondList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingUeCondPerSubList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingUeCondList"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format4, subscriptionInfo),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "subscriptionInfo"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format4_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingUeCondList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptionInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1 = {
+ sizeof(struct E2SM_KPM_ActionDefinition_Format4),
+ offsetof(struct E2SM_KPM_ActionDefinition_Format4, _asn_ctx),
+ asn_MAP_E2SM_KPM_ActionDefinition_Format4_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format4 = {
+ "E2SM-KPM-ActionDefinition-Format4",
+ "E2SM-KPM-ActionDefinition-Format4",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_ActionDefinition_Format4_1,
+ 2, /* Elements count */
+ &asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_ActionDefinition_Format4_H_
+#define _E2SM_KPM_ActionDefinition_Format4_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MatchingUeCondPerSubList.h"
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format4 */
+typedef struct E2SM_KPM_ActionDefinition_Format4 {
+ MatchingUeCondPerSubList_t matchingUeCondList;
+ E2SM_KPM_ActionDefinition_Format1_t subscriptionInfo;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format4_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format4;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format4_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format4_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format5.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format5_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format5, matchingUEidList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingUEidPerSubList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingUEidList"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format5, subscriptionInfo),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "subscriptionInfo"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format5_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingUEidList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptionInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1 = {
+ sizeof(struct E2SM_KPM_ActionDefinition_Format5),
+ offsetof(struct E2SM_KPM_ActionDefinition_Format5, _asn_ctx),
+ asn_MAP_E2SM_KPM_ActionDefinition_Format5_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format5 = {
+ "E2SM-KPM-ActionDefinition-Format5",
+ "E2SM-KPM-ActionDefinition-Format5",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_ActionDefinition_Format5_1,
+ 2, /* Elements count */
+ &asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_ActionDefinition_Format5_H_
+#define _E2SM_KPM_ActionDefinition_Format5_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MatchingUEidPerSubList.h"
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format5 */
+typedef struct E2SM_KPM_ActionDefinition_Format5 {
+ MatchingUEidPerSubList_t matchingUEidList;
+ E2SM_KPM_ActionDefinition_Format1_t subscriptionInfo;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format5_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format5;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format5_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format5_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition.h"
+
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include "E2SM-KPM-ActionDefinition-Format2.h"
+#include "E2SM-KPM-ActionDefinition-Format3.h"
+#include "E2SM-KPM-ActionDefinition-Format4.h"
+#include "E2SM-KPM-ActionDefinition-Format5.h"
+static asn_oer_constraints_t asn_OER_type_actionDefinition_formats_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_actionDefinition_formats_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_actionDefinition_formats_3[] = {
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format1),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "actionDefinition-Format1"
+ },
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format2),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "actionDefinition-Format2"
+ },
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format3),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "actionDefinition-Format3"
+ },
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format4),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format4,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "actionDefinition-Format4"
+ },
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format5),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_ActionDefinition_Format5,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "actionDefinition-Format5"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_actionDefinition_formats_tag2el_3[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionDefinition-Format1 */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* actionDefinition-Format2 */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* actionDefinition-Format3 */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* actionDefinition-Format4 */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* actionDefinition-Format5 */
+};
+static asn_CHOICE_specifics_t asn_SPC_actionDefinition_formats_specs_3 = {
+ sizeof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats),
+ offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, _asn_ctx),
+ offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, present),
+ sizeof(((struct E2SM_KPM_ActionDefinition__actionDefinition_formats *)0)->present),
+ asn_MAP_actionDefinition_formats_tag2el_3,
+ 5, /* Count of tags in the map */
+ 0, 0,
+ 3 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_actionDefinition_formats_3 = {
+ "actionDefinition-formats",
+ "actionDefinition-formats",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_actionDefinition_formats_constr_3, &asn_PER_type_actionDefinition_formats_constr_3, CHOICE_constraint },
+ asn_MBR_actionDefinition_formats_3,
+ 5, /* Elements count */
+ &asn_SPC_actionDefinition_formats_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, ric_Style_Type),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Style_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-Style-Type"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, actionDefinition_formats),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_actionDefinition_formats_3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "actionDefinition-formats"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDefinition-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_specs_1 = {
+ sizeof(struct E2SM_KPM_ActionDefinition),
+ offsetof(struct E2SM_KPM_ActionDefinition, _asn_ctx),
+ asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition = {
+ "E2SM-KPM-ActionDefinition",
+ "E2SM-KPM-ActionDefinition",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_ActionDefinition_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_ActionDefinition_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_ActionDefinition_1,
+ 2, /* Elements count */
+ &asn_SPC_E2SM_KPM_ActionDefinition_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_ActionDefinition_H_
+#define _E2SM_KPM_ActionDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_ActionDefinition__actionDefinition_formats_PR {
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_NOTHING, /* No components present */
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format1,
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format2,
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format3,
+ /* Extensions may appear below */
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format4,
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format5
+} E2SM_KPM_ActionDefinition__actionDefinition_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_ActionDefinition_Format1;
+struct E2SM_KPM_ActionDefinition_Format2;
+struct E2SM_KPM_ActionDefinition_Format3;
+struct E2SM_KPM_ActionDefinition_Format4;
+struct E2SM_KPM_ActionDefinition_Format5;
+
+/* E2SM-KPM-ActionDefinition */
+typedef struct E2SM_KPM_ActionDefinition {
+ RIC_Style_Type_t ric_Style_Type;
+ struct E2SM_KPM_ActionDefinition__actionDefinition_formats {
+ E2SM_KPM_ActionDefinition__actionDefinition_formats_PR present;
+ union E2SM_KPM_ActionDefinition__actionDefinition_formats_u {
+ struct E2SM_KPM_ActionDefinition_Format1 *actionDefinition_Format1;
+ struct E2SM_KPM_ActionDefinition_Format2 *actionDefinition_Format2;
+ struct E2SM_KPM_ActionDefinition_Format3 *actionDefinition_Format3;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct E2SM_KPM_ActionDefinition_Format4 *actionDefinition_Format4;
+ struct E2SM_KPM_ActionDefinition_Format5 *actionDefinition_Format5;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } actionDefinition_formats;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-EventTriggerDefinition-Format1.h"
+
+static int
+reportingPeriod_2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ unsigned long value;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const unsigned long *)sptr;
+
+ if((value >= 1 && value <= 4294967295)) {
+ /* 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 int
+memb_reportingPeriod_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ unsigned long value;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const unsigned long *)sptr;
+
+ if((value >= 1 && value <= 4294967295)) {
+ /* 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_oer_constraints_t asn_OER_type_reportingPeriod_constr_2 CC_NOTUSED = {
+ { 4, 1 } /* (1..4294967295) */,
+ -1};
+static asn_per_constraints_t asn_PER_type_reportingPeriod_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (1..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_reportingPeriod_constr_2 CC_NOTUSED = {
+ { 4, 1 } /* (1..4294967295) */,
+ -1};
+static asn_per_constraints_t asn_PER_memb_reportingPeriod_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (1..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportingPeriod_specs_2 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_reportingPeriod_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportingPeriod_2 = {
+ "reportingPeriod",
+ "reportingPeriod",
+ &asn_OP_NativeInteger,
+ asn_DEF_reportingPeriod_tags_2,
+ sizeof(asn_DEF_reportingPeriod_tags_2)
+ /sizeof(asn_DEF_reportingPeriod_tags_2[0]) - 1, /* 1 */
+ asn_DEF_reportingPeriod_tags_2, /* Same as above */
+ sizeof(asn_DEF_reportingPeriod_tags_2)
+ /sizeof(asn_DEF_reportingPeriod_tags_2[0]), /* 2 */
+ { &asn_OER_type_reportingPeriod_constr_2, &asn_PER_type_reportingPeriod_constr_2, reportingPeriod_2_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_reportingPeriod_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, reportingPeriod),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_reportingPeriod_2,
+ 0,
+ { &asn_OER_memb_reportingPeriod_constr_2, &asn_PER_memb_reportingPeriod_constr_2, memb_reportingPeriod_constraint_1 },
+ 0, 0, /* No default value */
+ "reportingPeriod"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportingPeriod */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 = {
+ sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1),
+ offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, _asn_ctx),
+ asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1 = {
+ "E2SM-KPM-EventTriggerDefinition-Format1",
+ "E2SM-KPM-EventTriggerDefinition-Format1",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1,
+ 1, /* Elements count */
+ &asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_EventTriggerDefinition_Format1_H_
+#define _E2SM_KPM_EventTriggerDefinition_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-EventTriggerDefinition-Format1 */
+typedef struct E2SM_KPM_EventTriggerDefinition_Format1 {
+ unsigned long reportingPeriod;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_EventTriggerDefinition_Format1_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportingPeriod_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_EventTriggerDefinition_Format1_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-EventTriggerDefinition.h"
+
+#include "E2SM-KPM-EventTriggerDefinition-Format1.h"
+static asn_oer_constraints_t asn_OER_type_eventDefinition_formats_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_eventDefinition_formats_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_eventDefinition_formats_2[] = {
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, choice.eventDefinition_Format1),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "eventDefinition-Format1"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventDefinition_formats_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_eventDefinition_formats_specs_2 = {
+ sizeof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats),
+ offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, _asn_ctx),
+ offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, present),
+ sizeof(((struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats *)0)->present),
+ asn_MAP_eventDefinition_formats_tag2el_2,
+ 1, /* Count of tags in the map */
+ 0, 0,
+ 1 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventDefinition_formats_2 = {
+ "eventDefinition-formats",
+ "eventDefinition-formats",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_eventDefinition_formats_constr_2, &asn_PER_type_eventDefinition_formats_constr_2, CHOICE_constraint },
+ asn_MBR_eventDefinition_formats_2,
+ 1, /* Elements count */
+ &asn_SPC_eventDefinition_formats_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition, eventDefinition_formats),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_eventDefinition_formats_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "eventDefinition-formats"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 = {
+ sizeof(struct E2SM_KPM_EventTriggerDefinition),
+ offsetof(struct E2SM_KPM_EventTriggerDefinition, _asn_ctx),
+ asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition = {
+ "E2SM-KPM-EventTriggerDefinition",
+ "E2SM-KPM-EventTriggerDefinition",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_EventTriggerDefinition_1,
+ 1, /* Elements count */
+ &asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_EventTriggerDefinition_H_
+#define _E2SM_KPM_EventTriggerDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR {
+ E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR_NOTHING, /* No components present */
+ E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR_eventDefinition_Format1
+ /* Extensions may appear below */
+
+} E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_EventTriggerDefinition_Format1;
+
+/* E2SM-KPM-EventTriggerDefinition */
+typedef struct E2SM_KPM_EventTriggerDefinition {
+ struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats {
+ E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR present;
+ union E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_u {
+ struct E2SM_KPM_EventTriggerDefinition_Format1 *eventDefinition_Format1;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } eventDefinition_formats;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_EventTriggerDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_EventTriggerDefinition_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationHeader-Format1.h"
+
+static const int permitted_alphabet_table_3[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_3[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_3(const void *sptr) {
+ const int *table = permitted_alphabet_table_3;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static const int permitted_alphabet_table_4[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_4[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_4(const void *sptr) {
+ const int *table = permitted_alphabet_table_4;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static const int permitted_alphabet_table_5[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_5[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_5(const void *sptr) {
+ const int *table = permitted_alphabet_table_5;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static const int permitted_alphabet_table_6[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_6[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_6(const void *sptr) {
+ const int *table = permitted_alphabet_table_6;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static int
+memb_fileFormatversion_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 <= 15)
+ && !check_permitted_alphabet_3(st)) {
+ /* 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 asn_PER_MAP_fileFormatversion_3_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0]))
+ return -1;
+ return permitted_alphabet_table_3[value] - 1;
+}
+static int asn_PER_MAP_fileFormatversion_3_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0]))
+ return -1;
+ return permitted_alphabet_code2value_3[code];
+}
+static int
+memb_senderName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 <= 400)
+ && !check_permitted_alphabet_4(st)) {
+ /* 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 asn_PER_MAP_senderName_4_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0]))
+ return -1;
+ return permitted_alphabet_table_4[value] - 1;
+}
+static int asn_PER_MAP_senderName_4_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0]))
+ return -1;
+ return permitted_alphabet_code2value_4[code];
+}
+static int
+memb_senderType_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 <= 8)
+ && !check_permitted_alphabet_5(st)) {
+ /* 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 asn_PER_MAP_senderType_5_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_5)/sizeof(permitted_alphabet_table_5[0]))
+ return -1;
+ return permitted_alphabet_table_5[value] - 1;
+}
+static int asn_PER_MAP_senderType_5_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_5)/sizeof(permitted_alphabet_code2value_5[0]))
+ return -1;
+ return permitted_alphabet_code2value_5[code];
+}
+static int
+memb_vendorName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 <= 32)
+ && !check_permitted_alphabet_6(st)) {
+ /* 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 asn_PER_MAP_vendorName_6_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_6)/sizeof(permitted_alphabet_table_6[0]))
+ return -1;
+ return permitted_alphabet_table_6[value] - 1;
+}
+static int asn_PER_MAP_vendorName_6_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_6)/sizeof(permitted_alphabet_code2value_6[0]))
+ return -1;
+ return permitted_alphabet_code2value_6[code];
+}
+static asn_oer_constraints_t asn_OER_memb_fileFormatversion_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_fileFormatversion_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (SIZE(0..15,...)) */,
+ asn_PER_MAP_fileFormatversion_3_v2c, /* Value to PER code map */
+ asn_PER_MAP_fileFormatversion_3_c2v /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_senderName_constr_4 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_senderName_constr_4 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 0, 400 } /* (SIZE(0..400,...)) */,
+ asn_PER_MAP_senderName_4_v2c, /* Value to PER code map */
+ asn_PER_MAP_senderName_4_c2v /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_senderType_constr_5 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_senderType_constr_5 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 8 } /* (SIZE(0..8,...)) */,
+ asn_PER_MAP_senderType_5_v2c, /* Value to PER code map */
+ asn_PER_MAP_senderType_5_c2v /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_vendorName_constr_6 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_vendorName_constr_6 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 32 } /* (SIZE(0..32,...)) */,
+ asn_PER_MAP_vendorName_6_v2c, /* Value to PER code map */
+ asn_PER_MAP_vendorName_6_c2v /* PER code to value map */
+};
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader_Format1, colletStartTime),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TimeStamp,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "colletStartTime"
+ },
+ { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fileFormatversion),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_fileFormatversion_constr_3, &asn_PER_memb_fileFormatversion_constr_3, memb_fileFormatversion_constraint_1 },
+ 0, 0, /* No default value */
+ "fileFormatversion"
+ },
+ { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, senderName),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_senderName_constr_4, &asn_PER_memb_senderName_constr_4, memb_senderName_constraint_1 },
+ 0, 0, /* No default value */
+ "senderName"
+ },
+ { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, senderType),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_senderType_constr_5, &asn_PER_memb_senderType_constr_5, memb_senderType_constraint_1 },
+ 0, 0, /* No default value */
+ "senderType"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, vendorName),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_vendorName_constr_6, &asn_PER_memb_vendorName_constr_6, memb_vendorName_constraint_1 },
+ 0, 0, /* No default value */
+ "vendorName"
+ },
+};
+static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* colletStartTime */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* fileFormatversion */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* senderName */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* senderType */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* vendorName */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationHeader_Format1),
+ offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1, /* Optional members */
+ 4, 0, /* Root/Additions */
+ 5, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = {
+ "E2SM-KPM-IndicationHeader-Format1",
+ "E2SM-KPM-IndicationHeader-Format1",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_IndicationHeader_Format1_1,
+ 5, /* Elements count */
+ &asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_IndicationHeader_Format1_H_
+#define _E2SM_KPM_IndicationHeader_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TimeStamp.h"
+#include <PrintableString.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationHeader-Format1 */
+typedef struct E2SM_KPM_IndicationHeader_Format1 {
+ TimeStamp_t colletStartTime;
+ PrintableString_t *fileFormatversion; /* OPTIONAL */
+ PrintableString_t *senderName; /* OPTIONAL */
+ PrintableString_t *senderType; /* OPTIONAL */
+ PrintableString_t *vendorName; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationHeader_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationHeader_Format1_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationHeader.h"
+
+#include "E2SM-KPM-IndicationHeader-Format1.h"
+static asn_oer_constraints_t asn_OER_type_indicationHeader_formats_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_indicationHeader_formats_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_indicationHeader_formats_2[] = {
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, choice.indicationHeader_Format1),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_IndicationHeader_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationHeader-Format1"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_indicationHeader_formats_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_indicationHeader_formats_specs_2 = {
+ sizeof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats),
+ offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, _asn_ctx),
+ offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, present),
+ sizeof(((struct E2SM_KPM_IndicationHeader__indicationHeader_formats *)0)->present),
+ asn_MAP_indicationHeader_formats_tag2el_2,
+ 1, /* Count of tags in the map */
+ 0, 0,
+ 1 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_indicationHeader_formats_2 = {
+ "indicationHeader-formats",
+ "indicationHeader-formats",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_indicationHeader_formats_constr_2, &asn_PER_type_indicationHeader_formats_constr_2, CHOICE_constraint },
+ asn_MBR_indicationHeader_formats_2,
+ 1, /* Elements count */
+ &asn_SPC_indicationHeader_formats_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader, indicationHeader_formats),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_indicationHeader_formats_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationHeader-formats"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationHeader),
+ offsetof(struct E2SM_KPM_IndicationHeader, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader = {
+ "E2SM-KPM-IndicationHeader",
+ "E2SM-KPM-IndicationHeader",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationHeader_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationHeader_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_IndicationHeader_1,
+ 1, /* Elements count */
+ &asn_SPC_E2SM_KPM_IndicationHeader_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_IndicationHeader_H_
+#define _E2SM_KPM_IndicationHeader_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_IndicationHeader__indicationHeader_formats_PR {
+ E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_NOTHING, /* No components present */
+ E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_indicationHeader_Format1
+ /* Extensions may appear below */
+
+} E2SM_KPM_IndicationHeader__indicationHeader_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_IndicationHeader_Format1;
+
+/* E2SM-KPM-IndicationHeader */
+typedef struct E2SM_KPM_IndicationHeader {
+ struct E2SM_KPM_IndicationHeader__indicationHeader_formats {
+ E2SM_KPM_IndicationHeader__indicationHeader_formats_PR present;
+ union E2SM_KPM_IndicationHeader__indicationHeader_formats_u {
+ struct E2SM_KPM_IndicationHeader_Format1 *indicationHeader_Format1;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } indicationHeader_formats;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationHeader_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationHeader_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage-Format1.h"
+
+#include "MeasurementInfoList.h"
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, measData),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementData,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measData"
+ },
+ { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationMessage_Format1, measInfoList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementInfoList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measInfoList"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format1, granulPeriod),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GranularityPeriod,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "granulPeriod"
+ },
+};
+static const int asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measData */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measInfoList */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* granulPeriod */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationMessage_Format1),
+ offsetof(struct E2SM_KPM_IndicationMessage_Format1, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1 = {
+ "E2SM-KPM-IndicationMessage-Format1",
+ "E2SM-KPM-IndicationMessage-Format1",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_IndicationMessage_Format1_1,
+ 3, /* Elements count */
+ &asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_IndicationMessage_Format1_H_
+#define _E2SM_KPM_IndicationMessage_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementData.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementInfoList;
+
+/* E2SM-KPM-IndicationMessage-Format1 */
+typedef struct E2SM_KPM_IndicationMessage_Format1 {
+ MeasurementData_t measData;
+ struct MeasurementInfoList *measInfoList; /* OPTIONAL */
+ GranularityPeriod_t *granulPeriod; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_Format1_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage-Format2.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format2_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format2, measData),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementData,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measData"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format2, measCondUEidList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementCondUEidList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measCondUEidList"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format2, granulPeriod),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GranularityPeriod,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "granulPeriod"
+ },
+};
+static const int asn_MAP_E2SM_KPM_IndicationMessage_Format2_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format2_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measData */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measCondUEidList */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* granulPeriod */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationMessage_Format2),
+ offsetof(struct E2SM_KPM_IndicationMessage_Format2, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationMessage_Format2_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_E2SM_KPM_IndicationMessage_Format2_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format2 = {
+ "E2SM-KPM-IndicationMessage-Format2",
+ "E2SM-KPM-IndicationMessage-Format2",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_IndicationMessage_Format2_1,
+ 3, /* Elements count */
+ &asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_IndicationMessage_Format2_H_
+#define _E2SM_KPM_IndicationMessage_Format2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementData.h"
+#include "MeasurementCondUEidList.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationMessage-Format2 */
+typedef struct E2SM_KPM_IndicationMessage_Format2 {
+ MeasurementData_t measData;
+ MeasurementCondUEidList_t measCondUEidList;
+ GranularityPeriod_t *granulPeriod; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format2_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format2;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format2_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_Format2_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage-Format3.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format3_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format3, ueMeasReportList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEMeasurementReportList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ueMeasReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format3_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueMeasReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationMessage_Format3),
+ offsetof(struct E2SM_KPM_IndicationMessage_Format3, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationMessage_Format3_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format3 = {
+ "E2SM-KPM-IndicationMessage-Format3",
+ "E2SM-KPM-IndicationMessage-Format3",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_IndicationMessage_Format3_1,
+ 1, /* Elements count */
+ &asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_IndicationMessage_Format3_H_
+#define _E2SM_KPM_IndicationMessage_Format3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEMeasurementReportList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationMessage-Format3 */
+typedef struct E2SM_KPM_IndicationMessage_Format3 {
+ UEMeasurementReportList_t ueMeasReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format3;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format3_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_Format3_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage.h"
+
+#include "E2SM-KPM-IndicationMessage-Format1.h"
+#include "E2SM-KPM-IndicationMessage-Format2.h"
+#include "E2SM-KPM-IndicationMessage-Format3.h"
+static asn_oer_constraints_t asn_OER_type_indicationMessage_formats_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_indicationMessage_formats_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_indicationMessage_formats_2[] = {
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format1),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_IndicationMessage_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationMessage-Format1"
+ },
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format2),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_IndicationMessage_Format2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationMessage-Format2"
+ },
+ { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format3),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_IndicationMessage_Format3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationMessage-Format3"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_indicationMessage_formats_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* indicationMessage-Format1 */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* indicationMessage-Format2 */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* indicationMessage-Format3 */
+};
+static asn_CHOICE_specifics_t asn_SPC_indicationMessage_formats_specs_2 = {
+ sizeof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats),
+ offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, _asn_ctx),
+ offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, present),
+ sizeof(((struct E2SM_KPM_IndicationMessage__indicationMessage_formats *)0)->present),
+ asn_MAP_indicationMessage_formats_tag2el_2,
+ 3, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_indicationMessage_formats_2 = {
+ "indicationMessage-formats",
+ "indicationMessage-formats",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_indicationMessage_formats_constr_2, &asn_PER_type_indicationMessage_formats_constr_2, CHOICE_constraint },
+ asn_MBR_indicationMessage_formats_2,
+ 3, /* Elements count */
+ &asn_SPC_indicationMessage_formats_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, indicationMessage_formats),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_indicationMessage_formats_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationMessage-formats"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationMessage),
+ offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = {
+ "E2SM-KPM-IndicationMessage",
+ "E2SM-KPM-IndicationMessage",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationMessage_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_IndicationMessage_1,
+ 1, /* Elements count */
+ &asn_SPC_E2SM_KPM_IndicationMessage_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_IndicationMessage_H_
+#define _E2SM_KPM_IndicationMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_IndicationMessage__indicationMessage_formats_PR {
+ E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_NOTHING, /* No components present */
+ E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format1,
+ E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format2,
+ /* Extensions may appear below */
+ E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format3
+} E2SM_KPM_IndicationMessage__indicationMessage_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_IndicationMessage_Format1;
+struct E2SM_KPM_IndicationMessage_Format2;
+struct E2SM_KPM_IndicationMessage_Format3;
+
+/* E2SM-KPM-IndicationMessage */
+typedef struct E2SM_KPM_IndicationMessage {
+ struct E2SM_KPM_IndicationMessage__indicationMessage_formats {
+ E2SM_KPM_IndicationMessage__indicationMessage_formats_PR present;
+ union E2SM_KPM_IndicationMessage__indicationMessage_formats_u {
+ struct E2SM_KPM_IndicationMessage_Format1 *indicationMessage_Format1;
+ struct E2SM_KPM_IndicationMessage_Format2 *indicationMessage_Format2;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct E2SM_KPM_IndicationMessage_Format3 *indicationMessage_Format3;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } indicationMessage_formats;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-RANfunction-Description.h"
+
+#include "RIC-EventTriggerStyle-Item.h"
+#include "RIC-ReportStyle-Item.h"
+static int
+memb_ric_EventTriggerStyle_List_constraint_1(const 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 >= 1 && size <= 63)) {
+ /* Perform validation of the inner elements */
+ return td->encoding_constraints.general_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 int
+memb_ric_ReportStyle_List_constraint_1(const 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 >= 1 && size <= 63)) {
+ /* Perform validation of the inner elements */
+ return td->encoding_constraints.general_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_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_3[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_RIC_EventTriggerStyle_Item,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_3 = {
+ sizeof(struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List),
+ offsetof(struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_3 = {
+ "ric-EventTriggerStyle-List",
+ "ric-EventTriggerStyle-List",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_ric_EventTriggerStyle_List_tags_3,
+ sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
+ /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */
+ asn_DEF_ric_EventTriggerStyle_List_tags_3, /* Same as above */
+ sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
+ /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */
+ { &asn_OER_type_ric_EventTriggerStyle_List_constr_3, &asn_PER_type_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint },
+ asn_MBR_ric_EventTriggerStyle_List_3,
+ 1, /* Single element */
+ &asn_SPC_ric_EventTriggerStyle_List_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_5[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_RIC_ReportStyle_Item,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_5[] = {
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_5 = {
+ sizeof(struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List),
+ offsetof(struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_5 = {
+ "ric-ReportStyle-List",
+ "ric-ReportStyle-List",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_ric_ReportStyle_List_tags_5,
+ sizeof(asn_DEF_ric_ReportStyle_List_tags_5)
+ /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */
+ asn_DEF_ric_ReportStyle_List_tags_5, /* Same as above */
+ sizeof(asn_DEF_ric_ReportStyle_List_tags_5)
+ /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]), /* 2 */
+ { &asn_OER_type_ric_ReportStyle_List_constr_5, &asn_PER_type_ric_ReportStyle_List_constr_5, SEQUENCE_OF_constraint },
+ asn_MBR_ric_ReportStyle_List_5,
+ 1, /* Single element */
+ &asn_SPC_ric_ReportStyle_List_specs_5 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_RANfunction_Description_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, ranFunction_Name),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANfunction_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ranFunction-Name"
+ },
+ { ATF_POINTER, 2, offsetof(struct E2SM_KPM_RANfunction_Description, ric_EventTriggerStyle_List),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ 0,
+ &asn_DEF_ric_EventTriggerStyle_List_3,
+ 0,
+ { &asn_OER_memb_ric_EventTriggerStyle_List_constr_3, &asn_PER_memb_ric_EventTriggerStyle_List_constr_3, memb_ric_EventTriggerStyle_List_constraint_1 },
+ 0, 0, /* No default value */
+ "ric-EventTriggerStyle-List"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_RANfunction_Description, ric_ReportStyle_List),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ 0,
+ &asn_DEF_ric_ReportStyle_List_5,
+ 0,
+ { &asn_OER_memb_ric_ReportStyle_List_constr_5, &asn_PER_memb_ric_ReportStyle_List_constr_5, memb_ric_ReportStyle_List_constraint_1 },
+ 0, 0, /* No default value */
+ "ric-ReportStyle-List"
+ },
+};
+static const int asn_MAP_E2SM_KPM_RANfunction_Description_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-ReportStyle-List */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 = {
+ sizeof(struct E2SM_KPM_RANfunction_Description),
+ offsetof(struct E2SM_KPM_RANfunction_Description, _asn_ctx),
+ asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_E2SM_KPM_RANfunction_Description_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description = {
+ "E2SM-KPM-RANfunction-Description",
+ "E2SM-KPM-RANfunction-Description",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_RANfunction_Description_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_E2SM_KPM_RANfunction_Description_1,
+ 3, /* Elements count */
+ &asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _E2SM_KPM_RANfunction_Description_H_
+#define _E2SM_KPM_RANfunction_Description_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RANfunction-Name.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RIC_EventTriggerStyle_Item;
+struct RIC_ReportStyle_Item;
+
+/* E2SM-KPM-RANfunction-Description */
+typedef struct E2SM_KPM_RANfunction_Description {
+ RANfunction_Name_t ranFunction_Name;
+ struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List {
+ A_SEQUENCE_OF(struct RIC_EventTriggerStyle_Item) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } *ric_EventTriggerStyle_List;
+ struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List {
+ A_SEQUENCE_OF(struct RIC_ReportStyle_Item) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } *ric_ReportStyle_List;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_RANfunction_Description_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_RANfunction_Description_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ENB-UE-X2AP-ID-Extension.h"
+
+int
+ENB_UE_X2AP_ID_Extension_constraint(const 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 >= 0 && value <= 4095)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 0, 4095 } /* (0..4095,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension = {
+ "ENB-UE-X2AP-ID-Extension",
+ "ENB-UE-X2AP-ID-Extension",
+ &asn_OP_NativeInteger,
+ asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1,
+ sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1)
+ /sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */
+ asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1, /* Same as above */
+ sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1)
+ /sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */
+ { &asn_OER_type_ENB_UE_X2AP_ID_Extension_constr_1, &asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1, ENB_UE_X2AP_ID_Extension_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _ENB_UE_X2AP_ID_Extension_H_
+#define _ENB_UE_X2AP_ID_Extension_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ENB-UE-X2AP-ID-Extension */
+typedef long ENB_UE_X2AP_ID_Extension_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension;
+asn_struct_free_f ENB_UE_X2AP_ID_Extension_free;
+asn_struct_print_f ENB_UE_X2AP_ID_Extension_print;
+asn_constr_check_f ENB_UE_X2AP_ID_Extension_constraint;
+ber_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_ber;
+der_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_der;
+xer_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_xer;
+xer_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_xer;
+oer_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_oer;
+oer_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_oer;
+per_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_uper;
+per_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_uper;
+per_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_aper;
+per_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ENB_UE_X2AP_ID_Extension_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ENB-UE-X2AP-ID.h"
+
+int
+ENB_UE_X2AP_ID_constraint(const 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 >= 0 && value <= 4095)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = {
+ { 2, 1 } /* (0..4095) */,
+ -1};
+asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID = {
+ "ENB-UE-X2AP-ID",
+ "ENB-UE-X2AP-ID",
+ &asn_OP_NativeInteger,
+ asn_DEF_ENB_UE_X2AP_ID_tags_1,
+ sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1)
+ /sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */
+ asn_DEF_ENB_UE_X2AP_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1)
+ /sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_ENB_UE_X2AP_ID_constr_1, &asn_PER_type_ENB_UE_X2AP_ID_constr_1, ENB_UE_X2AP_ID_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _ENB_UE_X2AP_ID_H_
+#define _ENB_UE_X2AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ENB-UE-X2AP-ID */
+typedef long ENB_UE_X2AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID;
+asn_struct_free_f ENB_UE_X2AP_ID_free;
+asn_struct_print_f ENB_UE_X2AP_ID_print;
+asn_constr_check_f ENB_UE_X2AP_ID_constraint;
+ber_type_decoder_f ENB_UE_X2AP_ID_decode_ber;
+der_type_encoder_f ENB_UE_X2AP_ID_encode_der;
+xer_type_decoder_f ENB_UE_X2AP_ID_decode_xer;
+xer_type_encoder_f ENB_UE_X2AP_ID_encode_xer;
+oer_type_decoder_f ENB_UE_X2AP_ID_decode_oer;
+oer_type_encoder_f ENB_UE_X2AP_ID_encode_oer;
+per_type_decoder_f ENB_UE_X2AP_ID_decode_uper;
+per_type_encoder_f ENB_UE_X2AP_ID_encode_uper;
+per_type_decoder_f ENB_UE_X2AP_ID_decode_aper;
+per_type_encoder_f ENB_UE_X2AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ENB_UE_X2AP_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-CGI.h"
+
+asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, pLMNIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMNIdentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, eUTRACellIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_EUTRACellIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "eUTRACellIdentity"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_CGI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_CGI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRACellIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1 = {
+ sizeof(struct EUTRA_CGI),
+ offsetof(struct EUTRA_CGI, _asn_ctx),
+ asn_MAP_EUTRA_CGI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI = {
+ "EUTRA-CGI",
+ "EUTRA-CGI",
+ &asn_OP_SEQUENCE,
+ asn_DEF_EUTRA_CGI_tags_1,
+ sizeof(asn_DEF_EUTRA_CGI_tags_1)
+ /sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */
+ asn_DEF_EUTRA_CGI_tags_1, /* Same as above */
+ sizeof(asn_DEF_EUTRA_CGI_tags_1)
+ /sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_EUTRA_CGI_1,
+ 2, /* Elements count */
+ &asn_SPC_EUTRA_CGI_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _EUTRA_CGI_H_
+#define _EUTRA_CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "EUTRACellIdentity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-CGI */
+typedef struct EUTRA_CGI {
+ PLMNIdentity_t pLMNIdentity;
+ EUTRACellIdentity_t eUTRACellIdentity;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} EUTRA_CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_CGI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRACellIdentity.h"
+
+int
+EUTRACellIdentity_constraint(const 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 == 28)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 28 /* (SIZE(28..28)) */};
+asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_EUTRACellIdentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity = {
+ "EUTRACellIdentity",
+ "EUTRACellIdentity",
+ &asn_OP_BIT_STRING,
+ asn_DEF_EUTRACellIdentity_tags_1,
+ sizeof(asn_DEF_EUTRACellIdentity_tags_1)
+ /sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */
+ asn_DEF_EUTRACellIdentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_EUTRACellIdentity_tags_1)
+ /sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */
+ { &asn_OER_type_EUTRACellIdentity_constr_1, &asn_PER_type_EUTRACellIdentity_constr_1, EUTRACellIdentity_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_BIT_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _EUTRACellIdentity_H_
+#define _EUTRACellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRACellIdentity */
+typedef BIT_STRING_t EUTRACellIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity;
+asn_struct_free_f EUTRACellIdentity_free;
+asn_struct_print_f EUTRACellIdentity_print;
+asn_constr_check_f EUTRACellIdentity_constraint;
+ber_type_decoder_f EUTRACellIdentity_decode_ber;
+der_type_encoder_f EUTRACellIdentity_encode_der;
+xer_type_decoder_f EUTRACellIdentity_decode_xer;
+xer_type_encoder_f EUTRACellIdentity_encode_xer;
+oer_type_decoder_f EUTRACellIdentity_decode_oer;
+oer_type_encoder_f EUTRACellIdentity_encode_oer;
+per_type_decoder_f EUTRACellIdentity_decode_uper;
+per_type_encoder_f EUTRACellIdentity_encode_uper;
+per_type_decoder_f EUTRACellIdentity_decode_aper;
+per_type_encoder_f EUTRACellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRACellIdentity_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FiveQI.h"
+
+int
+FiveQI_constraint(const 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 >= 0 && value <= 255)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_FiveQI_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_FiveQI_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (0..255,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FiveQI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FiveQI = {
+ "FiveQI",
+ "FiveQI",
+ &asn_OP_NativeInteger,
+ asn_DEF_FiveQI_tags_1,
+ sizeof(asn_DEF_FiveQI_tags_1)
+ /sizeof(asn_DEF_FiveQI_tags_1[0]), /* 1 */
+ asn_DEF_FiveQI_tags_1, /* Same as above */
+ sizeof(asn_DEF_FiveQI_tags_1)
+ /sizeof(asn_DEF_FiveQI_tags_1[0]), /* 1 */
+ { &asn_OER_type_FiveQI_constr_1, &asn_PER_type_FiveQI_constr_1, FiveQI_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _FiveQI_H_
+#define _FiveQI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FiveQI */
+typedef long FiveQI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FiveQI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FiveQI;
+asn_struct_free_f FiveQI_free;
+asn_struct_print_f FiveQI_print;
+asn_constr_check_f FiveQI_constraint;
+ber_type_decoder_f FiveQI_decode_ber;
+der_type_encoder_f FiveQI_encode_der;
+xer_type_decoder_f FiveQI_decode_xer;
+xer_type_encoder_f FiveQI_encode_xer;
+oer_type_decoder_f FiveQI_decode_oer;
+oer_type_encoder_f FiveQI_encode_oer;
+per_type_decoder_f FiveQI_decode_uper;
+per_type_encoder_f FiveQI_encode_uper;
+per_type_decoder_f FiveQI_decode_aper;
+per_type_encoder_f FiveQI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FiveQI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+
+int
+GNB_CU_CP_UE_E1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID = {
+ "GNB-CU-CP-UE-E1AP-ID",
+ "GNB-CU-CP-UE-E1AP-ID",
+ &asn_OP_NativeInteger,
+ asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1,
+ sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1)
+ /sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */
+ asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1)
+ /sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, &asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, GNB_CU_CP_UE_E1AP_ID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GNB_CU_CP_UE_E1AP_ID_H_
+#define _GNB_CU_CP_UE_E1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GNB-CU-CP-UE-E1AP-ID */
+typedef unsigned long GNB_CU_CP_UE_E1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1;
+asn_struct_free_f GNB_CU_CP_UE_E1AP_ID_free;
+asn_struct_print_f GNB_CU_CP_UE_E1AP_ID_print;
+asn_constr_check_f GNB_CU_CP_UE_E1AP_ID_constraint;
+ber_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_ber;
+der_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_der;
+xer_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_xer;
+xer_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_xer;
+oer_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_oer;
+oer_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_oer;
+per_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_uper;
+per_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_uper;
+per_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_aper;
+per_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_CU_CP_UE_E1AP_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GNB-CU-UE-F1AP-ID.h"
+
+int
+GNB_CU_UE_F1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID = {
+ "GNB-CU-UE-F1AP-ID",
+ "GNB-CU-UE-F1AP-ID",
+ &asn_OP_NativeInteger,
+ asn_DEF_GNB_CU_UE_F1AP_ID_tags_1,
+ sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1)
+ /sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */
+ asn_DEF_GNB_CU_UE_F1AP_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1)
+ /sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_GNB_CU_UE_F1AP_ID_constr_1, &asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1, GNB_CU_UE_F1AP_ID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_GNB_CU_UE_F1AP_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GNB_CU_UE_F1AP_ID_H_
+#define _GNB_CU_UE_F1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GNB-CU-UE-F1AP-ID */
+typedef unsigned long GNB_CU_UE_F1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1;
+asn_struct_free_f GNB_CU_UE_F1AP_ID_free;
+asn_struct_print_f GNB_CU_UE_F1AP_ID_print;
+asn_constr_check_f GNB_CU_UE_F1AP_ID_constraint;
+ber_type_decoder_f GNB_CU_UE_F1AP_ID_decode_ber;
+der_type_encoder_f GNB_CU_UE_F1AP_ID_encode_der;
+xer_type_decoder_f GNB_CU_UE_F1AP_ID_decode_xer;
+xer_type_encoder_f GNB_CU_UE_F1AP_ID_encode_xer;
+oer_type_decoder_f GNB_CU_UE_F1AP_ID_decode_oer;
+oer_type_encoder_f GNB_CU_UE_F1AP_ID_encode_oer;
+per_type_decoder_f GNB_CU_UE_F1AP_ID_decode_uper;
+per_type_encoder_f GNB_CU_UE_F1AP_ID_encode_uper;
+per_type_decoder_f GNB_CU_UE_F1AP_ID_decode_aper;
+per_type_encoder_f GNB_CU_UE_F1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_CU_UE_F1AP_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GNB-ID.h"
+
+static int
+memb_gNB_ID_constraint_1(const 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 >= 22 && size <= 32)) {
+ /* 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_oer_constraints_t asn_OER_memb_gNB_ID_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(22..32)) */};
+static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_GNB_ID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_GNB_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_GNB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GNB_ID, choice.gNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ 0,
+ { &asn_OER_memb_gNB_ID_constr_2, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 },
+ 0, 0, /* No default value */
+ "gNB-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */
+};
+asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1 = {
+ sizeof(struct GNB_ID),
+ offsetof(struct GNB_ID, _asn_ctx),
+ offsetof(struct GNB_ID, present),
+ sizeof(((struct GNB_ID *)0)->present),
+ asn_MAP_GNB_ID_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0,
+ 1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_ID = {
+ "GNB-ID",
+ "GNB-ID",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_GNB_ID_constr_1, &asn_PER_type_GNB_ID_constr_1, CHOICE_constraint },
+ asn_MBR_GNB_ID_1,
+ 1, /* Elements count */
+ &asn_SPC_GNB_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GNB_ID_H_
+#define _GNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GNB_ID_PR {
+ GNB_ID_PR_NOTHING, /* No components present */
+ GNB_ID_PR_gNB_ID
+ /* Extensions may appear below */
+
+} GNB_ID_PR;
+
+/* GNB-ID */
+typedef struct GNB_ID {
+ GNB_ID_PR present;
+ union GNB_ID_u {
+ BIT_STRING_t gNB_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GNB_ID;
+extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GNB_ID_1[1];
+extern asn_per_constraints_t asn_PER_type_GNB_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GUAMI.h"
+
+asn_TYPE_member_t asn_MBR_GUAMI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GUAMI, pLMNIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMNIdentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFRegionID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_AMFRegionID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "aMFRegionID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFSetID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_AMFSetID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "aMFSetID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFPointer),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_AMFPointer,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "aMFPointer"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_GUAMI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GUAMI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMFRegionID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aMFSetID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* aMFPointer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1 = {
+ sizeof(struct GUAMI),
+ offsetof(struct GUAMI, _asn_ctx),
+ asn_MAP_GUAMI_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 4, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GUAMI = {
+ "GUAMI",
+ "GUAMI",
+ &asn_OP_SEQUENCE,
+ asn_DEF_GUAMI_tags_1,
+ sizeof(asn_DEF_GUAMI_tags_1)
+ /sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */
+ asn_DEF_GUAMI_tags_1, /* Same as above */
+ sizeof(asn_DEF_GUAMI_tags_1)
+ /sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_GUAMI_1,
+ 4, /* Elements count */
+ &asn_SPC_GUAMI_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GUAMI_H_
+#define _GUAMI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "AMFRegionID.h"
+#include "AMFSetID.h"
+#include "AMFPointer.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GUAMI */
+typedef struct GUAMI {
+ PLMNIdentity_t pLMNIdentity;
+ AMFRegionID_t aMFRegionID;
+ AMFSetID_t aMFSetID;
+ AMFPointer_t aMFPointer;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GUAMI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GUAMI;
+extern asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1;
+extern asn_TYPE_member_t asn_MBR_GUAMI_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GUAMI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GUMMEI.h"
+
+asn_TYPE_member_t asn_MBR_GUMMEI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, pLMN_Identity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMN-Identity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Group_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MME_Group_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "mME-Group-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Code),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MME_Code,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "mME-Code"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_GUMMEI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Group-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* mME-Code */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1 = {
+ sizeof(struct GUMMEI),
+ offsetof(struct GUMMEI, _asn_ctx),
+ asn_MAP_GUMMEI_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GUMMEI = {
+ "GUMMEI",
+ "GUMMEI",
+ &asn_OP_SEQUENCE,
+ asn_DEF_GUMMEI_tags_1,
+ sizeof(asn_DEF_GUMMEI_tags_1)
+ /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */
+ asn_DEF_GUMMEI_tags_1, /* Same as above */
+ sizeof(asn_DEF_GUMMEI_tags_1)
+ /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_GUMMEI_1,
+ 3, /* Elements count */
+ &asn_SPC_GUMMEI_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GUMMEI_H_
+#define _GUMMEI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "MME-Group-ID.h"
+#include "MME-Code.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GUMMEI */
+typedef struct GUMMEI {
+ PLMNIdentity_t pLMN_Identity;
+ MME_Group_ID_t mME_Group_ID;
+ MME_Code_t mME_Code;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GUMMEI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GUMMEI;
+extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1;
+extern asn_TYPE_member_t asn_MBR_GUMMEI_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GUMMEI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalENB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMNIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMNIdentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ENB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "eNB-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = {
+ sizeof(struct GlobalENB_ID),
+ offsetof(struct GlobalENB_ID, _asn_ctx),
+ asn_MAP_GlobalENB_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = {
+ "GlobalENB-ID",
+ "GlobalENB-ID",
+ &asn_OP_SEQUENCE,
+ asn_DEF_GlobalENB_ID_tags_1,
+ sizeof(asn_DEF_GlobalENB_ID_tags_1)
+ /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */
+ asn_DEF_GlobalENB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_GlobalENB_ID_tags_1)
+ /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_GlobalENB_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GlobalENB_ID_H_
+#define _GlobalENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "ENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalENB-ID */
+typedef struct GlobalENB_ID {
+ PLMNIdentity_t pLMNIdentity;
+ ENB_ID_t eNB_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GlobalENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalENB_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalGNB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, pLMNIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMNIdentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, gNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_GNB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1 = {
+ sizeof(struct GlobalGNB_ID),
+ offsetof(struct GlobalGNB_ID, _asn_ctx),
+ asn_MAP_GlobalGNB_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID = {
+ "GlobalGNB-ID",
+ "GlobalGNB-ID",
+ &asn_OP_SEQUENCE,
+ asn_DEF_GlobalGNB_ID_tags_1,
+ sizeof(asn_DEF_GlobalGNB_ID_tags_1)
+ /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */
+ asn_DEF_GlobalGNB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_GlobalGNB_ID_tags_1)
+ /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_GlobalGNB_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_GlobalGNB_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GlobalGNB_ID_H_
+#define _GlobalGNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "GNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalGNB-ID */
+typedef struct GlobalGNB_ID {
+ PLMNIdentity_t pLMNIdentity;
+ GNB_ID_t gNB_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GlobalGNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalGNB_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalNGRANNodeID.h"
+
+#include "GlobalGNB-ID.h"
+#include "GlobalNgENB-ID.h"
+static asn_oer_constraints_t asn_OER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[] = {
+ { ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.gNB),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalGNB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB"
+ },
+ { ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.ng_eNB),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalNgENB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ng-eNB"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalNGRANNodeID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */
+};
+asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1 = {
+ sizeof(struct GlobalNGRANNodeID),
+ offsetof(struct GlobalNGRANNodeID, _asn_ctx),
+ offsetof(struct GlobalNGRANNodeID, present),
+ sizeof(((struct GlobalNGRANNodeID *)0)->present),
+ asn_MAP_GlobalNGRANNodeID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID = {
+ "GlobalNGRANNodeID",
+ "GlobalNGRANNodeID",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_GlobalNGRANNodeID_constr_1, &asn_PER_type_GlobalNGRANNodeID_constr_1, CHOICE_constraint },
+ asn_MBR_GlobalNGRANNodeID_1,
+ 2, /* Elements count */
+ &asn_SPC_GlobalNGRANNodeID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GlobalNGRANNodeID_H_
+#define _GlobalNGRANNodeID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GlobalNGRANNodeID_PR {
+ GlobalNGRANNodeID_PR_NOTHING, /* No components present */
+ GlobalNGRANNodeID_PR_gNB,
+ GlobalNGRANNodeID_PR_ng_eNB
+ /* Extensions may appear below */
+
+} GlobalNGRANNodeID_PR;
+
+/* Forward declarations */
+struct GlobalGNB_ID;
+struct GlobalNgENB_ID;
+
+/* GlobalNGRANNodeID */
+typedef struct GlobalNGRANNodeID {
+ GlobalNGRANNodeID_PR present;
+ union GlobalNGRANNodeID_u {
+ struct GlobalGNB_ID *gNB;
+ struct GlobalNgENB_ID *ng_eNB;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GlobalNGRANNodeID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID;
+extern asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[2];
+extern asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalNGRANNodeID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalNgENB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, pLMNIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMNIdentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, ngENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_NgENB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ngENB-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_GlobalNgENB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalNgENB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ngENB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1 = {
+ sizeof(struct GlobalNgENB_ID),
+ offsetof(struct GlobalNgENB_ID, _asn_ctx),
+ asn_MAP_GlobalNgENB_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID = {
+ "GlobalNgENB-ID",
+ "GlobalNgENB-ID",
+ &asn_OP_SEQUENCE,
+ asn_DEF_GlobalNgENB_ID_tags_1,
+ sizeof(asn_DEF_GlobalNgENB_ID_tags_1)
+ /sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */
+ asn_DEF_GlobalNgENB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_GlobalNgENB_ID_tags_1)
+ /sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_GlobalNgENB_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_GlobalNgENB_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GlobalNgENB_ID_H_
+#define _GlobalNgENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "NgENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalNgENB-ID */
+typedef struct GlobalNgENB_ID {
+ PLMNIdentity_t pLMNIdentity;
+ NgENB_ID_t ngENB_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GlobalNgENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalNgENB_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GranularityPeriod.h"
+
+int
+GranularityPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ unsigned long value;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const unsigned long *)sptr;
+
+ if((value >= 1 && value <= 4294967295)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_GranularityPeriod_constr_1 CC_NOTUSED = {
+ { 4, 1 } /* (1..4294967295) */,
+ -1};
+asn_per_constraints_t asn_PER_type_GranularityPeriod_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (1..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GranularityPeriod_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GranularityPeriod_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GranularityPeriod = {
+ "GranularityPeriod",
+ "GranularityPeriod",
+ &asn_OP_NativeInteger,
+ asn_DEF_GranularityPeriod_tags_1,
+ sizeof(asn_DEF_GranularityPeriod_tags_1)
+ /sizeof(asn_DEF_GranularityPeriod_tags_1[0]), /* 1 */
+ asn_DEF_GranularityPeriod_tags_1, /* Same as above */
+ sizeof(asn_DEF_GranularityPeriod_tags_1)
+ /sizeof(asn_DEF_GranularityPeriod_tags_1[0]), /* 1 */
+ { &asn_OER_type_GranularityPeriod_constr_1, &asn_PER_type_GranularityPeriod_constr_1, GranularityPeriod_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_GranularityPeriod_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _GranularityPeriod_H_
+#define _GranularityPeriod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GranularityPeriod */
+typedef unsigned long GranularityPeriod_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GranularityPeriod_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GranularityPeriod;
+extern const asn_INTEGER_specifics_t asn_SPC_GranularityPeriod_specs_1;
+asn_struct_free_f GranularityPeriod_free;
+asn_struct_print_f GranularityPeriod_print;
+asn_constr_check_f GranularityPeriod_constraint;
+ber_type_decoder_f GranularityPeriod_decode_ber;
+der_type_encoder_f GranularityPeriod_encode_der;
+xer_type_decoder_f GranularityPeriod_decode_xer;
+xer_type_encoder_f GranularityPeriod_encode_xer;
+oer_type_decoder_f GranularityPeriod_decode_oer;
+oer_type_encoder_f GranularityPeriod_encode_oer;
+per_type_decoder_f GranularityPeriod_decode_uper;
+per_type_encoder_f GranularityPeriod_encode_uper;
+per_type_decoder_f GranularityPeriod_decode_aper;
+per_type_encoder_f GranularityPeriod_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GranularityPeriod_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LabelInfoItem.h"
+
+asn_TYPE_member_t asn_MBR_LabelInfoItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct LabelInfoItem, measLabel),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementLabel,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measLabel"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_LabelInfoItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_LabelInfoItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measLabel */
+};
+asn_SEQUENCE_specifics_t asn_SPC_LabelInfoItem_specs_1 = {
+ sizeof(struct LabelInfoItem),
+ offsetof(struct LabelInfoItem, _asn_ctx),
+ asn_MAP_LabelInfoItem_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_LabelInfoItem = {
+ "LabelInfoItem",
+ "LabelInfoItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_LabelInfoItem_tags_1,
+ sizeof(asn_DEF_LabelInfoItem_tags_1)
+ /sizeof(asn_DEF_LabelInfoItem_tags_1[0]), /* 1 */
+ asn_DEF_LabelInfoItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_LabelInfoItem_tags_1)
+ /sizeof(asn_DEF_LabelInfoItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_LabelInfoItem_1,
+ 1, /* Elements count */
+ &asn_SPC_LabelInfoItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _LabelInfoItem_H_
+#define _LabelInfoItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementLabel.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* LabelInfoItem */
+typedef struct LabelInfoItem {
+ MeasurementLabel_t measLabel;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} LabelInfoItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LabelInfoItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_LabelInfoItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_LabelInfoItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LabelInfoItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LabelInfoList.h"
+
+#include "LabelInfoItem.h"
+static asn_oer_constraints_t asn_OER_type_LabelInfoList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..2147483647)) */};
+asn_per_constraints_t asn_PER_type_LabelInfoList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 31, -1, 1, 2147483647 } /* (SIZE(1..2147483647)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_LabelInfoList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_LabelInfoItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_LabelInfoList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_LabelInfoList_specs_1 = {
+ sizeof(struct LabelInfoList),
+ offsetof(struct LabelInfoList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_LabelInfoList = {
+ "LabelInfoList",
+ "LabelInfoList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_LabelInfoList_tags_1,
+ sizeof(asn_DEF_LabelInfoList_tags_1)
+ /sizeof(asn_DEF_LabelInfoList_tags_1[0]), /* 1 */
+ asn_DEF_LabelInfoList_tags_1, /* Same as above */
+ sizeof(asn_DEF_LabelInfoList_tags_1)
+ /sizeof(asn_DEF_LabelInfoList_tags_1[0]), /* 1 */
+ { &asn_OER_type_LabelInfoList_constr_1, &asn_PER_type_LabelInfoList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_LabelInfoList_1,
+ 1, /* Single element */
+ &asn_SPC_LabelInfoList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _LabelInfoList_H_
+#define _LabelInfoList_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 LabelInfoItem;
+
+/* LabelInfoList */
+typedef struct LabelInfoList {
+ A_SEQUENCE_OF(struct LabelInfoItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} LabelInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LabelInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_LabelInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_LabelInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_LabelInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LabelInfoList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LogicalOR.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_LogicalOR_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_LogicalOR_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_LogicalOR_value2enum_1[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_LogicalOR_enum2value_1[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1 = {
+ asn_MAP_LogicalOR_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_LogicalOR_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_LogicalOR_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_LogicalOR = {
+ "LogicalOR",
+ "LogicalOR",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_LogicalOR_tags_1,
+ sizeof(asn_DEF_LogicalOR_tags_1)
+ /sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */
+ asn_DEF_LogicalOR_tags_1, /* Same as above */
+ sizeof(asn_DEF_LogicalOR_tags_1)
+ /sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */
+ { &asn_OER_type_LogicalOR_constr_1, &asn_PER_type_LogicalOR_constr_1, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_LogicalOR_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _LogicalOR_H_
+#define _LogicalOR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum LogicalOR {
+ LogicalOR_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_LogicalOR;
+
+/* LogicalOR */
+typedef long LogicalOR_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_LogicalOR_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_LogicalOR;
+extern const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1;
+asn_struct_free_f LogicalOR_free;
+asn_struct_print_f LogicalOR_print;
+asn_constr_check_f LogicalOR_constraint;
+ber_type_decoder_f LogicalOR_decode_ber;
+der_type_encoder_f LogicalOR_encode_der;
+xer_type_decoder_f LogicalOR_decode_xer;
+xer_type_encoder_f LogicalOR_encode_xer;
+oer_type_decoder_f LogicalOR_decode_oer;
+oer_type_encoder_f LogicalOR_encode_oer;
+per_type_decoder_f LogicalOR_decode_uper;
+per_type_encoder_f LogicalOR_encode_uper;
+per_type_decoder_f LogicalOR_decode_aper;
+per_type_encoder_f LogicalOR_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LogicalOR_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MME-Code.h"
+
+int
+MME_Code_constraint(const 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 == 1)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_MME_Code_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 1 /* (SIZE(1..1)) */};
+asn_per_constraints_t asn_PER_type_MME_Code_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MME_Code_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_Code = {
+ "MME-Code",
+ "MME-Code",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_MME_Code_tags_1,
+ sizeof(asn_DEF_MME_Code_tags_1)
+ /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */
+ asn_DEF_MME_Code_tags_1, /* Same as above */
+ sizeof(asn_DEF_MME_Code_tags_1)
+ /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */
+ { &asn_OER_type_MME_Code_constr_1, &asn_PER_type_MME_Code_constr_1, MME_Code_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MME_Code_H_
+#define _MME_Code_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MME-Code */
+typedef OCTET_STRING_t MME_Code_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MME_Code_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MME_Code;
+asn_struct_free_f MME_Code_free;
+asn_struct_print_f MME_Code_print;
+asn_constr_check_f MME_Code_constraint;
+ber_type_decoder_f MME_Code_decode_ber;
+der_type_encoder_f MME_Code_encode_der;
+xer_type_decoder_f MME_Code_decode_xer;
+xer_type_encoder_f MME_Code_encode_xer;
+oer_type_decoder_f MME_Code_decode_oer;
+oer_type_encoder_f MME_Code_encode_oer;
+per_type_decoder_f MME_Code_decode_uper;
+per_type_encoder_f MME_Code_encode_uper;
+per_type_decoder_f MME_Code_decode_aper;
+per_type_encoder_f MME_Code_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MME_Code_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MME-Group-ID.h"
+
+int
+MME_Group_ID_constraint(const 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 == 2)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_MME_Group_ID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 2 /* (SIZE(2..2)) */};
+asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MME_Group_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_Group_ID = {
+ "MME-Group-ID",
+ "MME-Group-ID",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_MME_Group_ID_tags_1,
+ sizeof(asn_DEF_MME_Group_ID_tags_1)
+ /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */
+ asn_DEF_MME_Group_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_MME_Group_ID_tags_1)
+ /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_MME_Group_ID_constr_1, &asn_PER_type_MME_Group_ID_constr_1, MME_Group_ID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MME_Group_ID_H_
+#define _MME_Group_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MME-Group-ID */
+typedef OCTET_STRING_t MME_Group_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MME_Group_ID;
+asn_struct_free_f MME_Group_ID_free;
+asn_struct_print_f MME_Group_ID_print;
+asn_constr_check_f MME_Group_ID_constraint;
+ber_type_decoder_f MME_Group_ID_decode_ber;
+der_type_encoder_f MME_Group_ID_encode_der;
+xer_type_decoder_f MME_Group_ID_decode_xer;
+xer_type_encoder_f MME_Group_ID_encode_xer;
+oer_type_decoder_f MME_Group_ID_decode_oer;
+oer_type_encoder_f MME_Group_ID_encode_oer;
+per_type_decoder_f MME_Group_ID_decode_uper;
+per_type_encoder_f MME_Group_ID_encode_uper;
+per_type_decoder_f MME_Group_ID_decode_aper;
+per_type_encoder_f MME_Group_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MME_Group_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MME-UE-S1AP-ID.h"
+
+int
+MME_UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_MME_UE_S1AP_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID = {
+ "MME-UE-S1AP-ID",
+ "MME-UE-S1AP-ID",
+ &asn_OP_NativeInteger,
+ asn_DEF_MME_UE_S1AP_ID_tags_1,
+ sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1)
+ /sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */
+ asn_DEF_MME_UE_S1AP_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1)
+ /sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_MME_UE_S1AP_ID_constr_1, &asn_PER_type_MME_UE_S1AP_ID_constr_1, MME_UE_S1AP_ID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_MME_UE_S1AP_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MME_UE_S1AP_ID_H_
+#define _MME_UE_S1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MME-UE-S1AP-ID */
+typedef unsigned long MME_UE_S1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1;
+asn_struct_free_f MME_UE_S1AP_ID_free;
+asn_struct_print_f MME_UE_S1AP_ID_print;
+asn_constr_check_f MME_UE_S1AP_ID_constraint;
+ber_type_decoder_f MME_UE_S1AP_ID_decode_ber;
+der_type_encoder_f MME_UE_S1AP_ID_encode_der;
+xer_type_decoder_f MME_UE_S1AP_ID_decode_xer;
+xer_type_encoder_f MME_UE_S1AP_ID_encode_xer;
+oer_type_decoder_f MME_UE_S1AP_ID_decode_oer;
+oer_type_encoder_f MME_UE_S1AP_ID_encode_oer;
+per_type_decoder_f MME_UE_S1AP_ID_decode_uper;
+per_type_encoder_f MME_UE_S1AP_ID_encode_uper;
+per_type_decoder_f MME_UE_S1AP_ID_decode_aper;
+per_type_encoder_f MME_UE_S1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MME_UE_S1AP_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+ASN_MODULE_SRCS= \
+ ./../../E2_output/E2SM_KPM_v3.0_output/CGI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NR-CGI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/PLMNIdentity.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NRCellIdentity.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/EUTRACellIdentity.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/EUTRA-CGI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/SD.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/S-NSSAI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/SST.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/FiveQI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/QCI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/QosFlowIdentifier.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RANfunction-Name.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Format-Type.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Type.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Name.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB-DU.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-EN-GNB.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-ENB.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GUMMEI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MME-Group-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MME-Code.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalENB-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/ENB-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MME-UE-S1AP-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID-Extension.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-DU.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-UP.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NGENB-CU-UE-W1AP-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMF-UE-NGAP-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GUAMI.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMFRegionID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMFSetID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMFPointer.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-F1AP-ID-List.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-F1AP-ID-Item.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-UE-F1AP-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-List.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-Item.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-CP-UE-E1AP-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RANUEID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NG-RANnodeUEXnAPID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalGNB-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GNB-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNGRANNodeID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNgENB-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NgENB-ID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TimeStamp.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinIndex.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeValue.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GranularityPeriod.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/LogicalOR.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementType.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeName.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeID.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementLabel.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCondInfo.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Type.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Expression.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Value.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeDefinition.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementData.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementDataItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecord.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecordItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-List.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-Item.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem-Choice.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP-Item.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList-PerGP.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem-PerGP.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportList.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportItem.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition-Format1.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format1.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format2.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format3.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format4.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format5.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader-Format1.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format1.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format2.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format3.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-RANfunction-Description.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-EventTriggerStyle-Item.c \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-ReportStyle-Item.c
+
+ASN_MODULE_HDRS= \
+ ./../../E2_output/E2SM_KPM_v3.0_output/CGI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NR-CGI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/PLMNIdentity.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NRCellIdentity.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/EUTRACellIdentity.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/EUTRA-CGI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/SD.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/S-NSSAI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/SST.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/FiveQI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/QCI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/QosFlowIdentifier.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RANfunction-Name.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Format-Type.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Type.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Name.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB-DU.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-EN-GNB.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-ENB.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GUMMEI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MME-Group-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MME-Code.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalENB-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/ENB-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MME-UE-S1AP-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID-Extension.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-DU.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-UP.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NGENB-CU-UE-W1AP-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMF-UE-NGAP-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GUAMI.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMFRegionID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMFSetID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/AMFPointer.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-F1AP-ID-List.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-F1AP-ID-Item.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-UE-F1AP-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-List.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-Item.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-CP-UE-E1AP-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RANUEID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NG-RANnodeUEXnAPID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalGNB-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GNB-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNGRANNodeID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNgENB-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/NgENB-ID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TimeStamp.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinIndex.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeValue.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/GranularityPeriod.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/LogicalOR.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementType.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeName.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeID.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementLabel.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCondInfo.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Type.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Expression.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Value.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeDefinition.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementData.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementDataItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecord.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecordItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-List.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-Item.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem-Choice.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP-Item.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList-PerGP.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem-PerGP.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportList.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportItem.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition-Format1.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format1.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format2.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format3.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format4.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format5.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader-Format1.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format1.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format2.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format3.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-RANfunction-Description.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-EventTriggerStyle-Item.h \
+ ./../../E2_output/E2SM_KPM_v3.0_output/RIC-ReportStyle-Item.h
+
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/OPEN_TYPE.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OPEN_TYPE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_CHOICE.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/BOOLEAN.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/BOOLEAN.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/INTEGER.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/INTEGER.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NULL.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NULL.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeEnumerated.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeEnumerated.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeInteger.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeInteger.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeReal.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeReal.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/REAL.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/PrintableString.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/PrintableString.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/OCTET_STRING.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/REAL.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SET_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SET_OF.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_CHOICE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SET_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SET_OF.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_application.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_application.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_ioc.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_system.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_codecs.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_internal.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_internal.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_random_fill.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_random_fill.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_bit_data.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_bit_data.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OCTET_STRING.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/BIT_STRING.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/BIT_STRING.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_codecs_prim.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_codecs_prim.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_length.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_length.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_tag.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_tag.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_decoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_decoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/der_encoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/der_encoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_TYPE.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_TYPE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constraints.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constraints.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_support.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_support.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_decoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_decoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_encoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_encoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_support.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_support.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_decoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_decoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_encoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_encoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_opentype.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_opentype.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_decoder.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_encoder.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_support.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_decoder.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_encoder.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_support.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OPEN_TYPE_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/INTEGER_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/BIT_STRING_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OCTET_STRING_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeInteger_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeEnumerated_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_CHOICE_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SET_OF_oer.c
+
+ASN_MODULE_CFLAGS=
+
+lib_LTLIBRARIES+=libasncodec.la
+libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS)
+libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./../../E2_output/E2SM_KPM_v3.0_output/
+libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
+libasncodec_la_LDFLAGS=-lm
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingCondItem-Choice.h"
+
+#include "MeasurementLabel.h"
+#include "TestCondInfo.h"
+static asn_oer_constraints_t asn_OER_type_MatchingCondItem_Choice_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_MatchingCondItem_Choice_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingCondItem_Choice_1[] = {
+ { ATF_POINTER, 0, offsetof(struct MatchingCondItem_Choice, choice.measLabel),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementLabel,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measLabel"
+ },
+ { ATF_POINTER, 0, offsetof(struct MatchingCondItem_Choice, choice.testCondInfo),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TestCondInfo,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "testCondInfo"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingCondItem_Choice_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measLabel */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* testCondInfo */
+};
+asn_CHOICE_specifics_t asn_SPC_MatchingCondItem_Choice_specs_1 = {
+ sizeof(struct MatchingCondItem_Choice),
+ offsetof(struct MatchingCondItem_Choice, _asn_ctx),
+ offsetof(struct MatchingCondItem_Choice, present),
+ sizeof(((struct MatchingCondItem_Choice *)0)->present),
+ asn_MAP_MatchingCondItem_Choice_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingCondItem_Choice = {
+ "MatchingCondItem-Choice",
+ "MatchingCondItem-Choice",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_MatchingCondItem_Choice_constr_1, &asn_PER_type_MatchingCondItem_Choice_constr_1, CHOICE_constraint },
+ asn_MBR_MatchingCondItem_Choice_1,
+ 2, /* Elements count */
+ &asn_SPC_MatchingCondItem_Choice_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingCondItem_Choice_H_
+#define _MatchingCondItem_Choice_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MatchingCondItem_Choice_PR {
+ MatchingCondItem_Choice_PR_NOTHING, /* No components present */
+ MatchingCondItem_Choice_PR_measLabel,
+ MatchingCondItem_Choice_PR_testCondInfo
+ /* Extensions may appear below */
+
+} MatchingCondItem_Choice_PR;
+
+/* Forward declarations */
+struct MeasurementLabel;
+struct TestCondInfo;
+
+/* MatchingCondItem-Choice */
+typedef struct MatchingCondItem_Choice {
+ MatchingCondItem_Choice_PR present;
+ union MatchingCondItem_Choice_u {
+ struct MeasurementLabel *measLabel;
+ struct TestCondInfo *testCondInfo;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingCondItem_Choice_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingCondItem_Choice;
+extern asn_CHOICE_specifics_t asn_SPC_MatchingCondItem_Choice_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingCondItem_Choice_1[2];
+extern asn_per_constraints_t asn_PER_type_MatchingCondItem_Choice_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingCondItem_Choice_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingCondItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingCondItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingCondItem, matchingCondChoice),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_MatchingCondItem_Choice,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingCondChoice"
+ },
+ { ATF_POINTER, 1, offsetof(struct MatchingCondItem, logicalOR),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LogicalOR,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "logicalOR"
+ },
+};
+static const int asn_MAP_MatchingCondItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MatchingCondItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingCondItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingCondChoice */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingCondItem_specs_1 = {
+ sizeof(struct MatchingCondItem),
+ offsetof(struct MatchingCondItem, _asn_ctx),
+ asn_MAP_MatchingCondItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_MatchingCondItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingCondItem = {
+ "MatchingCondItem",
+ "MatchingCondItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MatchingCondItem_tags_1,
+ sizeof(asn_DEF_MatchingCondItem_tags_1)
+ /sizeof(asn_DEF_MatchingCondItem_tags_1[0]), /* 1 */
+ asn_DEF_MatchingCondItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingCondItem_tags_1)
+ /sizeof(asn_DEF_MatchingCondItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MatchingCondItem_1,
+ 2, /* Elements count */
+ &asn_SPC_MatchingCondItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingCondItem_H_
+#define _MatchingCondItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MatchingCondItem-Choice.h"
+#include "LogicalOR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingCondItem */
+typedef struct MatchingCondItem {
+ MatchingCondItem_Choice_t matchingCondChoice;
+ LogicalOR_t *logicalOR; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingCondItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingCondItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingCondItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingCondItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingCondItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingCondList.h"
+
+#include "MatchingCondItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingCondList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32768)) */};
+asn_per_constraints_t asn_PER_type_MatchingCondList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 15, 15, 1, 32768 } /* (SIZE(1..32768)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingCondList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MatchingCondItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingCondList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingCondList_specs_1 = {
+ sizeof(struct MatchingCondList),
+ offsetof(struct MatchingCondList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingCondList = {
+ "MatchingCondList",
+ "MatchingCondList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MatchingCondList_tags_1,
+ sizeof(asn_DEF_MatchingCondList_tags_1)
+ /sizeof(asn_DEF_MatchingCondList_tags_1[0]), /* 1 */
+ asn_DEF_MatchingCondList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingCondList_tags_1)
+ /sizeof(asn_DEF_MatchingCondList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MatchingCondList_constr_1, &asn_PER_type_MatchingCondList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MatchingCondList_1,
+ 1, /* Single element */
+ &asn_SPC_MatchingCondList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingCondList_H_
+#define _MatchingCondList_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 MatchingCondItem;
+
+/* MatchingCondList */
+typedef struct MatchingCondList {
+ A_SEQUENCE_OF(struct MatchingCondItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingCondList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingCondList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingCondList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingCondList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingCondList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingCondList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidItem-PerGP.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUEidItem_PerGP_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidItem_PerGP, ueID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_UEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ueID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidItem_PerGP_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidItem_PerGP_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_PerGP_specs_1 = {
+ sizeof(struct MatchingUEidItem_PerGP),
+ offsetof(struct MatchingUEidItem_PerGP, _asn_ctx),
+ asn_MAP_MatchingUEidItem_PerGP_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem_PerGP = {
+ "MatchingUEidItem-PerGP",
+ "MatchingUEidItem-PerGP",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MatchingUEidItem_PerGP_tags_1,
+ sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1)
+ /sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidItem_PerGP_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1)
+ /sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MatchingUEidItem_PerGP_1,
+ 1, /* Elements count */
+ &asn_SPC_MatchingUEidItem_PerGP_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidItem_PerGP_H_
+#define _MatchingUEidItem_PerGP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUEidItem-PerGP */
+typedef struct MatchingUEidItem_PerGP {
+ UEID_t ueID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidItem_PerGP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem_PerGP;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_PerGP_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidItem_PerGP_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidItem_PerGP_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUEidItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidItem, ueID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_UEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ueID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_specs_1 = {
+ sizeof(struct MatchingUEidItem),
+ offsetof(struct MatchingUEidItem, _asn_ctx),
+ asn_MAP_MatchingUEidItem_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem = {
+ "MatchingUEidItem",
+ "MatchingUEidItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MatchingUEidItem_tags_1,
+ sizeof(asn_DEF_MatchingUEidItem_tags_1)
+ /sizeof(asn_DEF_MatchingUEidItem_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidItem_tags_1)
+ /sizeof(asn_DEF_MatchingUEidItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MatchingUEidItem_1,
+ 1, /* Elements count */
+ &asn_SPC_MatchingUEidItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidItem_H_
+#define _MatchingUEidItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUEidItem */
+typedef struct MatchingUEidItem {
+ UEID_t ueID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidList-PerGP.h"
+
+#include "MatchingUEidItem-PerGP.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidList_PerGP_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidList_PerGP_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidList_PerGP_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MatchingUEidItem_PerGP,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidList_PerGP_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_PerGP_specs_1 = {
+ sizeof(struct MatchingUEidList_PerGP),
+ offsetof(struct MatchingUEidList_PerGP, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidList_PerGP = {
+ "MatchingUEidList-PerGP",
+ "MatchingUEidList-PerGP",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MatchingUEidList_PerGP_tags_1,
+ sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1)
+ /sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidList_PerGP_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1)
+ /sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1[0]), /* 1 */
+ { &asn_OER_type_MatchingUEidList_PerGP_constr_1, &asn_PER_type_MatchingUEidList_PerGP_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MatchingUEidList_PerGP_1,
+ 1, /* Single element */
+ &asn_SPC_MatchingUEidList_PerGP_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidList_PerGP_H_
+#define _MatchingUEidList_PerGP_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 MatchingUEidItem_PerGP;
+
+/* MatchingUEidList-PerGP */
+typedef struct MatchingUEidList_PerGP {
+ A_SEQUENCE_OF(struct MatchingUEidItem_PerGP) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidList_PerGP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList_PerGP;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_PerGP_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidList_PerGP_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidList_PerGP_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidList_PerGP_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidList.h"
+
+#include "MatchingUEidItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MatchingUEidItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1 = {
+ sizeof(struct MatchingUEidList),
+ offsetof(struct MatchingUEidList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidList = {
+ "MatchingUEidList",
+ "MatchingUEidList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MatchingUEidList_tags_1,
+ sizeof(asn_DEF_MatchingUEidList_tags_1)
+ /sizeof(asn_DEF_MatchingUEidList_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidList_tags_1)
+ /sizeof(asn_DEF_MatchingUEidList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MatchingUEidList_constr_1, &asn_PER_type_MatchingUEidList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MatchingUEidList_1,
+ 1, /* Single element */
+ &asn_SPC_MatchingUEidList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidList_H_
+#define _MatchingUEidList_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 MatchingUEidItem;
+
+/* MatchingUEidList */
+typedef struct MatchingUEidList {
+ A_SEQUENCE_OF(struct MatchingUEidItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerGP-Item.h"
+
+#include "MatchingUEidList-PerGP.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_noUEmatched_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_noUEmatched_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_matchedPerGP_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_matchedPerGP_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_noUEmatched_value2enum_3[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_noUEmatched_enum2value_3[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_noUEmatched_specs_3 = {
+ asn_MAP_noUEmatched_value2enum_3, /* "tag" => N; sorted by tag */
+ asn_MAP_noUEmatched_enum2value_3, /* 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_noUEmatched_tags_3[] = {
+ (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_noUEmatched_3 = {
+ "noUEmatched",
+ "noUEmatched",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_noUEmatched_tags_3,
+ sizeof(asn_DEF_noUEmatched_tags_3)
+ /sizeof(asn_DEF_noUEmatched_tags_3[0]) - 1, /* 1 */
+ asn_DEF_noUEmatched_tags_3, /* Same as above */
+ sizeof(asn_DEF_noUEmatched_tags_3)
+ /sizeof(asn_DEF_noUEmatched_tags_3[0]), /* 2 */
+ { &asn_OER_type_noUEmatched_constr_3, &asn_PER_type_noUEmatched_constr_3, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_noUEmatched_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_matchedPerGP_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, choice.noUEmatched),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_noUEmatched_3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "noUEmatched"
+ },
+ { ATF_POINTER, 0, offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, choice.oneOrMoreUEmatched),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingUEidList_PerGP,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "oneOrMoreUEmatched"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_matchedPerGP_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* noUEmatched */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* oneOrMoreUEmatched */
+};
+static asn_CHOICE_specifics_t asn_SPC_matchedPerGP_specs_2 = {
+ sizeof(struct MatchingUEidPerGP_Item__matchedPerGP),
+ offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, _asn_ctx),
+ offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, present),
+ sizeof(((struct MatchingUEidPerGP_Item__matchedPerGP *)0)->present),
+ asn_MAP_matchedPerGP_tag2el_2,
+ 2, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_matchedPerGP_2 = {
+ "matchedPerGP",
+ "matchedPerGP",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_matchedPerGP_constr_2, &asn_PER_type_matchedPerGP_constr_2, CHOICE_constraint },
+ asn_MBR_matchedPerGP_2,
+ 2, /* Elements count */
+ &asn_SPC_matchedPerGP_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerGP_Item, matchedPerGP),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_matchedPerGP_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchedPerGP"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerGP_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidPerGP_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* matchedPerGP */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerGP_Item_specs_1 = {
+ sizeof(struct MatchingUEidPerGP_Item),
+ offsetof(struct MatchingUEidPerGP_Item, _asn_ctx),
+ asn_MAP_MatchingUEidPerGP_Item_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP_Item = {
+ "MatchingUEidPerGP-Item",
+ "MatchingUEidPerGP-Item",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MatchingUEidPerGP_Item_tags_1,
+ sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidPerGP_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MatchingUEidPerGP_Item_1,
+ 1, /* Elements count */
+ &asn_SPC_MatchingUEidPerGP_Item_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidPerGP_Item_H_
+#define _MatchingUEidPerGP_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MatchingUEidPerGP_Item__matchedPerGP_PR {
+ MatchingUEidPerGP_Item__matchedPerGP_PR_NOTHING, /* No components present */
+ MatchingUEidPerGP_Item__matchedPerGP_PR_noUEmatched,
+ MatchingUEidPerGP_Item__matchedPerGP_PR_oneOrMoreUEmatched
+ /* Extensions may appear below */
+
+} MatchingUEidPerGP_Item__matchedPerGP_PR;
+typedef enum MatchingUEidPerGP_Item__matchedPerGP__noUEmatched {
+ MatchingUEidPerGP_Item__matchedPerGP__noUEmatched_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MatchingUEidPerGP_Item__matchedPerGP__noUEmatched;
+
+/* Forward declarations */
+struct MatchingUEidList_PerGP;
+
+/* MatchingUEidPerGP-Item */
+typedef struct MatchingUEidPerGP_Item {
+ struct MatchingUEidPerGP_Item__matchedPerGP {
+ MatchingUEidPerGP_Item__matchedPerGP_PR present;
+ union MatchingUEidPerGP_Item__matchedPerGP_u {
+ long noUEmatched;
+ struct MatchingUEidList_PerGP *oneOrMoreUEmatched;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } matchedPerGP;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerGP_Item_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_noUEmatched_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerGP_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerGP_Item_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerGP.h"
+
+#include "MatchingUEidPerGP-Item.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidPerGP_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidPerGP_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MatchingUEidPerGP_Item,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerGP_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerGP_specs_1 = {
+ sizeof(struct MatchingUEidPerGP),
+ offsetof(struct MatchingUEidPerGP, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP = {
+ "MatchingUEidPerGP",
+ "MatchingUEidPerGP",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MatchingUEidPerGP_tags_1,
+ sizeof(asn_DEF_MatchingUEidPerGP_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerGP_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidPerGP_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidPerGP_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerGP_tags_1[0]), /* 1 */
+ { &asn_OER_type_MatchingUEidPerGP_constr_1, &asn_PER_type_MatchingUEidPerGP_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MatchingUEidPerGP_1,
+ 1, /* Single element */
+ &asn_SPC_MatchingUEidPerGP_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidPerGP_H_
+#define _MatchingUEidPerGP_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 MatchingUEidPerGP_Item;
+
+/* MatchingUEidPerGP */
+typedef struct MatchingUEidPerGP {
+ A_SEQUENCE_OF(struct MatchingUEidPerGP_Item) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerGP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerGP_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidPerGP_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerGP_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerSubItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUEidPerSubItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerSubItem, ueID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_UEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ueID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerSubItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidPerSubItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerSubItem_specs_1 = {
+ sizeof(struct MatchingUEidPerSubItem),
+ offsetof(struct MatchingUEidPerSubItem, _asn_ctx),
+ asn_MAP_MatchingUEidPerSubItem_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubItem = {
+ "MatchingUEidPerSubItem",
+ "MatchingUEidPerSubItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MatchingUEidPerSubItem_tags_1,
+ sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidPerSubItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MatchingUEidPerSubItem_1,
+ 1, /* Elements count */
+ &asn_SPC_MatchingUEidPerSubItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidPerSubItem_H_
+#define _MatchingUEidPerSubItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUEidPerSubItem */
+typedef struct MatchingUEidPerSubItem {
+ UEID_t ueID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerSubItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerSubItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerSubItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerSubItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerSubList.h"
+
+#include "MatchingUEidPerSubItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidPerSubList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(2..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidPerSubList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 2, 65535 } /* (SIZE(2..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidPerSubList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MatchingUEidPerSubItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerSubList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerSubList_specs_1 = {
+ sizeof(struct MatchingUEidPerSubList),
+ offsetof(struct MatchingUEidPerSubList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubList = {
+ "MatchingUEidPerSubList",
+ "MatchingUEidPerSubList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MatchingUEidPerSubList_tags_1,
+ sizeof(asn_DEF_MatchingUEidPerSubList_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerSubList_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUEidPerSubList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUEidPerSubList_tags_1)
+ /sizeof(asn_DEF_MatchingUEidPerSubList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MatchingUEidPerSubList_constr_1, &asn_PER_type_MatchingUEidPerSubList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MatchingUEidPerSubList_1,
+ 1, /* Single element */
+ &asn_SPC_MatchingUEidPerSubList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUEidPerSubList_H_
+#define _MatchingUEidPerSubList_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 MatchingUEidPerSubItem;
+
+/* MatchingUEidPerSubList */
+typedef struct MatchingUEidPerSubList {
+ A_SEQUENCE_OF(struct MatchingUEidPerSubItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerSubList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerSubList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerSubList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidPerSubList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerSubList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUeCondPerSubItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MatchingUeCondPerSubItem, testCondInfo),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TestCondInfo,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "testCondInfo"
+ },
+ { ATF_POINTER, 1, offsetof(struct MatchingUeCondPerSubItem, logicalOR),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LogicalOR,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "logicalOR"
+ },
+};
+static const int asn_MAP_MatchingUeCondPerSubItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MatchingUeCondPerSubItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUeCondPerSubItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* testCondInfo */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUeCondPerSubItem_specs_1 = {
+ sizeof(struct MatchingUeCondPerSubItem),
+ offsetof(struct MatchingUeCondPerSubItem, _asn_ctx),
+ asn_MAP_MatchingUeCondPerSubItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_MatchingUeCondPerSubItem_oms_1, /* Optional members */
+ 0, 1, /* Root/Additions */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubItem = {
+ "MatchingUeCondPerSubItem",
+ "MatchingUeCondPerSubItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MatchingUeCondPerSubItem_tags_1,
+ sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1)
+ /sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUeCondPerSubItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1)
+ /sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MatchingUeCondPerSubItem_1,
+ 2, /* Elements count */
+ &asn_SPC_MatchingUeCondPerSubItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUeCondPerSubItem_H_
+#define _MatchingUeCondPerSubItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TestCondInfo.h"
+#include "LogicalOR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUeCondPerSubItem */
+typedef struct MatchingUeCondPerSubItem {
+ TestCondInfo_t testCondInfo;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ LogicalOR_t *logicalOR; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUeCondPerSubItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUeCondPerSubItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUeCondPerSubItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUeCondPerSubList.h"
+
+#include "MatchingUeCondPerSubItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUeCondPerSubList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32768)) */};
+asn_per_constraints_t asn_PER_type_MatchingUeCondPerSubList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 15, 15, 1, 32768 } /* (SIZE(1..32768)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MatchingUeCondPerSubItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUeCondPerSubList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUeCondPerSubList_specs_1 = {
+ sizeof(struct MatchingUeCondPerSubList),
+ offsetof(struct MatchingUeCondPerSubList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubList = {
+ "MatchingUeCondPerSubList",
+ "MatchingUeCondPerSubList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MatchingUeCondPerSubList_tags_1,
+ sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1)
+ /sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1[0]), /* 1 */
+ asn_DEF_MatchingUeCondPerSubList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1)
+ /sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MatchingUeCondPerSubList_constr_1, &asn_PER_type_MatchingUeCondPerSubList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MatchingUeCondPerSubList_1,
+ 1, /* Single element */
+ &asn_SPC_MatchingUeCondPerSubList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MatchingUeCondPerSubList_H_
+#define _MatchingUeCondPerSubList_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 MatchingUeCondPerSubItem;
+
+/* MatchingUeCondPerSubList */
+typedef struct MatchingUeCondPerSubList {
+ A_SEQUENCE_OF(struct MatchingUeCondPerSubItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MatchingUeCondPerSubList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUeCondPerSubList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUeCondPerSubList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUeCondPerSubList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondItem.h"
+
+#include "BinRangeDefinition.h"
+asn_TYPE_member_t asn_MBR_MeasurementCondItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondItem, measType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_MeasurementType,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measType"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondItem, matchingCond),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingCondList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingCond"
+ },
+ { ATF_POINTER, 1, offsetof(struct MeasurementCondItem, binRangeDef),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinRangeDefinition,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binRangeDef"
+ },
+};
+static const int asn_MAP_MeasurementCondItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MeasurementCondItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementCondItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* matchingCond */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeDef */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondItem_specs_1 = {
+ sizeof(struct MeasurementCondItem),
+ offsetof(struct MeasurementCondItem, _asn_ctx),
+ asn_MAP_MeasurementCondItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_MeasurementCondItem_oms_1, /* Optional members */
+ 0, 1, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondItem = {
+ "MeasurementCondItem",
+ "MeasurementCondItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MeasurementCondItem_tags_1,
+ sizeof(asn_DEF_MeasurementCondItem_tags_1)
+ /sizeof(asn_DEF_MeasurementCondItem_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementCondItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementCondItem_tags_1)
+ /sizeof(asn_DEF_MeasurementCondItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MeasurementCondItem_1,
+ 3, /* Elements count */
+ &asn_SPC_MeasurementCondItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementCondItem_H_
+#define _MeasurementCondItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "MatchingCondList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeDefinition;
+
+/* MeasurementCondItem */
+typedef struct MeasurementCondItem {
+ MeasurementType_t measType;
+ MatchingCondList_t matchingCond;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct BinRangeDefinition *binRangeDef; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementCondItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondList.h"
+
+#include "MeasurementCondItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementCondList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementCondList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementCondList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MeasurementCondItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementCondList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementCondList_specs_1 = {
+ sizeof(struct MeasurementCondList),
+ offsetof(struct MeasurementCondList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondList = {
+ "MeasurementCondList",
+ "MeasurementCondList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MeasurementCondList_tags_1,
+ sizeof(asn_DEF_MeasurementCondList_tags_1)
+ /sizeof(asn_DEF_MeasurementCondList_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementCondList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementCondList_tags_1)
+ /sizeof(asn_DEF_MeasurementCondList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementCondList_constr_1, &asn_PER_type_MeasurementCondList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MeasurementCondList_1,
+ 1, /* Single element */
+ &asn_SPC_MeasurementCondList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementCondList_H_
+#define _MeasurementCondList_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 MeasurementCondItem;
+
+/* MeasurementCondList */
+typedef struct MeasurementCondList {
+ A_SEQUENCE_OF(struct MeasurementCondItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementCondList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementCondList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondUEidItem.h"
+
+#include "MatchingUEidList.h"
+#include "MatchingUEidPerGP.h"
+asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondUEidItem, measType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_MeasurementType,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measType"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondUEidItem, matchingCond),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingCondList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingCond"
+ },
+ { ATF_POINTER, 2, offsetof(struct MeasurementCondUEidItem, matchingUEidList),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingUEidList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingUEidList"
+ },
+ { ATF_POINTER, 1, offsetof(struct MeasurementCondUEidItem, matchingUEidPerGP),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MatchingUEidPerGP,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "matchingUEidPerGP"
+ },
+};
+static const int asn_MAP_MeasurementCondUEidItem_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_MeasurementCondUEidItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementCondUEidItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* matchingCond */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* matchingUEidList */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* matchingUEidPerGP */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1 = {
+ sizeof(struct MeasurementCondUEidItem),
+ offsetof(struct MeasurementCondUEidItem, _asn_ctx),
+ asn_MAP_MeasurementCondUEidItem_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_MeasurementCondUEidItem_oms_1, /* Optional members */
+ 1, 1, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem = {
+ "MeasurementCondUEidItem",
+ "MeasurementCondUEidItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MeasurementCondUEidItem_tags_1,
+ sizeof(asn_DEF_MeasurementCondUEidItem_tags_1)
+ /sizeof(asn_DEF_MeasurementCondUEidItem_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementCondUEidItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementCondUEidItem_tags_1)
+ /sizeof(asn_DEF_MeasurementCondUEidItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MeasurementCondUEidItem_1,
+ 4, /* Elements count */
+ &asn_SPC_MeasurementCondUEidItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementCondUEidItem_H_
+#define _MeasurementCondUEidItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "MatchingCondList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidList;
+struct MatchingUEidPerGP;
+
+/* MeasurementCondUEidItem */
+typedef struct MeasurementCondUEidItem {
+ MeasurementType_t measType;
+ MatchingCondList_t matchingCond;
+ struct MatchingUEidList *matchingUEidList; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct MatchingUEidPerGP *matchingUEidPerGP; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementCondUEidItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondUEidItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondUEidList.h"
+
+#include "MeasurementCondUEidItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementCondUEidList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MeasurementCondUEidItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementCondUEidList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1 = {
+ sizeof(struct MeasurementCondUEidList),
+ offsetof(struct MeasurementCondUEidList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList = {
+ "MeasurementCondUEidList",
+ "MeasurementCondUEidList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MeasurementCondUEidList_tags_1,
+ sizeof(asn_DEF_MeasurementCondUEidList_tags_1)
+ /sizeof(asn_DEF_MeasurementCondUEidList_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementCondUEidList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementCondUEidList_tags_1)
+ /sizeof(asn_DEF_MeasurementCondUEidList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementCondUEidList_constr_1, &asn_PER_type_MeasurementCondUEidList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MeasurementCondUEidList_1,
+ 1, /* Single element */
+ &asn_SPC_MeasurementCondUEidList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementCondUEidList_H_
+#define _MeasurementCondUEidList_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 MeasurementCondUEidItem;
+
+/* MeasurementCondUEidList */
+typedef struct MeasurementCondUEidList {
+ A_SEQUENCE_OF(struct MeasurementCondUEidItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementCondUEidList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondUEidList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementData.h"
+
+#include "MeasurementDataItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementData_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementData_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementData_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MeasurementDataItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementData_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementData_specs_1 = {
+ sizeof(struct MeasurementData),
+ offsetof(struct MeasurementData, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementData = {
+ "MeasurementData",
+ "MeasurementData",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MeasurementData_tags_1,
+ sizeof(asn_DEF_MeasurementData_tags_1)
+ /sizeof(asn_DEF_MeasurementData_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementData_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementData_tags_1)
+ /sizeof(asn_DEF_MeasurementData_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementData_constr_1, &asn_PER_type_MeasurementData_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MeasurementData_1,
+ 1, /* Single element */
+ &asn_SPC_MeasurementData_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementData_H_
+#define _MeasurementData_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 MeasurementDataItem;
+
+/* MeasurementData */
+typedef struct MeasurementData {
+ A_SEQUENCE_OF(struct MeasurementDataItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementData_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementData;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementData_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementData_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementData_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementData_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementDataItem.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_incompleteFlag_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_incompleteFlag_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_incompleteFlag_value2enum_3[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_incompleteFlag_enum2value_3[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_incompleteFlag_specs_3 = {
+ asn_MAP_incompleteFlag_value2enum_3, /* "tag" => N; sorted by tag */
+ asn_MAP_incompleteFlag_enum2value_3, /* 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_incompleteFlag_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_incompleteFlag_3 = {
+ "incompleteFlag",
+ "incompleteFlag",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_incompleteFlag_tags_3,
+ sizeof(asn_DEF_incompleteFlag_tags_3)
+ /sizeof(asn_DEF_incompleteFlag_tags_3[0]) - 1, /* 1 */
+ asn_DEF_incompleteFlag_tags_3, /* Same as above */
+ sizeof(asn_DEF_incompleteFlag_tags_3)
+ /sizeof(asn_DEF_incompleteFlag_tags_3[0]), /* 2 */
+ { &asn_OER_type_incompleteFlag_constr_3, &asn_PER_type_incompleteFlag_constr_3, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_incompleteFlag_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementDataItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementDataItem, measRecord),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementRecord,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measRecord"
+ },
+ { ATF_POINTER, 1, offsetof(struct MeasurementDataItem, incompleteFlag),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_incompleteFlag_3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "incompleteFlag"
+ },
+};
+static const int asn_MAP_MeasurementDataItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MeasurementDataItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementDataItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measRecord */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* incompleteFlag */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementDataItem_specs_1 = {
+ sizeof(struct MeasurementDataItem),
+ offsetof(struct MeasurementDataItem, _asn_ctx),
+ asn_MAP_MeasurementDataItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_MeasurementDataItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementDataItem = {
+ "MeasurementDataItem",
+ "MeasurementDataItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MeasurementDataItem_tags_1,
+ sizeof(asn_DEF_MeasurementDataItem_tags_1)
+ /sizeof(asn_DEF_MeasurementDataItem_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementDataItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementDataItem_tags_1)
+ /sizeof(asn_DEF_MeasurementDataItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MeasurementDataItem_1,
+ 2, /* Elements count */
+ &asn_SPC_MeasurementDataItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementDataItem_H_
+#define _MeasurementDataItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementRecord.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementDataItem__incompleteFlag {
+ MeasurementDataItem__incompleteFlag_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementDataItem__incompleteFlag;
+
+/* MeasurementDataItem */
+typedef struct MeasurementDataItem {
+ MeasurementRecord_t measRecord;
+ long *incompleteFlag; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementDataItem_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_incompleteFlag_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementDataItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementDataItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementDataItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementDataItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfo-Action-Item.h"
+
+#include "BinRangeDefinition.h"
+asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfo_Action_Item, measName),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementTypeName,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measName"
+ },
+ { ATF_POINTER, 2, offsetof(struct MeasurementInfo_Action_Item, measID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementTypeID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measID"
+ },
+ { ATF_POINTER, 1, offsetof(struct MeasurementInfo_Action_Item, binRangeDef),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BinRangeDefinition,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "binRangeDef"
+ },
+};
+static const int asn_MAP_MeasurementInfo_Action_Item_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasurementInfo_Action_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfo_Action_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeDef */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfo_Action_Item_specs_1 = {
+ sizeof(struct MeasurementInfo_Action_Item),
+ offsetof(struct MeasurementInfo_Action_Item, _asn_ctx),
+ asn_MAP_MeasurementInfo_Action_Item_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_MeasurementInfo_Action_Item_oms_1, /* Optional members */
+ 1, 1, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_Item = {
+ "MeasurementInfo-Action-Item",
+ "MeasurementInfo-Action-Item",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MeasurementInfo_Action_Item_tags_1,
+ sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1)
+ /sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementInfo_Action_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1)
+ /sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MeasurementInfo_Action_Item_1,
+ 3, /* Elements count */
+ &asn_SPC_MeasurementInfo_Action_Item_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementInfo_Action_Item_H_
+#define _MeasurementInfo_Action_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementTypeName.h"
+#include "MeasurementTypeID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeDefinition;
+
+/* MeasurementInfo-Action-Item */
+typedef struct MeasurementInfo_Action_Item {
+ MeasurementTypeName_t measName;
+ MeasurementTypeID_t *measID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct BinRangeDefinition *binRangeDef; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementInfo_Action_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfo_Action_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfo_Action_Item_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfo-Action-List.h"
+
+#include "MeasurementInfo-Action-Item.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementInfo_Action_List_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementInfo_Action_List_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MeasurementInfo_Action_Item,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementInfo_Action_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementInfo_Action_List_specs_1 = {
+ sizeof(struct MeasurementInfo_Action_List),
+ offsetof(struct MeasurementInfo_Action_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_List = {
+ "MeasurementInfo-Action-List",
+ "MeasurementInfo-Action-List",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MeasurementInfo_Action_List_tags_1,
+ sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1)
+ /sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementInfo_Action_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1)
+ /sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementInfo_Action_List_constr_1, &asn_PER_type_MeasurementInfo_Action_List_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MeasurementInfo_Action_List_1,
+ 1, /* Single element */
+ &asn_SPC_MeasurementInfo_Action_List_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementInfo_Action_List_H_
+#define _MeasurementInfo_Action_List_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 MeasurementInfo_Action_Item;
+
+/* MeasurementInfo-Action-List */
+typedef struct MeasurementInfo_Action_List {
+ A_SEQUENCE_OF(struct MeasurementInfo_Action_Item) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementInfo_Action_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_List;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfo_Action_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_List_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementInfo_Action_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfo_Action_List_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfoItem.h"
+
+asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, measType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_MeasurementType,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measType"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, labelInfoList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LabelInfoList,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "labelInfoList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementInfoItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfoItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* labelInfoList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1 = {
+ sizeof(struct MeasurementInfoItem),
+ offsetof(struct MeasurementInfoItem, _asn_ctx),
+ asn_MAP_MeasurementInfoItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem = {
+ "MeasurementInfoItem",
+ "MeasurementInfoItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MeasurementInfoItem_tags_1,
+ sizeof(asn_DEF_MeasurementInfoItem_tags_1)
+ /sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementInfoItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementInfoItem_tags_1)
+ /sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MeasurementInfoItem_1,
+ 2, /* Elements count */
+ &asn_SPC_MeasurementInfoItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementInfoItem_H_
+#define _MeasurementInfoItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "LabelInfoList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementInfoItem */
+typedef struct MeasurementInfoItem {
+ MeasurementType_t measType;
+ LabelInfoList_t labelInfoList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementInfoItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfoItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfoList.h"
+
+#include "MeasurementInfoItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementInfoList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MeasurementInfoItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementInfoList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1 = {
+ sizeof(struct MeasurementInfoList),
+ offsetof(struct MeasurementInfoList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList = {
+ "MeasurementInfoList",
+ "MeasurementInfoList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MeasurementInfoList_tags_1,
+ sizeof(asn_DEF_MeasurementInfoList_tags_1)
+ /sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementInfoList_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementInfoList_tags_1)
+ /sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementInfoList_constr_1, &asn_PER_type_MeasurementInfoList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MeasurementInfoList_1,
+ 1, /* Single element */
+ &asn_SPC_MeasurementInfoList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementInfoList_H_
+#define _MeasurementInfoList_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 MeasurementInfoItem;
+
+/* MeasurementInfoList */
+typedef struct MeasurementInfoList {
+ A_SEQUENCE_OF(struct MeasurementInfoItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfoList_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementLabel.h"
+
+#include "S-NSSAI.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_aRPmax_constraint_1(const 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 >= 1 && value <= 15)) {
+ /* 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_aRPmin_constraint_1(const 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 >= 1 && value <= 15)) {
+ /* 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_bitrateRange_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_layerMU_MIMO_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_distBinX_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_distBinY_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_distBinZ_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_ssbIndex_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_nonGoB_BFmode_Index_constraint_1(const 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 >= 1 && value <= 65535)) {
+ /* 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_mIMO_mode_Index_constraint_1(const 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 >= 1 && value <= 2)) {
+ /* 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_oer_constraints_t asn_OER_type_noLabel_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_noLabel_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sUM_constr_16 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_sUM_constr_16 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_preLabelOverride_constr_22 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_preLabelOverride_constr_22 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_startEndInd_constr_25 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_startEndInd_constr_25 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_min_constr_29 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_min_constr_29 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_max_constr_32 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_max_constr_32 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_avg_constr_35 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_avg_constr_35 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aRPmax_constr_12 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_aRPmax_constr_12 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 15 } /* (1..15,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aRPmin_constr_13 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_aRPmin_constr_13 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 15 } /* (1..15,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_bitrateRange_constr_14 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_bitrateRange_constr_14 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_layerMU_MIMO_constr_15 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_layerMU_MIMO_constr_15 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_distBinX_constr_19 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_distBinX_constr_19 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_distBinY_constr_20 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_distBinY_constr_20 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_distBinZ_constr_21 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_distBinZ_constr_21 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ssbIndex_constr_39 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_ssbIndex_constr_39 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nonGoB_BFmode_Index_constr_40 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_nonGoB_BFmode_Index_constr_40 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mIMO_mode_Index_constr_41 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_mIMO_mode_Index_constr_41 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 1, 2 } /* (1..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_noLabel_value2enum_2[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_noLabel_enum2value_2[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_noLabel_specs_2 = {
+ asn_MAP_noLabel_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_noLabel_enum2value_2, /* 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_noLabel_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_noLabel_2 = {
+ "noLabel",
+ "noLabel",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_noLabel_tags_2,
+ sizeof(asn_DEF_noLabel_tags_2)
+ /sizeof(asn_DEF_noLabel_tags_2[0]) - 1, /* 1 */
+ asn_DEF_noLabel_tags_2, /* Same as above */
+ sizeof(asn_DEF_noLabel_tags_2)
+ /sizeof(asn_DEF_noLabel_tags_2[0]), /* 2 */
+ { &asn_OER_type_noLabel_constr_2, &asn_PER_type_noLabel_constr_2, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_noLabel_specs_2 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sUM_value2enum_16[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_sUM_enum2value_16[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sUM_specs_16 = {
+ asn_MAP_sUM_value2enum_16, /* "tag" => N; sorted by tag */
+ asn_MAP_sUM_enum2value_16, /* 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_sUM_tags_16[] = {
+ (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sUM_16 = {
+ "sUM",
+ "sUM",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_sUM_tags_16,
+ sizeof(asn_DEF_sUM_tags_16)
+ /sizeof(asn_DEF_sUM_tags_16[0]) - 1, /* 1 */
+ asn_DEF_sUM_tags_16, /* Same as above */
+ sizeof(asn_DEF_sUM_tags_16)
+ /sizeof(asn_DEF_sUM_tags_16[0]), /* 2 */
+ { &asn_OER_type_sUM_constr_16, &asn_PER_type_sUM_constr_16, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_sUM_specs_16 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_preLabelOverride_value2enum_22[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_preLabelOverride_enum2value_22[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_preLabelOverride_specs_22 = {
+ asn_MAP_preLabelOverride_value2enum_22, /* "tag" => N; sorted by tag */
+ asn_MAP_preLabelOverride_enum2value_22, /* 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_preLabelOverride_tags_22[] = {
+ (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_preLabelOverride_22 = {
+ "preLabelOverride",
+ "preLabelOverride",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_preLabelOverride_tags_22,
+ sizeof(asn_DEF_preLabelOverride_tags_22)
+ /sizeof(asn_DEF_preLabelOverride_tags_22[0]) - 1, /* 1 */
+ asn_DEF_preLabelOverride_tags_22, /* Same as above */
+ sizeof(asn_DEF_preLabelOverride_tags_22)
+ /sizeof(asn_DEF_preLabelOverride_tags_22[0]), /* 2 */
+ { &asn_OER_type_preLabelOverride_constr_22, &asn_PER_type_preLabelOverride_constr_22, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_preLabelOverride_specs_22 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_startEndInd_value2enum_25[] = {
+ { 0, 5, "start" },
+ { 1, 3, "end" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_startEndInd_enum2value_25[] = {
+ 1, /* end(1) */
+ 0 /* start(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_startEndInd_specs_25 = {
+ asn_MAP_startEndInd_value2enum_25, /* "tag" => N; sorted by tag */
+ asn_MAP_startEndInd_enum2value_25, /* 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_startEndInd_tags_25[] = {
+ (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_startEndInd_25 = {
+ "startEndInd",
+ "startEndInd",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_startEndInd_tags_25,
+ sizeof(asn_DEF_startEndInd_tags_25)
+ /sizeof(asn_DEF_startEndInd_tags_25[0]) - 1, /* 1 */
+ asn_DEF_startEndInd_tags_25, /* Same as above */
+ sizeof(asn_DEF_startEndInd_tags_25)
+ /sizeof(asn_DEF_startEndInd_tags_25[0]), /* 2 */
+ { &asn_OER_type_startEndInd_constr_25, &asn_PER_type_startEndInd_constr_25, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_startEndInd_specs_25 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_min_value2enum_29[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_min_enum2value_29[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_min_specs_29 = {
+ asn_MAP_min_value2enum_29, /* "tag" => N; sorted by tag */
+ asn_MAP_min_enum2value_29, /* 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_min_tags_29[] = {
+ (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_min_29 = {
+ "min",
+ "min",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_min_tags_29,
+ sizeof(asn_DEF_min_tags_29)
+ /sizeof(asn_DEF_min_tags_29[0]) - 1, /* 1 */
+ asn_DEF_min_tags_29, /* Same as above */
+ sizeof(asn_DEF_min_tags_29)
+ /sizeof(asn_DEF_min_tags_29[0]), /* 2 */
+ { &asn_OER_type_min_constr_29, &asn_PER_type_min_constr_29, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_min_specs_29 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_max_value2enum_32[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_max_enum2value_32[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_max_specs_32 = {
+ asn_MAP_max_value2enum_32, /* "tag" => N; sorted by tag */
+ asn_MAP_max_enum2value_32, /* 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_max_tags_32[] = {
+ (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_max_32 = {
+ "max",
+ "max",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_max_tags_32,
+ sizeof(asn_DEF_max_tags_32)
+ /sizeof(asn_DEF_max_tags_32[0]) - 1, /* 1 */
+ asn_DEF_max_tags_32, /* Same as above */
+ sizeof(asn_DEF_max_tags_32)
+ /sizeof(asn_DEF_max_tags_32[0]), /* 2 */
+ { &asn_OER_type_max_constr_32, &asn_PER_type_max_constr_32, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_max_specs_32 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_avg_value2enum_35[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_avg_enum2value_35[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_avg_specs_35 = {
+ asn_MAP_avg_value2enum_35, /* "tag" => N; sorted by tag */
+ asn_MAP_avg_enum2value_35, /* 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_avg_tags_35[] = {
+ (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_avg_35 = {
+ "avg",
+ "avg",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_avg_tags_35,
+ sizeof(asn_DEF_avg_tags_35)
+ /sizeof(asn_DEF_avg_tags_35[0]) - 1, /* 1 */
+ asn_DEF_avg_tags_35, /* Same as above */
+ sizeof(asn_DEF_avg_tags_35)
+ /sizeof(asn_DEF_avg_tags_35[0]), /* 2 */
+ { &asn_OER_type_avg_constr_35, &asn_PER_type_avg_constr_35, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_avg_specs_35 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementLabel_1[] = {
+ { ATF_POINTER, 24, offsetof(struct MeasurementLabel, noLabel),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_noLabel_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "noLabel"
+ },
+ { ATF_POINTER, 23, offsetof(struct MeasurementLabel, plmnID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "plmnID"
+ },
+ { ATF_POINTER, 22, offsetof(struct MeasurementLabel, sliceID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_S_NSSAI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "sliceID"
+ },
+ { ATF_POINTER, 21, offsetof(struct MeasurementLabel, fiveQI),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_FiveQI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "fiveQI"
+ },
+ { ATF_POINTER, 20, offsetof(struct MeasurementLabel, qFI),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_QosFlowIdentifier,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "qFI"
+ },
+ { ATF_POINTER, 19, offsetof(struct MeasurementLabel, qCI),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_QCI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "qCI"
+ },
+ { ATF_POINTER, 18, offsetof(struct MeasurementLabel, qCImax),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_QCI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "qCImax"
+ },
+ { ATF_POINTER, 17, offsetof(struct MeasurementLabel, qCImin),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_QCI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "qCImin"
+ },
+ { ATF_POINTER, 16, offsetof(struct MeasurementLabel, aRPmax),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_aRPmax_constr_12, &asn_PER_memb_aRPmax_constr_12, memb_aRPmax_constraint_1 },
+ 0, 0, /* No default value */
+ "aRPmax"
+ },
+ { ATF_POINTER, 15, offsetof(struct MeasurementLabel, aRPmin),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_aRPmin_constr_13, &asn_PER_memb_aRPmin_constr_13, memb_aRPmin_constraint_1 },
+ 0, 0, /* No default value */
+ "aRPmin"
+ },
+ { ATF_POINTER, 14, offsetof(struct MeasurementLabel, bitrateRange),
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_bitrateRange_constr_14, &asn_PER_memb_bitrateRange_constr_14, memb_bitrateRange_constraint_1 },
+ 0, 0, /* No default value */
+ "bitrateRange"
+ },
+ { ATF_POINTER, 13, offsetof(struct MeasurementLabel, layerMU_MIMO),
+ (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_layerMU_MIMO_constr_15, &asn_PER_memb_layerMU_MIMO_constr_15, memb_layerMU_MIMO_constraint_1 },
+ 0, 0, /* No default value */
+ "layerMU-MIMO"
+ },
+ { ATF_POINTER, 12, offsetof(struct MeasurementLabel, sUM),
+ (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_sUM_16,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "sUM"
+ },
+ { ATF_POINTER, 11, offsetof(struct MeasurementLabel, distBinX),
+ (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_distBinX_constr_19, &asn_PER_memb_distBinX_constr_19, memb_distBinX_constraint_1 },
+ 0, 0, /* No default value */
+ "distBinX"
+ },
+ { ATF_POINTER, 10, offsetof(struct MeasurementLabel, distBinY),
+ (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_distBinY_constr_20, &asn_PER_memb_distBinY_constr_20, memb_distBinY_constraint_1 },
+ 0, 0, /* No default value */
+ "distBinY"
+ },
+ { ATF_POINTER, 9, offsetof(struct MeasurementLabel, distBinZ),
+ (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_distBinZ_constr_21, &asn_PER_memb_distBinZ_constr_21, memb_distBinZ_constraint_1 },
+ 0, 0, /* No default value */
+ "distBinZ"
+ },
+ { ATF_POINTER, 8, offsetof(struct MeasurementLabel, preLabelOverride),
+ (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_preLabelOverride_22,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "preLabelOverride"
+ },
+ { ATF_POINTER, 7, offsetof(struct MeasurementLabel, startEndInd),
+ (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_startEndInd_25,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "startEndInd"
+ },
+ { ATF_POINTER, 6, offsetof(struct MeasurementLabel, min),
+ (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_min_29,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "min"
+ },
+ { ATF_POINTER, 5, offsetof(struct MeasurementLabel, max),
+ (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_max_32,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "max"
+ },
+ { ATF_POINTER, 4, offsetof(struct MeasurementLabel, avg),
+ (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_avg_35,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "avg"
+ },
+ { ATF_POINTER, 3, offsetof(struct MeasurementLabel, ssbIndex),
+ (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_ssbIndex_constr_39, &asn_PER_memb_ssbIndex_constr_39, memb_ssbIndex_constraint_1 },
+ 0, 0, /* No default value */
+ "ssbIndex"
+ },
+ { ATF_POINTER, 2, offsetof(struct MeasurementLabel, nonGoB_BFmode_Index),
+ (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_nonGoB_BFmode_Index_constr_40, &asn_PER_memb_nonGoB_BFmode_Index_constr_40, memb_nonGoB_BFmode_Index_constraint_1 },
+ 0, 0, /* No default value */
+ "nonGoB-BFmode-Index"
+ },
+ { ATF_POINTER, 1, offsetof(struct MeasurementLabel, mIMO_mode_Index),
+ (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_mIMO_mode_Index_constr_41, &asn_PER_memb_mIMO_mode_Index_constr_41, memb_mIMO_mode_Index_constraint_1 },
+ 0, 0, /* No default value */
+ "mIMO-mode-Index"
+ },
+};
+static const int asn_MAP_MeasurementLabel_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
+static const ber_tlv_tag_t asn_DEF_MeasurementLabel_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementLabel_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* noLabel */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* plmnID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sliceID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* fiveQI */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* qFI */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* qCI */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* qCImax */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* qCImin */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* aRPmax */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* aRPmin */
+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* bitrateRange */
+ { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* layerMU-MIMO */
+ { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sUM */
+ { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* distBinX */
+ { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* distBinY */
+ { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* distBinZ */
+ { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* preLabelOverride */
+ { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* startEndInd */
+ { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* min */
+ { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* max */
+ { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* avg */
+ { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* ssbIndex */
+ { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* nonGoB-BFmode-Index */
+ { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 } /* mIMO-mode-Index */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementLabel_specs_1 = {
+ sizeof(struct MeasurementLabel),
+ offsetof(struct MeasurementLabel, _asn_ctx),
+ asn_MAP_MeasurementLabel_tag2el_1,
+ 24, /* Count of tags in the map */
+ asn_MAP_MeasurementLabel_oms_1, /* Optional members */
+ 21, 3, /* Root/Additions */
+ 21, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementLabel = {
+ "MeasurementLabel",
+ "MeasurementLabel",
+ &asn_OP_SEQUENCE,
+ asn_DEF_MeasurementLabel_tags_1,
+ sizeof(asn_DEF_MeasurementLabel_tags_1)
+ /sizeof(asn_DEF_MeasurementLabel_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementLabel_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementLabel_tags_1)
+ /sizeof(asn_DEF_MeasurementLabel_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_MeasurementLabel_1,
+ 24, /* Elements count */
+ &asn_SPC_MeasurementLabel_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementLabel_H_
+#define _MeasurementLabel_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "PLMNIdentity.h"
+#include "FiveQI.h"
+#include "QosFlowIdentifier.h"
+#include "QCI.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementLabel__noLabel {
+ MeasurementLabel__noLabel_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__noLabel;
+typedef enum MeasurementLabel__sUM {
+ MeasurementLabel__sUM_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__sUM;
+typedef enum MeasurementLabel__preLabelOverride {
+ MeasurementLabel__preLabelOverride_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__preLabelOverride;
+typedef enum MeasurementLabel__startEndInd {
+ MeasurementLabel__startEndInd_start = 0,
+ MeasurementLabel__startEndInd_end = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__startEndInd;
+typedef enum MeasurementLabel__min {
+ MeasurementLabel__min_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__min;
+typedef enum MeasurementLabel__max {
+ MeasurementLabel__max_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__max;
+typedef enum MeasurementLabel__avg {
+ MeasurementLabel__avg_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_MeasurementLabel__avg;
+
+/* Forward declarations */
+struct S_NSSAI;
+
+/* MeasurementLabel */
+typedef struct MeasurementLabel {
+ long *noLabel; /* OPTIONAL */
+ PLMNIdentity_t *plmnID; /* OPTIONAL */
+ struct S_NSSAI *sliceID; /* OPTIONAL */
+ FiveQI_t *fiveQI; /* OPTIONAL */
+ QosFlowIdentifier_t *qFI; /* OPTIONAL */
+ QCI_t *qCI; /* OPTIONAL */
+ QCI_t *qCImax; /* OPTIONAL */
+ QCI_t *qCImin; /* OPTIONAL */
+ long *aRPmax; /* OPTIONAL */
+ long *aRPmin; /* OPTIONAL */
+ long *bitrateRange; /* OPTIONAL */
+ long *layerMU_MIMO; /* OPTIONAL */
+ long *sUM; /* OPTIONAL */
+ long *distBinX; /* OPTIONAL */
+ long *distBinY; /* OPTIONAL */
+ long *distBinZ; /* OPTIONAL */
+ long *preLabelOverride; /* OPTIONAL */
+ long *startEndInd; /* OPTIONAL */
+ long *min; /* OPTIONAL */
+ long *max; /* OPTIONAL */
+ long *avg; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ long *ssbIndex; /* OPTIONAL */
+ long *nonGoB_BFmode_Index; /* OPTIONAL */
+ long *mIMO_mode_Index; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementLabel_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_noLabel_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sUM_16; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_preLabelOverride_22; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_startEndInd_25; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_min_29; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_max_32; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_avg_35; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementLabel;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementLabel_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementLabel_1[24];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementLabel_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementRecord.h"
+
+#include "MeasurementRecordItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementRecord_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..2147483647)) */};
+asn_per_constraints_t asn_PER_type_MeasurementRecord_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 31, -1, 1, 2147483647 } /* (SIZE(1..2147483647)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementRecord_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_MeasurementRecordItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementRecord_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementRecord_specs_1 = {
+ sizeof(struct MeasurementRecord),
+ offsetof(struct MeasurementRecord, _asn_ctx),
+ 2, /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementRecord = {
+ "MeasurementRecord",
+ "MeasurementRecord",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_MeasurementRecord_tags_1,
+ sizeof(asn_DEF_MeasurementRecord_tags_1)
+ /sizeof(asn_DEF_MeasurementRecord_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementRecord_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementRecord_tags_1)
+ /sizeof(asn_DEF_MeasurementRecord_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementRecord_constr_1, &asn_PER_type_MeasurementRecord_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_MeasurementRecord_1,
+ 1, /* Single element */
+ &asn_SPC_MeasurementRecord_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementRecord_H_
+#define _MeasurementRecord_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 MeasurementRecordItem;
+
+/* MeasurementRecord */
+typedef struct MeasurementRecord {
+ A_SEQUENCE_OF(struct MeasurementRecordItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementRecord_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementRecord;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementRecord_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementRecord_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementRecord_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementRecord_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementRecordItem.h"
+
+static int
+integer_2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_integer_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+static asn_oer_constraints_t asn_OER_type_integer_constr_2 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+static asn_per_constraints_t asn_PER_type_integer_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_integer_constr_2 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+static asn_per_constraints_t asn_PER_memb_integer_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_MeasurementRecordItem_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_MeasurementRecordItem_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_specifics_t asn_SPC_integer_specs_2 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_integer_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_integer_2 = {
+ "integer",
+ "integer",
+ &asn_OP_NativeInteger,
+ asn_DEF_integer_tags_2,
+ sizeof(asn_DEF_integer_tags_2)
+ /sizeof(asn_DEF_integer_tags_2[0]) - 1, /* 1 */
+ asn_DEF_integer_tags_2, /* Same as above */
+ sizeof(asn_DEF_integer_tags_2)
+ /sizeof(asn_DEF_integer_tags_2[0]), /* 2 */
+ { &asn_OER_type_integer_constr_2, &asn_PER_type_integer_constr_2, integer_2_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_integer_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementRecordItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.integer),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_integer_2,
+ 0,
+ { &asn_OER_memb_integer_constr_2, &asn_PER_memb_integer_constr_2, memb_integer_constraint_1 },
+ 0, 0, /* No default value */
+ "integer"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.real),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeReal,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "real"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.noValue),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NULL,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "noValue"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementRecordItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* integer */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* real */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* noValue */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasurementRecordItem_specs_1 = {
+ sizeof(struct MeasurementRecordItem),
+ offsetof(struct MeasurementRecordItem, _asn_ctx),
+ offsetof(struct MeasurementRecordItem, present),
+ sizeof(((struct MeasurementRecordItem *)0)->present),
+ asn_MAP_MeasurementRecordItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementRecordItem = {
+ "MeasurementRecordItem",
+ "MeasurementRecordItem",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_MeasurementRecordItem_constr_1, &asn_PER_type_MeasurementRecordItem_constr_1, CHOICE_constraint },
+ asn_MBR_MeasurementRecordItem_1,
+ 3, /* Elements count */
+ &asn_SPC_MeasurementRecordItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementRecordItem_H_
+#define _MeasurementRecordItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeReal.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementRecordItem_PR {
+ MeasurementRecordItem_PR_NOTHING, /* No components present */
+ MeasurementRecordItem_PR_integer,
+ MeasurementRecordItem_PR_real,
+ MeasurementRecordItem_PR_noValue
+ /* Extensions may appear below */
+
+} MeasurementRecordItem_PR;
+
+/* MeasurementRecordItem */
+typedef struct MeasurementRecordItem {
+ MeasurementRecordItem_PR present;
+ union MeasurementRecordItem_u {
+ unsigned long integer;
+ double real;
+ NULL_t noValue;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementRecordItem_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_integer_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementRecordItem;
+extern asn_CHOICE_specifics_t asn_SPC_MeasurementRecordItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementRecordItem_1[3];
+extern asn_per_constraints_t asn_PER_type_MeasurementRecordItem_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementRecordItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementType.h"
+
+static asn_oer_constraints_t asn_OER_type_MeasurementType_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_MeasurementType_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementType_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measName),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementTypeName,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measName"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementTypeID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementType_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measID */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1 = {
+ sizeof(struct MeasurementType),
+ offsetof(struct MeasurementType, _asn_ctx),
+ offsetof(struct MeasurementType, present),
+ sizeof(((struct MeasurementType *)0)->present),
+ asn_MAP_MeasurementType_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementType = {
+ "MeasurementType",
+ "MeasurementType",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_MeasurementType_constr_1, &asn_PER_type_MeasurementType_constr_1, CHOICE_constraint },
+ asn_MBR_MeasurementType_1,
+ 2, /* Elements count */
+ &asn_SPC_MeasurementType_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementType_H_
+#define _MeasurementType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementTypeName.h"
+#include "MeasurementTypeID.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementType_PR {
+ MeasurementType_PR_NOTHING, /* No components present */
+ MeasurementType_PR_measName,
+ MeasurementType_PR_measID
+ /* Extensions may appear below */
+
+} MeasurementType_PR;
+
+/* MeasurementType */
+typedef struct MeasurementType {
+ MeasurementType_PR present;
+ union MeasurementType_u {
+ MeasurementTypeName_t measName;
+ MeasurementTypeID_t measID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MeasurementType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementType;
+extern asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementType_1[2];
+extern asn_per_constraints_t asn_PER_type_MeasurementType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementType_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementTypeID.h"
+
+int
+MeasurementTypeID_constraint(const 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 >= 1 && value <= 65536)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_MeasurementTypeID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 16, -1, 1, 65536 } /* (1..65536,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementTypeID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID = {
+ "MeasurementTypeID",
+ "MeasurementTypeID",
+ &asn_OP_NativeInteger,
+ asn_DEF_MeasurementTypeID_tags_1,
+ sizeof(asn_DEF_MeasurementTypeID_tags_1)
+ /sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementTypeID_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementTypeID_tags_1)
+ /sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementTypeID_constr_1, &asn_PER_type_MeasurementTypeID_constr_1, MeasurementTypeID_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementTypeID_H_
+#define _MeasurementTypeID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementTypeID */
+typedef long MeasurementTypeID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID;
+asn_struct_free_f MeasurementTypeID_free;
+asn_struct_print_f MeasurementTypeID_print;
+asn_constr_check_f MeasurementTypeID_constraint;
+ber_type_decoder_f MeasurementTypeID_decode_ber;
+der_type_encoder_f MeasurementTypeID_encode_der;
+xer_type_decoder_f MeasurementTypeID_decode_xer;
+xer_type_encoder_f MeasurementTypeID_encode_xer;
+oer_type_decoder_f MeasurementTypeID_decode_oer;
+oer_type_encoder_f MeasurementTypeID_encode_oer;
+per_type_decoder_f MeasurementTypeID_decode_uper;
+per_type_encoder_f MeasurementTypeID_encode_uper;
+per_type_decoder_f MeasurementTypeID_decode_aper;
+per_type_encoder_f MeasurementTypeID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementTypeID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementTypeName.h"
+
+static const int permitted_alphabet_table_1[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_1[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_1(const void *sptr) {
+ const int *table = permitted_alphabet_table_1;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+int
+MeasurementTypeName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 >= 1 && size <= 150)
+ && !check_permitted_alphabet_1(st)) {
+ /* 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 asn_PER_MAP_MeasurementTypeName_1_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
+ return -1;
+ return permitted_alphabet_table_1[value] - 1;
+}
+static int asn_PER_MAP_MeasurementTypeName_1_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
+ return -1;
+ return permitted_alphabet_code2value_1[code];
+}
+/*
+ * This type is implemented using PrintableString,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MeasurementTypeName_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */,
+ asn_PER_MAP_MeasurementTypeName_1_v2c, /* Value to PER code map */
+ asn_PER_MAP_MeasurementTypeName_1_c2v /* PER code to value map */
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementTypeName_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName = {
+ "MeasurementTypeName",
+ "MeasurementTypeName",
+ &asn_OP_PrintableString,
+ asn_DEF_MeasurementTypeName_tags_1,
+ sizeof(asn_DEF_MeasurementTypeName_tags_1)
+ /sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */
+ asn_DEF_MeasurementTypeName_tags_1, /* Same as above */
+ sizeof(asn_DEF_MeasurementTypeName_tags_1)
+ /sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */
+ { &asn_OER_type_MeasurementTypeName_constr_1, &asn_PER_type_MeasurementTypeName_constr_1, MeasurementTypeName_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _MeasurementTypeName_H_
+#define _MeasurementTypeName_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementTypeName */
+typedef PrintableString_t MeasurementTypeName_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName;
+asn_struct_free_f MeasurementTypeName_free;
+asn_struct_print_f MeasurementTypeName_print;
+asn_constr_check_f MeasurementTypeName_constraint;
+ber_type_decoder_f MeasurementTypeName_decode_ber;
+der_type_encoder_f MeasurementTypeName_encode_der;
+xer_type_decoder_f MeasurementTypeName_decode_xer;
+xer_type_encoder_f MeasurementTypeName_encode_xer;
+oer_type_decoder_f MeasurementTypeName_decode_oer;
+oer_type_encoder_f MeasurementTypeName_encode_oer;
+per_type_decoder_f MeasurementTypeName_decode_uper;
+per_type_encoder_f MeasurementTypeName_encode_uper;
+per_type_decoder_f MeasurementTypeName_decode_aper;
+per_type_encoder_f MeasurementTypeName_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementTypeName_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NG-RANnodeUEXnAPID.h"
+
+int
+NG_RANnodeUEXnAPID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_NG_RANnodeUEXnAPID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID = {
+ "NG-RANnodeUEXnAPID",
+ "NG-RANnodeUEXnAPID",
+ &asn_OP_NativeInteger,
+ asn_DEF_NG_RANnodeUEXnAPID_tags_1,
+ sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1)
+ /sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */
+ asn_DEF_NG_RANnodeUEXnAPID_tags_1, /* Same as above */
+ sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1)
+ /sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */
+ { &asn_OER_type_NG_RANnodeUEXnAPID_constr_1, &asn_PER_type_NG_RANnodeUEXnAPID_constr_1, NG_RANnodeUEXnAPID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_NG_RANnodeUEXnAPID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _NG_RANnodeUEXnAPID_H_
+#define _NG_RANnodeUEXnAPID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NG-RANnodeUEXnAPID */
+typedef unsigned long NG_RANnodeUEXnAPID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID;
+extern const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1;
+asn_struct_free_f NG_RANnodeUEXnAPID_free;
+asn_struct_print_f NG_RANnodeUEXnAPID_print;
+asn_constr_check_f NG_RANnodeUEXnAPID_constraint;
+ber_type_decoder_f NG_RANnodeUEXnAPID_decode_ber;
+der_type_encoder_f NG_RANnodeUEXnAPID_encode_der;
+xer_type_decoder_f NG_RANnodeUEXnAPID_decode_xer;
+xer_type_encoder_f NG_RANnodeUEXnAPID_encode_xer;
+oer_type_decoder_f NG_RANnodeUEXnAPID_decode_oer;
+oer_type_encoder_f NG_RANnodeUEXnAPID_encode_oer;
+per_type_decoder_f NG_RANnodeUEXnAPID_decode_uper;
+per_type_encoder_f NG_RANnodeUEXnAPID_encode_uper;
+per_type_decoder_f NG_RANnodeUEXnAPID_decode_aper;
+per_type_encoder_f NG_RANnodeUEXnAPID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NG_RANnodeUEXnAPID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NGENB-CU-UE-W1AP-ID.h"
+
+int
+NGENB_CU_UE_W1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = {
+ { 4, 1 } /* (0..4294967295) */,
+ -1};
+asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID = {
+ "NGENB-CU-UE-W1AP-ID",
+ "NGENB-CU-UE-W1AP-ID",
+ &asn_OP_NativeInteger,
+ asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1,
+ sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1)
+ /sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */
+ asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1)
+ /sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */
+ { &asn_OER_type_NGENB_CU_UE_W1AP_ID_constr_1, &asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1, NGENB_CU_UE_W1AP_ID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _NGENB_CU_UE_W1AP_ID_H_
+#define _NGENB_CU_UE_W1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NGENB-CU-UE-W1AP-ID */
+typedef unsigned long NGENB_CU_UE_W1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1;
+asn_struct_free_f NGENB_CU_UE_W1AP_ID_free;
+asn_struct_print_f NGENB_CU_UE_W1AP_ID_print;
+asn_constr_check_f NGENB_CU_UE_W1AP_ID_constraint;
+ber_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_ber;
+der_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_der;
+xer_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_xer;
+xer_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_xer;
+oer_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_oer;
+oer_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_oer;
+per_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_uper;
+per_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_uper;
+per_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_aper;
+per_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NGENB_CU_UE_W1AP_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-CGI.h"
+
+asn_TYPE_member_t asn_MBR_NR_CGI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct NR_CGI, pLMNIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "pLMNIdentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct NR_CGI, nRCellIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NRCellIdentity,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "nRCellIdentity"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_NR_CGI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_CGI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1 = {
+ sizeof(struct NR_CGI),
+ offsetof(struct NR_CGI, _asn_ctx),
+ asn_MAP_NR_CGI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_CGI = {
+ "NR-CGI",
+ "NR-CGI",
+ &asn_OP_SEQUENCE,
+ asn_DEF_NR_CGI_tags_1,
+ sizeof(asn_DEF_NR_CGI_tags_1)
+ /sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */
+ asn_DEF_NR_CGI_tags_1, /* Same as above */
+ sizeof(asn_DEF_NR_CGI_tags_1)
+ /sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_NR_CGI_1,
+ 2, /* Elements count */
+ &asn_SPC_NR_CGI_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _NR_CGI_H_
+#define _NR_CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "NRCellIdentity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NR-CGI */
+typedef struct NR_CGI {
+ PLMNIdentity_t pLMNIdentity;
+ NRCellIdentity_t nRCellIdentity;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NR_CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NR_CGI;
+extern asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_NR_CGI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_CGI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NRCellIdentity.h"
+
+int
+NRCellIdentity_constraint(const 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 == 36)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_NRCellIdentity_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 36 /* (SIZE(36..36)) */};
+asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NRCellIdentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NRCellIdentity = {
+ "NRCellIdentity",
+ "NRCellIdentity",
+ &asn_OP_BIT_STRING,
+ asn_DEF_NRCellIdentity_tags_1,
+ sizeof(asn_DEF_NRCellIdentity_tags_1)
+ /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */
+ asn_DEF_NRCellIdentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_NRCellIdentity_tags_1)
+ /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */
+ { &asn_OER_type_NRCellIdentity_constr_1, &asn_PER_type_NRCellIdentity_constr_1, NRCellIdentity_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_BIT_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _NRCellIdentity_H_
+#define _NRCellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NRCellIdentity */
+typedef BIT_STRING_t NRCellIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentity;
+asn_struct_free_f NRCellIdentity_free;
+asn_struct_print_f NRCellIdentity_print;
+asn_constr_check_f NRCellIdentity_constraint;
+ber_type_decoder_f NRCellIdentity_decode_ber;
+der_type_encoder_f NRCellIdentity_encode_der;
+xer_type_decoder_f NRCellIdentity_decode_xer;
+xer_type_encoder_f NRCellIdentity_encode_xer;
+oer_type_decoder_f NRCellIdentity_decode_oer;
+oer_type_encoder_f NRCellIdentity_encode_oer;
+per_type_decoder_f NRCellIdentity_decode_uper;
+per_type_encoder_f NRCellIdentity_encode_uper;
+per_type_decoder_f NRCellIdentity_decode_aper;
+per_type_encoder_f NRCellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NRCellIdentity_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*-
+ * Copyright (c) 2003, 2005 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include <asn_internal.h>
+#include <asn_codecs_prim.h>
+#include <NULL.h>
+#include <BOOLEAN.h> /* Implemented in terms of BOOLEAN type */
+
+/*
+ * NULL basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NULL_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (5 << 2))
+};
+asn_TYPE_operation_t asn_OP_NULL = {
+ BOOLEAN_free,
+ NULL_print,
+ NULL_compare,
+ BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */
+ NULL_encode_der, /* Special handling of DER encoding */
+ NULL_decode_xer,
+ NULL_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ NULL_decode_oer,
+ NULL_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ NULL_decode_uper, /* Unaligned PER decoder */
+ NULL_encode_uper, /* Unaligned PER encoder */
+ NULL_decode_aper, /* Aligned PER decoder */
+ NULL_encode_aper, /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ NULL_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NULL = {
+ "NULL",
+ "NULL",
+ &asn_OP_NULL,
+ asn_DEF_NULL_tags,
+ sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
+ asn_DEF_NULL_tags, /* Same as above */
+ sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+asn_enc_rval_t
+NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode,
+ ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t erval = {0,0,0};
+
+ erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key);
+ if(erval.encoded == -1) {
+ erval.failed_type = td;
+ erval.structure_ptr = ptr;
+ }
+
+ ASN__ENCODED_OK(erval);
+}
+
+asn_enc_rval_t
+NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ asn_enc_rval_t er = {0,0,0};
+
+ (void)td;
+ (void)sptr;
+ (void)ilevel;
+ (void)flags;
+ (void)cb;
+ (void)app_key;
+
+ /* XMLNullValue is empty */
+ er.encoded = 0;
+ ASN__ENCODED_OK(er);
+}
+
+
+static enum xer_pbd_rval
+NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+ const void *chunk_buf, size_t chunk_size) {
+ (void)td;
+ (void)sptr;
+ (void)chunk_buf; /* Going to be empty according to the rules below. */
+
+ /*
+ * There must be no content in self-terminating <NULL/> tag.
+ */
+ if(chunk_size)
+ return XPBD_BROKEN_ENCODING;
+ else
+ return XPBD_BODY_CONSUMED;
+}
+
+asn_dec_rval_t
+NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ return xer_decode_primitive(opt_codec_ctx, td,
+ sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
+ NULL__xer_body_decode);
+}
+
+int
+NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) {
+ (void)td;
+ (void)a;
+ (void)b;
+ return 0;
+}
+
+int
+NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(sptr) {
+ return (cb("<present>", 9, app_key) < 0) ? -1 : 0;
+ } else {
+ return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+asn_dec_rval_t
+NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, void **sptr,
+ const void *ptr, size_t size) {
+ asn_dec_rval_t rv = {RC_OK, 0};
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+ (void)ptr;
+ (void)size;
+
+ if(!*sptr) {
+ *sptr = MALLOC(sizeof(NULL_t));
+ if(*sptr) {
+ *(NULL_t *)*sptr = 0;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ return rv;
+}
+
+asn_enc_rval_t
+NULL_encode_oer(const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, const void *sptr,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t er = {0,0,0};
+
+ (void)td;
+ (void)sptr;
+ (void)constraints;
+ (void)cb;
+ (void)app_key;
+
+ er.encoded = 0; /* Encoding in 0 bytes. */
+
+ ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+ (void)pd;
+
+ if(!*sptr) {
+ *sptr = MALLOC(sizeof(NULL_t));
+ if(*sptr) {
+ *(NULL_t *)*sptr = 0;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ /*
+ * NULL type does not have content octets.
+ */
+
+ rv.code = RC_OK;
+ rv.consumed = 0;
+ return rv;
+}
+
+asn_enc_rval_t
+NULL_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ asn_enc_rval_t er = {0,0,0};
+
+ (void)td;
+ (void)constraints;
+ (void)sptr;
+ (void)po;
+
+ er.encoded = 0;
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ asn_dec_rval_t rv = {RC_OK, 0};
+
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+ (void)pd;
+
+ if(!*sptr) {
+ *sptr = MALLOC(sizeof(NULL_t));
+ if(*sptr) {
+ *(NULL_t *)*sptr = 0;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ /*
+ * NULL type does not have content octets.
+ */
+
+ rv.code = RC_OK;
+ rv.consumed = 0;
+ return rv;
+}
+
+
+asn_enc_rval_t
+NULL_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ asn_enc_rval_t er = {0,0,0};
+
+ (void)td;
+ (void)constraints;
+ (void)sptr;
+ (void)po;
+
+ er.encoded = 0;
+ ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+asn_random_fill_result_t
+NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constr,
+ size_t max_length) {
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ NULL_t *st = *sptr;
+
+ (void)td;
+ (void)constr;
+
+ if(max_length == 0) return result_skipped;
+
+ if(st == NULL) {
+ st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st)));
+ if(st == NULL) {
+ return result_failed;
+ }
+ }
+
+ return result_ok;
+}
+
--- /dev/null
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_TYPE_NULL_H
+#define ASN_TYPE_NULL_H
+
+#include <asn_application.h>
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The value of the NULL type is meaningless: see BOOLEAN if you want to
+ * carry true/false semantics.
+ */
+typedef int NULL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NULL;
+extern asn_TYPE_operation_t asn_OP_NULL;
+
+asn_struct_print_f NULL_print;
+asn_struct_compare_f NULL_compare;
+der_type_encoder_f NULL_encode_der;
+xer_type_decoder_f NULL_decode_xer;
+xer_type_encoder_f NULL_encode_xer;
+oer_type_decoder_f NULL_decode_oer;
+oer_type_encoder_f NULL_encode_oer;
+per_type_decoder_f NULL_decode_uper;
+per_type_encoder_f NULL_encode_uper;
+per_type_decoder_f NULL_decode_aper;
+per_type_encoder_f NULL_encode_aper;
+asn_random_fill_f NULL_random_fill;
+
+#define NULL_free BOOLEAN_free
+#define NULL_decode_ber BOOLEAN_decode_ber
+#define NULL_constraint asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NULL_H */
--- /dev/null
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Read the NativeReal.h for the explanation wrt. differences between
+ * REAL and NativeReal.
+ * Basically, both are decoders and encoders of ASN.1 REAL type, but this
+ * implementation deals with the standard (machine-specific) representation
+ * of them instead of using the platform-independent buffer.
+ */
+#include <asn_internal.h>
+#include <NativeReal.h>
+#include <REAL.h>
+#include <OCTET_STRING.h>
+#include <math.h>
+#include <float.h>
+
+#if defined(__clang__)
+/*
+ * isnan() is defined using generic selections and won't compile in
+ * strict C89 mode because of too fancy system's standard library.
+ * However, prior to C11 the math had a perfectly working isnan()
+ * in the math library.
+ * Disable generic selection warning so we can test C89 mode with newer libc.
+ */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc11-extensions"
+static int asn_isnan(double d) {
+ return isnan(d);
+}
+#pragma clang diagnostic pop
+#else
+#define asn_isnan(v) isnan(v)
+#endif /* generic selections */
+
+/*
+ * NativeReal basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NativeReal_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_operation_t asn_OP_NativeReal = {
+ NativeReal_free,
+ NativeReal_print,
+ NativeReal_compare,
+ NativeReal_decode_ber,
+ NativeReal_encode_der,
+ NativeReal_decode_xer,
+ NativeReal_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ NativeReal_decode_oer,
+ NativeReal_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ NativeReal_decode_uper,
+ NativeReal_encode_uper,
+ NativeReal_decode_aper,
+ NativeReal_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ NativeReal_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NativeReal = {
+ "REAL", /* The ASN.1 type is still REAL */
+ "REAL",
+ &asn_OP_NativeReal,
+ asn_DEF_NativeReal_tags,
+ sizeof(asn_DEF_NativeReal_tags) / sizeof(asn_DEF_NativeReal_tags[0]),
+ asn_DEF_NativeReal_tags, /* Same as above */
+ sizeof(asn_DEF_NativeReal_tags) / sizeof(asn_DEF_NativeReal_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+static size_t NativeReal__float_size(const asn_TYPE_descriptor_t *td);
+static double NativeReal__get_double(const asn_TYPE_descriptor_t *td,
+ const void *ptr);
+static ssize_t NativeReal__set(const asn_TYPE_descriptor_t *td, void **sptr,
+ double d);
+
+/*
+ * Decode REAL type.
+ */
+asn_dec_rval_t
+NativeReal_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const void *buf_ptr, size_t size, int tag_mode) {
+ asn_dec_rval_t rval;
+ ber_tlv_len_t length;
+
+ ASN_DEBUG("Decoding %s as REAL (tm=%d)", td->name, tag_mode);
+
+ /*
+ * Check tags.
+ */
+ rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, tag_mode, 0,
+ &length, 0);
+ if(rval.code != RC_OK) return rval;
+ assert(length >= 0); /* Ensured by ber_check_tags */
+
+ ASN_DEBUG("%s length is %d bytes", td->name, (int)length);
+
+ /*
+ * Make sure we have this length.
+ */
+ buf_ptr = ((const char *)buf_ptr) + rval.consumed;
+ size -= rval.consumed;
+ if(length > (ber_tlv_len_t)size) {
+ rval.code = RC_WMORE;
+ rval.consumed = 0;
+ return rval;
+ }
+
+ /*
+ * ASN.1 encoded REAL: buf_ptr, length
+ * Fill the Dbl, at the same time checking for overflow.
+ * If overflow occured, return with RC_FAIL.
+ */
+ {
+ uint8_t scratch[24]; /* Longer than %.16f in decimal */
+ REAL_t tmp;
+ double d;
+ int ret;
+
+ if((size_t)length < sizeof(scratch)) {
+ tmp.buf = scratch;
+ tmp.size = length;
+ } else {
+ /* This rarely happens: impractically long value */
+ tmp.buf = CALLOC(1, length + 1);
+ tmp.size = length;
+ if(!tmp.buf) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ return rval;
+ }
+ }
+
+ memcpy(tmp.buf, buf_ptr, length);
+ tmp.buf[length] = '\0';
+
+ ret = asn_REAL2double(&tmp, &d);
+ if(tmp.buf != scratch) FREEMEM(tmp.buf);
+ if(ret) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ return rval;
+ }
+
+ if(NativeReal__set(td, sptr, d) < 0)
+ ASN__DECODE_FAILED;
+ }
+
+ rval.code = RC_OK;
+ rval.consumed += length;
+
+ ASN_DEBUG("Took %ld/%ld bytes to encode %s", (long)rval.consumed,
+ (long)length, td->name);
+
+ return rval;
+}
+
+/*
+ * Encode the NativeReal using the standard REAL type DER encoder.
+ */
+asn_enc_rval_t
+NativeReal_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ double d = NativeReal__get_double(td, sptr);
+ asn_enc_rval_t erval = {0,0,0};
+ REAL_t tmp;
+
+ /* Prepare a temporary clean structure */
+ memset(&tmp, 0, sizeof(tmp));
+
+ if(asn_double2REAL(&tmp, d))
+ ASN__ENCODE_FAILED;
+
+ /* Encode a fake REAL */
+ erval = der_encode_primitive(td, &tmp, tag_mode, tag, cb, app_key);
+ if(erval.encoded == -1) {
+ assert(erval.structure_ptr == &tmp);
+ erval.structure_ptr = sptr;
+ }
+
+ /* Free possibly allocated members of the temporary structure */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+
+ return erval;
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+/*
+ * Decode REAL type using PER.
+ */
+asn_dec_rval_t
+NativeReal_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ asn_dec_rval_t rval;
+ double d;
+ REAL_t tmp;
+ void *ptmp = &tmp;
+ int ret;
+
+ (void)constraints;
+
+ memset(&tmp, 0, sizeof(tmp));
+ rval = OCTET_STRING_decode_uper(opt_codec_ctx, &asn_DEF_REAL,
+ NULL, &ptmp, pd);
+ if(rval.code != RC_OK) {
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+ return rval;
+ }
+
+ ret = asn_REAL2double(&tmp, &d);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+ if(ret) ASN__DECODE_FAILED;
+
+ if(NativeReal__set(td, sptr, d) < 0 )
+ ASN__DECODE_FAILED;
+
+ return rval;
+}
+
+/*
+ * Encode the NativeReal using the OCTET STRING PER encoder.
+ */
+asn_enc_rval_t
+NativeReal_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ double d = NativeReal__get_double(td, sptr);
+ asn_enc_rval_t erval = {0,0,0};
+ REAL_t tmp;
+
+ (void)constraints;
+
+ /* Prepare a temporary clean structure */
+ memset(&tmp, 0, sizeof(tmp));
+
+ if(asn_double2REAL(&tmp, d))
+ ASN__ENCODE_FAILED;
+
+ /* Encode a DER REAL */
+ erval = OCTET_STRING_encode_uper(&asn_DEF_REAL, NULL, &tmp, po);
+ if(erval.encoded == -1)
+ erval.structure_ptr = sptr;
+
+ /* Free possibly allocated members of the temporary structure */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+
+ return erval;
+}
+
+
+asn_dec_rval_t
+NativeReal_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ void **dbl_ptr, asn_per_data_t *pd) {
+ double *Dbl = (double *)*dbl_ptr;
+ asn_dec_rval_t rval;
+ REAL_t tmp;
+ void *ptmp = &tmp;
+ int ret;
+
+ (void)constraints;
+
+ /*
+ * If the structure is not there, allocate it.
+ */
+ if(Dbl == NULL) {
+ *dbl_ptr = CALLOC(1, sizeof(*Dbl));
+ Dbl = (double *)*dbl_ptr;
+ if(Dbl == NULL)
+ ASN__DECODE_FAILED;
+ }
+
+ memset(&tmp, 0, sizeof(tmp));
+ rval = OCTET_STRING_decode_aper(opt_codec_ctx, td, NULL,
+ &ptmp, pd);
+ if(rval.code != RC_OK) {
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+ return rval;
+ }
+
+ ret = asn_REAL2double(&tmp, Dbl);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+ if(ret) ASN__DECODE_FAILED;
+
+ return rval;
+}
+
+asn_enc_rval_t
+NativeReal_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ double Dbl = *(const double *)sptr;
+ asn_enc_rval_t erval = {0,0,0};
+ REAL_t tmp;
+
+ (void)constraints;
+
+ /* Prepare a temporary clean structure */
+ memset(&tmp, 0, sizeof(tmp));
+
+ if(asn_double2REAL(&tmp, Dbl))
+ ASN__ENCODE_FAILED;
+
+ /* Encode a DER REAL */
+ erval = OCTET_STRING_encode_aper(td, NULL, &tmp, po);
+ if(erval.encoded == -1)
+ erval.structure_ptr = sptr;
+
+ /* Free possibly allocated members of the temporary structure */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+
+ return erval;
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+/*
+ * Swap bytes from/to network, if local is little-endian.
+ * Unused endianness sections are likely removed at compile phase.
+ */
+static void
+NativeReal__network_swap(size_t float_size, const void *srcp, uint8_t *dst) {
+ const uint8_t *src = srcp;
+ double test = -0.0;
+ int float_big_endian = *(const char *)&test != 0;
+ /* In lieu of static_assert(sizeof(double) == 8) */
+ static const char sizeof_double_is_8_a[sizeof(double)-7] CC_NOTUSED;
+ static const char sizeof_double_is_8_b[9-sizeof(double)] CC_NOTUSED;
+ /* In lieu of static_assert(sizeof(sizeof) == 4) */
+ static const char sizeof_float_is_4_a[sizeof(float)-3] CC_NOTUSED;
+ static const char sizeof_float_is_4_b[5-sizeof(float)] CC_NOTUSED;
+
+ switch(float_size) {
+ case sizeof(double):
+ assert(sizeof(double) == 8);
+ if(float_big_endian) {
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ dst[3] = src[3];
+ dst[4] = src[4];
+ dst[5] = src[5];
+ dst[6] = src[6];
+ dst[7] = src[7];
+ } else {
+ dst[0] = src[7];
+ dst[1] = src[6];
+ dst[2] = src[5];
+ dst[3] = src[4];
+ dst[4] = src[3];
+ dst[5] = src[2];
+ dst[6] = src[1];
+ dst[7] = src[0];
+ }
+ return;
+ case sizeof(float):
+ assert(sizeof(float) == 4);
+ if(float_big_endian) {
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ dst[3] = src[3];
+ } else {
+ dst[0] = src[3];
+ dst[1] = src[2];
+ dst[2] = src[1];
+ dst[3] = src[0];
+ }
+ return;
+ }
+}
+
+/*
+ * Encode as Canonical OER.
+ */
+asn_enc_rval_t
+NativeReal_encode_oer(const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints,
+ const void *sptr, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ asn_enc_rval_t er = {0, 0, 0};
+
+ if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+ if(constraints && constraints->value.width != 0) {
+ /* X.696 IEEE 754 binary32 and binary64 encoding */
+ uint8_t scratch[sizeof(double)];
+ const asn_NativeReal_specifics_t *specs =
+ (const asn_NativeReal_specifics_t *)td->specifics;
+ size_t wire_size = constraints->value.width;
+
+ if(specs ? (wire_size == specs->float_size)
+ : (wire_size == sizeof(double))) {
+ /*
+ * Our representation matches the wire, modulo endianness.
+ * That was the whole point of compact encoding!
+ */
+ } else {
+ assert((wire_size == sizeof(double))
+ || (specs && specs->float_size == wire_size));
+ ASN__ENCODE_FAILED;
+ }
+
+ /*
+ * The X.696 standard doesn't specify endianness, neither is IEEE 754.
+ * So we assume the network format is big endian.
+ */
+ NativeReal__network_swap(wire_size, sptr, scratch);
+ if(cb(scratch, wire_size, app_key) < 0) {
+ ASN__ENCODE_FAILED;
+ } else {
+ er.encoded = wire_size;
+ ASN__ENCODED_OK(er);
+ }
+ } else {
+ double d = NativeReal__get_double(td, sptr);
+ ssize_t len_len;
+ REAL_t tmp;
+
+ /* Prepare a temporary clean structure */
+ memset(&tmp, 0, sizeof(tmp));
+
+ if(asn_double2REAL(&tmp, d)) {
+ ASN__ENCODE_FAILED;
+ }
+
+ /* Encode a fake REAL */
+ len_len = oer_serialize_length(tmp.size, cb, app_key);
+ if(len_len < 0 || cb(tmp.buf, tmp.size, app_key) < 0) {
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+ ASN__ENCODE_FAILED;
+ } else {
+ er.encoded = len_len + tmp.size;
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+ ASN__ENCODED_OK(er);
+ }
+ }
+}
+
+asn_dec_rval_t
+NativeReal_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, void **sptr,
+ const void *ptr, size_t size) {
+ asn_dec_rval_t ok = {RC_OK, 0};
+ double d;
+ ssize_t len_len;
+ size_t real_body_len;
+
+ (void)opt_codec_ctx;
+
+ if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+ if(constraints && constraints->value.width != 0) {
+ /* X.696 IEEE 754 binary32 and binary64 encoding */
+ uint8_t scratch[sizeof(double)];
+ size_t wire_size = constraints->value.width;
+
+ if(size < wire_size)
+ ASN__DECODE_STARVED;
+
+ /*
+ * The X.696 standard doesn't specify endianness, neither is IEEE 754.
+ * So we assume the network format is big endian.
+ */
+ NativeReal__network_swap(wire_size, ptr, scratch);
+
+
+ switch(wire_size) {
+ case sizeof(double):
+ {
+ double tmp;
+ memcpy(&tmp, scratch, sizeof(double));
+ if(NativeReal__set(td, sptr, tmp) < 0)
+ ASN__DECODE_FAILED;
+ }
+ break;
+ case sizeof(float):
+ {
+ float tmp;
+ memcpy(&tmp, scratch, sizeof(float));
+ if(NativeReal__set(td, sptr, tmp) < 0)
+ ASN__DECODE_FAILED;
+ }
+ break;
+ default:
+ ASN__DECODE_FAILED;
+ }
+
+ ok.consumed = wire_size;
+ return ok;
+ }
+
+ len_len = oer_fetch_length(ptr, size, &real_body_len);
+ if(len_len < 0) ASN__DECODE_FAILED;
+ if(len_len == 0) ASN__DECODE_STARVED;
+
+ ptr = (const char *)ptr + len_len;
+ size -= len_len;
+
+ if(real_body_len > size) ASN__DECODE_STARVED;
+
+ {
+ uint8_t scratch[24]; /* Longer than %.16f in decimal */
+ REAL_t tmp;
+ int ret;
+
+ if(real_body_len < sizeof(scratch)) {
+ tmp.buf = scratch;
+ tmp.size = real_body_len;
+ } else {
+ /* This rarely happens: impractically long value */
+ tmp.buf = CALLOC(1, real_body_len + 1);
+ tmp.size = real_body_len;
+ if(!tmp.buf) {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ memcpy(tmp.buf, ptr, real_body_len);
+ tmp.buf[real_body_len] = '\0';
+
+ ret = asn_REAL2double(&tmp, &d);
+ if(tmp.buf != scratch) FREEMEM(tmp.buf);
+ if(ret) {
+ ASN_DEBUG("REAL decoded in %" ASN_PRI_SIZE " bytes, but can't convert t double",
+ real_body_len);
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ if(NativeReal__set(td, sptr, d) < 0)
+ ASN__DECODE_FAILED;
+
+ ok.consumed = len_len + real_body_len;
+ return ok;
+}
+
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+/*
+ * Decode the chunk of XML text encoding REAL.
+ */
+asn_dec_rval_t
+NativeReal_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ asn_dec_rval_t rval;
+ REAL_t st = { 0, 0 };
+ REAL_t *stp = &st;
+
+ rval = REAL_decode_xer(opt_codec_ctx, td, (void **)&stp, opt_mname,
+ buf_ptr, size);
+ if(rval.code == RC_OK) {
+ double d;
+ if(asn_REAL2double(&st, &d) || NativeReal__set(td, sptr, d) < 0) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ }
+ } else {
+ /* Convert all errors into RC_FAIL */
+ rval.consumed = 0;
+ }
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &st);
+ return rval;
+}
+
+asn_enc_rval_t
+NativeReal_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ double d = NativeReal__get_double(td, sptr);
+ asn_enc_rval_t er = {0,0,0};
+
+ (void)ilevel;
+
+ er.encoded = REAL__dump(d, flags & XER_F_CANONICAL, cb, app_key);
+ if(er.encoded < 0) ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+/*
+ * REAL specific human-readable output.
+ */
+int
+NativeReal_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ (void)ilevel; /* Unused argument */
+
+ if(sptr) {
+ double d = NativeReal__get_double(td, sptr);
+ return (REAL__dump(d, 0, cb, app_key) < 0) ? -1 : 0;
+ } else {
+ return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+int
+NativeReal_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+ const void *bptr) {
+
+ if(aptr && bptr) {
+ double a = NativeReal__get_double(td, aptr);
+ double b = NativeReal__get_double(td, bptr);
+
+ /* NaN sorted above everything else */
+ if(asn_isnan(a)) {
+ if(asn_isnan(b)) {
+ return 0;
+ } else {
+ return -1;
+ }
+ } else if(asn_isnan(b)) {
+ return 1;
+ }
+ /* Value comparison. */
+ if(a < b) {
+ return -1;
+ } else if(a > b) {
+ return 1;
+ } else {
+ return 0;
+ }
+ } else if(!aptr) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+void
+NativeReal_free(const asn_TYPE_descriptor_t *td, void *ptr,
+ enum asn_struct_free_method method) {
+ if(!td || !ptr)
+ return;
+
+ ASN_DEBUG("Freeing %s as REAL (%d, %p, Native)",
+ td->name, method, ptr);
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(ptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET: {
+ const asn_NativeReal_specifics_t *specs;
+ size_t float_size;
+ specs = (const asn_NativeReal_specifics_t *)td->specifics;
+ float_size = specs ? specs->float_size : sizeof(double);
+ memset(ptr, 0, float_size);
+ } break;
+ }
+}
+
+asn_random_fill_result_t
+NativeReal_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constraints,
+ size_t max_length) {
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 0};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+#ifndef INFINITY
+#define INFINITY (1.0/0.0)
+#endif
+#ifndef NAN
+#define NAN (0.0/0.0)
+#endif
+ static const double double_values[] = {
+ -M_E, M_E, -M_PI, M_PI, /* Better precision than with floats */
+ -1E+308, 1E+308,
+ /* 2^51 */
+ -2251799813685248.0, 2251799813685248.0,
+ /* 2^52 */
+ -4503599627370496.0, 4503599627370496.0,
+ /* 2^100 */
+ -1267650600228229401496703205376.0, 1267650600228229401496703205376.0,
+ -DBL_MIN, DBL_MIN,
+ -DBL_MAX, DBL_MAX,
+#ifdef DBL_TRUE_MIN
+ -DBL_TRUE_MIN, DBL_TRUE_MIN
+#endif
+ };
+ static const float float_values[] = {
+ 0, -0.0, -1, 1, -M_E, M_E, -3.14, 3.14, -M_PI, M_PI, -255, 255,
+ -FLT_MIN, FLT_MIN,
+ -FLT_MAX, FLT_MAX,
+#ifdef FLT_TRUE_MIN
+ -FLT_TRUE_MIN, FLT_TRUE_MIN,
+#endif
+ INFINITY, -INFINITY, NAN
+ };
+ ssize_t float_set_size = NativeReal__float_size(td);
+ const size_t n_doubles = sizeof(double_values) / sizeof(double_values[0]);
+ const size_t n_floats = sizeof(float_values) / sizeof(float_values[0]);
+ double d;
+
+ (void)constraints;
+
+ if(max_length == 0) return result_skipped;
+
+ if(float_set_size == sizeof(double) && asn_random_between(0, 1) == 0) {
+ d = double_values[asn_random_between(0, n_doubles - 1)];
+ } else {
+ d = float_values[asn_random_between(0, n_floats - 1)];
+ }
+
+ if(NativeReal__set(td, sptr, d) < 0) {
+ return result_failed;
+ }
+
+ result_ok.length = float_set_size;
+ return result_ok;
+}
+
+
+/*
+ * Local helper functions.
+ */
+
+static size_t
+NativeReal__float_size(const asn_TYPE_descriptor_t *td) {
+ const asn_NativeReal_specifics_t *specs =
+ (const asn_NativeReal_specifics_t *)td->specifics;
+ return specs ? specs->float_size : sizeof(double);
+}
+
+static double
+NativeReal__get_double(const asn_TYPE_descriptor_t *td, const void *ptr) {
+ size_t float_size = NativeReal__float_size(td);
+ if(float_size == sizeof(float)) {
+ return *(const float *)ptr;
+ } else {
+ return *(const double *)ptr;
+ }
+}
+
+static ssize_t /* Returns -1 or float size. */
+NativeReal__set(const asn_TYPE_descriptor_t *td, void **sptr, double d) {
+ size_t float_size = NativeReal__float_size(td);
+ void *native;
+
+ if(!(native = *sptr)) {
+ native = (*sptr = CALLOC(1, float_size));
+ if(!native) {
+ return -1;
+ }
+ }
+
+ if(float_size == sizeof(float)) {
+ if(asn_double2float(d, (float *)native)) {
+ return -1;
+ }
+ } else {
+ *(double *)native = d;
+ }
+
+ return float_size;
+}
+
--- /dev/null
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard REAL in that it is modelled using
+ * the fixed machine type (double), so it can hold only values of
+ * limited precision. There is no explicit type (i.e., NativeReal_t).
+ * Use of this type is normally enabled by -fnative-types.
+ */
+#ifndef ASN_TYPE_NativeReal_H
+#define ASN_TYPE_NativeReal_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_NativeReal_specifics_s {
+ unsigned float_size; /* sizeof(float) or sizeof(double) */
+} asn_NativeReal_specifics_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeReal;
+extern asn_TYPE_operation_t asn_OP_NativeReal;
+
+asn_struct_free_f NativeReal_free;
+asn_struct_print_f NativeReal_print;
+asn_struct_compare_f NativeReal_compare;
+ber_type_decoder_f NativeReal_decode_ber;
+der_type_encoder_f NativeReal_encode_der;
+per_type_decoder_f NativeReal_decode_uper;
+per_type_encoder_f NativeReal_encode_uper;
+per_type_decoder_f NativeReal_decode_aper;
+per_type_encoder_f NativeReal_encode_aper;
+oer_type_decoder_f NativeReal_decode_oer;
+oer_type_encoder_f NativeReal_encode_oer;
+xer_type_decoder_f NativeReal_decode_xer;
+xer_type_encoder_f NativeReal_encode_xer;
+asn_random_fill_f NativeReal_random_fill;
+
+#define NativeReal_constraint asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_TYPE_NativeReal_H */
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NgENB-ID.h"
+
+static int
+memb_macroNgENB_ID_constraint_1(const 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 == 20)) {
+ /* 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_shortMacroNgENB_ID_constraint_1(const 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 == 18)) {
+ /* 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_longMacroNgENB_ID_constraint_1(const 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 == 21)) {
+ /* 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_oer_constraints_t asn_OER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ 20 /* (SIZE(20..20)) */};
+static asn_per_constraints_t asn_PER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ 18 /* (SIZE(18..18)) */};
+static asn_per_constraints_t asn_PER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = {
+ { 0, 0 },
+ 21 /* (SIZE(21..21)) */};
+static asn_per_constraints_t asn_PER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_NgENB_ID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NgENB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.macroNgENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ 0,
+ { &asn_OER_memb_macroNgENB_ID_constr_2, &asn_PER_memb_macroNgENB_ID_constr_2, memb_macroNgENB_ID_constraint_1 },
+ 0, 0, /* No default value */
+ "macroNgENB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.shortMacroNgENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ 0,
+ { &asn_OER_memb_shortMacroNgENB_ID_constr_3, &asn_PER_memb_shortMacroNgENB_ID_constr_3, memb_shortMacroNgENB_ID_constraint_1 },
+ 0, 0, /* No default value */
+ "shortMacroNgENB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.longMacroNgENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ 0,
+ { &asn_OER_memb_longMacroNgENB_ID_constr_4, &asn_PER_memb_longMacroNgENB_ID_constr_4, memb_longMacroNgENB_ID_constraint_1 },
+ 0, 0, /* No default value */
+ "longMacroNgENB-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_NgENB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroNgENB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* shortMacroNgENB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* longMacroNgENB-ID */
+};
+asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1 = {
+ sizeof(struct NgENB_ID),
+ offsetof(struct NgENB_ID, _asn_ctx),
+ offsetof(struct NgENB_ID, present),
+ sizeof(((struct NgENB_ID *)0)->present),
+ asn_MAP_NgENB_ID_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_NgENB_ID = {
+ "NgENB-ID",
+ "NgENB-ID",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_NgENB_ID_constr_1, &asn_PER_type_NgENB_ID_constr_1, CHOICE_constraint },
+ asn_MBR_NgENB_ID_1,
+ 3, /* Elements count */
+ &asn_SPC_NgENB_ID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _NgENB_ID_H_
+#define _NgENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NgENB_ID_PR {
+ NgENB_ID_PR_NOTHING, /* No components present */
+ NgENB_ID_PR_macroNgENB_ID,
+ NgENB_ID_PR_shortMacroNgENB_ID,
+ NgENB_ID_PR_longMacroNgENB_ID
+ /* Extensions may appear below */
+
+} NgENB_ID_PR;
+
+/* NgENB-ID */
+typedef struct NgENB_ID {
+ NgENB_ID_PR present;
+ union NgENB_ID_u {
+ BIT_STRING_t macroNgENB_ID;
+ BIT_STRING_t shortMacroNgENB_ID;
+ BIT_STRING_t longMacroNgENB_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NgENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NgENB_ID;
+extern asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_NgENB_ID_1[3];
+extern asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NgENB_ID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMNIdentity.h"
+
+int
+PLMNIdentity_constraint(const 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 == 3)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_PLMNIdentity_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 3 /* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_PLMNIdentity_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 3, 3 } /* (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",
+ &asn_OP_OCTET_STRING,
+ 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_OER_type_PLMNIdentity_constr_1, &asn_PER_type_PLMNIdentity_constr_1, PLMNIdentity_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#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_per_constraints_t asn_PER_type_PLMNIdentity_constr_1;
+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;
+oer_type_decoder_f PLMNIdentity_decode_oer;
+oer_type_encoder_f PLMNIdentity_encode_oer;
+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>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QCI.h"
+
+int
+QCI_constraint(const 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 >= 0 && value <= 255)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_QCI_constr_1 CC_NOTUSED = {
+ { 1, 1 } /* (0..255) */,
+ -1};
+asn_per_constraints_t asn_PER_type_QCI_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_QCI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_QCI = {
+ "QCI",
+ "QCI",
+ &asn_OP_NativeInteger,
+ asn_DEF_QCI_tags_1,
+ sizeof(asn_DEF_QCI_tags_1)
+ /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */
+ asn_DEF_QCI_tags_1, /* Same as above */
+ sizeof(asn_DEF_QCI_tags_1)
+ /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */
+ { &asn_OER_type_QCI_constr_1, &asn_PER_type_QCI_constr_1, QCI_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _QCI_H_
+#define _QCI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QCI */
+typedef long QCI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_QCI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_QCI;
+asn_struct_free_f QCI_free;
+asn_struct_print_f QCI_print;
+asn_constr_check_f QCI_constraint;
+ber_type_decoder_f QCI_decode_ber;
+der_type_encoder_f QCI_encode_der;
+xer_type_decoder_f QCI_decode_xer;
+xer_type_encoder_f QCI_encode_xer;
+oer_type_decoder_f QCI_decode_oer;
+oer_type_encoder_f QCI_encode_oer;
+per_type_decoder_f QCI_decode_uper;
+per_type_encoder_f QCI_encode_uper;
+per_type_decoder_f QCI_decode_aper;
+per_type_encoder_f QCI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QCI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QosFlowIdentifier.h"
+
+int
+QosFlowIdentifier_constraint(const 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 >= 0 && value <= 63)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 63 } /* (0..63,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_QosFlowIdentifier_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier = {
+ "QosFlowIdentifier",
+ "QosFlowIdentifier",
+ &asn_OP_NativeInteger,
+ asn_DEF_QosFlowIdentifier_tags_1,
+ sizeof(asn_DEF_QosFlowIdentifier_tags_1)
+ /sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */
+ asn_DEF_QosFlowIdentifier_tags_1, /* Same as above */
+ sizeof(asn_DEF_QosFlowIdentifier_tags_1)
+ /sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */
+ { &asn_OER_type_QosFlowIdentifier_constr_1, &asn_PER_type_QosFlowIdentifier_constr_1, QosFlowIdentifier_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _QosFlowIdentifier_H_
+#define _QosFlowIdentifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QosFlowIdentifier */
+typedef long QosFlowIdentifier_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier;
+asn_struct_free_f QosFlowIdentifier_free;
+asn_struct_print_f QosFlowIdentifier_print;
+asn_constr_check_f QosFlowIdentifier_constraint;
+ber_type_decoder_f QosFlowIdentifier_decode_ber;
+der_type_encoder_f QosFlowIdentifier_encode_der;
+xer_type_decoder_f QosFlowIdentifier_decode_xer;
+xer_type_encoder_f QosFlowIdentifier_encode_xer;
+oer_type_decoder_f QosFlowIdentifier_decode_oer;
+oer_type_encoder_f QosFlowIdentifier_encode_oer;
+per_type_decoder_f QosFlowIdentifier_decode_uper;
+per_type_encoder_f QosFlowIdentifier_encode_uper;
+per_type_decoder_f QosFlowIdentifier_decode_aper;
+per_type_encoder_f QosFlowIdentifier_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QosFlowIdentifier_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RANUEID.h"
+
+int
+RANUEID_constraint(const 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 == 8)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_RANUEID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 8 /* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_RANUEID_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANUEID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANUEID = {
+ "RANUEID",
+ "RANUEID",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_RANUEID_tags_1,
+ sizeof(asn_DEF_RANUEID_tags_1)
+ /sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */
+ asn_DEF_RANUEID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANUEID_tags_1)
+ /sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */
+ { &asn_OER_type_RANUEID_constr_1, &asn_PER_type_RANUEID_constr_1, RANUEID_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RANUEID_H_
+#define _RANUEID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANUEID */
+typedef OCTET_STRING_t RANUEID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RANUEID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RANUEID;
+asn_struct_free_f RANUEID_free;
+asn_struct_print_f RANUEID_print;
+asn_constr_check_f RANUEID_constraint;
+ber_type_decoder_f RANUEID_decode_ber;
+der_type_encoder_f RANUEID_encode_der;
+xer_type_decoder_f RANUEID_decode_xer;
+xer_type_encoder_f RANUEID_encode_xer;
+oer_type_decoder_f RANUEID_decode_oer;
+oer_type_encoder_f RANUEID_encode_oer;
+per_type_decoder_f RANUEID_decode_uper;
+per_type_encoder_f RANUEID_encode_uper;
+per_type_decoder_f RANUEID_decode_aper;
+per_type_encoder_f RANUEID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANUEID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RANfunction-Name.h"
+
+static const int permitted_alphabet_table_2[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_2[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_2(const void *sptr) {
+ const int *table = permitted_alphabet_table_2;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static const int permitted_alphabet_table_3[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_3[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_3(const void *sptr) {
+ const int *table = permitted_alphabet_table_3;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static const int permitted_alphabet_table_4[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_4[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_4(const void *sptr) {
+ const int *table = permitted_alphabet_table_4;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+static int
+memb_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 >= 1 && size <= 150)
+ && !check_permitted_alphabet_2(st)) {
+ /* 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 asn_PER_MAP_ranFunction_ShortName_2_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0]))
+ return -1;
+ return permitted_alphabet_table_2[value] - 1;
+}
+static int asn_PER_MAP_ranFunction_ShortName_2_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0]))
+ return -1;
+ return permitted_alphabet_code2value_2[code];
+}
+static int
+memb_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 >= 1 && size <= 1000)
+ && !check_permitted_alphabet_3(st)) {
+ /* 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 asn_PER_MAP_ranFunction_E2SM_OID_3_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0]))
+ return -1;
+ return permitted_alphabet_table_3[value] - 1;
+}
+static int asn_PER_MAP_ranFunction_E2SM_OID_3_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0]))
+ return -1;
+ return permitted_alphabet_code2value_3[code];
+}
+static int
+memb_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 >= 1 && size <= 150)
+ && !check_permitted_alphabet_4(st)) {
+ /* 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 asn_PER_MAP_ranFunction_Description_4_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0]))
+ return -1;
+ return permitted_alphabet_table_4[value] - 1;
+}
+static int asn_PER_MAP_ranFunction_Description_4_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0]))
+ return -1;
+ return permitted_alphabet_code2value_4[code];
+}
+static asn_oer_constraints_t asn_OER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */,
+ asn_PER_MAP_ranFunction_ShortName_2_v2c, /* Value to PER code map */
+ asn_PER_MAP_ranFunction_ShortName_2_c2v /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */,
+ asn_PER_MAP_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */
+ asn_PER_MAP_ranFunction_E2SM_OID_3_c2v /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranFunction_Description_constr_4 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ranFunction_Description_constr_4 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */,
+ asn_PER_MAP_ranFunction_Description_4_v2c, /* Value to PER code map */
+ asn_PER_MAP_ranFunction_Description_4_c2v /* PER code to value map */
+};
+asn_TYPE_member_t asn_MBR_RANfunction_Name_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_ShortName),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_ranFunction_ShortName_constr_2, &asn_PER_memb_ranFunction_ShortName_constr_2, memb_ranFunction_ShortName_constraint_1 },
+ 0, 0, /* No default value */
+ "ranFunction-ShortName"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_E2SM_OID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_ranFunction_E2SM_OID_constr_3, &asn_PER_memb_ranFunction_E2SM_OID_constr_3, memb_ranFunction_E2SM_OID_constraint_1 },
+ 0, 0, /* No default value */
+ "ranFunction-E2SM-OID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_Description),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { &asn_OER_memb_ranFunction_Description_constr_4, &asn_PER_memb_ranFunction_Description_constr_4, memb_ranFunction_Description_constraint_1 },
+ 0, 0, /* No default value */
+ "ranFunction-Description"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANfunction_Name, ranFunction_Instance),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ranFunction-Instance"
+ },
+};
+static const int asn_MAP_RANfunction_Name_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANfunction_Name_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Name_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1 = {
+ sizeof(struct RANfunction_Name),
+ offsetof(struct RANfunction_Name, _asn_ctx),
+ asn_MAP_RANfunction_Name_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANfunction_Name_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 4, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANfunction_Name = {
+ "RANfunction-Name",
+ "RANfunction-Name",
+ &asn_OP_SEQUENCE,
+ asn_DEF_RANfunction_Name_tags_1,
+ sizeof(asn_DEF_RANfunction_Name_tags_1)
+ /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */
+ asn_DEF_RANfunction_Name_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANfunction_Name_tags_1)
+ /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_RANfunction_Name_1,
+ 4, /* Elements count */
+ &asn_SPC_RANfunction_Name_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RANfunction_Name_H_
+#define _RANfunction_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANfunction-Name */
+typedef struct RANfunction_Name {
+ PrintableString_t ranFunction_ShortName;
+ PrintableString_t ranFunction_E2SM_OID;
+ PrintableString_t ranFunction_Description;
+ long *ranFunction_Instance; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANfunction_Name_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANfunction_Name_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#define _ISOC99_SOURCE /* For ilogb() and quiet NAN */
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE /* To reintroduce finite(3) */
+#endif
+#include <asn_internal.h>
+#if defined(__alpha)
+#include <sys/resource.h> /* For INFINITY */
+#endif
+#include <stdlib.h> /* for strtod(3) */
+#include <math.h>
+#include <float.h>
+#include <errno.h>
+#include <REAL.h>
+#include <OCTET_STRING.h>
+
+#undef INT_MAX
+#define INT_MAX ((int)(((unsigned int)-1) >> 1))
+
+#if !(defined(NAN) || defined(INFINITY))
+static volatile double real_zero CC_NOTUSED = 0.0;
+#endif
+#ifndef NAN
+#define NAN (0.0/0.0)
+#endif
+#ifndef INFINITY
+#define INFINITY (1.0/0.0)
+#endif
+
+#if defined(__clang__)
+/*
+ * isnan() is defined using generic selections and won't compile in
+ * strict C89 mode because of too fancy system's standard library.
+ * However, prior to C11 the math had a perfectly working isnan()
+ * in the math library.
+ * Disable generic selection warning so we can test C89 mode with newer libc.
+ */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc11-extensions"
+static int asn_isnan(double d) {
+ return isnan(d);
+}
+static int asn_isfinite(double d) {
+#ifdef isfinite
+ return isfinite(d); /* ISO C99 */
+#else
+ return finite(d); /* Deprecated on Mac OS X 10.9 */
+#endif
+}
+#pragma clang diagnostic pop
+#else /* !clang */
+#define asn_isnan(v) isnan(v)
+#ifdef isfinite
+#define asn_isfinite(d) isfinite(d) /* ISO C99 */
+#else
+#define asn_isfinite(d) finite(d) /* Deprecated on Mac OS X 10.9 */
+#endif
+#endif /* clang */
+
+/*
+ * REAL basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_REAL_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_operation_t asn_OP_REAL = {
+ ASN__PRIMITIVE_TYPE_free,
+ REAL_print,
+ REAL_compare,
+ ber_decode_primitive,
+ der_encode_primitive,
+ REAL_decode_xer,
+ REAL_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ REAL_decode_oer,
+ REAL_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ REAL_decode_uper,
+ REAL_encode_uper,
+ REAL_decode_aper,
+ REAL_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ REAL_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_REAL = {
+ "REAL",
+ "REAL",
+ &asn_OP_REAL,
+ asn_DEF_REAL_tags,
+ sizeof(asn_DEF_REAL_tags) / sizeof(asn_DEF_REAL_tags[0]),
+ asn_DEF_REAL_tags, /* Same as above */
+ sizeof(asn_DEF_REAL_tags) / sizeof(asn_DEF_REAL_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0,
+ 0, /* No members */
+ 0 /* No specifics */
+};
+
+typedef enum specialRealValue {
+ SRV__NOT_A_NUMBER,
+ SRV__MINUS_INFINITY,
+ SRV__PLUS_INFINITY
+} specialRealValue_e;
+static struct specialRealValue_s {
+ char *string;
+ size_t length;
+ long dv;
+} specialRealValue[] = {
+#define SRV_SET(foo, val) { foo, sizeof(foo) - 1, val }
+ SRV_SET("<NOT-A-NUMBER/>", 0),
+ SRV_SET("<MINUS-INFINITY/>", -1),
+ SRV_SET("<PLUS-INFINITY/>", 1),
+#undef SRV_SET
+};
+
+ssize_t
+REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key) {
+ char local_buf[64];
+ char *buf = local_buf;
+ ssize_t buflen = sizeof(local_buf);
+ const char *fmt = canonical ? "%.17E" /* Precise */ : "%.15f" /* Pleasant*/;
+ ssize_t ret;
+
+ /*
+ * Check whether it is a special value.
+ */
+ /* fpclassify(3) is not portable yet */
+ if(asn_isnan(d)) {
+ buf = specialRealValue[SRV__NOT_A_NUMBER].string;
+ buflen = specialRealValue[SRV__NOT_A_NUMBER].length;
+ return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
+ } else if(!asn_isfinite(d)) {
+ if(copysign(1.0, d) < 0.0) {
+ buf = specialRealValue[SRV__MINUS_INFINITY].string;
+ buflen = specialRealValue[SRV__MINUS_INFINITY].length;
+ } else {
+ buf = specialRealValue[SRV__PLUS_INFINITY].string;
+ buflen = specialRealValue[SRV__PLUS_INFINITY].length;
+ }
+ return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
+ } else if(ilogb(d) <= -INT_MAX) {
+ if(copysign(1.0, d) < 0.0) {
+ buf = "-0";
+ buflen = 2;
+ } else {
+ buf = "0";
+ buflen = 1;
+ }
+ return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
+ }
+
+ /*
+ * Use the libc's double printing, hopefully they got it right.
+ */
+ do {
+ ret = snprintf(buf, buflen, fmt, d);
+ if(ret < 0) {
+ /* There are some old broken APIs. */
+ buflen <<= 1;
+ if(buflen > 4096) {
+ /* Should be plenty. */
+ if(buf != local_buf) FREEMEM(buf);
+ return -1;
+ }
+ } else if(ret >= buflen) {
+ buflen = ret + 1;
+ } else {
+ buflen = ret;
+ break;
+ }
+ if(buf != local_buf) FREEMEM(buf);
+ buf = (char *)MALLOC(buflen);
+ if(!buf) return -1;
+ } while(1);
+
+ if(canonical) {
+ /*
+ * Transform the "[-]d.dddE+-dd" output into "[-]d.dddE[-]d"
+ * Check that snprintf() constructed the output correctly.
+ */
+ char *dot;
+ char *end = buf + buflen;
+ char *last_zero;
+ char *first_zero_in_run;
+ char *s;
+
+ enum {
+ LZSTATE_NOTHING,
+ LZSTATE_ZEROES
+ } lz_state = LZSTATE_NOTHING;
+
+ dot = (buf[0] == 0x2d /* '-' */) ? (buf + 2) : (buf + 1);
+ if(*dot >= 0x30) {
+ if(buf != local_buf) FREEMEM(buf);
+ errno = EINVAL;
+ return -1; /* Not a dot, really */
+ }
+ *dot = 0x2e; /* Replace possible comma */
+
+ for(first_zero_in_run = last_zero = s = dot + 2; s < end; s++) {
+ switch(*s) {
+ case 0x45: /* 'E' */
+ if(lz_state == LZSTATE_ZEROES) last_zero = first_zero_in_run;
+ break;
+ case 0x30: /* '0' */
+ if(lz_state == LZSTATE_NOTHING) first_zero_in_run = s;
+ lz_state = LZSTATE_ZEROES;
+ continue;
+ default:
+ lz_state = LZSTATE_NOTHING;
+ continue;
+ }
+ break;
+ }
+
+ if(s == end) {
+ if(buf != local_buf) FREEMEM(buf);
+ errno = EINVAL;
+ return -1; /* No promised E */
+ }
+
+ assert(*s == 0x45);
+ {
+ char *E = s;
+ char *expptr = ++E;
+ char *s = expptr;
+ int sign;
+
+ if(*expptr == 0x2b /* '+' */) {
+ /* Skip the "+" */
+ buflen -= 1;
+ sign = 0;
+ } else {
+ sign = 1;
+ s++;
+ }
+ expptr++;
+ if(expptr > end) {
+ if(buf != local_buf) FREEMEM(buf);
+ errno = EINVAL;
+ return -1;
+ }
+ if(*expptr == 0x30) {
+ buflen--;
+ expptr++;
+ }
+ if(lz_state == LZSTATE_ZEROES) {
+ *last_zero = 0x45; /* E */
+ buflen -= s - (last_zero + 1);
+ s = last_zero + 1;
+ if(sign) {
+ *s++ = 0x2d /* '-' */;
+ buflen++;
+ }
+ }
+ for(; expptr <= end; s++, expptr++)
+ *s = *expptr;
+ }
+ } else {
+ /*
+ * Remove trailing zeros.
+ */
+ char *end = buf + buflen;
+ char *last_zero = end;
+ int stoplooking = 0;
+ char *z;
+ for(z = end - 1; z > buf; z--) {
+ switch(*z) {
+ case 0x30:
+ if(!stoplooking)
+ last_zero = z;
+ continue;
+ case 0x31: case 0x32: case 0x33: case 0x34:
+ case 0x35: case 0x36: case 0x37: case 0x38: case 0x39:
+ stoplooking = 1;
+ continue;
+ default: /* Catch dot and other separators */
+ /*
+ * Replace possible comma (which may even
+ * be not a comma at all: locale-defined).
+ */
+ *z = 0x2e;
+ if(last_zero == z + 1) { /* leave x.0 */
+ last_zero++;
+ }
+ buflen = last_zero - buf;
+ *last_zero = '\0';
+ break;
+ }
+ break;
+ }
+ }
+
+ ret = cb(buf, buflen, app_key);
+ if(buf != local_buf) FREEMEM(buf);
+ return (ret < 0) ? -1 : buflen;
+}
+
+int
+REAL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const REAL_t *st = (const REAL_t *)sptr;
+ ssize_t ret;
+ double d;
+
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(!st || !st->buf)
+ ret = cb("<absent>", 8, app_key);
+ else if(asn_REAL2double(st, &d))
+ ret = cb("<error>", 7, app_key);
+ else
+ ret = REAL__dump(d, 0, cb, app_key);
+
+ return (ret < 0) ? -1 : 0;
+}
+
+int
+REAL_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+ const void *bptr) {
+ const REAL_t *a = aptr;
+ const REAL_t *b = bptr;
+
+ (void)td;
+
+ if(a && b) {
+ double adbl, bdbl;
+ int ra, rb;
+ ra = asn_REAL2double(a, &adbl);
+ rb = asn_REAL2double(b, &bdbl);
+ if(ra == 0 && rb == 0) {
+ if(asn_isnan(adbl)) {
+ if(asn_isnan(bdbl)) {
+ return 0;
+ } else {
+ return -1;
+ }
+ } else if(asn_isnan(bdbl)) {
+ return 1;
+ }
+ /* Value comparison. */
+ if(adbl < bdbl) {
+ return -1;
+ } else if(adbl > bdbl) {
+ return 1;
+ } else {
+ return 0;
+ }
+ } else if(ra) {
+ return -1;
+ } else {
+ return 1;
+ }
+ } else if(!a) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+asn_enc_rval_t
+REAL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ const REAL_t *st = (const REAL_t *)sptr;
+ asn_enc_rval_t er = {0,0,0};
+ double d;
+
+ (void)ilevel;
+
+ if(!st || !st->buf || asn_REAL2double(st, &d))
+ ASN__ENCODE_FAILED;
+
+ er.encoded = REAL__dump(d, flags & XER_F_CANONICAL, cb, app_key);
+ if(er.encoded < 0) ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+
+/*
+ * Decode the chunk of XML text encoding REAL.
+ */
+static enum xer_pbd_rval
+REAL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+ const void *chunk_buf, size_t chunk_size) {
+ REAL_t *st = (REAL_t *)sptr;
+ double value;
+ const char *xerdata = (const char *)chunk_buf;
+ char *endptr = 0;
+ char *b;
+
+ (void)td;
+
+ if(!chunk_size) return XPBD_BROKEN_ENCODING;
+
+ /*
+ * Decode an XMLSpecialRealValue: <MINUS-INFINITY>, etc.
+ */
+ if(xerdata[0] == 0x3c /* '<' */) {
+ size_t i;
+ for(i = 0; i < sizeof(specialRealValue)
+ / sizeof(specialRealValue[0]); i++) {
+ struct specialRealValue_s *srv = &specialRealValue[i];
+ double dv;
+
+ if(srv->length != chunk_size
+ || memcmp(srv->string, chunk_buf, chunk_size))
+ continue;
+
+ /*
+ * It could've been done using
+ * (double)srv->dv / real_zero,
+ * but it summons fp exception on some platforms.
+ */
+ switch(srv->dv) {
+ case -1: dv = - INFINITY; break;
+ case 0: dv = NAN; break;
+ case 1: dv = INFINITY; break;
+ default: return XPBD_SYSTEM_FAILURE;
+ }
+
+ if(asn_double2REAL(st, dv))
+ return XPBD_SYSTEM_FAILURE;
+
+ return XPBD_BODY_CONSUMED;
+ }
+ ASN_DEBUG("Unknown XMLSpecialRealValue");
+ return XPBD_BROKEN_ENCODING;
+ }
+
+ /*
+ * Copy chunk into the nul-terminated string, and run strtod.
+ */
+ b = (char *)MALLOC(chunk_size + 1);
+ if(!b) return XPBD_SYSTEM_FAILURE;
+ memcpy(b, chunk_buf, chunk_size);
+ b[chunk_size] = 0; /* nul-terminate */
+
+ value = strtod(b, &endptr);
+ FREEMEM(b);
+ if(endptr == b) return XPBD_BROKEN_ENCODING;
+
+ if(asn_double2REAL(st, value))
+ return XPBD_SYSTEM_FAILURE;
+
+ return XPBD_BODY_CONSUMED;
+}
+
+asn_dec_rval_t
+REAL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ return xer_decode_primitive(opt_codec_ctx, td,
+ sptr, sizeof(REAL_t), opt_mname,
+ buf_ptr, size, REAL__xer_body_decode);
+}
+
+int
+asn_REAL2double(const REAL_t *st, double *dbl_value) {
+ unsigned int octv;
+
+ if(!st || !st->buf) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(st->size == 0) {
+ *dbl_value = 0;
+ return 0;
+ }
+
+ octv = st->buf[0]; /* unsigned byte */
+
+ switch(octv & 0xC0) {
+ case 0x40: /* X.690: 8.5.6 a) => 8.5.9 */
+ /* "SpecialRealValue" */
+
+ /* Be liberal in what you accept...
+ * http://en.wikipedia.org/wiki/Robustness_principle
+ if(st->size != 1) ...
+ */
+
+ switch(st->buf[0]) {
+ case 0x40: /* 01000000: PLUS-INFINITY */
+ *dbl_value = INFINITY;
+ return 0;
+ case 0x41: /* 01000001: MINUS-INFINITY */
+ *dbl_value = - INFINITY;
+ return 0;
+ case 0x42: /* 01000010: NOT-A-NUMBER */
+ *dbl_value = NAN;
+ return 0;
+ case 0x43: /* 01000011: minus zero */
+ *dbl_value = -0.0;
+ return 0;
+ }
+
+ errno = EINVAL;
+ return -1;
+ case 0x00: { /* X.690: 8.5.7 */
+ /*
+ * Decimal. NR{1,2,3} format from ISO 6093.
+ * NR1: [ ]*[+-]?[0-9]+
+ * NR2: [ ]*[+-]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)
+ * NR3: [ ]*[+-]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)[Ee][+-]?[0-9]+
+ */
+ double d;
+ char *source = 0;
+ char *endptr;
+ int used_malloc = 0;
+
+ if(octv == 0 || (octv & 0x3C)) {
+ /* Remaining values of bits 6 to 1 are Reserved. */
+ errno = EINVAL;
+ return -1;
+ }
+
+ /* 1. By contract, an input buffer should be '\0'-terminated.
+ * OCTET STRING decoder ensures that, as is asn_double2REAL().
+ * 2. ISO 6093 specifies COMMA as a possible decimal separator.
+ * However, strtod() can't always deal with COMMA.
+ * So her we fix both by reallocating, copying and fixing.
+ */
+ if(st->buf[st->size] != '\0' || memchr(st->buf, ',', st->size)) {
+ const uint8_t *p, *end;
+ char *b;
+
+ b = source = (char *)MALLOC(st->size + 1);
+ if(!source) return -1;
+ used_malloc = 1;
+
+ /* Copy without the first byte and with 0-termination */
+ for(p = st->buf + 1, end = st->buf + st->size;
+ p < end; b++, p++)
+ *b = (*p == ',') ? '.' : *p;
+ *b = '\0';
+ } else {
+ source = (char *)&st->buf[1];
+ }
+
+ endptr = source;
+ d = strtod(source, &endptr);
+ if(*endptr != '\0') {
+ /* Format is not consistent with ISO 6093 */
+ if(used_malloc) FREEMEM(source);
+ errno = EINVAL;
+ return -1;
+ }
+ if(used_malloc) FREEMEM(source);
+ if(asn_isfinite(d)) {
+ *dbl_value = d;
+ return 0;
+ } else {
+ errno = ERANGE;
+ return -1;
+ }
+ }
+ }
+
+ /*
+ * Binary representation.
+ */
+ {
+ double m;
+ int32_t expval; /* exponent value */
+ unsigned int elen; /* exponent value length, in octets */
+ int scaleF;
+ int baseF;
+ uint8_t *ptr;
+ uint8_t *end;
+ int sign;
+
+ switch((octv & 0x30) >> 4) {
+ case 0x00: baseF = 1; break; /* base 2 */
+ case 0x01: baseF = 3; break; /* base 8 */
+ case 0x02: baseF = 4; break; /* base 16 */
+ default:
+ /* Reserved field, can't parse now. */
+ errno = EINVAL;
+ return -1;
+ }
+
+ sign = (octv & 0x40); /* bit 7 */
+ scaleF = (octv & 0x0C) >> 2; /* bits 4 to 3 */
+
+ if(st->size <= 1 + (octv & 0x03)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ elen = (octv & 0x03); /* bits 2 to 1; 8.5.6.4 */
+ if(elen == 0x03) { /* bits 2 to 1 = 11; 8.5.6.4, case d) */
+ elen = st->buf[1]; /* unsigned binary number */
+ if(elen == 0 || st->size <= (2 + elen)) {
+ errno = EINVAL;
+ return -1;
+ }
+ /* FIXME: verify constraints of case d) */
+ ptr = &st->buf[2];
+ } else {
+ ptr = &st->buf[1];
+ }
+
+ /* Fetch the multibyte exponent */
+ expval = (int)(*(int8_t *)ptr);
+ if(elen >= sizeof(expval)-1) {
+ errno = ERANGE;
+ return -1;
+ }
+ end = ptr + elen + 1;
+ for(ptr++; ptr < end; ptr++)
+ expval = (expval * 256) + *ptr;
+
+ m = 0.0; /* Initial mantissa value */
+
+ /* Okay, the exponent is here. Now, what about mantissa? */
+ end = st->buf + st->size;
+ for(; ptr < end; ptr++)
+ m = ldexp(m, 8) + *ptr;
+
+ if(0)
+ ASN_DEBUG("m=%.10f, scF=%d, bF=%d, expval=%d, ldexp()=%f, ldexp()=%f\n",
+ m, scaleF, baseF, expval,
+ ldexp(m, expval * baseF + scaleF),
+ ldexp(m, scaleF) * pow(pow(2, baseF), expval)
+ );
+
+ /*
+ * (S * N * 2^F) * B^E
+ * Essentially:
+ m = ldexp(m, scaleF) * pow(pow(2, baseF), expval);
+ */
+ m = ldexp(m, expval * baseF + scaleF);
+ if(asn_isfinite(m)) {
+ *dbl_value = sign ? -m : m;
+ } else {
+ errno = ERANGE;
+ return -1;
+ }
+
+ } /* if(binary_format) */
+
+ return 0;
+}
+
+/*
+ * Assume IEEE 754 floating point: standard 64 bit double.
+ * [1 bit sign] [11 bits exponent] [52 bits mantissa]
+ */
+int
+asn_double2REAL(REAL_t *st, double dbl_value) {
+ double test = -0.0;
+ int float_big_endian = *(const char *)&test != 0;
+ uint8_t buf[16]; /* More than enough for 8-byte dbl_value */
+ uint8_t dscr[sizeof(dbl_value)]; /* double value scratch pad */
+ /* Assertion guards: won't even compile, if unexpected double size */
+ char assertion_buffer1[9 - sizeof(dbl_value)] CC_NOTUSED;
+ char assertion_buffer2[sizeof(dbl_value) - 7] CC_NOTUSED;
+ uint8_t *ptr = buf;
+ uint8_t *mstop; /* Last byte of mantissa */
+ unsigned int mval; /* Value of the last byte of mantissa */
+ unsigned int bmsign; /* binary mask with sign */
+ unsigned int buflen;
+ unsigned int accum;
+ int expval;
+
+ if(!st) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /*
+ * ilogb(+-0) returns -INT_MAX or INT_MIN (platform-dependent)
+ * ilogb(+-inf) returns INT_MAX, logb(+-inf) returns +inf
+ * ilogb(NaN) returns INT_MIN or INT_MAX (platform-dependent)
+ */
+ expval = ilogb(dbl_value);
+ if(expval <= -INT_MAX /* Also catches +-0 and maybe isnan() */
+ || expval == INT_MAX /* catches isfin() and maybe isnan() */
+ ) {
+ if(!st->buf || st->size < 2) {
+ ptr = (uint8_t *)MALLOC(2);
+ if(!ptr) return -1;
+ if(st->buf) FREEMEM(st->buf);
+ st->buf = ptr;
+ }
+ /* fpclassify(3) is not portable yet */
+ if(asn_isnan(dbl_value)) {
+ st->buf[0] = 0x42; /* NaN */
+ st->buf[1] = 0;
+ st->size = 1;
+ } else if(!asn_isfinite(dbl_value)) {
+ if(copysign(1.0, dbl_value) < 0.0) {
+ st->buf[0] = 0x41; /* MINUS-INFINITY */
+ } else {
+ st->buf[0] = 0x40; /* PLUS-INFINITY */
+ }
+ st->buf[1] = 0;
+ st->size = 1;
+ } else {
+ if(copysign(1.0, dbl_value) >= 0.0) {
+ /* no content octets: positive zero */
+ st->buf[0] = 0; /* JIC */
+ st->size = 0;
+ } else {
+ /* Negative zero. #8.5.3, 8.5.9 */
+ st->buf[0] = 0x43;
+ st->buf[1] = 0;
+ st->size = 1;
+ }
+ }
+ return 0;
+ }
+
+ if(float_big_endian) {
+ uint8_t *s = ((uint8_t *)&dbl_value) + 1;
+ uint8_t *end = ((uint8_t *)&dbl_value) + sizeof(double);
+ uint8_t *d;
+
+ bmsign = 0x80 | ((s[-1] >> 1) & 0x40); /* binary mask & - */
+ for(mstop = d = dscr; s < end; d++, s++) {
+ *d = *s;
+ if(*d) mstop = d;
+ }
+ } else {
+ uint8_t *s = ((uint8_t *)&dbl_value) + sizeof(dbl_value) - 2;
+ uint8_t *start = ((uint8_t *)&dbl_value);
+ uint8_t *d;
+
+ bmsign = 0x80 | ((s[1] >> 1) & 0x40); /* binary mask & - */
+ for(mstop = d = dscr; s >= start; d++, s--) {
+ *d = *s;
+ if(*d) mstop = d;
+ }
+ }
+
+ /* Remove parts of the exponent, leave mantissa and explicit 1. */
+ dscr[0] = 0x10 | (dscr[0] & 0x0f);
+
+ /* Adjust exponent in a very unobvious way */
+ expval -= 8 * ((mstop - dscr) + 1) - 4;
+
+ /* This loop ensures DER conformance by forcing mantissa odd: 11.3.1 */
+ mval = *mstop;
+ if(mval && !(mval & 1)) {
+ int shift_count = 1;
+ int ishift;
+ uint8_t *mptr;
+
+ /*
+ * Figure out what needs to be done to make mantissa odd.
+ */
+ if(!(mval & 0x0f)) /* Speed-up a little */
+ shift_count = 4;
+ while(((mval >> shift_count) & 1) == 0)
+ shift_count++;
+
+ ishift = 8 - shift_count;
+ accum = 0;
+
+ /* Go over the buffer, shifting it shift_count bits right. */
+ for(mptr = dscr; mptr <= mstop; mptr++) {
+ mval = *mptr;
+ *mptr = accum | (mval >> shift_count);
+ accum = mval << ishift;
+ }
+
+ /* Adjust exponent appropriately. */
+ expval += shift_count;
+ }
+
+ if(expval < 0) {
+ if((expval >> 7) == -1) {
+ *ptr++ = bmsign | 0x00;
+ *ptr++ = expval;
+ } else if((expval >> 15) == -1) {
+ *ptr++ = bmsign | 0x01;
+ *ptr++ = expval >> 8;
+ *ptr++ = expval;
+ } else {
+ *ptr++ = bmsign | 0x02;
+ *ptr++ = expval >> 16;
+ *ptr++ = expval >> 8;
+ *ptr++ = expval;
+ }
+ } else if(expval <= 0x7f) {
+ *ptr++ = bmsign | 0x00;
+ *ptr++ = expval;
+ } else if(expval <= 0x7fff) {
+ *ptr++ = bmsign | 0x01;
+ *ptr++ = expval >> 8;
+ *ptr++ = expval;
+ } else {
+ assert(expval <= 0x7fffff);
+ *ptr++ = bmsign | 0x02;
+ *ptr++ = expval >> 16;
+ *ptr++ = expval >> 8;
+ *ptr++ = expval;
+ }
+
+ buflen = (mstop - dscr) + 1;
+ memcpy(ptr, dscr, buflen);
+ ptr += buflen;
+ buflen = ptr - buf;
+
+ ptr = (uint8_t *)MALLOC(buflen + 1);
+ if(!ptr) return -1;
+
+ memcpy(ptr, buf, buflen);
+ buf[buflen] = 0; /* JIC */
+
+ if(st->buf) FREEMEM(st->buf);
+ st->buf = ptr;
+ st->size = buflen;
+
+ return 0;
+}
+
+int CC_ATTR_NO_SANITIZE("float-cast-overflow")
+asn_double2float(double d, float *outcome) {
+ float f = d;
+
+ *outcome = f;
+
+ if(asn_isfinite(d) == asn_isfinite(f)) {
+ return 0;
+ } else {
+ return -1;
+ }
+}
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+/*
+ * Encode as Canonical OER
+ */
+asn_enc_rval_t
+REAL_encode_oer(const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, const void *sptr,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const REAL_t *st = sptr;
+ asn_enc_rval_t er = {0,0,0};
+ ssize_t len_len;
+
+ if(!st || !st->buf || !td)
+ ASN__ENCODE_FAILED;
+
+ if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+ if(constraints && constraints->value.width != 0) {
+ /* If we're constrained to a narrow float/double representation, we
+ * shouldn't have ended up using REAL. Expecting NativeReal. */
+ ASN__ENCODE_FAILED;
+ }
+
+ /* Encode a fake REAL */
+ len_len = oer_serialize_length(st->size, cb, app_key);
+ if(len_len < 0 || cb(st->buf, st->size, app_key) < 0) {
+ ASN__ENCODE_FAILED;
+ } else {
+ er.encoded = len_len + st->size;
+ ASN__ENCODED_OK(er);
+ }
+}
+
+asn_dec_rval_t
+REAL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, void **sptr,
+ const void *ptr, size_t size) {
+ asn_dec_rval_t ok = {RC_OK, 0};
+ REAL_t *st;
+ uint8_t *buf;
+ ssize_t len_len;
+ size_t real_body_len;
+
+ (void)opt_codec_ctx;
+
+ if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+ if(constraints && constraints->value.width != 0) {
+ /* If we're constrained to a narrow float/double representation, we
+ * shouldn't have ended up using REAL. Expecting NativeReal. */
+ ASN__DECODE_FAILED;
+ }
+
+ len_len = oer_fetch_length(ptr, size, &real_body_len);
+ if(len_len < 0) ASN__DECODE_FAILED;
+ if(len_len == 0) ASN__DECODE_STARVED;
+
+ ptr = (const char *)ptr + len_len;
+ size -= len_len;
+
+ if(real_body_len > size) ASN__DECODE_STARVED;
+
+ buf = CALLOC(1, real_body_len + 1);
+ if(!buf) ASN__DECODE_FAILED;
+
+ if(!(st = *sptr)) {
+ st = (*sptr = CALLOC(1, sizeof(REAL_t)));
+ if(!st) {
+ FREEMEM(buf);
+ ASN__DECODE_FAILED;
+ }
+ } else {
+ FREEMEM(st->buf);
+ }
+
+ memcpy(buf, ptr, real_body_len);
+ buf[real_body_len] = '\0';
+
+ st->buf = buf;
+ st->size = real_body_len;
+
+ ok.consumed = len_len + real_body_len;
+ return ok;
+}
+
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+REAL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ (void)constraints; /* No PER visible constraints */
+ return OCTET_STRING_decode_uper(opt_codec_ctx, td, 0, sptr, pd);
+}
+
+asn_enc_rval_t
+REAL_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ (void)constraints; /* No PER visible constraints */
+ return OCTET_STRING_encode_uper(td, 0, sptr, po);
+}
+
+asn_dec_rval_t
+REAL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ void **sptr, asn_per_data_t *pd) {
+ (void)constraints; /* No PER visible constraints */
+ return OCTET_STRING_decode_aper(opt_codec_ctx, td, 0, sptr, pd);
+}
+
+asn_enc_rval_t
+REAL_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ (void)constraints; /* No PER visible constraints */
+ return OCTET_STRING_encode_aper(td, 0, sptr, po);
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+asn_random_fill_result_t
+REAL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constraints,
+ size_t max_length) {
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ static const double values[] = {
+ 0, -0.0, -1, 1, -M_E, M_E, -3.14, 3.14, -M_PI, M_PI, -255, 255,
+ /* 2^51 */
+ -2251799813685248.0, 2251799813685248.0,
+ /* 2^52 */
+ -4503599627370496.0, 4503599627370496.0,
+ /* 2^100 */
+ -1267650600228229401496703205376.0, 1267650600228229401496703205376.0,
+ -FLT_MIN, FLT_MIN,
+ -FLT_MAX, FLT_MAX,
+ -DBL_MIN, DBL_MIN,
+ -DBL_MAX, DBL_MAX,
+#ifdef FLT_TRUE_MIN
+ -FLT_TRUE_MIN, FLT_TRUE_MIN,
+#endif
+#ifdef DBL_TRUE_MIN
+ -DBL_TRUE_MIN, DBL_TRUE_MIN,
+#endif
+ INFINITY, -INFINITY, NAN};
+ REAL_t *st;
+ double d;
+
+ (void)constraints;
+
+ if(max_length == 0) return result_skipped;
+
+ d = values[asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1)];
+
+ if(*sptr) {
+ st = *sptr;
+ } else {
+ st = (REAL_t*)(*sptr = CALLOC(1, sizeof(REAL_t)));
+ if(!st) {
+ return result_failed;
+ }
+ }
+
+ if(asn_double2REAL(st, d)) {
+ if(st == *sptr) {
+ ASN_STRUCT_RESET(*td, st);
+ } else {
+ ASN_STRUCT_FREE(*td, st);
+ }
+ return result_failed;
+ }
+
+ result_ok.length = st->size;
+ return result_ok;
+}
+
--- /dev/null
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_TYPE_REAL_H
+#define ASN_TYPE_REAL_H
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t REAL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_REAL;
+extern asn_TYPE_operation_t asn_OP_REAL;
+
+asn_struct_print_f REAL_print;
+asn_struct_compare_f REAL_compare;
+oer_type_decoder_f REAL_decode_oer;
+oer_type_encoder_f REAL_encode_oer;
+per_type_decoder_f REAL_decode_uper;
+per_type_encoder_f REAL_encode_uper;
+per_type_decoder_f REAL_decode_aper;
+per_type_encoder_f REAL_encode_aper;
+xer_type_decoder_f REAL_decode_xer;
+xer_type_encoder_f REAL_encode_xer;
+asn_random_fill_f REAL_random_fill;
+
+#define REAL_free ASN__PRIMITIVE_TYPE_free,
+#define REAL_constraint asn_generic_no_constraint
+#define REAL_decode_ber ber_decode_primitive
+#define REAL_encode_der der_encode_primitive
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+ssize_t REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key);
+
+/*
+ * Convert between native double type and REAL representation (DER).
+ * RETURN VALUES:
+ * 0: Value converted successfully
+ * -1: An error occured while converting the value: invalid format.
+ */
+int asn_REAL2double(const REAL_t *real_ptr, double *d);
+int asn_double2REAL(REAL_t *real_ptr, double d);
+
+/*
+ * Downcast double to float while checking that no overflow occurs.
+ * This allows stricter control of the input data.
+ * RETURN VALUES:
+ * 0: The conversion was successful (perhaps with a loss of precision)
+ * -1: The conversion created overflow into infinities.
+ * The (outcome) is ALWAYS set to a value you'd expect from the
+ * standard silent float to double conversion behavior.
+ */
+int asn_double2float(double d, float *outcome);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_TYPE_REAL_H */
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-EventTriggerStyle-Item.h"
+
+asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Type),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Style_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-EventTriggerStyle-Type"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Name),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Style_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-EventTriggerStyle-Name"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerFormat_Type),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Format_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-EventTriggerFormat-Type"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1 = {
+ sizeof(struct RIC_EventTriggerStyle_Item),
+ offsetof(struct RIC_EventTriggerStyle_Item, _asn_ctx),
+ asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item = {
+ "RIC-EventTriggerStyle-Item",
+ "RIC-EventTriggerStyle-Item",
+ &asn_OP_SEQUENCE,
+ asn_DEF_RIC_EventTriggerStyle_Item_tags_1,
+ sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1)
+ /sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */
+ asn_DEF_RIC_EventTriggerStyle_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1)
+ /sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_RIC_EventTriggerStyle_Item_1,
+ 3, /* Elements count */
+ &asn_SPC_RIC_EventTriggerStyle_Item_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RIC_EventTriggerStyle_Item_H_
+#define _RIC_EventTriggerStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-EventTriggerStyle-Item */
+typedef struct RIC_EventTriggerStyle_Item {
+ RIC_Style_Type_t ric_EventTriggerStyle_Type;
+ RIC_Style_Name_t ric_EventTriggerStyle_Name;
+ RIC_Format_Type_t ric_EventTriggerFormat_Type;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RIC_EventTriggerStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_EventTriggerStyle_Item_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-Format-Type.h"
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_RIC_Format_Type_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type = {
+ "RIC-Format-Type",
+ "RIC-Format-Type",
+ &asn_OP_NativeInteger,
+ asn_DEF_RIC_Format_Type_tags_1,
+ sizeof(asn_DEF_RIC_Format_Type_tags_1)
+ /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */
+ asn_DEF_RIC_Format_Type_tags_1, /* Same as above */
+ sizeof(asn_DEF_RIC_Format_Type_tags_1)
+ /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */
+ { 0, 0, NativeInteger_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RIC_Format_Type_H_
+#define _RIC_Format_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Format-Type */
+typedef long RIC_Format_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type;
+asn_struct_free_f RIC_Format_Type_free;
+asn_struct_print_f RIC_Format_Type_print;
+asn_constr_check_f RIC_Format_Type_constraint;
+ber_type_decoder_f RIC_Format_Type_decode_ber;
+der_type_encoder_f RIC_Format_Type_encode_der;
+xer_type_decoder_f RIC_Format_Type_decode_xer;
+xer_type_encoder_f RIC_Format_Type_encode_xer;
+oer_type_decoder_f RIC_Format_Type_decode_oer;
+oer_type_encoder_f RIC_Format_Type_encode_oer;
+per_type_decoder_f RIC_Format_Type_decode_uper;
+per_type_encoder_f RIC_Format_Type_encode_uper;
+per_type_decoder_f RIC_Format_Type_decode_aper;
+per_type_encoder_f RIC_Format_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_Format_Type_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-ReportStyle-Item.h"
+
+asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Type),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Style_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-ReportStyle-Type"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Name),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Style_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-ReportStyle-Name"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ActionFormat_Type),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Format_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-ActionFormat-Type"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, measInfo_Action_List),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MeasurementInfo_Action_List,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measInfo-Action-List"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_IndicationHeaderFormat_Type),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Format_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-IndicationHeaderFormat-Type"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_IndicationMessageFormat_Type),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Format_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-IndicationMessageFormat-Type"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ActionFormat-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* measInfo-Action-List */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-IndicationMessageFormat-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1 = {
+ sizeof(struct RIC_ReportStyle_Item),
+ offsetof(struct RIC_ReportStyle_Item, _asn_ctx),
+ asn_MAP_RIC_ReportStyle_Item_tag2el_1,
+ 6, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 6, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item = {
+ "RIC-ReportStyle-Item",
+ "RIC-ReportStyle-Item",
+ &asn_OP_SEQUENCE,
+ asn_DEF_RIC_ReportStyle_Item_tags_1,
+ sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1)
+ /sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */
+ asn_DEF_RIC_ReportStyle_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1)
+ /sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_RIC_ReportStyle_Item_1,
+ 6, /* Elements count */
+ &asn_SPC_RIC_ReportStyle_Item_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RIC_ReportStyle_Item_H_
+#define _RIC_ReportStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include "MeasurementInfo-Action-List.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-ReportStyle-Item */
+typedef struct RIC_ReportStyle_Item {
+ RIC_Style_Type_t ric_ReportStyle_Type;
+ RIC_Style_Name_t ric_ReportStyle_Name;
+ RIC_Format_Type_t ric_ActionFormat_Type;
+ MeasurementInfo_Action_List_t measInfo_Action_List;
+ RIC_Format_Type_t ric_IndicationHeaderFormat_Type;
+ RIC_Format_Type_t ric_IndicationMessageFormat_Type;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RIC_ReportStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_ReportStyle_Item_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-Style-Name.h"
+
+static const int permitted_alphabet_table_1[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int permitted_alphabet_code2value_1[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_1(const void *sptr) {
+ const int *table = permitted_alphabet_table_1;
+ /* The underlying type is PrintableString */
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+ const uint8_t *ch = st->buf;
+ const uint8_t *end = ch + st->size;
+
+ for(; ch < end; ch++) {
+ uint8_t cv = *ch;
+ if(!table[cv]) return -1;
+ }
+ return 0;
+}
+
+int
+RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const PrintableString_t *st = (const PrintableString_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 >= 1 && size <= 150)
+ && !check_permitted_alphabet_1(st)) {
+ /* 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 asn_PER_MAP_RIC_Style_Name_1_v2c(unsigned int value) {
+ if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
+ return -1;
+ return permitted_alphabet_table_1[value] - 1;
+}
+static int asn_PER_MAP_RIC_Style_Name_1_c2v(unsigned int code) {
+ if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
+ return -1;
+ return permitted_alphabet_code2value_1[code];
+}
+/*
+ * This type is implemented using PrintableString,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_Style_Name_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */,
+ asn_PER_MAP_RIC_Style_Name_1_v2c, /* Value to PER code map */
+ asn_PER_MAP_RIC_Style_Name_1_c2v /* PER code to value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_Style_Name_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name = {
+ "RIC-Style-Name",
+ "RIC-Style-Name",
+ &asn_OP_PrintableString,
+ asn_DEF_RIC_Style_Name_tags_1,
+ sizeof(asn_DEF_RIC_Style_Name_tags_1)
+ /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */
+ asn_DEF_RIC_Style_Name_tags_1, /* Same as above */
+ sizeof(asn_DEF_RIC_Style_Name_tags_1)
+ /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */
+ { &asn_OER_type_RIC_Style_Name_constr_1, &asn_PER_type_RIC_Style_Name_constr_1, RIC_Style_Name_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RIC_Style_Name_H_
+#define _RIC_Style_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Style-Name */
+typedef PrintableString_t RIC_Style_Name_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name;
+asn_struct_free_f RIC_Style_Name_free;
+asn_struct_print_f RIC_Style_Name_print;
+asn_constr_check_f RIC_Style_Name_constraint;
+ber_type_decoder_f RIC_Style_Name_decode_ber;
+der_type_encoder_f RIC_Style_Name_encode_der;
+xer_type_decoder_f RIC_Style_Name_decode_xer;
+xer_type_encoder_f RIC_Style_Name_encode_xer;
+oer_type_decoder_f RIC_Style_Name_decode_oer;
+oer_type_encoder_f RIC_Style_Name_encode_oer;
+per_type_decoder_f RIC_Style_Name_decode_uper;
+per_type_encoder_f RIC_Style_Name_encode_uper;
+per_type_decoder_f RIC_Style_Name_decode_aper;
+per_type_encoder_f RIC_Style_Name_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_Style_Name_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-Style-Type.h"
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_RIC_Style_Type_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type = {
+ "RIC-Style-Type",
+ "RIC-Style-Type",
+ &asn_OP_NativeInteger,
+ asn_DEF_RIC_Style_Type_tags_1,
+ sizeof(asn_DEF_RIC_Style_Type_tags_1)
+ /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */
+ asn_DEF_RIC_Style_Type_tags_1, /* Same as above */
+ sizeof(asn_DEF_RIC_Style_Type_tags_1)
+ /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */
+ { 0, 0, NativeInteger_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _RIC_Style_Type_H_
+#define _RIC_Style_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Style-Type */
+typedef long RIC_Style_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type;
+asn_struct_free_f RIC_Style_Type_free;
+asn_struct_print_f RIC_Style_Type_print;
+asn_constr_check_f RIC_Style_Type_constraint;
+ber_type_decoder_f RIC_Style_Type_decode_ber;
+der_type_encoder_f RIC_Style_Type_encode_der;
+xer_type_decoder_f RIC_Style_Type_decode_xer;
+xer_type_encoder_f RIC_Style_Type_encode_xer;
+oer_type_decoder_f RIC_Style_Type_decode_oer;
+oer_type_encoder_f RIC_Style_Type_encode_oer;
+per_type_decoder_f RIC_Style_Type_decode_uper;
+per_type_encoder_f RIC_Style_Type_encode_uper;
+per_type_decoder_f RIC_Style_Type_decode_aper;
+per_type_encoder_f RIC_Style_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_Style_Type_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "S-NSSAI.h"
+
+asn_TYPE_member_t asn_MBR_S_NSSAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct S_NSSAI, sST),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_SST,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "sST"
+ },
+ { ATF_POINTER, 1, offsetof(struct S_NSSAI, sD),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_SD,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "sD"
+ },
+};
+static const int asn_MAP_S_NSSAI_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_S_NSSAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_S_NSSAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sST */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sD */
+};
+asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1 = {
+ sizeof(struct S_NSSAI),
+ offsetof(struct S_NSSAI, _asn_ctx),
+ asn_MAP_S_NSSAI_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_S_NSSAI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_S_NSSAI = {
+ "S-NSSAI",
+ "S-NSSAI",
+ &asn_OP_SEQUENCE,
+ asn_DEF_S_NSSAI_tags_1,
+ sizeof(asn_DEF_S_NSSAI_tags_1)
+ /sizeof(asn_DEF_S_NSSAI_tags_1[0]), /* 1 */
+ asn_DEF_S_NSSAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_S_NSSAI_tags_1)
+ /sizeof(asn_DEF_S_NSSAI_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_S_NSSAI_1,
+ 2, /* Elements count */
+ &asn_SPC_S_NSSAI_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _S_NSSAI_H_
+#define _S_NSSAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SST.h"
+#include "SD.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* S-NSSAI */
+typedef struct S_NSSAI {
+ SST_t sST;
+ SD_t *sD; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} S_NSSAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_S_NSSAI;
+extern asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1;
+extern asn_TYPE_member_t asn_MBR_S_NSSAI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _S_NSSAI_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SD.h"
+
+int
+SD_constraint(const 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 == 3)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_SD_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 3 /* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_SD_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SD_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SD = {
+ "SD",
+ "SD",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_SD_tags_1,
+ sizeof(asn_DEF_SD_tags_1)
+ /sizeof(asn_DEF_SD_tags_1[0]), /* 1 */
+ asn_DEF_SD_tags_1, /* Same as above */
+ sizeof(asn_DEF_SD_tags_1)
+ /sizeof(asn_DEF_SD_tags_1[0]), /* 1 */
+ { &asn_OER_type_SD_constr_1, &asn_PER_type_SD_constr_1, SD_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _SD_H_
+#define _SD_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SD */
+typedef OCTET_STRING_t SD_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SD_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SD;
+asn_struct_free_f SD_free;
+asn_struct_print_f SD_print;
+asn_constr_check_f SD_constraint;
+ber_type_decoder_f SD_decode_ber;
+der_type_encoder_f SD_encode_der;
+xer_type_decoder_f SD_decode_xer;
+xer_type_encoder_f SD_encode_xer;
+oer_type_decoder_f SD_decode_oer;
+oer_type_encoder_f SD_encode_oer;
+per_type_decoder_f SD_decode_uper;
+per_type_encoder_f SD_encode_uper;
+per_type_decoder_f SD_decode_aper;
+per_type_encoder_f SD_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SD_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SST.h"
+
+int
+SST_constraint(const 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 == 1)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_SST_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 1 /* (SIZE(1..1)) */};
+asn_per_constraints_t asn_PER_type_SST_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SST_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SST = {
+ "SST",
+ "SST",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_SST_tags_1,
+ sizeof(asn_DEF_SST_tags_1)
+ /sizeof(asn_DEF_SST_tags_1[0]), /* 1 */
+ asn_DEF_SST_tags_1, /* Same as above */
+ sizeof(asn_DEF_SST_tags_1)
+ /sizeof(asn_DEF_SST_tags_1[0]), /* 1 */
+ { &asn_OER_type_SST_constr_1, &asn_PER_type_SST_constr_1, SST_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _SST_H_
+#define _SST_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SST */
+typedef OCTET_STRING_t SST_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SST_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SST;
+asn_struct_free_f SST_free;
+asn_struct_print_f SST_print;
+asn_constr_check_f SST_constraint;
+ber_type_decoder_f SST_decode_ber;
+der_type_encoder_f SST_encode_der;
+xer_type_decoder_f SST_decode_xer;
+xer_type_encoder_f SST_encode_xer;
+oer_type_decoder_f SST_decode_oer;
+oer_type_encoder_f SST_encode_oer;
+per_type_decoder_f SST_decode_uper;
+per_type_encoder_f SST_encode_uper;
+per_type_decoder_f SST_decode_aper;
+per_type_encoder_f SST_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SST_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCond-Expression.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_TestCond_Expression_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_TestCond_Expression_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_TestCond_Expression_value2enum_1[] = {
+ { 0, 5, "equal" },
+ { 1, 11, "greaterthan" },
+ { 2, 8, "lessthan" },
+ { 3, 8, "contains" },
+ { 4, 7, "present" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_TestCond_Expression_enum2value_1[] = {
+ 3, /* contains(3) */
+ 0, /* equal(0) */
+ 1, /* greaterthan(1) */
+ 2, /* lessthan(2) */
+ 4 /* present(4) */
+ /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_TestCond_Expression_specs_1 = {
+ asn_MAP_TestCond_Expression_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_TestCond_Expression_enum2value_1, /* N => "tag"; sorted by N */
+ 5, /* Number of elements in the maps */
+ 6, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_TestCond_Expression_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TestCond_Expression = {
+ "TestCond-Expression",
+ "TestCond-Expression",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_TestCond_Expression_tags_1,
+ sizeof(asn_DEF_TestCond_Expression_tags_1)
+ /sizeof(asn_DEF_TestCond_Expression_tags_1[0]), /* 1 */
+ asn_DEF_TestCond_Expression_tags_1, /* Same as above */
+ sizeof(asn_DEF_TestCond_Expression_tags_1)
+ /sizeof(asn_DEF_TestCond_Expression_tags_1[0]), /* 1 */
+ { &asn_OER_type_TestCond_Expression_constr_1, &asn_PER_type_TestCond_Expression_constr_1, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_TestCond_Expression_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _TestCond_Expression_H_
+#define _TestCond_Expression_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TestCond_Expression {
+ TestCond_Expression_equal = 0,
+ TestCond_Expression_greaterthan = 1,
+ TestCond_Expression_lessthan = 2,
+ TestCond_Expression_contains = 3,
+ TestCond_Expression_present = 4
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Expression;
+
+/* TestCond-Expression */
+typedef long TestCond_Expression_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TestCond_Expression_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TestCond_Expression;
+extern const asn_INTEGER_specifics_t asn_SPC_TestCond_Expression_specs_1;
+asn_struct_free_f TestCond_Expression_free;
+asn_struct_print_f TestCond_Expression_print;
+asn_constr_check_f TestCond_Expression_constraint;
+ber_type_decoder_f TestCond_Expression_decode_ber;
+der_type_encoder_f TestCond_Expression_encode_der;
+xer_type_decoder_f TestCond_Expression_decode_xer;
+xer_type_encoder_f TestCond_Expression_encode_xer;
+oer_type_decoder_f TestCond_Expression_decode_oer;
+oer_type_encoder_f TestCond_Expression_encode_oer;
+per_type_decoder_f TestCond_Expression_decode_uper;
+per_type_encoder_f TestCond_Expression_encode_uper;
+per_type_decoder_f TestCond_Expression_decode_aper;
+per_type_encoder_f TestCond_Expression_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCond_Expression_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCond-Type.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_gBR_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_gBR_constr_2 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aMBR_constr_5 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_aMBR_constr_5 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_isStat_constr_8 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_isStat_constr_8 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_isCatM_constr_11 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_isCatM_constr_11 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rSRP_constr_14 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_rSRP_constr_14 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rSRQ_constr_17 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_rSRQ_constr_17 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ul_rSRP_constr_21 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_ul_rSRP_constr_21 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cQI_constr_24 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_cQI_constr_24 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_fiveQI_constr_27 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_fiveQI_constr_27 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_qCI_constr_30 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_qCI_constr_30 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sNSSAI_constr_33 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_sNSSAI_constr_33 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_TestCond_Type_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_TestCond_Type_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_gBR_value2enum_2[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_gBR_enum2value_2[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_gBR_specs_2 = {
+ asn_MAP_gBR_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_gBR_enum2value_2, /* 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_gBR_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_gBR_2 = {
+ "gBR",
+ "gBR",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_gBR_tags_2,
+ sizeof(asn_DEF_gBR_tags_2)
+ /sizeof(asn_DEF_gBR_tags_2[0]) - 1, /* 1 */
+ asn_DEF_gBR_tags_2, /* Same as above */
+ sizeof(asn_DEF_gBR_tags_2)
+ /sizeof(asn_DEF_gBR_tags_2[0]), /* 2 */
+ { &asn_OER_type_gBR_constr_2, &asn_PER_type_gBR_constr_2, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_gBR_specs_2 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aMBR_value2enum_5[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_aMBR_enum2value_5[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aMBR_specs_5 = {
+ asn_MAP_aMBR_value2enum_5, /* "tag" => N; sorted by tag */
+ asn_MAP_aMBR_enum2value_5, /* 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_aMBR_tags_5[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aMBR_5 = {
+ "aMBR",
+ "aMBR",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_aMBR_tags_5,
+ sizeof(asn_DEF_aMBR_tags_5)
+ /sizeof(asn_DEF_aMBR_tags_5[0]) - 1, /* 1 */
+ asn_DEF_aMBR_tags_5, /* Same as above */
+ sizeof(asn_DEF_aMBR_tags_5)
+ /sizeof(asn_DEF_aMBR_tags_5[0]), /* 2 */
+ { &asn_OER_type_aMBR_constr_5, &asn_PER_type_aMBR_constr_5, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_aMBR_specs_5 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_isStat_value2enum_8[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_isStat_enum2value_8[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_isStat_specs_8 = {
+ asn_MAP_isStat_value2enum_8, /* "tag" => N; sorted by tag */
+ asn_MAP_isStat_enum2value_8, /* 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_isStat_tags_8[] = {
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_isStat_8 = {
+ "isStat",
+ "isStat",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_isStat_tags_8,
+ sizeof(asn_DEF_isStat_tags_8)
+ /sizeof(asn_DEF_isStat_tags_8[0]) - 1, /* 1 */
+ asn_DEF_isStat_tags_8, /* Same as above */
+ sizeof(asn_DEF_isStat_tags_8)
+ /sizeof(asn_DEF_isStat_tags_8[0]), /* 2 */
+ { &asn_OER_type_isStat_constr_8, &asn_PER_type_isStat_constr_8, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_isStat_specs_8 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_isCatM_value2enum_11[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_isCatM_enum2value_11[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_isCatM_specs_11 = {
+ asn_MAP_isCatM_value2enum_11, /* "tag" => N; sorted by tag */
+ asn_MAP_isCatM_enum2value_11, /* 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_isCatM_tags_11[] = {
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_isCatM_11 = {
+ "isCatM",
+ "isCatM",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_isCatM_tags_11,
+ sizeof(asn_DEF_isCatM_tags_11)
+ /sizeof(asn_DEF_isCatM_tags_11[0]) - 1, /* 1 */
+ asn_DEF_isCatM_tags_11, /* Same as above */
+ sizeof(asn_DEF_isCatM_tags_11)
+ /sizeof(asn_DEF_isCatM_tags_11[0]), /* 2 */
+ { &asn_OER_type_isCatM_constr_11, &asn_PER_type_isCatM_constr_11, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_isCatM_specs_11 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rSRP_value2enum_14[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_rSRP_enum2value_14[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rSRP_specs_14 = {
+ asn_MAP_rSRP_value2enum_14, /* "tag" => N; sorted by tag */
+ asn_MAP_rSRP_enum2value_14, /* 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_rSRP_tags_14[] = {
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rSRP_14 = {
+ "rSRP",
+ "rSRP",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_rSRP_tags_14,
+ sizeof(asn_DEF_rSRP_tags_14)
+ /sizeof(asn_DEF_rSRP_tags_14[0]) - 1, /* 1 */
+ asn_DEF_rSRP_tags_14, /* Same as above */
+ sizeof(asn_DEF_rSRP_tags_14)
+ /sizeof(asn_DEF_rSRP_tags_14[0]), /* 2 */
+ { &asn_OER_type_rSRP_constr_14, &asn_PER_type_rSRP_constr_14, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_rSRP_specs_14 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rSRQ_value2enum_17[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_rSRQ_enum2value_17[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rSRQ_specs_17 = {
+ asn_MAP_rSRQ_value2enum_17, /* "tag" => N; sorted by tag */
+ asn_MAP_rSRQ_enum2value_17, /* 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_rSRQ_tags_17[] = {
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rSRQ_17 = {
+ "rSRQ",
+ "rSRQ",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_rSRQ_tags_17,
+ sizeof(asn_DEF_rSRQ_tags_17)
+ /sizeof(asn_DEF_rSRQ_tags_17[0]) - 1, /* 1 */
+ asn_DEF_rSRQ_tags_17, /* Same as above */
+ sizeof(asn_DEF_rSRQ_tags_17)
+ /sizeof(asn_DEF_rSRQ_tags_17[0]), /* 2 */
+ { &asn_OER_type_rSRQ_constr_17, &asn_PER_type_rSRQ_constr_17, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_rSRQ_specs_17 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ul_rSRP_value2enum_21[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_ul_rSRP_enum2value_21[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ul_rSRP_specs_21 = {
+ asn_MAP_ul_rSRP_value2enum_21, /* "tag" => N; sorted by tag */
+ asn_MAP_ul_rSRP_enum2value_21, /* 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_ul_rSRP_tags_21[] = {
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ul_rSRP_21 = {
+ "ul-rSRP",
+ "ul-rSRP",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_ul_rSRP_tags_21,
+ sizeof(asn_DEF_ul_rSRP_tags_21)
+ /sizeof(asn_DEF_ul_rSRP_tags_21[0]) - 1, /* 1 */
+ asn_DEF_ul_rSRP_tags_21, /* Same as above */
+ sizeof(asn_DEF_ul_rSRP_tags_21)
+ /sizeof(asn_DEF_ul_rSRP_tags_21[0]), /* 2 */
+ { &asn_OER_type_ul_rSRP_constr_21, &asn_PER_type_ul_rSRP_constr_21, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_ul_rSRP_specs_21 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cQI_value2enum_24[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_cQI_enum2value_24[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cQI_specs_24 = {
+ asn_MAP_cQI_value2enum_24, /* "tag" => N; sorted by tag */
+ asn_MAP_cQI_enum2value_24, /* 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_cQI_tags_24[] = {
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cQI_24 = {
+ "cQI",
+ "cQI",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_cQI_tags_24,
+ sizeof(asn_DEF_cQI_tags_24)
+ /sizeof(asn_DEF_cQI_tags_24[0]) - 1, /* 1 */
+ asn_DEF_cQI_tags_24, /* Same as above */
+ sizeof(asn_DEF_cQI_tags_24)
+ /sizeof(asn_DEF_cQI_tags_24[0]), /* 2 */
+ { &asn_OER_type_cQI_constr_24, &asn_PER_type_cQI_constr_24, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_cQI_specs_24 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_fiveQI_value2enum_27[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_fiveQI_enum2value_27[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fiveQI_specs_27 = {
+ asn_MAP_fiveQI_value2enum_27, /* "tag" => N; sorted by tag */
+ asn_MAP_fiveQI_enum2value_27, /* 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_fiveQI_tags_27[] = {
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_fiveQI_27 = {
+ "fiveQI",
+ "fiveQI",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_fiveQI_tags_27,
+ sizeof(asn_DEF_fiveQI_tags_27)
+ /sizeof(asn_DEF_fiveQI_tags_27[0]) - 1, /* 1 */
+ asn_DEF_fiveQI_tags_27, /* Same as above */
+ sizeof(asn_DEF_fiveQI_tags_27)
+ /sizeof(asn_DEF_fiveQI_tags_27[0]), /* 2 */
+ { &asn_OER_type_fiveQI_constr_27, &asn_PER_type_fiveQI_constr_27, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_fiveQI_specs_27 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_qCI_value2enum_30[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_qCI_enum2value_30[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_qCI_specs_30 = {
+ asn_MAP_qCI_value2enum_30, /* "tag" => N; sorted by tag */
+ asn_MAP_qCI_enum2value_30, /* 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_qCI_tags_30[] = {
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_qCI_30 = {
+ "qCI",
+ "qCI",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_qCI_tags_30,
+ sizeof(asn_DEF_qCI_tags_30)
+ /sizeof(asn_DEF_qCI_tags_30[0]) - 1, /* 1 */
+ asn_DEF_qCI_tags_30, /* Same as above */
+ sizeof(asn_DEF_qCI_tags_30)
+ /sizeof(asn_DEF_qCI_tags_30[0]), /* 2 */
+ { &asn_OER_type_qCI_constr_30, &asn_PER_type_qCI_constr_30, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_qCI_specs_30 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sNSSAI_value2enum_33[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_sNSSAI_enum2value_33[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sNSSAI_specs_33 = {
+ asn_MAP_sNSSAI_value2enum_33, /* "tag" => N; sorted by tag */
+ asn_MAP_sNSSAI_enum2value_33, /* 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_sNSSAI_tags_33[] = {
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sNSSAI_33 = {
+ "sNSSAI",
+ "sNSSAI",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_sNSSAI_tags_33,
+ sizeof(asn_DEF_sNSSAI_tags_33)
+ /sizeof(asn_DEF_sNSSAI_tags_33[0]) - 1, /* 1 */
+ asn_DEF_sNSSAI_tags_33, /* Same as above */
+ sizeof(asn_DEF_sNSSAI_tags_33)
+ /sizeof(asn_DEF_sNSSAI_tags_33[0]), /* 2 */
+ { &asn_OER_type_sNSSAI_constr_33, &asn_PER_type_sNSSAI_constr_33, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_sNSSAI_specs_33 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TestCond_Type_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.gBR),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_gBR_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gBR"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.aMBR),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_aMBR_5,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "aMBR"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.isStat),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_isStat_8,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "isStat"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.isCatM),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_isCatM_11,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "isCatM"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.rSRP),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_rSRP_14,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "rSRP"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.rSRQ),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_rSRQ_17,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "rSRQ"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.ul_rSRP),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ul_rSRP_21,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ul-rSRP"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.cQI),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_cQI_24,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "cQI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.fiveQI),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_fiveQI_27,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "fiveQI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.qCI),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_qCI_30,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "qCI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.sNSSAI),
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_sNSSAI_33,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "sNSSAI"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_TestCond_Type_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gBR */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMBR */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* isStat */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* isCatM */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rSRP */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rSRQ */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ul-rSRP */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* cQI */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* fiveQI */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* qCI */
+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* sNSSAI */
+};
+asn_CHOICE_specifics_t asn_SPC_TestCond_Type_specs_1 = {
+ sizeof(struct TestCond_Type),
+ offsetof(struct TestCond_Type, _asn_ctx),
+ offsetof(struct TestCond_Type, present),
+ sizeof(((struct TestCond_Type *)0)->present),
+ asn_MAP_TestCond_Type_tag2el_1,
+ 11, /* Count of tags in the map */
+ 0, 0,
+ 6 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_TestCond_Type = {
+ "TestCond-Type",
+ "TestCond-Type",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_TestCond_Type_constr_1, &asn_PER_type_TestCond_Type_constr_1, CHOICE_constraint },
+ asn_MBR_TestCond_Type_1,
+ 11, /* Elements count */
+ &asn_SPC_TestCond_Type_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _TestCond_Type_H_
+#define _TestCond_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TestCond_Type_PR {
+ TestCond_Type_PR_NOTHING, /* No components present */
+ TestCond_Type_PR_gBR,
+ TestCond_Type_PR_aMBR,
+ TestCond_Type_PR_isStat,
+ TestCond_Type_PR_isCatM,
+ TestCond_Type_PR_rSRP,
+ TestCond_Type_PR_rSRQ,
+ /* Extensions may appear below */
+ TestCond_Type_PR_ul_rSRP,
+ TestCond_Type_PR_cQI,
+ TestCond_Type_PR_fiveQI,
+ TestCond_Type_PR_qCI,
+ TestCond_Type_PR_sNSSAI
+} TestCond_Type_PR;
+typedef enum TestCond_Type__gBR {
+ TestCond_Type__gBR_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__gBR;
+typedef enum TestCond_Type__aMBR {
+ TestCond_Type__aMBR_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__aMBR;
+typedef enum TestCond_Type__isStat {
+ TestCond_Type__isStat_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__isStat;
+typedef enum TestCond_Type__isCatM {
+ TestCond_Type__isCatM_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__isCatM;
+typedef enum TestCond_Type__rSRP {
+ TestCond_Type__rSRP_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__rSRP;
+typedef enum TestCond_Type__rSRQ {
+ TestCond_Type__rSRQ_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__rSRQ;
+typedef enum TestCond_Type__ul_rSRP {
+ TestCond_Type__ul_rSRP_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__ul_rSRP;
+typedef enum TestCond_Type__cQI {
+ TestCond_Type__cQI_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__cQI;
+typedef enum TestCond_Type__fiveQI {
+ TestCond_Type__fiveQI_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__fiveQI;
+typedef enum TestCond_Type__qCI {
+ TestCond_Type__qCI_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__qCI;
+typedef enum TestCond_Type__sNSSAI {
+ TestCond_Type__sNSSAI_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_TestCond_Type__sNSSAI;
+
+/* TestCond-Type */
+typedef struct TestCond_Type {
+ TestCond_Type_PR present;
+ union TestCond_Type_u {
+ long gBR;
+ long aMBR;
+ long isStat;
+ long isCatM;
+ long rSRP;
+ long rSRQ;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ long ul_rSRP;
+ long cQI;
+ long fiveQI;
+ long qCI;
+ long sNSSAI;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TestCond_Type_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_gBR_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aMBR_5; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_isStat_8; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_isCatM_11; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rSRP_14; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rSRQ_17; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ul_rSRP_21; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cQI_24; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_fiveQI_27; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_qCI_30; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sNSSAI_33; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TestCond_Type;
+extern asn_CHOICE_specifics_t asn_SPC_TestCond_Type_specs_1;
+extern asn_TYPE_member_t asn_MBR_TestCond_Type_1[11];
+extern asn_per_constraints_t asn_PER_type_TestCond_Type_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCond_Type_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCond-Value.h"
+
+static asn_oer_constraints_t asn_OER_type_TestCond_Value_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_TestCond_Value_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_TestCond_Value_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueInt),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueInt"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueEnum),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueEnum"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueBool),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BOOLEAN,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueBool"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueBitS),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueBitS"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueOctS),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OCTET_STRING,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueOctS"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valuePrtS),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PrintableString,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valuePrtS"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueReal),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeReal,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "valueReal"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_TestCond_Value_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* valuePrtS */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* valueReal */
+};
+asn_CHOICE_specifics_t asn_SPC_TestCond_Value_specs_1 = {
+ sizeof(struct TestCond_Value),
+ offsetof(struct TestCond_Value, _asn_ctx),
+ offsetof(struct TestCond_Value, present),
+ sizeof(((struct TestCond_Value *)0)->present),
+ asn_MAP_TestCond_Value_tag2el_1,
+ 7, /* Count of tags in the map */
+ 0, 0,
+ 6 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_TestCond_Value = {
+ "TestCond-Value",
+ "TestCond-Value",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_TestCond_Value_constr_1, &asn_PER_type_TestCond_Value_constr_1, CHOICE_constraint },
+ asn_MBR_TestCond_Value_1,
+ 7, /* Elements count */
+ &asn_SPC_TestCond_Value_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _TestCond_Value_H_
+#define _TestCond_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include <BIT_STRING.h>
+#include <OCTET_STRING.h>
+#include <PrintableString.h>
+#include <NativeReal.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TestCond_Value_PR {
+ TestCond_Value_PR_NOTHING, /* No components present */
+ TestCond_Value_PR_valueInt,
+ TestCond_Value_PR_valueEnum,
+ TestCond_Value_PR_valueBool,
+ TestCond_Value_PR_valueBitS,
+ TestCond_Value_PR_valueOctS,
+ TestCond_Value_PR_valuePrtS,
+ /* Extensions may appear below */
+ TestCond_Value_PR_valueReal
+} TestCond_Value_PR;
+
+/* TestCond-Value */
+typedef struct TestCond_Value {
+ TestCond_Value_PR present;
+ union TestCond_Value_u {
+ long valueInt;
+ long valueEnum;
+ BOOLEAN_t valueBool;
+ BIT_STRING_t valueBitS;
+ OCTET_STRING_t valueOctS;
+ PrintableString_t valuePrtS;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ double valueReal;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TestCond_Value_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TestCond_Value;
+extern asn_CHOICE_specifics_t asn_SPC_TestCond_Value_specs_1;
+extern asn_TYPE_member_t asn_MBR_TestCond_Value_1[7];
+extern asn_per_constraints_t asn_PER_type_TestCond_Value_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCond_Value_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCondInfo.h"
+
+#include "TestCond-Value.h"
+asn_TYPE_member_t asn_MBR_TestCondInfo_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TestCondInfo, testType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_TestCond_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "testType"
+ },
+ { ATF_POINTER, 2, offsetof(struct TestCondInfo, testExpr),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TestCond_Expression,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "testExpr"
+ },
+ { ATF_POINTER, 1, offsetof(struct TestCondInfo, testValue),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_TestCond_Value,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "testValue"
+ },
+};
+static const int asn_MAP_TestCondInfo_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_TestCondInfo_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TestCondInfo_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* testType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* testExpr */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* testValue */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TestCondInfo_specs_1 = {
+ sizeof(struct TestCondInfo),
+ offsetof(struct TestCondInfo, _asn_ctx),
+ asn_MAP_TestCondInfo_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_TestCondInfo_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TestCondInfo = {
+ "TestCondInfo",
+ "TestCondInfo",
+ &asn_OP_SEQUENCE,
+ asn_DEF_TestCondInfo_tags_1,
+ sizeof(asn_DEF_TestCondInfo_tags_1)
+ /sizeof(asn_DEF_TestCondInfo_tags_1[0]), /* 1 */
+ asn_DEF_TestCondInfo_tags_1, /* Same as above */
+ sizeof(asn_DEF_TestCondInfo_tags_1)
+ /sizeof(asn_DEF_TestCondInfo_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_TestCondInfo_1,
+ 3, /* Elements count */
+ &asn_SPC_TestCondInfo_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _TestCondInfo_H_
+#define _TestCondInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TestCond-Type.h"
+#include "TestCond-Expression.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct TestCond_Value;
+
+/* TestCondInfo */
+typedef struct TestCondInfo {
+ TestCond_Type_t testType;
+ TestCond_Expression_t *testExpr; /* OPTIONAL */
+ struct TestCond_Value *testValue; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TestCondInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TestCondInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_TestCondInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_TestCondInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCondInfo_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TimeStamp.h"
+
+int
+TimeStamp_constraint(const 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 == 8)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_TimeStamp_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 8 /* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_TimeStamp_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TimeStamp_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TimeStamp = {
+ "TimeStamp",
+ "TimeStamp",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_TimeStamp_tags_1,
+ sizeof(asn_DEF_TimeStamp_tags_1)
+ /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */
+ asn_DEF_TimeStamp_tags_1, /* Same as above */
+ sizeof(asn_DEF_TimeStamp_tags_1)
+ /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */
+ { &asn_OER_type_TimeStamp_constr_1, &asn_PER_type_TimeStamp_constr_1, TimeStamp_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _TimeStamp_H_
+#define _TimeStamp_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TimeStamp */
+typedef OCTET_STRING_t TimeStamp_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TimeStamp_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TimeStamp;
+asn_struct_free_f TimeStamp_free;
+asn_struct_print_f TimeStamp_print;
+asn_constr_check_f TimeStamp_constraint;
+ber_type_decoder_f TimeStamp_decode_ber;
+der_type_encoder_f TimeStamp_encode_der;
+xer_type_decoder_f TimeStamp_decode_xer;
+xer_type_encoder_f TimeStamp_encode_xer;
+oer_type_decoder_f TimeStamp_decode_oer;
+oer_type_encoder_f TimeStamp_encode_oer;
+per_type_decoder_f TimeStamp_decode_uper;
+per_type_encoder_f TimeStamp_encode_uper;
+per_type_decoder_f TimeStamp_decode_aper;
+per_type_encoder_f TimeStamp_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TimeStamp_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-EN-GNB.h"
+
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ENB_UE_X2AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "m-eNB-UE-X2AP-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID_Extension),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ENB_UE_X2AP_ID_Extension,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "m-eNB-UE-X2AP-ID-Extension"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, globalENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalENB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "globalENB-ID"
+ },
+ { ATF_POINTER, 3, offsetof(struct UEID_EN_GNB, gNB_CU_UE_F1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_UE_F1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-UE-F1AP-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct UEID_EN_GNB, gNB_CU_CP_UE_E1AP_ID_List),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-CP-UE-E1AP-ID-List"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, ran_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANUEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ran-UEID"
+ },
+};
+static const int asn_MAP_UEID_EN_GNB_oms_1[] = { 1, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_UEID_EN_GNB_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_EN_GNB_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m-eNB-UE-X2AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* globalENB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-UE-F1AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1 = {
+ sizeof(struct UEID_EN_GNB),
+ offsetof(struct UEID_EN_GNB, _asn_ctx),
+ asn_MAP_UEID_EN_GNB_tag2el_1,
+ 6, /* Count of tags in the map */
+ asn_MAP_UEID_EN_GNB_oms_1, /* Optional members */
+ 4, 0, /* Root/Additions */
+ 6, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB = {
+ "UEID-EN-GNB",
+ "UEID-EN-GNB",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_EN_GNB_tags_1,
+ sizeof(asn_DEF_UEID_EN_GNB_tags_1)
+ /sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */
+ asn_DEF_UEID_EN_GNB_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_EN_GNB_tags_1)
+ /sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_EN_GNB_1,
+ 6, /* Elements count */
+ &asn_SPC_UEID_EN_GNB_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_EN_GNB_H_
+#define _UEID_EN_GNB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ENB-UE-X2AP-ID.h"
+#include "ENB-UE-X2AP-ID-Extension.h"
+#include "GlobalENB-ID.h"
+#include "GNB-CU-UE-F1AP-ID.h"
+#include "RANUEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEID_GNB_CU_CP_E1AP_ID_List;
+
+/* UEID-EN-GNB */
+typedef struct UEID_EN_GNB {
+ ENB_UE_X2AP_ID_t m_eNB_UE_X2AP_ID;
+ ENB_UE_X2AP_ID_Extension_t *m_eNB_UE_X2AP_ID_Extension; /* OPTIONAL */
+ GlobalENB_ID_t globalENB_ID;
+ GNB_CU_UE_F1AP_ID_t *gNB_CU_UE_F1AP_ID; /* OPTIONAL */
+ struct UEID_GNB_CU_CP_E1AP_ID_List *gNB_CU_CP_UE_E1AP_ID_List; /* OPTIONAL */
+ RANUEID_t *ran_UEID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_EN_GNB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_EN_GNB_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-ENB.h"
+
+#include "GlobalENB-ID.h"
+asn_TYPE_member_t asn_MBR_UEID_ENB_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, mME_UE_S1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MME_UE_S1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "mME-UE-S1AP-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, gUMMEI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GUMMEI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gUMMEI"
+ },
+ { ATF_POINTER, 3, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ENB_UE_X2AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "m-eNB-UE-X2AP-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID_Extension),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ENB_UE_X2AP_ID_Extension,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "m-eNB-UE-X2AP-ID-Extension"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_ENB, globalENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalENB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "globalENB-ID"
+ },
+};
+static const int asn_MAP_UEID_ENB_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_UEID_ENB_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_ENB_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gUMMEI */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m-eNB-UE-X2AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* globalENB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1 = {
+ sizeof(struct UEID_ENB),
+ offsetof(struct UEID_ENB, _asn_ctx),
+ asn_MAP_UEID_ENB_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_UEID_ENB_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 5, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_ENB = {
+ "UEID-ENB",
+ "UEID-ENB",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_ENB_tags_1,
+ sizeof(asn_DEF_UEID_ENB_tags_1)
+ /sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */
+ asn_DEF_UEID_ENB_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_ENB_tags_1)
+ /sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_ENB_1,
+ 5, /* Elements count */
+ &asn_SPC_UEID_ENB_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_ENB_H_
+#define _UEID_ENB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MME-UE-S1AP-ID.h"
+#include "GUMMEI.h"
+#include "ENB-UE-X2AP-ID.h"
+#include "ENB-UE-X2AP-ID-Extension.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct GlobalENB_ID;
+
+/* UEID-ENB */
+typedef struct UEID_ENB {
+ MME_UE_S1AP_ID_t mME_UE_S1AP_ID;
+ GUMMEI_t gUMMEI;
+ ENB_UE_X2AP_ID_t *m_eNB_UE_X2AP_ID; /* OPTIONAL */
+ ENB_UE_X2AP_ID_Extension_t *m_eNB_UE_X2AP_ID_Extension; /* OPTIONAL */
+ struct GlobalENB_ID *globalENB_ID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_ENB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_ENB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_ENB_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_ENB_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-CP-E1AP-ID-Item.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, gNB_CU_CP_UE_E1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_CP_UE_E1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-CP-UE-E1AP-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-CP-UE-E1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1 = {
+ sizeof(struct UEID_GNB_CU_CP_E1AP_ID_Item),
+ offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, _asn_ctx),
+ asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item = {
+ "UEID-GNB-CU-CP-E1AP-ID-Item",
+ "UEID-GNB-CU-CP-E1AP-ID-Item",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1,
+ sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1,
+ 1, /* Elements count */
+ &asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_CU_CP_E1AP_ID_Item_H_
+#define _UEID_GNB_CU_CP_E1AP_ID_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-CU-CP-E1AP-ID-Item */
+typedef struct UEID_GNB_CU_CP_E1AP_ID_Item {
+ GNB_CU_CP_UE_E1AP_ID_t gNB_CU_CP_UE_E1AP_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_CP_E1AP_ID_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_CP_E1AP_ID_Item_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+
+#include "UEID-GNB-CU-CP-E1AP-ID-Item.h"
+static asn_oer_constraints_t asn_OER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1 = {
+ sizeof(struct UEID_GNB_CU_CP_E1AP_ID_List),
+ offsetof(struct UEID_GNB_CU_CP_E1AP_ID_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List = {
+ "UEID-GNB-CU-CP-E1AP-ID-List",
+ "UEID-GNB-CU-CP-E1AP-ID-List",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1,
+ sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */
+ { &asn_OER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, &asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1,
+ 1, /* Single element */
+ &asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_CU_CP_E1AP_ID_List_H_
+#define _UEID_GNB_CU_CP_E1AP_ID_List_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 UEID_GNB_CU_CP_E1AP_ID_Item;
+
+/* UEID-GNB-CU-CP-E1AP-ID-List */
+typedef struct UEID_GNB_CU_CP_E1AP_ID_List {
+ A_SEQUENCE_OF(struct UEID_GNB_CU_CP_E1AP_ID_Item) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_CP_E1AP_ID_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List;
+extern asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[1];
+extern asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_CP_E1AP_ID_List_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-CP-F1AP-ID-Item.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, gNB_CU_UE_F1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_UE_F1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-UE-F1AP-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-UE-F1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1 = {
+ sizeof(struct UEID_GNB_CU_CP_F1AP_ID_Item),
+ offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, _asn_ctx),
+ asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item = {
+ "UEID-GNB-CU-CP-F1AP-ID-Item",
+ "UEID-GNB-CU-CP-F1AP-ID-Item",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1,
+ sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1,
+ 1, /* Elements count */
+ &asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_CU_CP_F1AP_ID_Item_H_
+#define _UEID_GNB_CU_CP_F1AP_ID_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-UE-F1AP-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-CU-CP-F1AP-ID-Item */
+typedef struct UEID_GNB_CU_CP_F1AP_ID_Item {
+ GNB_CU_UE_F1AP_ID_t gNB_CU_UE_F1AP_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_CP_F1AP_ID_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_CP_F1AP_ID_Item_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-F1AP-ID-List.h"
+
+#include "UEID-GNB-CU-CP-F1AP-ID-Item.h"
+static asn_oer_constraints_t asn_OER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..4)) */};
+asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1 = {
+ sizeof(struct UEID_GNB_CU_F1AP_ID_List),
+ offsetof(struct UEID_GNB_CU_F1AP_ID_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List = {
+ "UEID-GNB-CU-F1AP-ID-List",
+ "UEID-GNB-CU-F1AP-ID-List",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1,
+ sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */
+ { &asn_OER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, &asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_UEID_GNB_CU_F1AP_ID_List_1,
+ 1, /* Single element */
+ &asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_CU_F1AP_ID_List_H_
+#define _UEID_GNB_CU_F1AP_ID_List_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 UEID_GNB_CU_CP_F1AP_ID_Item;
+
+/* UEID-GNB-CU-F1AP-ID-List */
+typedef struct UEID_GNB_CU_F1AP_ID_List {
+ A_SEQUENCE_OF(struct UEID_GNB_CU_CP_F1AP_ID_Item) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_F1AP_ID_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List;
+extern asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[1];
+extern asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_F1AP_ID_List_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-UP.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_UP, gNB_CU_CP_UE_E1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_CP_UE_E1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-CP-UE-E1AP-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_GNB_CU_UP, ran_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANUEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ran-UEID"
+ },
+};
+static const int asn_MAP_UEID_GNB_CU_UP_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_UP_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_UP_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1 = {
+ sizeof(struct UEID_GNB_CU_UP),
+ offsetof(struct UEID_GNB_CU_UP, _asn_ctx),
+ asn_MAP_UEID_GNB_CU_UP_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_UEID_GNB_CU_UP_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP = {
+ "UEID-GNB-CU-UP",
+ "UEID-GNB-CU-UP",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_GNB_CU_UP_tags_1,
+ sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_CU_UP_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_GNB_CU_UP_1,
+ 2, /* Elements count */
+ &asn_SPC_UEID_GNB_CU_UP_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_CU_UP_H_
+#define _UEID_GNB_CU_UP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+#include "RANUEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-CU-UP */
+typedef struct UEID_GNB_CU_UP {
+ GNB_CU_CP_UE_E1AP_ID_t gNB_CU_CP_UE_E1AP_ID;
+ RANUEID_t *ran_UEID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_UP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_UP_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-DU.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_DU, gNB_CU_UE_F1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_UE_F1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-UE-F1AP-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_GNB_DU, ran_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANUEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ran-UEID"
+ },
+};
+static const int asn_MAP_UEID_GNB_DU_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_DU_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_DU_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-UE-F1AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1 = {
+ sizeof(struct UEID_GNB_DU),
+ offsetof(struct UEID_GNB_DU, _asn_ctx),
+ asn_MAP_UEID_GNB_DU_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_UEID_GNB_DU_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU = {
+ "UEID-GNB-DU",
+ "UEID-GNB-DU",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_GNB_DU_tags_1,
+ sizeof(asn_DEF_UEID_GNB_DU_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_DU_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_DU_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_GNB_DU_1,
+ 2, /* Elements count */
+ &asn_SPC_UEID_GNB_DU_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_DU_H_
+#define _UEID_GNB_DU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-UE-F1AP-ID.h"
+#include "RANUEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-DU */
+typedef struct UEID_GNB_DU {
+ GNB_CU_UE_F1AP_ID_t gNB_CU_UE_F1AP_ID;
+ RANUEID_t *ran_UEID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_DU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_DU_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB.h"
+
+#include "UEID-GNB-CU-F1AP-ID-List.h"
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+#include "GlobalGNB-ID.h"
+#include "GlobalNGRANNodeID.h"
+asn_TYPE_member_t asn_MBR_UEID_GNB_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, amf_UE_NGAP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_AMF_UE_NGAP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "amf-UE-NGAP-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, guami),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GUAMI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "guami"
+ },
+ { ATF_POINTER, 6, offsetof(struct UEID_GNB, gNB_CU_UE_F1AP_ID_List),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_GNB_CU_F1AP_ID_List,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-UE-F1AP-ID-List"
+ },
+ { ATF_POINTER, 5, offsetof(struct UEID_GNB, gNB_CU_CP_UE_E1AP_ID_List),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-CP-UE-E1AP-ID-List"
+ },
+ { ATF_POINTER, 4, offsetof(struct UEID_GNB, ran_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANUEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ran-UEID"
+ },
+ { ATF_POINTER, 3, offsetof(struct UEID_GNB, m_NG_RAN_UE_XnAP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NG_RANnodeUEXnAPID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "m-NG-RAN-UE-XnAP-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct UEID_GNB, globalGNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalGNB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "globalGNB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_GNB, globalNG_RANNode_ID),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_GlobalNGRANNodeID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "globalNG-RANNode-ID"
+ },
+};
+static const int asn_MAP_UEID_GNB_oms_1[] = { 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UE-F1AP-ID-List */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ran-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* globalGNB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* globalNG-RANNode-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1 = {
+ sizeof(struct UEID_GNB),
+ offsetof(struct UEID_GNB, _asn_ctx),
+ asn_MAP_UEID_GNB_tag2el_1,
+ 8, /* Count of tags in the map */
+ asn_MAP_UEID_GNB_oms_1, /* Optional members */
+ 5, 1, /* Root/Additions */
+ 7, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB = {
+ "UEID-GNB",
+ "UEID-GNB",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_GNB_tags_1,
+ sizeof(asn_DEF_UEID_GNB_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */
+ asn_DEF_UEID_GNB_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_GNB_tags_1)
+ /sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_GNB_1,
+ 8, /* Elements count */
+ &asn_SPC_UEID_GNB_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_GNB_H_
+#define _UEID_GNB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "AMF-UE-NGAP-ID.h"
+#include "GUAMI.h"
+#include "RANUEID.h"
+#include "NG-RANnodeUEXnAPID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEID_GNB_CU_F1AP_ID_List;
+struct UEID_GNB_CU_CP_E1AP_ID_List;
+struct GlobalGNB_ID;
+struct GlobalNGRANNodeID;
+
+/* UEID-GNB */
+typedef struct UEID_GNB {
+ AMF_UE_NGAP_ID_t amf_UE_NGAP_ID;
+ GUAMI_t guami;
+ struct UEID_GNB_CU_F1AP_ID_List *gNB_CU_UE_F1AP_ID_List; /* OPTIONAL */
+ struct UEID_GNB_CU_CP_E1AP_ID_List *gNB_CU_CP_UE_E1AP_ID_List; /* OPTIONAL */
+ RANUEID_t *ran_UEID; /* OPTIONAL */
+ NG_RANnodeUEXnAPID_t *m_NG_RAN_UE_XnAP_ID; /* OPTIONAL */
+ struct GlobalGNB_ID *globalGNB_ID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct GlobalNGRANNodeID *globalNG_RANNode_ID; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-NG-ENB-DU.h"
+
+asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB_DU, ng_eNB_CU_UE_W1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NGENB_CU_UE_W1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ng-eNB-CU-UE-W1AP-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_DU_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_DU_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-CU-UE-W1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1 = {
+ sizeof(struct UEID_NG_ENB_DU),
+ offsetof(struct UEID_NG_ENB_DU, _asn_ctx),
+ asn_MAP_UEID_NG_ENB_DU_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU = {
+ "UEID-NG-ENB-DU",
+ "UEID-NG-ENB-DU",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_NG_ENB_DU_tags_1,
+ sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1)
+ /sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */
+ asn_DEF_UEID_NG_ENB_DU_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1)
+ /sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_NG_ENB_DU_1,
+ 1, /* Elements count */
+ &asn_SPC_UEID_NG_ENB_DU_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_NG_ENB_DU_H_
+#define _UEID_NG_ENB_DU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NGENB-CU-UE-W1AP-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-NG-ENB-DU */
+typedef struct UEID_NG_ENB_DU {
+ NGENB_CU_UE_W1AP_ID_t ng_eNB_CU_UE_W1AP_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_NG_ENB_DU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_NG_ENB_DU_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-NG-ENB.h"
+
+#include "GlobalNgENB-ID.h"
+#include "GlobalNGRANNodeID.h"
+asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, amf_UE_NGAP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_AMF_UE_NGAP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "amf-UE-NGAP-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, guami),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GUAMI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "guami"
+ },
+ { ATF_POINTER, 4, offsetof(struct UEID_NG_ENB, ng_eNB_CU_UE_W1AP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NGENB_CU_UE_W1AP_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ng-eNB-CU-UE-W1AP-ID"
+ },
+ { ATF_POINTER, 3, offsetof(struct UEID_NG_ENB, m_NG_RAN_UE_XnAP_ID),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NG_RANnodeUEXnAPID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "m-NG-RAN-UE-XnAP-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct UEID_NG_ENB, globalNgENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalNgENB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "globalNgENB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct UEID_NG_ENB, globalNG_RANNode_ID),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_GlobalNGRANNodeID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "globalNG-RANNode-ID"
+ },
+};
+static const int asn_MAP_UEID_NG_ENB_oms_1[] = { 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB-CU-UE-W1AP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* globalNgENB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* globalNG-RANNode-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1 = {
+ sizeof(struct UEID_NG_ENB),
+ offsetof(struct UEID_NG_ENB, _asn_ctx),
+ asn_MAP_UEID_NG_ENB_tag2el_1,
+ 6, /* Count of tags in the map */
+ asn_MAP_UEID_NG_ENB_oms_1, /* Optional members */
+ 3, 1, /* Root/Additions */
+ 5, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB = {
+ "UEID-NG-ENB",
+ "UEID-NG-ENB",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEID_NG_ENB_tags_1,
+ sizeof(asn_DEF_UEID_NG_ENB_tags_1)
+ /sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */
+ asn_DEF_UEID_NG_ENB_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEID_NG_ENB_tags_1)
+ /sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEID_NG_ENB_1,
+ 6, /* Elements count */
+ &asn_SPC_UEID_NG_ENB_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_NG_ENB_H_
+#define _UEID_NG_ENB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "AMF-UE-NGAP-ID.h"
+#include "GUAMI.h"
+#include "NGENB-CU-UE-W1AP-ID.h"
+#include "NG-RANnodeUEXnAPID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct GlobalNgENB_ID;
+struct GlobalNGRANNodeID;
+
+/* UEID-NG-ENB */
+typedef struct UEID_NG_ENB {
+ AMF_UE_NGAP_ID_t amf_UE_NGAP_ID;
+ GUAMI_t guami;
+ NGENB_CU_UE_W1AP_ID_t *ng_eNB_CU_UE_W1AP_ID; /* OPTIONAL */
+ NG_RANnodeUEXnAPID_t *m_NG_RAN_UE_XnAP_ID; /* OPTIONAL */
+ struct GlobalNgENB_ID *globalNgENB_ID; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ struct GlobalNGRANNodeID *globalNG_RANNode_ID; /* OPTIONAL */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_NG_ENB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_NG_ENB_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID.h"
+
+#include "UEID-GNB.h"
+#include "UEID-GNB-DU.h"
+#include "UEID-GNB-CU-UP.h"
+#include "UEID-NG-ENB.h"
+#include "UEID-NG-ENB-DU.h"
+#include "UEID-EN-GNB.h"
+#include "UEID-ENB.h"
+static asn_oer_constraints_t asn_OER_type_UEID_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_UEID_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_1[] = {
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_GNB,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-UEID"
+ },
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_DU_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_GNB_DU,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-DU-UEID"
+ },
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_CU_UP_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_GNB_CU_UP,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-UP-UEID"
+ },
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_NG_ENB,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ng-eNB-UEID"
+ },
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_DU_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_NG_ENB_DU,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ng-eNB-DU-UEID"
+ },
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.en_gNB_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_EN_GNB,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "en-gNB-UEID"
+ },
+ { ATF_POINTER, 0, offsetof(struct UEID, choice.eNB_UEID),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UEID_ENB,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "eNB-UEID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-DU-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ng-eNB-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ng-eNB-DU-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* en-gNB-UEID */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* eNB-UEID */
+};
+asn_CHOICE_specifics_t asn_SPC_UEID_specs_1 = {
+ sizeof(struct UEID),
+ offsetof(struct UEID, _asn_ctx),
+ offsetof(struct UEID, present),
+ sizeof(((struct UEID *)0)->present),
+ asn_MAP_UEID_tag2el_1,
+ 7, /* Count of tags in the map */
+ 0, 0,
+ 7 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID = {
+ "UEID",
+ "UEID",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_UEID_constr_1, &asn_PER_type_UEID_constr_1, CHOICE_constraint },
+ asn_MBR_UEID_1,
+ 7, /* Elements count */
+ &asn_SPC_UEID_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEID_H_
+#define _UEID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UEID_PR {
+ UEID_PR_NOTHING, /* No components present */
+ UEID_PR_gNB_UEID,
+ UEID_PR_gNB_DU_UEID,
+ UEID_PR_gNB_CU_UP_UEID,
+ UEID_PR_ng_eNB_UEID,
+ UEID_PR_ng_eNB_DU_UEID,
+ UEID_PR_en_gNB_UEID,
+ UEID_PR_eNB_UEID
+ /* Extensions may appear below */
+
+} UEID_PR;
+
+/* Forward declarations */
+struct UEID_GNB;
+struct UEID_GNB_DU;
+struct UEID_GNB_CU_UP;
+struct UEID_NG_ENB;
+struct UEID_NG_ENB_DU;
+struct UEID_EN_GNB;
+struct UEID_ENB;
+
+/* UEID */
+typedef struct UEID {
+ UEID_PR present;
+ union UEID_u {
+ struct UEID_GNB *gNB_UEID;
+ struct UEID_GNB_DU *gNB_DU_UEID;
+ struct UEID_GNB_CU_UP *gNB_CU_UP_UEID;
+ struct UEID_NG_ENB *ng_eNB_UEID;
+ struct UEID_NG_ENB_DU *ng_eNB_DU_UEID;
+ struct UEID_EN_GNB *en_gNB_UEID;
+ struct UEID_ENB *eNB_UEID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID;
+extern asn_CHOICE_specifics_t asn_SPC_UEID_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_1[7];
+extern asn_per_constraints_t asn_PER_type_UEID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEMeasurementReportItem.h"
+
+asn_TYPE_member_t asn_MBR_UEMeasurementReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEMeasurementReportItem, ueID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_UEID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ueID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UEMeasurementReportItem, measReport),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_E2SM_KPM_IndicationMessage_Format1,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "measReport"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEMeasurementReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEMeasurementReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measReport */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEMeasurementReportItem_specs_1 = {
+ sizeof(struct UEMeasurementReportItem),
+ offsetof(struct UEMeasurementReportItem, _asn_ctx),
+ asn_MAP_UEMeasurementReportItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportItem = {
+ "UEMeasurementReportItem",
+ "UEMeasurementReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_UEMeasurementReportItem_tags_1,
+ sizeof(asn_DEF_UEMeasurementReportItem_tags_1)
+ /sizeof(asn_DEF_UEMeasurementReportItem_tags_1[0]), /* 1 */
+ asn_DEF_UEMeasurementReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEMeasurementReportItem_tags_1)
+ /sizeof(asn_DEF_UEMeasurementReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_UEMeasurementReportItem_1,
+ 2, /* Elements count */
+ &asn_SPC_UEMeasurementReportItem_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEMeasurementReportItem_H_
+#define _UEMeasurementReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include "E2SM-KPM-IndicationMessage-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEMeasurementReportItem */
+typedef struct UEMeasurementReportItem {
+ UEID_t ueID;
+ E2SM_KPM_IndicationMessage_Format1_t measReport;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEMeasurementReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEMeasurementReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEMeasurementReportItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEMeasurementReportItem_H_ */
+#include <asn_internal.h>
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEMeasurementReportList.h"
+
+#include "UEMeasurementReportItem.h"
+static asn_oer_constraints_t asn_OER_type_UEMeasurementReportList_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_UEMeasurementReportList_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEMeasurementReportList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_UEMeasurementReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEMeasurementReportList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEMeasurementReportList_specs_1 = {
+ sizeof(struct UEMeasurementReportList),
+ offsetof(struct UEMeasurementReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportList = {
+ "UEMeasurementReportList",
+ "UEMeasurementReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_UEMeasurementReportList_tags_1,
+ sizeof(asn_DEF_UEMeasurementReportList_tags_1)
+ /sizeof(asn_DEF_UEMeasurementReportList_tags_1[0]), /* 1 */
+ asn_DEF_UEMeasurementReportList_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEMeasurementReportList_tags_1)
+ /sizeof(asn_DEF_UEMeasurementReportList_tags_1[0]), /* 1 */
+ { &asn_OER_type_UEMeasurementReportList_constr_1, &asn_PER_type_UEMeasurementReportList_constr_1, SEQUENCE_OF_constraint },
+ asn_MBR_UEMeasurementReportList_1,
+ 1, /* Single element */
+ &asn_SPC_UEMeasurementReportList_specs_1 /* Additional specs */
+};
+
--- /dev/null
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ * `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef _UEMeasurementReportList_H_
+#define _UEMeasurementReportList_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 UEMeasurementReportItem;
+
+/* UEMeasurementReportList */
+typedef struct UEMeasurementReportList {
+ A_SEQUENCE_OF(struct UEMeasurementReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEMeasurementReportList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportList;
+extern asn_SET_OF_specifics_t asn_SPC_UEMeasurementReportList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEMeasurementReportList_1[1];
+extern asn_per_constraints_t asn_PER_type_UEMeasurementReportList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEMeasurementReportList_H_ */
+#include <asn_internal.h>
#define maxofRICactionID (16)
#define maxofTNLA (32)
#define maxofRICrequestID (1024)
+#define maxE1APid (65535)
+#define maxF1APid (4)
+#define maxnoofCells (16384)
+#define maxnoofRICStyles (63)
+#define maxnoofMeasurementInfo (65535)
+#define maxnoofLabelInfo (2147483647)
+#define maxnoofMeasurementRecord (65535)
+#define maxnoofMeasurementValue (2147483647)
+#define maxnoofConditionInfo (32768)
+#define maxnoofUEID (65535)
+#define maxnoofConditionInfoPerSub (32768)
+#define maxnoofUEIDPerSub (65535)
+#define maxnoofUEMeasReport (65535)
+#define maxnoofBin (65535)
+
#ifdef __cplusplus
}
#endif