/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-CommonDataTypes"
 * 	found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_ProcedureCode_H_
#define	_ProcedureCode_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ProcedureCode {
	ProcedureCode_id_HNBRegister	= 1,
	ProcedureCode_id_HNBDe_Register	= 2,
	ProcedureCode_id_UERegister	= 3,
	ProcedureCode_id_UEDe_Register	= 4,
	ProcedureCode_id_ErrorIndication	= 5,
	ProcedureCode_id_privateMessage	= 6,
	ProcedureCode_id_CSGMembershipUpdate	= 7,
	ProcedureCode_id_TNLUpdate	= 9,
	ProcedureCode_id_HNBConfigTransfer	= 10,
	ProcedureCode_id_RelocationComplete	= 11,
	ProcedureCode_id_U_RNTIQuery	= 14
} e_ProcedureCode;

/* ProcedureCode */
typedef long	 ProcedureCode_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode;
asn_struct_free_f ProcedureCode_free;
asn_struct_print_f ProcedureCode_print;
asn_constr_check_f ProcedureCode_constraint;
ber_type_decoder_f ProcedureCode_decode_ber;
der_type_encoder_f ProcedureCode_encode_der;
xer_type_decoder_f ProcedureCode_decode_xer;
xer_type_encoder_f ProcedureCode_encode_xer;
per_type_decoder_f ProcedureCode_decode_uper;
per_type_encoder_f ProcedureCode_encode_uper;
per_type_decoder_f ProcedureCode_decode_aper;
per_type_encoder_f ProcedureCode_encode_aper;

#ifdef __cplusplus
}
#endif

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