/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#ifndef	_RNTP_Threshold_H_
#define	_RNTP_Threshold_H_


#include "asn_application.h"

/* Including external dependencies */
#include "NativeEnumerated.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RNTP_Threshold {
	RNTP_Threshold_minusInfinity	= 0,
	RNTP_Threshold_minusEleven	= 1,
	RNTP_Threshold_minusTen	= 2,
	RNTP_Threshold_minusNine	= 3,
	RNTP_Threshold_minusEight	= 4,
	RNTP_Threshold_minusSeven	= 5,
	RNTP_Threshold_minusSix	= 6,
	RNTP_Threshold_minusFive	= 7,
	RNTP_Threshold_minusFour	= 8,
	RNTP_Threshold_minusThree	= 9,
	RNTP_Threshold_minusTwo	= 10,
	RNTP_Threshold_minusOne	= 11,
	RNTP_Threshold_zero	= 12,
	RNTP_Threshold_one	= 13,
	RNTP_Threshold_two	= 14,
	RNTP_Threshold_three	= 15
	/*
	 * Enumeration is extensible
	 */
} e_RNTP_Threshold;

/* RNTP-Threshold */
typedef long	 RNTP_Threshold_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_RNTP_Threshold_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_RNTP_Threshold;
extern const asn_INTEGER_specifics_t asn_SPC_RNTP_Threshold_specs_1;
asn_struct_free_f RNTP_Threshold_free;
asn_struct_print_f RNTP_Threshold_print;
asn_constr_check_f RNTP_Threshold_constraint;
ber_type_decoder_f RNTP_Threshold_decode_ber;
der_type_encoder_f RNTP_Threshold_encode_der;
xer_type_decoder_f RNTP_Threshold_decode_xer;
xer_type_encoder_f RNTP_Threshold_encode_xer;
per_type_decoder_f RNTP_Threshold_decode_uper;
per_type_encoder_f RNTP_Threshold_encode_uper;
per_type_decoder_f RNTP_Threshold_decode_aper;
per_type_encoder_f RNTP_Threshold_encode_aper;

#ifdef __cplusplus
}
#endif

#endif	/* _RNTP_Threshold_H_ */
#include "asn_internal.h"
