/*
 * 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	_OffsetOfNbiotChannelNumberToEARFCN_H_
#define	_OffsetOfNbiotChannelNumberToEARFCN_H_


#include "asn_application.h"

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum OffsetOfNbiotChannelNumberToEARFCN {
	OffsetOfNbiotChannelNumberToEARFCN_minusTen	= 0,
	OffsetOfNbiotChannelNumberToEARFCN_minusNine	= 1,
	OffsetOfNbiotChannelNumberToEARFCN_minusEight	= 2,
	OffsetOfNbiotChannelNumberToEARFCN_minusSeven	= 3,
	OffsetOfNbiotChannelNumberToEARFCN_minusSix	= 4,
	OffsetOfNbiotChannelNumberToEARFCN_minusFive	= 5,
	OffsetOfNbiotChannelNumberToEARFCN_minusFour	= 6,
	OffsetOfNbiotChannelNumberToEARFCN_minusThree	= 7,
	OffsetOfNbiotChannelNumberToEARFCN_minusTwo	= 8,
	OffsetOfNbiotChannelNumberToEARFCN_minusOne	= 9,
	OffsetOfNbiotChannelNumberToEARFCN_minusZeroDotFive	= 10,
	OffsetOfNbiotChannelNumberToEARFCN_zero	= 11,
	OffsetOfNbiotChannelNumberToEARFCN_one	= 12,
	OffsetOfNbiotChannelNumberToEARFCN_two	= 13,
	OffsetOfNbiotChannelNumberToEARFCN_three	= 14,
	OffsetOfNbiotChannelNumberToEARFCN_four	= 15,
	OffsetOfNbiotChannelNumberToEARFCN_five	= 16,
	OffsetOfNbiotChannelNumberToEARFCN_six	= 17,
	OffsetOfNbiotChannelNumberToEARFCN_seven	= 18,
	OffsetOfNbiotChannelNumberToEARFCN_eight	= 19,
	OffsetOfNbiotChannelNumberToEARFCN_nine	= 20
	/*
	 * Enumeration is extensible
	 */
} e_OffsetOfNbiotChannelNumberToEARFCN;

/* OffsetOfNbiotChannelNumberToEARFCN */
typedef long	 OffsetOfNbiotChannelNumberToEARFCN_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN;
asn_struct_free_f OffsetOfNbiotChannelNumberToEARFCN_free;
asn_struct_print_f OffsetOfNbiotChannelNumberToEARFCN_print;
asn_constr_check_f OffsetOfNbiotChannelNumberToEARFCN_constraint;
ber_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_ber;
der_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_der;
xer_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_xer;
xer_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_xer;
per_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_uper;
per_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_uper;
per_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_aper;
per_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_aper;

#ifdef __cplusplus
}
#endif

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