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

#ifndef	_SABP_Cause_H_
#define	_SABP_Cause_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum SABP_Cause {
	SABP_Cause_parameter_not_recognised	= 0,
	SABP_Cause_parameter_value_invalid	= 1,
	SABP_Cause_valid_CN_message_not_identified	= 2,
	SABP_Cause_service_area_identity_not_valid	= 3,
	SABP_Cause_unrecognised_message	= 4,
	SABP_Cause_missing_mandatory_element	= 5,
	SABP_Cause_rNC_capacity_exceeded	= 6,
	SABP_Cause_rNC_memory_exceeded	= 7,
	SABP_Cause_service_area_broadcast_not_supported	= 8,
	SABP_Cause_service_area_broadcast_not_operational	= 9,
	SABP_Cause_message_reference_already_used	= 10,
	SABP_Cause_unspecifed_error	= 11,
	SABP_Cause_transfer_syntax_error	= 12,
	SABP_Cause_semantic_error	= 13,
	SABP_Cause_message_not_compatible_with_receiver_state	= 14,
	SABP_Cause_abstract_syntax_error_reject	= 15,
	SABP_Cause_abstract_syntax_error_ignore_and_notify	= 16,
	SABP_Cause_abstract_syntax_error_falsely_constructed_message	= 17
} e_SABP_Cause;

/* SABP_Cause */
typedef long	 SABP_Cause_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SABP_Cause;
asn_struct_free_f SABP_Cause_free;
asn_struct_print_f SABP_Cause_print;
asn_constr_check_f SABP_Cause_constraint;
ber_type_decoder_f SABP_Cause_decode_ber;
der_type_encoder_f SABP_Cause_encode_der;
xer_type_decoder_f SABP_Cause_decode_xer;
xer_type_encoder_f SABP_Cause_encode_xer;
per_type_decoder_f SABP_Cause_decode_uper;
per_type_encoder_f SABP_Cause_encode_uper;
per_type_decoder_f SABP_Cause_decode_aper;
per_type_encoder_f SABP_Cause_encode_aper;

#ifdef __cplusplus
}
#endif

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