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

#ifndef	_RANAP_Cause_H_
#define	_RANAP_Cause_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_CauseRadioNetwork.h"
#include "RANAP_CauseTransmissionNetwork.h"
#include "RANAP_CauseNAS.h"
#include "RANAP_CauseProtocol.h"
#include "RANAP_CauseMisc.h"
#include "RANAP_CauseNon-Standard.h"
#include "RANAP_CauseRadioNetworkExtension.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_Cause_PR {
	RANAP_Cause_PR_NOTHING,	/* No components present */
	RANAP_Cause_PR_radioNetwork,
	RANAP_Cause_PR_transmissionNetwork,
	RANAP_Cause_PR_nAS,
	RANAP_Cause_PR_protocol,
	RANAP_Cause_PR_misc,
	RANAP_Cause_PR_non_Standard,
	/* Extensions may appear below */
	RANAP_Cause_PR_radioNetworkExtension
} RANAP_Cause_PR;

/* RANAP_Cause */
typedef struct RANAP_Cause {
	RANAP_Cause_PR present;
	union RANAP_Cause_u {
		RANAP_CauseRadioNetwork_t	 radioNetwork;
		RANAP_CauseTransmissionNetwork_t	 transmissionNetwork;
		RANAP_CauseNAS_t	 nAS;
		RANAP_CauseProtocol_t	 protocol;
		RANAP_CauseMisc_t	 misc;
		RANAP_CauseNon_Standard_t	 non_Standard;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
		RANAP_CauseRadioNetworkExtension_t	 radioNetworkExtension;
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_Cause_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_Cause;

#ifdef __cplusplus
}
#endif

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