/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "X2AP-15-4-0.asn1"
 * 	`asn1c -D ./asn1_n1 -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_SubframeAssignment_H_
#define	_SubframeAssignment_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeEnumerated.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum SubframeAssignment {
	SubframeAssignment_sa0	= 0,
	SubframeAssignment_sa1	= 1,
	SubframeAssignment_sa2	= 2,
	SubframeAssignment_sa3	= 3,
	SubframeAssignment_sa4	= 4,
	SubframeAssignment_sa5	= 5,
	SubframeAssignment_sa6	= 6
	/*
	 * Enumeration is extensible
	 */
} e_SubframeAssignment;

/* SubframeAssignment */
typedef long	 SubframeAssignment_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_SubframeAssignment_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SubframeAssignment;
extern const asn_INTEGER_specifics_t asn_SPC_SubframeAssignment_specs_1;
asn_struct_free_f SubframeAssignment_free;
asn_struct_print_f SubframeAssignment_print;
asn_constr_check_f SubframeAssignment_constraint;
ber_type_decoder_f SubframeAssignment_decode_ber;
der_type_encoder_f SubframeAssignment_encode_der;
xer_type_decoder_f SubframeAssignment_decode_xer;
xer_type_encoder_f SubframeAssignment_encode_xer;
oer_type_decoder_f SubframeAssignment_decode_oer;
oer_type_encoder_f SubframeAssignment_encode_oer;
per_type_decoder_f SubframeAssignment_decode_uper;
per_type_encoder_f SubframeAssignment_encode_uper;
per_type_decoder_f SubframeAssignment_decode_aper;
per_type_encoder_f SubframeAssignment_encode_aper;

#ifdef __cplusplus
}
#endif

#endif	/* _SubframeAssignment_H_ */
#include <asn_internal.h>
