/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RANAP-CommonDataTypes"
 * 	found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
 */

#ifndef	_RANAP_ProcedureCode_H_
#define	_RANAP_ProcedureCode_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_ProcedureCode {
	RANAP_ProcedureCode_id_RAB_Assignment	= 0,
	RANAP_ProcedureCode_id_Iu_Release	= 1,
	RANAP_ProcedureCode_id_RelocationPreparation	= 2,
	RANAP_ProcedureCode_id_RelocationResourceAllocation	= 3,
	RANAP_ProcedureCode_id_RelocationCancel	= 4,
	RANAP_ProcedureCode_id_SRNS_ContextTransfer	= 5,
	RANAP_ProcedureCode_id_SecurityModeControl	= 6,
	RANAP_ProcedureCode_id_DataVolumeReport	= 7,
	RANAP_ProcedureCode_id_Reset	= 9,
	RANAP_ProcedureCode_id_RAB_ReleaseRequest	= 10,
	RANAP_ProcedureCode_id_Iu_ReleaseRequest	= 11,
	RANAP_ProcedureCode_id_RelocationDetect	= 12,
	RANAP_ProcedureCode_id_RelocationComplete	= 13,
	RANAP_ProcedureCode_id_Paging	= 14,
	RANAP_ProcedureCode_id_CommonID	= 15,
	RANAP_ProcedureCode_id_CN_InvokeTrace	= 16,
	RANAP_ProcedureCode_id_LocationReportingControl	= 17,
	RANAP_ProcedureCode_id_LocationReport	= 18,
	RANAP_ProcedureCode_id_InitialUE_Message	= 19,
	RANAP_ProcedureCode_id_DirectTransfer	= 20,
	RANAP_ProcedureCode_id_OverloadControl	= 21,
	RANAP_ProcedureCode_id_ErrorIndication	= 22,
	RANAP_ProcedureCode_id_SRNS_DataForward	= 23,
	RANAP_ProcedureCode_id_ForwardSRNS_Context	= 24,
	RANAP_ProcedureCode_id_privateMessage	= 25,
	RANAP_ProcedureCode_id_CN_DeactivateTrace	= 26,
	RANAP_ProcedureCode_id_ResetResource	= 27,
	RANAP_ProcedureCode_id_RANAP_Relocation	= 28,
	RANAP_ProcedureCode_id_RAB_ModifyRequest	= 29,
	RANAP_ProcedureCode_id_LocationRelatedData	= 30,
	RANAP_ProcedureCode_id_InformationTransfer	= 31,
	RANAP_ProcedureCode_id_UESpecificInformation	= 32,
	RANAP_ProcedureCode_id_UplinkInformationExchange	= 33,
	RANAP_ProcedureCode_id_DirectInformationTransfer	= 34,
	RANAP_ProcedureCode_id_MBMSSessionStart	= 35,
	RANAP_ProcedureCode_id_MBMSSessionUpdate	= 36,
	RANAP_ProcedureCode_id_MBMSSessionStop	= 37,
	RANAP_ProcedureCode_id_MBMSUELinking	= 38,
	RANAP_ProcedureCode_id_MBMSRegistration	= 39,
	RANAP_ProcedureCode_id_MBMSCNDe_Registration_Procedure	= 40,
	RANAP_ProcedureCode_id_MBMSRABEstablishmentIndication	= 41,
	RANAP_ProcedureCode_id_MBMSRABRelease	= 42,
	RANAP_ProcedureCode_id_enhancedRelocationComplete	= 43,
	RANAP_ProcedureCode_id_enhancedRelocationCompleteConfirm	= 44,
	RANAP_ProcedureCode_id_RANAPenhancedRelocation	= 45,
	RANAP_ProcedureCode_id_SRVCCPreparation	= 46,
	RANAP_ProcedureCode_id_UeRadioCapabilityMatch	= 47
} e_RANAP_ProcedureCode;

/* RANAP_ProcedureCode */
typedef long	 RANAP_ProcedureCode_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProcedureCode;
asn_struct_free_f RANAP_ProcedureCode_free;
asn_struct_print_f RANAP_ProcedureCode_print;
asn_constr_check_f RANAP_ProcedureCode_constraint;
ber_type_decoder_f RANAP_ProcedureCode_decode_ber;
der_type_encoder_f RANAP_ProcedureCode_encode_der;
xer_type_decoder_f RANAP_ProcedureCode_decode_xer;
xer_type_encoder_f RANAP_ProcedureCode_encode_xer;
per_type_decoder_f RANAP_ProcedureCode_decode_uper;
per_type_encoder_f RANAP_ProcedureCode_encode_uper;
per_type_decoder_f RANAP_ProcedureCode_decode_aper;
per_type_encoder_f RANAP_ProcedureCode_encode_aper;

#ifdef __cplusplus
}
#endif

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