/*
 * 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_EUTRANFrequencies_H_
#define	_RANAP_EUTRANFrequencies_H_


#include <asn_application.h>

/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <NativeInteger.h>
#include <osmocom/ranap/RANAP_MeasBand.h>
#include <osmocom/ranap/RANAP_IE-Extensions.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_EUTRANFrequencies */
typedef struct RANAP_EUTRANFrequencies {
	A_SEQUENCE_OF(struct MemberJ {
		long	 earfcn;
		RANAP_MeasBand_t	*measBand	/* OPTIONAL */;
		RANAP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} ) list;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_EUTRANFrequencies_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_EUTRANFrequencies;

#ifdef __cplusplus
}
#endif

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