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

#ifndef	_UECapabilityInfoRequest_H_
#define	_UECapabilityInfoRequest_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum UECapabilityInfoRequest {
	UECapabilityInfoRequest_requested	= 0
	/*
	 * Enumeration is extensible
	 */
} e_UECapabilityInfoRequest;

/* UECapabilityInfoRequest */
typedef long	 UECapabilityInfoRequest_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_UECapabilityInfoRequest_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_UECapabilityInfoRequest;
extern const asn_INTEGER_specifics_t asn_SPC_UECapabilityInfoRequest_specs_1;
asn_struct_free_f UECapabilityInfoRequest_free;
asn_struct_print_f UECapabilityInfoRequest_print;
asn_constr_check_f UECapabilityInfoRequest_constraint;
ber_type_decoder_f UECapabilityInfoRequest_decode_ber;
der_type_encoder_f UECapabilityInfoRequest_encode_der;
xer_type_decoder_f UECapabilityInfoRequest_decode_xer;
xer_type_encoder_f UECapabilityInfoRequest_encode_xer;
oer_type_decoder_f UECapabilityInfoRequest_decode_oer;
oer_type_encoder_f UECapabilityInfoRequest_encode_oer;
per_type_decoder_f UECapabilityInfoRequest_decode_uper;
per_type_encoder_f UECapabilityInfoRequest_encode_uper;
per_type_decoder_f UECapabilityInfoRequest_decode_aper;
per_type_encoder_f UECapabilityInfoRequest_encode_aper;

#ifdef __cplusplus
}
#endif

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