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

#ifndef	_SABP_ProcedureCode_H_
#define	_SABP_ProcedureCode_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum SABP_ProcedureCode {
	SABP_ProcedureCode_id_Write_Replace	= 0,
	SABP_ProcedureCode_id_Kill	= 1,
	SABP_ProcedureCode_id_Load_Status_Enquiry	= 2,
	SABP_ProcedureCode_id_Message_Status_Query	= 3,
	SABP_ProcedureCode_id_Restart_Indication	= 4,
	SABP_ProcedureCode_id_Reset	= 5,
	SABP_ProcedureCode_id_Failure_Indication	= 6,
	SABP_ProcedureCode_id_Error_Indication	= 7
} e_SABP_ProcedureCode;

/* SABP_ProcedureCode */
typedef long	 SABP_ProcedureCode_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SABP_ProcedureCode;
asn_struct_free_f SABP_ProcedureCode_free;
asn_struct_print_f SABP_ProcedureCode_print;
asn_constr_check_f SABP_ProcedureCode_constraint;
ber_type_decoder_f SABP_ProcedureCode_decode_ber;
der_type_encoder_f SABP_ProcedureCode_encode_der;
xer_type_decoder_f SABP_ProcedureCode_decode_xer;
xer_type_encoder_f SABP_ProcedureCode_encode_xer;
per_type_decoder_f SABP_ProcedureCode_decode_uper;
per_type_encoder_f SABP_ProcedureCode_encode_uper;
per_type_decoder_f SABP_ProcedureCode_decode_aper;
per_type_encoder_f SABP_ProcedureCode_encode_aper;

#ifdef __cplusplus
}
#endif

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