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

#ifndef	_ErrorCode_H_
#define	_ErrorCode_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ErrorCode {
	ErrorCode_unknownClientConnected	= 1,
	ErrorCode_unexpectedDisconnect	= 2,
	ErrorCode_unexpectedProtocolVersion	= 3
	/*
	 * Enumeration is extensible
	 */
} e_ErrorCode;

/* ErrorCode */
typedef long	 ErrorCode_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ErrorCode;
asn_struct_free_f ErrorCode_free;
asn_struct_print_f ErrorCode_print;
asn_constr_check_f ErrorCode_constraint;
ber_type_decoder_f ErrorCode_decode_ber;
der_type_encoder_f ErrorCode_encode_der;
xer_type_decoder_f ErrorCode_decode_xer;
xer_type_encoder_f ErrorCode_encode_xer;

#ifdef __cplusplus
}
#endif

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