/*
 * 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 <osmocom/osmo-iuh/ranap/RANAP_CauseRadioNetwork.h>
#include <osmocom/osmo-iuh/ranap/RANAP_CauseTransmissionNetwork.h>
#include <osmocom/osmo-iuh/ranap/RANAP_CauseNAS.h>
#include <osmocom/osmo-iuh/ranap/RANAP_CauseProtocol.h>
#include <osmocom/osmo-iuh/ranap/RANAP_CauseMisc.h>
#include <osmocom/osmo-iuh/ranap/RANAP_CauseNon-Standard.h>
#include <osmocom/osmo-iuh/ranap/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>
