diff --git a/doc/API_librairie.h b/doc/API_librairie.h new file mode 100644 index 0000000000000000000000000000000000000000..695526f539e25af3349d7e7959f74e6b781bf287 --- /dev/null +++ b/doc/API_librairie.h @@ -0,0 +1,214 @@ +//============================================================================= +// TIMIQLib.h +//============================================================================= +// abstraction.......Tim IQ Application Programming Interface +// class.............TIMIQLib +// original author...J. GOUNO - NEXEYA-FRANCE +//============================================================================= + +#ifndef _TIMIQ_LIB_H_ +#define _TIMIQ_LIB_H_ + +// ============================================================================ +// DEPENDENCIES +// ============================================================================ +#include <TIMIQException.h> +#include <TIMIQCurl.h> +#include <yat/threading/Task.h> + + + +// ========================================================================== +// DEFINITION OF API +// +// This API allows access to an electronic equipment "TimIQ". +// It allows a control software to send and receive data +// via a http web protocol. +// =========================================================================== + +namespace TIMIQLib_ns { + +//------------------------------------------------------------------------ +// Class Description: +// Thread to write the values and commands on the TimIQ equipment +//------------------------------------------------------------------------ +class ThreadedAction : public yat::Thread +{ + friend class TIMIQLib; + + protected: + + //- ctor --------------------------------- + ThreadedAction(yat::Thread::IOArg ioa, timIQConfig& cfg); + + //- dtor --------------------------------- + virtual ~ThreadedAction(); + + //- thread's entry point + virtual yat::Thread::IOArg run_undetached (yat::Thread::IOArg ioa); + + //- asks this ThreadedAction to quit + virtual void exit(); + + //- Thread state + bool isThreadAlive() + { + return m_goOn; + } + + bool isWriteDone() + { + return m_isActionDone; + } + + private: + + //- thread's ctrl flag + bool m_goOn; + + //- indicates if the threaded action is done + bool m_isActionDone; + + //- indicates if the threaded action has generated an error + bool m_isActionInError; + + //- Thread action configuration member + timIQConfig m_ti_cfg; +}; + + +//- low layer TimIQ curl class +//----------------------------- +class TIMIQCurl; + + +//------------------------------------------------------------------------ +//- TIMIQProxy Class +//- Ensures the interface of the timIQ equipment with +//- a tango software control system +//------------------------------------------------------------------------ +class TIMIQLib +{ + friend class ThreadedAction; + + public: + + // Contructor + TIMIQLib(); + + // Destructor + ~TIMIQLib(); + + //- Write functions + //--------------------------------------------------------------------------- + // Sets data to TimIQ equipment + // @param data float value. + void set_data(float data) + throw (Exception); + + // Regulates "I" tension to TimIQ equipment + // @param iValue float value. + void set_iValue(float iValue) + throw (Exception); + + // Regulates "Q" tension to TimIQ equipment + // @param qValue float value. + void set_qValue(float qValue) + throw (Exception); + + // Sets board temperature to TimIQ equipment + // @param boardTemperature float value. + void set_boardTemperature(float boardTemperature) + throw (Exception); + + // Sets command to TimIQ equipment + // @param cmd TimIQCmd_t value. + void set_command(E_timiq_cmd_t& cmd) + throw (Exception); + + //- Read functions + //--------------------------------------------------------------------------- + // Gets data from TimIQ equipment + // @param [out] data float pointer. + void get_data(float &data) + throw (Exception); + + // Gets "I" value from TimIQ equipment + // @param [out] iValue float pointer. + void get_iValue(float& iValue) + throw (Exception); + + // Gets "Q" value from TimIQ equipment + // @param [out] qValue float pointer. + void get_qValue(float& qValue) + throw (Exception); + + // Gets the mixer cosinus output from TimIQ equipment + // @param [out] mixerCosOutput float pointer. + void get_mixerCosOutput(float& mixerCosOutput) + throw (Exception); + + // Gets the mixer sinus output from TimIQ equipment + // @param [out] mixerSinOutput float pointer. + void get_mixerSinOutput(float& mixerSinOutput) + throw (Exception); + + // Gets the board temperature from TimIQ equipment + // @param [out] boardTemperature float pointer. + void get_boardTemperature(float& boardTemperature) + throw (Exception); + + // Gets the whole data from TimIQ equipment + // i.e. temperature, i & q values, mixer values + // @param [out] val Read values. + void get_boardData(timIQval_t& val) + throw (Exception); + + // Gets state of TimIQ equipment + // @param [out] status string + E_timiq_code_t get_state(std::string& status) + throw (Exception); + + // Initialize TimIQCurl library + // @param ip_address string, port_number string + void init (const std::string& ip_address, const short& port_number) + throw (Exception); + + private: + + //- internal members + //-------------------------- + TIMIQCurl * m_timiq_hw; + + //- ip address number + std::string m_ipAddress; + + //- port number + std::string m_numPort; + + //- internal timiq state + E_timiq_code_t m_internal_timiq_state; + + + protected: + + //- internal functions + //------------------------- + + //- manage command by using task + ThreadedAction * m_timiq_task; + + // execute action specified in argument + void ExecuteAction(timIQConfig & cfg) + throw (Exception); + + // end of task notification + void end_task() + throw (Exception); + +}; + +} // namespace TIMIQLib_ns + +#endif // _TIMIQ_LIB_H_ + diff --git a/pom.xml b/pom.xml index 8cf914fb044447040bd589f6dcdc592d43793165..05240628f171d6ee3142905b5c8f06f26df90870 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ </parent> <groupId>fr.soleil.lib</groupId> <artifactId>TimIQLib-${aol}-${library}-${mode}</artifactId> - <version>1.0.1-SNAPSHOT</version> + <version>1.0.1</version> <packaging>nar</packaging> <name>TimIQ</name> <description>TimIQ library</description>