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

#ifndef	_ResultCode_H_
#define	_ResultCode_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ResultCode {
	ResultCode_ok	= 0,
	ResultCode_illegalClientId	= 1,
	ResultCode_illegalBankId	= 2,
	ResultCode_illegalSlotId	= 3,
	ResultCode_unsupportedProtocolVersion	= 4,
	ResultCode_unknownSlotmap	= 5,
	ResultCode_identityInUse	= 6,
	ResultCode_cardNotPresent	= 100,
	ResultCode_cardUnresponsive	= 101,
	ResultCode_cardTransmissionError	= 102
	/*
	 * Enumeration is extensible
	 */
} e_ResultCode;

/* ResultCode */
typedef long	 ResultCode_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ResultCode;
asn_struct_free_f ResultCode_free;
asn_struct_print_f ResultCode_print;
asn_constr_check_f ResultCode_constraint;
ber_type_decoder_f ResultCode_decode_ber;
der_type_encoder_f ResultCode_encode_der;
xer_type_decoder_f ResultCode_decode_xer;
xer_type_encoder_f ResultCode_encode_xer;

#ifdef __cplusplus
}
#endif

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