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


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum VehicleUE {
	VehicleUE_authorized	= 0,
	VehicleUE_not_authorized	= 1
	/*
	 * Enumeration is extensible
	 */
} e_VehicleUE;

/* VehicleUE */
typedef long	 VehicleUE_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_VehicleUE_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_VehicleUE;
extern const asn_INTEGER_specifics_t asn_SPC_VehicleUE_specs_1;
asn_struct_free_f VehicleUE_free;
asn_struct_print_f VehicleUE_print;
asn_constr_check_f VehicleUE_constraint;
ber_type_decoder_f VehicleUE_decode_ber;
der_type_encoder_f VehicleUE_encode_der;
xer_type_decoder_f VehicleUE_decode_xer;
xer_type_encoder_f VehicleUE_encode_xer;
oer_type_decoder_f VehicleUE_decode_oer;
oer_type_encoder_f VehicleUE_encode_oer;
per_type_decoder_f VehicleUE_decode_uper;
per_type_encoder_f VehicleUE_encode_uper;
per_type_decoder_f VehicleUE_decode_aper;
per_type_encoder_f VehicleUE_encode_aper;

#ifdef __cplusplus
}
#endif

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