/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "Spec/e2ap-v031ex.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -gen-PER`
 */

#ifndef	_SpecialSubframe_Info_H_
#define	_SpecialSubframe_Info_H_


#include <asn_application.h>

/* Including external dependencies */
#include "SpecialSubframePatterns.h"
#include "CyclicPrefixDL.h"
#include "CyclicPrefixUL.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct ProtocolExtensionContainer;

/* SpecialSubframe-Info */
typedef struct SpecialSubframe_Info {
	SpecialSubframePatterns_t	 specialSubframePatterns;
	CyclicPrefixDL_t	 cyclicPrefixDL;
	CyclicPrefixUL_t	 cyclicPrefixUL;
	struct ProtocolExtensionContainer	*iE_Extensions;	/* OPTIONAL */
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SpecialSubframe_Info_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info;
extern asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_specs_1;
extern asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_1[4];

#ifdef __cplusplus
}
#endif

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