/*
 * 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_ImmediateMDT_H_
#define	_RANAP_ImmediateMDT_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_MeasurementsToActivate.h"
#include "RANAP_M1Report.h"
#include "RANAP_M2Report.h"
#include "RANAP_IE-Extensions.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_ImmediateMDT */
typedef struct RANAP_ImmediateMDT {
	RANAP_MeasurementsToActivate_t	 measurementsToActivate;
	RANAP_M1Report_t	*m1report	/* OPTIONAL */;
	RANAP_M2Report_t	*m2report	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	RANAP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_ImmediateMDT_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_ImmediateMDT;

#ifdef __cplusplus
}
#endif

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