/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "Spec/e2ap-v031ex.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -gen-PER`
 */

#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;
oer_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_oer;
oer_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_oer;
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>
