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

#ifndef	_ProcedureCode_H_
#define	_ProcedureCode_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* ProcedureCode */
typedef long	 ProcedureCode_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1;
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;
oer_type_decoder_f ProcedureCode_decode_oer;
oer_type_encoder_f ProcedureCode_encode_oer;
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;
#define ProcedureCode_id_HandoverPreparation	((ProcedureCode_t)0)
#define ProcedureCode_id_HandoverResourceAllocation	((ProcedureCode_t)1)
#define ProcedureCode_id_HandoverNotification	((ProcedureCode_t)2)
#define ProcedureCode_id_PathSwitchRequest	((ProcedureCode_t)3)
#define ProcedureCode_id_HandoverCancel	((ProcedureCode_t)4)
#define ProcedureCode_id_E_RABSetup	((ProcedureCode_t)5)
#define ProcedureCode_id_E_RABModify	((ProcedureCode_t)6)
#define ProcedureCode_id_E_RABRelease	((ProcedureCode_t)7)
#define ProcedureCode_id_E_RABReleaseIndication	((ProcedureCode_t)8)
#define ProcedureCode_id_InitialContextSetup	((ProcedureCode_t)9)
#define ProcedureCode_id_Paging	((ProcedureCode_t)10)
#define ProcedureCode_id_downlinkNASTransport	((ProcedureCode_t)11)
#define ProcedureCode_id_initialUEMessage	((ProcedureCode_t)12)
#define ProcedureCode_id_uplinkNASTransport	((ProcedureCode_t)13)
#define ProcedureCode_id_Reset	((ProcedureCode_t)14)
#define ProcedureCode_id_ErrorIndication	((ProcedureCode_t)15)
#define ProcedureCode_id_NASNonDeliveryIndication	((ProcedureCode_t)16)
#define ProcedureCode_id_S1Setup	((ProcedureCode_t)17)
#define ProcedureCode_id_UEContextReleaseRequest	((ProcedureCode_t)18)
#define ProcedureCode_id_DownlinkS1cdma2000tunnelling	((ProcedureCode_t)19)
#define ProcedureCode_id_UplinkS1cdma2000tunnelling	((ProcedureCode_t)20)
#define ProcedureCode_id_UEContextModification	((ProcedureCode_t)21)
#define ProcedureCode_id_UECapabilityInfoIndication	((ProcedureCode_t)22)
#define ProcedureCode_id_UEContextRelease	((ProcedureCode_t)23)
#define ProcedureCode_id_eNBStatusTransfer	((ProcedureCode_t)24)
#define ProcedureCode_id_MMEStatusTransfer	((ProcedureCode_t)25)
#define ProcedureCode_id_DeactivateTrace	((ProcedureCode_t)26)
#define ProcedureCode_id_TraceStart	((ProcedureCode_t)27)
#define ProcedureCode_id_TraceFailureIndication	((ProcedureCode_t)28)
#define ProcedureCode_id_ENBConfigurationUpdate	((ProcedureCode_t)29)
#define ProcedureCode_id_MMEConfigurationUpdate	((ProcedureCode_t)30)
#define ProcedureCode_id_LocationReportingControl	((ProcedureCode_t)31)
#define ProcedureCode_id_LocationReportingFailureIndication	((ProcedureCode_t)32)
#define ProcedureCode_id_LocationReport	((ProcedureCode_t)33)
#define ProcedureCode_id_OverloadStart	((ProcedureCode_t)34)
#define ProcedureCode_id_OverloadStop	((ProcedureCode_t)35)
#define ProcedureCode_id_WriteReplaceWarning	((ProcedureCode_t)36)
#define ProcedureCode_id_eNBDirectInformationTransfer	((ProcedureCode_t)37)
#define ProcedureCode_id_MMEDirectInformationTransfer	((ProcedureCode_t)38)
#define ProcedureCode_id_PrivateMessage	((ProcedureCode_t)39)
#define ProcedureCode_id_eNBConfigurationTransfer	((ProcedureCode_t)40)
#define ProcedureCode_id_MMEConfigurationTransfer	((ProcedureCode_t)41)
#define ProcedureCode_id_CellTrafficTrace	((ProcedureCode_t)42)
#define ProcedureCode_id_Kill	((ProcedureCode_t)43)
#define ProcedureCode_id_downlinkUEAssociatedLPPaTransport	((ProcedureCode_t)44)
#define ProcedureCode_id_uplinkUEAssociatedLPPaTransport	((ProcedureCode_t)45)
#define ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport	((ProcedureCode_t)46)
#define ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport	((ProcedureCode_t)47)
#define ProcedureCode_id_UERadioCapabilityMatch	((ProcedureCode_t)48)
#define ProcedureCode_id_PWSRestartIndication	((ProcedureCode_t)49)
#define ProcedureCode_id_E_RABModificationIndication	((ProcedureCode_t)50)
#define ProcedureCode_id_PWSFailureIndication	((ProcedureCode_t)51)
#define ProcedureCode_id_RerouteNASRequest	((ProcedureCode_t)52)
#define ProcedureCode_id_UEContextModificationIndication	((ProcedureCode_t)53)
#define ProcedureCode_id_ConnectionEstablishmentIndication	((ProcedureCode_t)54)
#define ProcedureCode_id_UEContextSuspend	((ProcedureCode_t)55)
#define ProcedureCode_id_UEContextResume	((ProcedureCode_t)56)
#define ProcedureCode_id_NASDeliveryIndication	((ProcedureCode_t)57)
#define ProcedureCode_id_RetrieveUEInformation	((ProcedureCode_t)58)
#define ProcedureCode_id_UEInformationTransfer	((ProcedureCode_t)59)
#define ProcedureCode_id_eNBCPRelocationIndication	((ProcedureCode_t)60)
#define ProcedureCode_id_MMECPRelocationIndication	((ProcedureCode_t)61)
#define ProcedureCode_id_SecondaryRATDataUsageReport	((ProcedureCode_t)62)

#ifdef __cplusplus
}
#endif

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