From: lal.harshita Date: Wed, 19 Jul 2023 06:19:00 +0000 (+0530) Subject: [Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-522] Generating the E2SM-KPM code X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=2b2dc6126228cd2420ec768ff8689610c8375bf4;p=o-du%2Fl2.git [Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-522] Generating the E2SM-KPM code Change-Id: I1ebbb105cb51aa92f9992d762d230f9a6a1a5225 Signed-off-by: lal.harshita --- diff --git a/build/common/asn_e2ap_kpm.mak b/build/common/asn_e2ap_kpm.mak new file mode 100644 index 000000000..be4c95849 --- /dev/null +++ b/build/common/asn_e2ap_kpm.mak @@ -0,0 +1,53 @@ +################################################################################ +# 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 +#-------------------------------------------------------------# + diff --git a/build/odu/makefile b/build/odu/makefile index d2d994eb7..290b055c6 100644 --- a/build/odu/makefile +++ b/build/odu/makefile @@ -188,6 +188,7 @@ du: $(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)' @@ -213,6 +214,7 @@ clean_odu: $(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)' diff --git a/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.c b/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.c new file mode 100644 index 000000000..88c16fdec --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.h b/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.h new file mode 100644 index 000000000..1f00f60ee --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/AMFPointer.c b/src/codec_utils/E2SM_KPM/AMFPointer.c new file mode 100644 index 000000000..43fa0e14f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMFPointer.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/AMFPointer.h b/src/codec_utils/E2SM_KPM/AMFPointer.h new file mode 100644 index 000000000..bbbf2a1a1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMFPointer.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/AMFRegionID.c b/src/codec_utils/E2SM_KPM/AMFRegionID.c new file mode 100644 index 000000000..8a5d8bfa0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMFRegionID.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/AMFRegionID.h b/src/codec_utils/E2SM_KPM/AMFRegionID.h new file mode 100644 index 000000000..b6c78262a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMFRegionID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/AMFSetID.c b/src/codec_utils/E2SM_KPM/AMFSetID.c new file mode 100644 index 000000000..69d8ffc9b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMFSetID.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/AMFSetID.h b/src/codec_utils/E2SM_KPM/AMFSetID.h new file mode 100644 index 000000000..9e2413cd4 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/AMFSetID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/BinIndex.c b/src/codec_utils/E2SM_KPM/BinIndex.c new file mode 100644 index 000000000..ce9c41b3e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinIndex.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/BinIndex.h b/src/codec_utils/E2SM_KPM/BinIndex.h new file mode 100644 index 000000000..d71a2389b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinIndex.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/BinRangeDefinition.c b/src/codec_utils/E2SM_KPM/BinRangeDefinition.c new file mode 100644 index 000000000..f62144ba9 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeDefinition.c @@ -0,0 +1,73 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/BinRangeDefinition.h b/src/codec_utils/E2SM_KPM/BinRangeDefinition.h new file mode 100644 index 000000000..30d32321c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeDefinition.h @@ -0,0 +1,49 @@ +/* + * 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 + +/* Including external dependencies */ +#include "BinRangeList.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/BinRangeItem.c b/src/codec_utils/E2SM_KPM/BinRangeItem.c new file mode 100644 index 000000000..0fdfa1f7b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeItem.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/BinRangeItem.h b/src/codec_utils/E2SM_KPM/BinRangeItem.h new file mode 100644 index 000000000..3b08c0fb2 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeItem.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include "BinIndex.h" +#include "BinRangeValue.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/BinRangeList.c b/src/codec_utils/E2SM_KPM/BinRangeList.c new file mode 100644 index 000000000..2f7e9d404 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/BinRangeList.h b/src/codec_utils/E2SM_KPM/BinRangeList.h new file mode 100644 index 000000000..984ecfc00 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/BinRangeValue.c b/src/codec_utils/E2SM_KPM/BinRangeValue.c new file mode 100644 index 000000000..9d5da1e98 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeValue.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/BinRangeValue.h b/src/codec_utils/E2SM_KPM/BinRangeValue.h new file mode 100644 index 000000000..974726e94 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/BinRangeValue.h @@ -0,0 +1,59 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/CGI.c b/src/codec_utils/E2SM_KPM/CGI.c new file mode 100644 index 000000000..6652b0448 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/CGI.c @@ -0,0 +1,67 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/CGI.h b/src/codec_utils/E2SM_KPM/CGI.h new file mode 100644 index 000000000..574e0edd7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/CGI.h @@ -0,0 +1,61 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.c b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.c new file mode 100644 index 000000000..a7b9aaf5d --- /dev/null +++ b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.h b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.h new file mode 100644 index 000000000..8573fe259 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "BinRangeDefinition.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.c b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.c new file mode 100644 index 000000000..a85dcd653 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.h b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.h new file mode 100644 index 000000000..62fc238bd --- /dev/null +++ b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.c new file mode 100644 index 000000000..ed3aa1702 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.c @@ -0,0 +1,84 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.h new file mode 100644 index 000000000..8aca249a9 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.h @@ -0,0 +1,52 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementInfoList.h" +#include "GranularityPeriod.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.c new file mode 100644 index 000000000..bfee31d21 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.h new file mode 100644 index 000000000..8c66bdeb7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "UEID.h" +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.c new file mode 100644 index 000000000..f80a834b5 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.c @@ -0,0 +1,73 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.h new file mode 100644 index 000000000..543f93d89 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.h @@ -0,0 +1,50 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementCondList.h" +#include "GranularityPeriod.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.c new file mode 100644 index 000000000..45cd462b2 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.h new file mode 100644 index 000000000..cf0d7646a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MatchingUeCondPerSubList.h" +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.c new file mode 100644 index 000000000..ab14ae12e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.h new file mode 100644 index 000000000..9f66fa14f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MatchingUEidPerSubList.h" +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.c new file mode 100644 index 000000000..69c2cd609 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.c @@ -0,0 +1,152 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.h new file mode 100644 index 000000000..1bde7e08f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.h @@ -0,0 +1,78 @@ +/* + * 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 + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.c new file mode 100644 index 000000000..a7ea3eea3 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.c @@ -0,0 +1,145 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.h new file mode 100644 index 000000000..ccadae9fa --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.h @@ -0,0 +1,45 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.c new file mode 100644 index 000000000..d929ed1e1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.c @@ -0,0 +1,98 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.h new file mode 100644 index 000000000..5ba8081f4 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.h @@ -0,0 +1,65 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.c new file mode 100644 index 000000000..eea9b17a3 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.c @@ -0,0 +1,404 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.h new file mode 100644 index 000000000..617321bc4 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.h @@ -0,0 +1,49 @@ +/* + * 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 + +/* Including external dependencies */ +#include "TimeStamp.h" +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.c new file mode 100644 index 000000000..efecfab60 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.c @@ -0,0 +1,98 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.h new file mode 100644 index 000000000..c63e2acce --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.h @@ -0,0 +1,65 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.c new file mode 100644 index 000000000..e9b12c972 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.c @@ -0,0 +1,73 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.h new file mode 100644 index 000000000..8edda5538 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.h @@ -0,0 +1,50 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementData.h" +#include "GranularityPeriod.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.c new file mode 100644 index 000000000..acd3f380b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.c @@ -0,0 +1,72 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.h new file mode 100644 index 000000000..0e8ac29f8 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.h @@ -0,0 +1,48 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementData.h" +#include "MeasurementCondUEidList.h" +#include "GranularityPeriod.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.c new file mode 100644 index 000000000..5e306835d --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.h new file mode 100644 index 000000000..7b3ecb75c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "UEMeasurementReportList.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.c new file mode 100644 index 000000000..0127565e4 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.c @@ -0,0 +1,120 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.h new file mode 100644 index 000000000..79f22d86e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.h @@ -0,0 +1,70 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.c new file mode 100644 index 000000000..2a58008cd --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.c @@ -0,0 +1,232 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.h new file mode 100644 index 000000000..5956a1152 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.h @@ -0,0 +1,60 @@ +/* + * 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 + +/* Including external dependencies */ +#include "RANfunction-Name.h" +#include +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.c b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.c new file mode 100644 index 000000000..a65c32614 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.h b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.h new file mode 100644 index 000000000..00c656f29 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.c b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.c new file mode 100644 index 000000000..756b98ed7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.h b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.h new file mode 100644 index 000000000..fcd0ac46d --- /dev/null +++ b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/EUTRA-CGI.c b/src/codec_utils/E2SM_KPM/EUTRA-CGI.c new file mode 100644 index 000000000..5d930e387 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/EUTRA-CGI.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/EUTRA-CGI.h b/src/codec_utils/E2SM_KPM/EUTRA-CGI.h new file mode 100644 index 000000000..58a919883 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/EUTRA-CGI.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "EUTRACellIdentity.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/EUTRACellIdentity.c b/src/codec_utils/E2SM_KPM/EUTRACellIdentity.c new file mode 100644 index 000000000..f9226a68f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/EUTRACellIdentity.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/EUTRACellIdentity.h b/src/codec_utils/E2SM_KPM/EUTRACellIdentity.h new file mode 100644 index 000000000..c77bea9ce --- /dev/null +++ b/src/codec_utils/E2SM_KPM/EUTRACellIdentity.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/FiveQI.c b/src/codec_utils/E2SM_KPM/FiveQI.c new file mode 100644 index 000000000..5eddbb3b1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/FiveQI.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/FiveQI.h b/src/codec_utils/E2SM_KPM/FiveQI.h new file mode 100644 index 000000000..02b06ff0c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/FiveQI.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.c b/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.c new file mode 100644 index 000000000..d169a2965 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.h b/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.h new file mode 100644 index 000000000..5e06a2d4c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.c b/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.c new file mode 100644 index 000000000..4fbc21abf --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.h b/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.h new file mode 100644 index 000000000..0f867d8b7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GNB-ID.c b/src/codec_utils/E2SM_KPM/GNB-ID.c new file mode 100644 index 000000000..6df644a2f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GNB-ID.c @@ -0,0 +1,94 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GNB-ID.h b/src/codec_utils/E2SM_KPM/GNB-ID.h new file mode 100644 index 000000000..2be18c462 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GNB-ID.h @@ -0,0 +1,56 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GUAMI.c b/src/codec_utils/E2SM_KPM/GUAMI.c new file mode 100644 index 000000000..d42876cf8 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GUAMI.c @@ -0,0 +1,80 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GUAMI.h b/src/codec_utils/E2SM_KPM/GUAMI.h new file mode 100644 index 000000000..e326c6b4a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GUAMI.h @@ -0,0 +1,50 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "AMFRegionID.h" +#include "AMFSetID.h" +#include "AMFPointer.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GUMMEI.c b/src/codec_utils/E2SM_KPM/GUMMEI.c new file mode 100644 index 000000000..128aea715 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GUMMEI.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GUMMEI.h b/src/codec_utils/E2SM_KPM/GUMMEI.h new file mode 100644 index 000000000..e986855ed --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GUMMEI.h @@ -0,0 +1,48 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "MME-Group-ID.h" +#include "MME-Code.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GlobalENB-ID.c b/src/codec_utils/E2SM_KPM/GlobalENB-ID.c new file mode 100644 index 000000000..177989900 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalENB-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GlobalENB-ID.h b/src/codec_utils/E2SM_KPM/GlobalENB-ID.h new file mode 100644 index 000000000..d6728d786 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalENB-ID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "ENB-ID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GlobalGNB-ID.c b/src/codec_utils/E2SM_KPM/GlobalGNB-ID.c new file mode 100644 index 000000000..f70ae4b94 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalGNB-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GlobalGNB-ID.h b/src/codec_utils/E2SM_KPM/GlobalGNB-ID.h new file mode 100644 index 000000000..e04187825 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalGNB-ID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "GNB-ID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.c b/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.c new file mode 100644 index 000000000..ee942992e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.c @@ -0,0 +1,67 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.h b/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.h new file mode 100644 index 000000000..e4dd05b63 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.h @@ -0,0 +1,61 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.c b/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.c new file mode 100644 index 000000000..3d60a040f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.h b/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.h new file mode 100644 index 000000000..dbac1105a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "NgENB-ID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/GranularityPeriod.c b/src/codec_utils/E2SM_KPM/GranularityPeriod.c new file mode 100644 index 000000000..03bd8192e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GranularityPeriod.c @@ -0,0 +1,69 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/GranularityPeriod.h b/src/codec_utils/E2SM_KPM/GranularityPeriod.h new file mode 100644 index 000000000..6fae898a1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/GranularityPeriod.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/LabelInfoItem.c b/src/codec_utils/E2SM_KPM/LabelInfoItem.c new file mode 100644 index 000000000..8e91a7c3f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/LabelInfoItem.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/LabelInfoItem.h b/src/codec_utils/E2SM_KPM/LabelInfoItem.h new file mode 100644 index 000000000..6744b7919 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/LabelInfoItem.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementLabel.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/LabelInfoList.c b/src/codec_utils/E2SM_KPM/LabelInfoList.c new file mode 100644 index 000000000..0ff789502 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/LabelInfoList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/LabelInfoList.h b/src/codec_utils/E2SM_KPM/LabelInfoList.h new file mode 100644 index 000000000..f23eda708 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/LabelInfoList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/LogicalOR.c b/src/codec_utils/E2SM_KPM/LogicalOR.c new file mode 100644 index 000000000..52991dc70 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/LogicalOR.c @@ -0,0 +1,56 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/LogicalOR.h b/src/codec_utils/E2SM_KPM/LogicalOR.h new file mode 100644 index 000000000..c66f5bf8c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/LogicalOR.h @@ -0,0 +1,55 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MME-Code.c b/src/codec_utils/E2SM_KPM/MME-Code.c new file mode 100644 index 000000000..1690fca36 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MME-Code.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MME-Code.h b/src/codec_utils/E2SM_KPM/MME-Code.h new file mode 100644 index 000000000..62da967c4 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MME-Code.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MME-Group-ID.c b/src/codec_utils/E2SM_KPM/MME-Group-ID.c new file mode 100644 index 000000000..1e80e52c5 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MME-Group-ID.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MME-Group-ID.h b/src/codec_utils/E2SM_KPM/MME-Group-ID.h new file mode 100644 index 000000000..a32f7de34 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MME-Group-ID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.c b/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.c new file mode 100644 index 000000000..a58dba63e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.h b/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.h new file mode 100644 index 000000000..fd743c80f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/Makefile.am.libasncodec b/src/codec_utils/E2SM_KPM/Makefile.am.libasncodec new file mode 100644 index 000000000..0d4a8d73e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/Makefile.am.libasncodec @@ -0,0 +1,330 @@ +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 diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.c b/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.c new file mode 100644 index 000000000..f01893c26 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.c @@ -0,0 +1,67 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.h b/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.h new file mode 100644 index 000000000..bb2dfd277 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.h @@ -0,0 +1,61 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem.c b/src/codec_utils/E2SM_KPM/MatchingCondItem.c new file mode 100644 index 000000000..58339bacf --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingCondItem.c @@ -0,0 +1,62 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem.h b/src/codec_utils/E2SM_KPM/MatchingCondItem.h new file mode 100644 index 000000000..633359369 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingCondItem.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MatchingCondItem-Choice.h" +#include "LogicalOR.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingCondList.c b/src/codec_utils/E2SM_KPM/MatchingCondList.c new file mode 100644 index 000000000..2cac5176c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingCondList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingCondList.h b/src/codec_utils/E2SM_KPM/MatchingCondList.h new file mode 100644 index 000000000..e1c2bdefb --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingCondList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.c b/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.c new file mode 100644 index 000000000..c30b53517 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.h b/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.h new file mode 100644 index 000000000..3a8978fc7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "UEID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem.c b/src/codec_utils/E2SM_KPM/MatchingUEidItem.c new file mode 100644 index 000000000..a63a916c8 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidItem.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem.h b/src/codec_utils/E2SM_KPM/MatchingUEidItem.h new file mode 100644 index 000000000..5eb93a3ef --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidItem.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "UEID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.c b/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.c new file mode 100644 index 000000000..c18bd5a82 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.h b/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.h new file mode 100644 index 000000000..b9e19fa63 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList.c b/src/codec_utils/E2SM_KPM/MatchingUEidList.c new file mode 100644 index 000000000..4af93305f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList.h b/src/codec_utils/E2SM_KPM/MatchingUEidList.h new file mode 100644 index 000000000..79a83e576 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.c new file mode 100644 index 000000000..4398cd5c7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.c @@ -0,0 +1,157 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.h new file mode 100644 index 000000000..5109db839 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.h @@ -0,0 +1,77 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.c new file mode 100644 index 000000000..4b58a1302 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.h new file mode 100644 index 000000000..a5454324a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.c new file mode 100644 index 000000000..711234664 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.h new file mode 100644 index 000000000..6a130fce3 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "UEID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.c new file mode 100644 index 000000000..1f4fc06fa --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.h new file mode 100644 index 000000000..d0cb106b9 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.c b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.c new file mode 100644 index 000000000..7f0d783fa --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.c @@ -0,0 +1,62 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.h b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.h new file mode 100644 index 000000000..1fc7439ec --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "TestCondInfo.h" +#include "LogicalOR.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.c b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.c new file mode 100644 index 000000000..302c4953d --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.h b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.h new file mode 100644 index 000000000..bc0a0b86b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondItem.c b/src/codec_utils/E2SM_KPM/MeasurementCondItem.c new file mode 100644 index 000000000..5c9cb97e1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondItem.c @@ -0,0 +1,73 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondItem.h b/src/codec_utils/E2SM_KPM/MeasurementCondItem.h new file mode 100644 index 000000000..0325a5553 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondItem.h @@ -0,0 +1,50 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "MatchingCondList.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondList.c b/src/codec_utils/E2SM_KPM/MeasurementCondList.c new file mode 100644 index 000000000..e188f44b1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondList.h b/src/codec_utils/E2SM_KPM/MeasurementCondList.h new file mode 100644 index 000000000..185a07b71 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.c b/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.c new file mode 100644 index 000000000..dad4d9a4b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.c @@ -0,0 +1,84 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.h b/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.h new file mode 100644 index 000000000..e873b7282 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.h @@ -0,0 +1,52 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "MatchingCondList.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.c b/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.c new file mode 100644 index 000000000..de309b9bb --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.h b/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.h new file mode 100644 index 000000000..332105500 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementData.c b/src/codec_utils/E2SM_KPM/MeasurementData.c new file mode 100644 index 000000000..b690dba36 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementData.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementData.h b/src/codec_utils/E2SM_KPM/MeasurementData.h new file mode 100644 index 000000000..d4f10a074 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementData.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementDataItem.c b/src/codec_utils/E2SM_KPM/MeasurementDataItem.c new file mode 100644 index 000000000..118d21407 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementDataItem.c @@ -0,0 +1,111 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementDataItem.h b/src/codec_utils/E2SM_KPM/MeasurementDataItem.h new file mode 100644 index 000000000..9cb167434 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementDataItem.h @@ -0,0 +1,55 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementRecord.h" +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.c b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.c new file mode 100644 index 000000000..4ecfcb4d7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.c @@ -0,0 +1,73 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.h b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.h new file mode 100644 index 000000000..b670e3b0c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.h @@ -0,0 +1,50 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementTypeName.h" +#include "MeasurementTypeID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.c b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.c new file mode 100644 index 000000000..d279577fe --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.h b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.h new file mode 100644 index 000000000..7c81cf95f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoItem.c b/src/codec_utils/E2SM_KPM/MeasurementInfoItem.c new file mode 100644 index 000000000..ecd8aea7c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfoItem.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoItem.h b/src/codec_utils/E2SM_KPM/MeasurementInfoItem.h new file mode 100644 index 000000000..1f294a2ba --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfoItem.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "LabelInfoList.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoList.c b/src/codec_utils/E2SM_KPM/MeasurementInfoList.c new file mode 100644 index 000000000..09f82e969 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfoList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoList.h b/src/codec_utils/E2SM_KPM/MeasurementInfoList.h new file mode 100644 index 000000000..cba8a12e0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementInfoList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementLabel.c b/src/codec_utils/E2SM_KPM/MeasurementLabel.c new file mode 100644 index 000000000..682bfcd08 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementLabel.c @@ -0,0 +1,958 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementLabel.h b/src/codec_utils/E2SM_KPM/MeasurementLabel.h new file mode 100644 index 000000000..b2fd50e86 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementLabel.h @@ -0,0 +1,127 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include "PLMNIdentity.h" +#include "FiveQI.h" +#include "QosFlowIdentifier.h" +#include "QCI.h" +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecord.c b/src/codec_utils/E2SM_KPM/MeasurementRecord.c new file mode 100644 index 000000000..6d31cff08 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementRecord.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecord.h b/src/codec_utils/E2SM_KPM/MeasurementRecord.h new file mode 100644 index 000000000..93cd44523 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementRecord.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecordItem.c b/src/codec_utils/E2SM_KPM/MeasurementRecordItem.c new file mode 100644 index 000000000..9765c767e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementRecordItem.c @@ -0,0 +1,152 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecordItem.h b/src/codec_utils/E2SM_KPM/MeasurementRecordItem.h new file mode 100644 index 000000000..457a1ed2d --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementRecordItem.h @@ -0,0 +1,63 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementType.c b/src/codec_utils/E2SM_KPM/MeasurementType.c new file mode 100644 index 000000000..643627d18 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementType.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementType.h b/src/codec_utils/E2SM_KPM/MeasurementType.h new file mode 100644 index 000000000..62c371d89 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementType.h @@ -0,0 +1,59 @@ +/* + * 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 + +/* Including external dependencies */ +#include "MeasurementTypeName.h" +#include "MeasurementTypeID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeID.c b/src/codec_utils/E2SM_KPM/MeasurementTypeID.c new file mode 100644 index 000000000..cdd2230ea --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementTypeID.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeID.h b/src/codec_utils/E2SM_KPM/MeasurementTypeID.h new file mode 100644 index 000000000..c3f521c2f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementTypeID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeName.c b/src/codec_utils/E2SM_KPM/MeasurementTypeName.c new file mode 100644 index 000000000..a071d6483 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementTypeName.c @@ -0,0 +1,109 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeName.h b/src/codec_utils/E2SM_KPM/MeasurementTypeName.h new file mode 100644 index 000000000..81892f68b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/MeasurementTypeName.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.c b/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.c new file mode 100644 index 000000000..f0935d35a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.h b/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.h new file mode 100644 index 000000000..58e71f12f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.c b/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.c new file mode 100644 index 000000000..79bf93948 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.h b/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.h new file mode 100644 index 000000000..55530cd17 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.h @@ -0,0 +1,47 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/NR-CGI.c b/src/codec_utils/E2SM_KPM/NR-CGI.c new file mode 100644 index 000000000..fd0e0bd0f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NR-CGI.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/NR-CGI.h b/src/codec_utils/E2SM_KPM/NR-CGI.h new file mode 100644 index 000000000..7c5ec1630 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NR-CGI.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "NRCellIdentity.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/NRCellIdentity.c b/src/codec_utils/E2SM_KPM/NRCellIdentity.c new file mode 100644 index 000000000..5a2bf456e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NRCellIdentity.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/NRCellIdentity.h b/src/codec_utils/E2SM_KPM/NRCellIdentity.h new file mode 100644 index 000000000..416d0899b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NRCellIdentity.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/NULL.c b/src/codec_utils/E2SM_KPM/NULL.c new file mode 100644 index 000000000..4a2914f4b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NULL.c @@ -0,0 +1,299 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include /* 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 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("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 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; +} + diff --git a/src/codec_utils/E2SM_KPM/NULL.h b/src/codec_utils/E2SM_KPM/NULL.h new file mode 100644 index 000000000..802d12c00 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NULL.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include +#include + +#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 */ diff --git a/src/codec_utils/E2SM_KPM/NativeReal.c b/src/codec_utils/E2SM_KPM/NativeReal.c new file mode 100644 index 000000000..160a4711a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NativeReal.c @@ -0,0 +1,781 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . 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 +#include +#include +#include +#include +#include + +#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("", 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; +} + diff --git a/src/codec_utils/E2SM_KPM/NativeReal.h b/src/codec_utils/E2SM_KPM/NativeReal.h new file mode 100644 index 000000000..1bfdc966a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NativeReal.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . 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 + +#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 */ diff --git a/src/codec_utils/E2SM_KPM/NgENB-ID.c b/src/codec_utils/E2SM_KPM/NgENB-ID.c new file mode 100644 index 000000000..ee4744c17 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NgENB-ID.c @@ -0,0 +1,192 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/NgENB-ID.h b/src/codec_utils/E2SM_KPM/NgENB-ID.h new file mode 100644 index 000000000..fae312405 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/NgENB-ID.h @@ -0,0 +1,60 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/PLMNIdentity.c b/src/codec_utils/E2SM_KPM/PLMNIdentity.c new file mode 100644 index 000000000..9b7a5b2ab --- /dev/null +++ b/src/codec_utils/E2SM_KPM/PLMNIdentity.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/PLMNIdentity.h b/src/codec_utils/E2SM_KPM/PLMNIdentity.h new file mode 100644 index 000000000..5852bcdfc --- /dev/null +++ b/src/codec_utils/E2SM_KPM/PLMNIdentity.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/QCI.c b/src/codec_utils/E2SM_KPM/QCI.c new file mode 100644 index 000000000..d624f19e6 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/QCI.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/QCI.h b/src/codec_utils/E2SM_KPM/QCI.h new file mode 100644 index 000000000..3844566d6 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/QCI.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/QosFlowIdentifier.c b/src/codec_utils/E2SM_KPM/QosFlowIdentifier.c new file mode 100644 index 000000000..8aecbeb00 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/QosFlowIdentifier.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/QosFlowIdentifier.h b/src/codec_utils/E2SM_KPM/QosFlowIdentifier.h new file mode 100644 index 000000000..c1dd85593 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/QosFlowIdentifier.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/RANUEID.c b/src/codec_utils/E2SM_KPM/RANUEID.c new file mode 100644 index 000000000..1ed716ac8 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RANUEID.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RANUEID.h b/src/codec_utils/E2SM_KPM/RANUEID.h new file mode 100644 index 000000000..0be1002a5 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RANUEID.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/RANfunction-Name.c b/src/codec_utils/E2SM_KPM/RANfunction-Name.c new file mode 100644 index 000000000..43b3cc756 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RANfunction-Name.c @@ -0,0 +1,316 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RANfunction-Name.h b/src/codec_utils/E2SM_KPM/RANfunction-Name.h new file mode 100644 index 000000000..2a915d421 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RANfunction-Name.h @@ -0,0 +1,48 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/REAL.c b/src/codec_utils/E2SM_KPM/REAL.c new file mode 100644 index 000000000..e3daf3722 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/REAL.c @@ -0,0 +1,1028 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . 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 +#if defined(__alpha) +#include /* For INFINITY */ +#endif +#include /* for strtod(3) */ +#include +#include +#include +#include +#include + +#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("", 0), + SRV_SET("", -1), + SRV_SET("", 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("", 8, app_key); + else if(asn_REAL2double(st, &d)) + ret = cb("", 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: , 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; +} + diff --git a/src/codec_utils/E2SM_KPM/REAL.h b/src/codec_utils/E2SM_KPM/REAL.h new file mode 100644 index 000000000..fce67140b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/REAL.h @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_REAL_H +#define ASN_TYPE_REAL_H + +#include +#include + +#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 */ diff --git a/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.c b/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.c new file mode 100644 index 000000000..7dae5be10 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.c @@ -0,0 +1,70 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.h b/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.h new file mode 100644 index 000000000..fd2ea38e1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.h @@ -0,0 +1,48 @@ +/* + * 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 + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/RIC-Format-Type.c b/src/codec_utils/E2SM_KPM/RIC-Format-Type.c new file mode 100644 index 000000000..b2d77ce4a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-Format-Type.c @@ -0,0 +1,31 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RIC-Format-Type.h b/src/codec_utils/E2SM_KPM/RIC-Format-Type.h new file mode 100644 index 000000000..f0f5024b0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-Format-Type.h @@ -0,0 +1,45 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.c b/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.c new file mode 100644 index 000000000..e634940c8 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.c @@ -0,0 +1,100 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.h b/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.h new file mode 100644 index 000000000..78ab82859 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.h @@ -0,0 +1,52 @@ +/* + * 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 + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "MeasurementInfo-Action-List.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Name.c b/src/codec_utils/E2SM_KPM/RIC-Style-Name.c new file mode 100644 index 000000000..cf2ba8dba --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-Style-Name.c @@ -0,0 +1,109 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Name.h b/src/codec_utils/E2SM_KPM/RIC-Style-Name.h new file mode 100644 index 000000000..f0f3c194f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-Style-Name.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Type.c b/src/codec_utils/E2SM_KPM/RIC-Style-Type.c new file mode 100644 index 000000000..474b77d2c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-Style-Type.c @@ -0,0 +1,31 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Type.h b/src/codec_utils/E2SM_KPM/RIC-Style-Type.h new file mode 100644 index 000000000..358bf36cd --- /dev/null +++ b/src/codec_utils/E2SM_KPM/RIC-Style-Type.h @@ -0,0 +1,45 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/S-NSSAI.c b/src/codec_utils/E2SM_KPM/S-NSSAI.c new file mode 100644 index 000000000..45287440c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/S-NSSAI.c @@ -0,0 +1,62 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/S-NSSAI.h b/src/codec_utils/E2SM_KPM/S-NSSAI.h new file mode 100644 index 000000000..bcfe3cff5 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/S-NSSAI.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "SST.h" +#include "SD.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/SD.c b/src/codec_utils/E2SM_KPM/SD.c new file mode 100644 index 000000000..05295bd0a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/SD.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/SD.h b/src/codec_utils/E2SM_KPM/SD.h new file mode 100644 index 000000000..9016dd652 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/SD.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/SST.c b/src/codec_utils/E2SM_KPM/SST.c new file mode 100644 index 000000000..cbc609fd9 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/SST.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/SST.h b/src/codec_utils/E2SM_KPM/SST.h new file mode 100644 index 000000000..251cdf712 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/SST.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/TestCond-Expression.c b/src/codec_utils/E2SM_KPM/TestCond-Expression.c new file mode 100644 index 000000000..a83c4e6b0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCond-Expression.c @@ -0,0 +1,64 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/TestCond-Expression.h b/src/codec_utils/E2SM_KPM/TestCond-Expression.h new file mode 100644 index 000000000..9eebd845e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCond-Expression.h @@ -0,0 +1,59 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/TestCond-Type.c b/src/codec_utils/E2SM_KPM/TestCond-Type.c new file mode 100644 index 000000000..dfeb76543 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCond-Type.c @@ -0,0 +1,694 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/TestCond-Type.h b/src/codec_utils/E2SM_KPM/TestCond-Type.h new file mode 100644 index 000000000..e5f2c0645 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCond-Type.h @@ -0,0 +1,152 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/TestCond-Value.c b/src/codec_utils/E2SM_KPM/TestCond-Value.c new file mode 100644 index 000000000..15bd18684 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCond-Value.c @@ -0,0 +1,115 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/TestCond-Value.h b/src/codec_utils/E2SM_KPM/TestCond-Value.h new file mode 100644 index 000000000..0320af302 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCond-Value.h @@ -0,0 +1,72 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include +#include +#include +#include +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/TestCondInfo.c b/src/codec_utils/E2SM_KPM/TestCondInfo.c new file mode 100644 index 000000000..e0527dded --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCondInfo.c @@ -0,0 +1,73 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/TestCondInfo.h b/src/codec_utils/E2SM_KPM/TestCondInfo.h new file mode 100644 index 000000000..a191a89b0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TestCondInfo.h @@ -0,0 +1,50 @@ +/* + * 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 + +/* Including external dependencies */ +#include "TestCond-Type.h" +#include "TestCond-Expression.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/TimeStamp.c b/src/codec_utils/E2SM_KPM/TimeStamp.c new file mode 100644 index 000000000..d1f9d9547 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TimeStamp.c @@ -0,0 +1,65 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/TimeStamp.h b/src/codec_utils/E2SM_KPM/TimeStamp.h new file mode 100644 index 000000000..c068b601a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/TimeStamp.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-EN-GNB.c b/src/codec_utils/E2SM_KPM/UEID-EN-GNB.c new file mode 100644 index 000000000..0bc6685e9 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-EN-GNB.c @@ -0,0 +1,103 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-EN-GNB.h b/src/codec_utils/E2SM_KPM/UEID-EN-GNB.h new file mode 100644 index 000000000..4644eeef9 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-EN-GNB.h @@ -0,0 +1,56 @@ +/* + * 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 + +/* 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 + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-ENB.c b/src/codec_utils/E2SM_KPM/UEID-ENB.c new file mode 100644 index 000000000..9a3d295c0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-ENB.c @@ -0,0 +1,93 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-ENB.h b/src/codec_utils/E2SM_KPM/UEID-ENB.h new file mode 100644 index 000000000..98546dedd --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-ENB.h @@ -0,0 +1,54 @@ +/* + * 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 + +/* 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 + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.c new file mode 100644 index 000000000..b1f6371f0 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.h new file mode 100644 index 000000000..bfe808358 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "GNB-CU-CP-UE-E1AP-ID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.c new file mode 100644 index 000000000..e27c4da37 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.h new file mode 100644 index 000000000..aebfd3460 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.c new file mode 100644 index 000000000..17dfa6d0a --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.h new file mode 100644 index 000000000..d176e2113 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "GNB-CU-UE-F1AP-ID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.c new file mode 100644 index 000000000..c32b6309c --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.h new file mode 100644 index 000000000..9106873f1 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.c new file mode 100644 index 000000000..c6fd53ad7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.c @@ -0,0 +1,62 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.h new file mode 100644 index 000000000..e6fbcb906 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "GNB-CU-CP-UE-E1AP-ID.h" +#include "RANUEID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-DU.c b/src/codec_utils/E2SM_KPM/UEID-GNB-DU.c new file mode 100644 index 000000000..5525f9aa5 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-DU.c @@ -0,0 +1,62 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-DU.h b/src/codec_utils/E2SM_KPM/UEID-GNB-DU.h new file mode 100644 index 000000000..66d50574b --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB-DU.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "GNB-CU-UE-F1AP-ID.h" +#include "RANUEID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB.c b/src/codec_utils/E2SM_KPM/UEID-GNB.c new file mode 100644 index 000000000..e2f0f0815 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB.c @@ -0,0 +1,126 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB.h b/src/codec_utils/E2SM_KPM/UEID-GNB.h new file mode 100644 index 000000000..bb24fef8e --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-GNB.h @@ -0,0 +1,60 @@ +/* + * 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 + +/* Including external dependencies */ +#include "AMF-UE-NGAP-ID.h" +#include "GUAMI.h" +#include "RANUEID.h" +#include "NG-RANnodeUEXnAPID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.c b/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.c new file mode 100644 index 000000000..85ec40dfe --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.c @@ -0,0 +1,50 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.h b/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.h new file mode 100644 index 000000000..74520ba49 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include "NGENB-CU-UE-W1AP-ID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB.c b/src/codec_utils/E2SM_KPM/UEID-NG-ENB.c new file mode 100644 index 000000000..a6e10bfa8 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-NG-ENB.c @@ -0,0 +1,104 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB.h b/src/codec_utils/E2SM_KPM/UEID-NG-ENB.h new file mode 100644 index 000000000..8966c0860 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID-NG-ENB.h @@ -0,0 +1,56 @@ +/* + * 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 + +/* Including external dependencies */ +#include "AMF-UE-NGAP-ID.h" +#include "GUAMI.h" +#include "NGENB-CU-UE-W1AP-ID.h" +#include "NG-RANnodeUEXnAPID.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEID.c b/src/codec_utils/E2SM_KPM/UEID.c new file mode 100644 index 000000000..4b7833849 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID.c @@ -0,0 +1,122 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEID.h b/src/codec_utils/E2SM_KPM/UEID.h new file mode 100644 index 000000000..44166349f --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEID.h @@ -0,0 +1,76 @@ +/* + * 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 + +/* Including external dependencies */ +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.c b/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.c new file mode 100644 index 000000000..20ec28720 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.c @@ -0,0 +1,60 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.h b/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.h new file mode 100644 index 000000000..3b0e4c068 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* Including external dependencies */ +#include "UEID.h" +#include "E2SM-KPM-IndicationMessage-Format1.h" +#include + +#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 diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportList.c b/src/codec_utils/E2SM_KPM/UEMeasurementReportList.c new file mode 100644 index 000000000..76262ac19 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEMeasurementReportList.c @@ -0,0 +1,53 @@ +/* + * 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 */ +}; + diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportList.h b/src/codec_utils/E2SM_KPM/UEMeasurementReportList.h new file mode 100644 index 000000000..64cdd13d7 --- /dev/null +++ b/src/codec_utils/E2SM_KPM/UEMeasurementReportList.h @@ -0,0 +1,44 @@ +/* + * 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 + +/* Including external dependencies */ +#include +#include + +#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 diff --git a/src/codec_utils/common/asn_constant.h b/src/codec_utils/common/asn_constant.h index 7ab533463..8a3ae33a9 100644 --- a/src/codec_utils/common/asn_constant.h +++ b/src/codec_utils/common/asn_constant.h @@ -205,6 +205,21 @@ extern "C" { #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