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

#ifndef	_SABP_Criticality_Diagnostics_H_
#define	_SABP_Criticality_Diagnostics_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/sabp/SABP_ProcedureCode.h>
#include <osmocom/sabp/SABP_TriggeringMessage.h>
#include <osmocom/sabp/SABP_Criticality.h>
#include <osmocom/sabp/SABP_CriticalityDiagnostics-IE-List.h>
#include <osmocom/sabp/SABP_IE-Extensions.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* SABP_Criticality-Diagnostics */
typedef struct SABP_Criticality_Diagnostics {
	SABP_ProcedureCode_t	*procedureCode	/* OPTIONAL */;
	SABP_TriggeringMessage_t	*triggeringMessage	/* OPTIONAL */;
	SABP_Criticality_t	*procedureCriticality	/* OPTIONAL */;
	SABP_CriticalityDiagnostics_IE_List_t	*iEsCriticalityDiagnostics	/* OPTIONAL */;
	SABP_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;
} SABP_Criticality_Diagnostics_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SABP_Criticality_Diagnostics;

#ifdef __cplusplus
}
#endif

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