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


#include <asn_application.h>

/* Including external dependencies */
#include "HNB-Cell-Identifier.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum HNB_RNL_Identity_PR {
	HNB_RNL_Identity_PR_NOTHING,	/* No components present */
	HNB_RNL_Identity_PR_hNB_Identity_as_Cell_Identifier,
	/* Extensions may appear below */
	
} HNB_RNL_Identity_PR;

/* HNB-RNL-Identity */
typedef struct HNB_RNL_Identity {
	HNB_RNL_Identity_PR present;
	union HNB_RNL_Identity_u {
		HNB_Cell_Identifier_t	 hNB_Identity_as_Cell_Identifier;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HNB_RNL_Identity_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_HNB_RNL_Identity;

#ifdef __cplusplus
}
#endif

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