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


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/hnbap/PLMNidentity.h>
#include <osmocom/hnbap/CellIdentity.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct IE_Extensions;

/* HNB-Cell-Identifier */
typedef struct HNB_Cell_Identifier {
	PLMNidentity_t	 pLMNidentity;
	CellIdentity_t	 cellIdentity;
	struct IE_Extensions	*iE_Extensions	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HNB_Cell_Identifier_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Identifier;

#ifdef __cplusplus
}
#endif

/* Referred external types */
#include <osmocom/hnbap/IE-Extensions.h>

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