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


#include <asn_application.h>

/* Including external dependencies */
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct MacroCoverageInformation;
struct GeographicalLocation;
struct IE_Extensions;

/* HNB-Location-Information */
typedef struct HNB_Location_Information {
	struct MacroCoverageInformation	*macroCoverageInfo	/* OPTIONAL */;
	struct GeographicalLocation	*geographicalCoordinates	/* OPTIONAL */;
	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_Location_Information_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_HNB_Location_Information;

#ifdef __cplusplus
}
#endif

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

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