/*
 * 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_CriticalityDiagnostics_H_
#define	_RANAP_CriticalityDiagnostics_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/osmo-iuh/ranap/RANAP_ProcedureCode.h>
#include <osmocom/osmo-iuh/ranap/RANAP_TriggeringMessage.h>
#include <osmocom/osmo-iuh/ranap/RANAP_Criticality.h>
#include <osmocom/osmo-iuh/ranap/RANAP_CriticalityDiagnostics-IE-List.h>
#include <osmocom/osmo-iuh/ranap/RANAP_IE-Extensions.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_CriticalityDiagnostics */
typedef struct RANAP_CriticalityDiagnostics {
	RANAP_ProcedureCode_t	*procedureCode	/* OPTIONAL */;
	RANAP_TriggeringMessage_t	*triggeringMessage	/* OPTIONAL */;
	RANAP_Criticality_t	*procedureCriticality	/* OPTIONAL */;
	RANAP_CriticalityDiagnostics_IE_List_t	*iEsCriticalityDiagnostics	/* OPTIONAL */;
	RANAP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_CriticalityDiagnostics_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_CriticalityDiagnostics;

#ifdef __cplusplus
}
#endif

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