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

#ifndef	_RsproPDUchoice_H_
#define	_RsproPDUchoice_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/rspro/ConnectBankReq.h>
#include <osmocom/rspro/ConnectBankRes.h>
#include <osmocom/rspro/ConnectClientReq.h>
#include <osmocom/rspro/ConnectClientRes.h>
#include <osmocom/rspro/CreateMappingReq.h>
#include <osmocom/rspro/CreateMappingRes.h>
#include <osmocom/rspro/RemoveMappingReq.h>
#include <osmocom/rspro/RemoveMappingRes.h>
#include <osmocom/rspro/ConfigClientIdReq.h>
#include <osmocom/rspro/ConfigClientIdRes.h>
#include <osmocom/rspro/ConfigClientBankReq.h>
#include <osmocom/rspro/ConfigClientBankRes.h>
#include <osmocom/rspro/ErrorInd.h>
#include <osmocom/rspro/ResetStateReq.h>
#include <osmocom/rspro/ResetStateRes.h>
#include <osmocom/rspro/SetAtrReq.h>
#include <osmocom/rspro/SetAtrRes.h>
#include <osmocom/rspro/TpduModemToCard.h>
#include <osmocom/rspro/TpduCardToModem.h>
#include <osmocom/rspro/ClientSlotStatusInd.h>
#include <osmocom/rspro/BankSlotStatusInd.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RsproPDUchoice_PR {
	RsproPDUchoice_PR_NOTHING,	/* No components present */
	RsproPDUchoice_PR_connectBankReq,
	RsproPDUchoice_PR_connectBankRes,
	RsproPDUchoice_PR_connectClientReq,
	RsproPDUchoice_PR_connectClientRes,
	RsproPDUchoice_PR_createMappingReq,
	RsproPDUchoice_PR_createMappingRes,
	RsproPDUchoice_PR_removeMappingReq,
	RsproPDUchoice_PR_removeMappingRes,
	RsproPDUchoice_PR_configClientIdReq,
	RsproPDUchoice_PR_configClientIdRes,
	RsproPDUchoice_PR_configClientBankReq,
	RsproPDUchoice_PR_configClientBankRes,
	RsproPDUchoice_PR_errorInd,
	RsproPDUchoice_PR_resetStateReq,
	RsproPDUchoice_PR_resetStateRes,
	RsproPDUchoice_PR_setAtrReq,
	RsproPDUchoice_PR_setAtrRes,
	RsproPDUchoice_PR_tpduModemToCard,
	RsproPDUchoice_PR_tpduCardToModem,
	RsproPDUchoice_PR_clientSlotStatusInd,
	RsproPDUchoice_PR_bankSlotStatusInd,
	/* Extensions may appear below */
	
} RsproPDUchoice_PR;

/* RsproPDUchoice */
typedef struct RsproPDUchoice {
	RsproPDUchoice_PR present;
	union RsproPDUchoice_u {
		ConnectBankReq_t	 connectBankReq;
		ConnectBankRes_t	 connectBankRes;
		ConnectClientReq_t	 connectClientReq;
		ConnectClientRes_t	 connectClientRes;
		CreateMappingReq_t	 createMappingReq;
		CreateMappingRes_t	 createMappingRes;
		RemoveMappingReq_t	 removeMappingReq;
		RemoveMappingRes_t	 removeMappingRes;
		ConfigClientIdReq_t	 configClientIdReq;
		ConfigClientIdRes_t	 configClientIdRes;
		ConfigClientBankReq_t	 configClientBankReq;
		ConfigClientBankRes_t	 configClientBankRes;
		ErrorInd_t	 errorInd;
		ResetStateReq_t	 resetStateReq;
		ResetStateRes_t	 resetStateRes;
		SetAtrReq_t	 setAtrReq;
		SetAtrRes_t	 setAtrRes;
		TpduModemToCard_t	 tpduModemToCard;
		TpduCardToModem_t	 tpduCardToModem;
		ClientSlotStatusInd_t	 clientSlotStatusInd;
		BankSlotStatusInd_t	 bankSlotStatusInd;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RsproPDUchoice_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice;

#ifdef __cplusplus
}
#endif

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