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


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_HorizontalVelocity.h"
#include "RANAP_HorizontalWithVerticalVelocity.h"
#include "RANAP_HorizontalVelocityWithUncertainty.h"
#include "RANAP_HorizontalWithVerticalVelocityAndUncertainty.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_VelocityEstimate_PR {
	RANAP_VelocityEstimate_PR_NOTHING,	/* No components present */
	RANAP_VelocityEstimate_PR_horizontalVelocity,
	RANAP_VelocityEstimate_PR_horizontalWithVerticalVelocity,
	RANAP_VelocityEstimate_PR_horizontalVelocityWithUncertainty,
	RANAP_VelocityEstimate_PR_horizontalWithVeritcalVelocityAndUncertainty,
	/* Extensions may appear below */
	
} RANAP_VelocityEstimate_PR;

/* RANAP_VelocityEstimate */
typedef struct RANAP_VelocityEstimate {
	RANAP_VelocityEstimate_PR present;
	union RANAP_VelocityEstimate_u {
		RANAP_HorizontalVelocity_t	 horizontalVelocity;
		RANAP_HorizontalWithVerticalVelocity_t	 horizontalWithVerticalVelocity;
		RANAP_HorizontalVelocityWithUncertainty_t	 horizontalVelocityWithUncertainty;
		RANAP_HorizontalWithVerticalVelocityAndUncertainty_t	 horizontalWithVeritcalVelocityAndUncertainty;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_VelocityEstimate_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_VelocityEstimate;

#ifdef __cplusplus
}
#endif

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