ParamGetLocalFile.hh 4.56 KB
/*
 * ParamGetLocalFile.hh
 *
 *  Created on: 21 nov. 2014
 *      Author: AKKA
 */

#ifndef PARAMGETLOCALFILE_HH_
#define PARAMGETLOCALFILE_HH_

#include <set>
#include <string>

#include <boost/shared_ptr.hpp>

#include "ParamGet.hh"

#include "TimeStamp.hh"

#include "VirtualInstrument.hh"

#include "LocalParamData.hh"

#include "Pusher.hh"

using namespace AMDA::Parameters;

namespace AMDA {

namespace LocalFileInterface {

//used class
class ParamData;

/**
 * @class ParamGetLocalFile
 * @brief It is a DataWriter for a Parameter get from a local file.
 */
class ParamGetLocalFile: public ParamGet_CRTP<ParamGetLocalFile>
{
public:
	typedef std::set<std::string> InfoRequestList;

	/*
	 * @brief Constructor
	 */
	ParamGetLocalFile(Parameter &parameter);

	ParamGetLocalFile(const ParamGetLocalFile &pParamGetLocalFile, Parameter &parameter);

	/*
	 * @brief Destructor
	 */
	virtual ~ParamGetLocalFile();

	/*
	 * @brief Get param id in local base
	 */
	const std::string& getParamId() const
	{
		return _paramId;
	}

	/*
	 * @brief Set param id in local base
	 */
	void setParamId(const char* paramId)
	{
		_paramId = paramId;
	}

	/*
	 * @brief Get param type in local base
	 */
	LocalParamType getParamType()
	{
		return _paramType;
	}

	/*
	 * @brief Set param type in local base
	 */
	void setParamType(LocalParamType type)
	{
		_paramType = type;
	}

	/*
	 * @brief Get param dim1 size in local base
	 */
	int getParamDim1Size(void)
	{
		return _paramDim1Size;
	}

	/*
	 * @brief Set param dim1 size in local base
	 */
	void setParamDim1Size(int size)
	{
		_paramDim1Size = size;
	}

	/*
	 * @brief Get param dim2 size in local base
	 */
	int getParamDim2Size(void)
	{
		return _paramDim2Size;
	}

	/*
	 * @brief Set param dim2 size in local base
	 */
	void setParamDim2Size(int size)
	{
		_paramDim2Size = size;
	}

	/*
	 * @brief Get param min sampling in local base
	 */
	double getParamMinSampling(void)
	{
		return _paramMinSampling;
	}

	/*
	 * @brief Set param min sampling in local base
	 */
	void setParamMinSampling(double minSampling)
	{
		_paramMinSampling = minSampling;
	}

	/*
	 * @brief Get param max sampling in local base
	 */
	double getParamMaxSampling(void)
	{
		return _paramMaxSampling;
	}

	/*
	 * @brief Set param max sampling in local base
	 */
	void setParamMaxSampling(double maxSampling)
	{
		_paramMaxSampling = maxSampling;
	}

	/*
	 * @brief Get time format in local base
	 */
	LocalTimeFormat getTimeFormat()
	{
		return _timeFormat;
	}

	/*
	 * @brief Set time format in local base
	 */
	void setTimeFormat(LocalTimeFormat timeFormat)
	{
		_timeFormat = timeFormat;
	}

	/**
	 * @brief add a calib info
	 */
	void createInfoRequest(const char* pParamInfo)
	{
		_infoRequestList.insert(pParamInfo);
	}

	/*
	 * @brief Get Virtual Instrument Id in local base
	 */
	const std::string& getVIId() const
	{
		return _viId;
	}

	/*
	 * @brief Set Virtual Instrument Id in local base
	 */
	void setVIId(const char* viId)
	{
		_viId = viId;
	}

	/**
	 *  @overload DataWriter::write - Write data in dataParam and return the number of data writed.
	 */
	virtual unsigned int write();

	/*
	 * @overload DataWriter::getMinSampling
	 */
	virtual double getMinSampling();

	/*
	 * @brief Init
	 */
	TimeStamp init();

	/**
	 * @overload DataWriter::updateInfo update parameter info in relation to the ParamGet
	 */
	virtual void updateInfo(Parameter & parameter);

protected:


	/*
	 * @brief Create _paramData
	 */
	bool createParamData(void);

	/*
	 * @brief Local Param Id
	 */
	std::string _paramId;

	/*
	 * @brief Local Param type
	 */
	LocalParamType _paramType;

	/*
	 * @brief Local Param dim1 size
	 */
	int _paramDim1Size;

	/*
	 * @brief Local Param dim2 size
	 */
	int _paramDim2Size;

	/*
	 * @brief Local Param min sampling
	 */
	double _paramMinSampling;

	/*
	 * @brief Local Param max sampling
	 */
	double _paramMaxSampling;

	/*
	 * @brief Time format for the local param
	 */
	LocalTimeFormat _timeFormat;

	/*
	 * @brief List of calib info
	 */
	InfoRequestList _infoRequestList;

	/*
	 * @brief Local Param fill value
	 */
	double _fillValue;

	/*
	 * @brief Local VI Id
	 */
	std::string _viId;

	 /*
	  * @brief Time of xml file or 0
	  */
	TimeStamp _timeStamp;

	/*
	 * @brief Shared pointer to the virtual instrument
	 */
	VirtualInstrumentSPtr _vi;

	/*
	 * @brief Data pusher
	 */
	PusherBase *_pusher;

	/*
	 * @brief Parameter data flow
	 */
	ParamFlowSPtr _paramFlow;

	/*
	 * @brief Get calib info
	 */
	void getCalibInfo();
};

typedef boost::shared_ptr<ParamGetLocalFile> ParamGetLocalFileSPtr;

} /* namespace LocalFileInterface */
} /* namespace AMDA */
#endif /* PARAMGETLOCALFILE_HH_ */