/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-IEs"
 * 	found in "../../asn1/hnbap/HNBAP-IEs.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_MacroCellID_H_
#define	_MacroCellID_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/hnbap/UTRANCellID.h>
#include <osmocom/hnbap/CGI.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum MacroCellID_PR {
	MacroCellID_PR_NOTHING,	/* No components present */
	MacroCellID_PR_uTRANCellID,
	MacroCellID_PR_gERANCellID,
	/* Extensions may appear below */
	
} MacroCellID_PR;

/* MacroCellID */
typedef struct MacroCellID {
	MacroCellID_PR present;
	union MacroCellID_u {
		UTRANCellID_t	 uTRANCellID;
		CGI_t	 gERANCellID;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MacroCellID_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_MacroCellID;

#ifdef __cplusplus
}
#endif

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