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


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct IE_Extensions;

/* GeographicalLocation */
typedef struct GeographicalLocation {
	GeographicalCoordinates_t	 geographicalCoordinates;
	AltitudeAndDirection_t	 altitudeAndDirection;
	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;
} GeographicalLocation_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_GeographicalLocation;

#ifdef __cplusplus
}
#endif

/* Referred external types */
#include "IE-Extensions.h"

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