/*
 * 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 <osmocom/hnbap/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>
