/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RANAP-IEs"
 * 	found in "../../asn1/ranap/RANAP-IEs.asn"
 */

#ifndef	_RANAP_LocationReportingTransferInformation_H_
#define	_RANAP_LocationReportingTransferInformation_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_ReportChangeOfSAI.h>
#include <osmocom/ranap/RANAP_PeriodicReportingIndicator.h>
#include <osmocom/ranap/RANAP_DirectReportingIndicator.h>
#include <osmocom/ranap/RANAP_VerticalAccuracyCode.h>
#include <osmocom/ranap/RANAP_PositioningPriority.h>
#include <osmocom/ranap/RANAP_ClientType.h>
#include <osmocom/ranap/RANAP_ResponseTime.h>
#include <osmocom/ranap/RANAP_IncludeVelocity.h>
#include <osmocom/ranap/RANAP_PeriodicLocationInfo.h>
#include <osmocom/ranap/RANAP_IE-Extensions.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_LocationReportingTransferInformation */
typedef struct RANAP_LocationReportingTransferInformation {
	RANAP_ReportChangeOfSAI_t	*reportChangeOfSAI	/* OPTIONAL */;
	RANAP_PeriodicReportingIndicator_t	*periodicReportingIndicator	/* OPTIONAL */;
	RANAP_DirectReportingIndicator_t	*directReportingIndicator	/* OPTIONAL */;
	RANAP_VerticalAccuracyCode_t	*verticalAccuracyCode	/* OPTIONAL */;
	RANAP_PositioningPriority_t	*positioningPriorityChangeSAI	/* OPTIONAL */;
	RANAP_PositioningPriority_t	*positioningPriorityDirect	/* OPTIONAL */;
	RANAP_ClientType_t	*clientTypePeriodic	/* OPTIONAL */;
	RANAP_ClientType_t	*clientTypeDirect	/* OPTIONAL */;
	RANAP_ResponseTime_t	*responseTime	/* OPTIONAL */;
	RANAP_IncludeVelocity_t	*includeVelocity	/* OPTIONAL */;
	RANAP_PeriodicLocationInfo_t	*periodicLocationInfo	/* OPTIONAL */;
	RANAP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_LocationReportingTransferInformation_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReportingTransferInformation;

#ifdef __cplusplus
}
#endif

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