/*
 * 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_MDTMode_H_
#define	_RANAP_MDTMode_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_ImmediateMDT.h>
#include <osmocom/ranap/RANAP_LoggedMDT.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_MDTMode_PR {
	RANAP_MDTMode_PR_NOTHING,	/* No components present */
	RANAP_MDTMode_PR_immediateMDT,
	RANAP_MDTMode_PR_loggedMDT,
	/* Extensions may appear below */
	
} RANAP_MDTMode_PR;

/* RANAP_MDTMode */
typedef struct RANAP_MDTMode {
	RANAP_MDTMode_PR present;
	union RANAP_MDTMode_u {
		RANAP_ImmediateMDT_t	 immediateMDT;
		RANAP_LoggedMDT_t	 loggedMDT;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_MDTMode_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDTMode;

#ifdef __cplusplus
}
#endif

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