/*
 * 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 "RANAP_ReportChangeOfSAI.h"
#include "RANAP_PeriodicReportingIndicator.h"
#include "RANAP_DirectReportingIndicator.h"
#include "RANAP_VerticalAccuracyCode.h"
#include "RANAP_PositioningPriority.h"
#include "RANAP_ClientType.h"
#include "RANAP_ResponseTime.h"
#include "RANAP_IncludeVelocity.h"
#include "RANAP_PeriodicLocationInfo.h"
#include "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>
