// {{{RME classifier 'Logical View::DadosPos'

#ifndef DadosPos_H
#define DadosPos_H

#ifdef PRAGMA
#pragma interface "DadosPos.h"
#endif

#include <RTSystem/CorrigirRotaComponent.h>

struct DadosPos
{
	class Base : public RTRootProtocol
	{
	public:
		inline Base( void );
		inline ~Base( void );
		enum
		{
			rti_DesAngular = rtiLast_RTRootProtocol + 1,
			rti_DesLinear,
			rti_PosBase
		};

	protected:
		enum { rtiLast_DadosPos = rti_PosBase };

	public:
		inline RTInSignal DesAngular( void );
		inline RTInSignal DesLinear( void );
		inline RTInSignal PosBase( void );
		inline RTOutSignal Correcao( const float & data );
		static const RTProtocolDescriptor rt_class;

	private:
		static const RTSignalDescriptor rt_signals[];
	};
	class Conjugate : public RTRootProtocol
	{
	public:
		inline Conjugate( void );
		inline ~Conjugate( void );
		enum { rti_Correcao = rtiLast_RTRootProtocol + 1 };

	protected:
		enum { rtiLast_DadosPos = rti_Correcao };

	public:
		inline RTInSignal Correcao( void );
		inline RTOutSignal DesAngular( const float & data );
		inline RTOutSignal DesLinear( const float & data );
		inline RTOutSignal PosBase( const float & data );
		static const RTProtocolDescriptor rt_class;

	private:
		static const RTSignalDescriptor rt_signals[];
	};
};

inline DadosPos::Base::Base( void )
	: RTRootProtocol()
{
}

inline DadosPos::Base::~Base( void )
{
}

inline RTInSignal DadosPos::Base::DesAngular( void )
{
	return RTInSignal( this, rti_DesAngular );
}

inline RTInSignal DadosPos::Base::DesLinear( void )
{
	return RTInSignal( this, rti_DesLinear );
}

inline RTInSignal DadosPos::Base::PosBase( void )
{
	return RTInSignal( this, rti_PosBase );
}

inline RTOutSignal DadosPos::Base::Correcao( const float & data )
{
	return RTOutSignal( this, Conjugate::rti_Correcao, &data, &RTType_float );
}

inline DadosPos::Conjugate::Conjugate( void )
	: RTRootProtocol()
{
}

inline DadosPos::Conjugate::~Conjugate( void )
{
}

inline RTInSignal DadosPos::Conjugate::Correcao( void )
{
	return RTInSignal( this, rti_Correcao );
}

inline RTOutSignal DadosPos::Conjugate::DesAngular( const float & data )
{
	return RTOutSignal( this, Base::rti_DesAngular, &data, &RTType_float );
}

inline RTOutSignal DadosPos::Conjugate::DesLinear( const float & data )
{
	return RTOutSignal( this, Base::rti_DesLinear, &data, &RTType_float );
}

inline RTOutSignal DadosPos::Conjugate::PosBase( const float & data )
{
	return RTOutSignal( this, Base::rti_PosBase, &data, &RTType_float );
}

#endif /* DadosPos_H */

// }}}RME
