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


#include <asn_application.h>

/* Including external dependencies */
#include <NativeInteger.h>
#include <osmocom/ranap/RANAP_VerticalSpeedDirection.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_VerticalVelocity */
typedef struct RANAP_VerticalVelocity {
	long	 veritcalSpeed;
	RANAP_VerticalSpeedDirection_t	 veritcalSpeedDirection;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_VerticalVelocity_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalVelocity;

#ifdef __cplusplus
}
#endif

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