ProcessFramesTransformation.hh 1.88 KB
/*
 * ProcessFramesTransformation.hh
 *
 *  Created on: Jul 18, 2016
 *      Author: AKKA IS
 */

#ifndef PROCESSFRAMESTRANSFORMATION_HH_
#define PROCESSFRAMESTRANSFORMATION_HH_

#include "SingleParamProcess.hh"

namespace AMDA {
namespace Parameters {

class ProcessFramesTransformationBase : public AMDA::Parameters::SingleParamProcess_CRTP<ProcessFramesTransformationBase> {

public:
	/**
	 * @brief Constructor.
	 */ 
	ProcessFramesTransformationBase(Parameter &parameter);
	/**
	 * @brief Copy Constructor.
	 */
	ProcessFramesTransformationBase(const ProcessFramesTransformationBase& pProcess, Parameter &pParameter);
	/**
	 * @brief Destructor.
	 */
	~ProcessFramesTransformationBase();

	// Overload Process methods
	/**
	 * @overload Process::init()
	 */ 
	TimeStamp init();

protected:
	std::string _fromFrame;
	std::string _toFrame;
	bool        _isPosition;
};

/**
 * @class ProcessFramesTransformation
 * @brief Process to compute the transformation of a vector from a frame to another frame.
 */
class ProcessFramesTransformation : public ProcessFramesTransformationBase {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessFramesTransformation(Parameter &parameter);

	// Overload Process methods
	/**
	 * @overload Process::init()
	 */
	TimeStamp init();
};

class ProcessGSEToGSMFrameTransformation : public ProcessFramesTransformationBase {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessGSEToGSMFrameTransformation(Parameter &parameter);

	// Overload Process methods
	/**
	 * @overload Process::init()
	 */
	TimeStamp init();
};

class ProcessGSMToGSEFrameTransformation : public ProcessFramesTransformationBase {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessGSMToGSEFrameTransformation(Parameter &parameter);

	// Overload Process methods
	/**
	 * @overload Process::init()
	 */
	TimeStamp init();
};

} /* namespace Parameters */
} /* namespace AMDA */
#endif /* PROCESSFRAMESTRANSFORMATION_HH_ */