Skip to content
Snippets Groups Projects
CSAdapterEqFct.h 1.30 KiB
#ifndef CS_ADAPTER_EQ_FCT_H
#define CS_ADAPTER_EQ_FCT_H

#include <eq_fct.h>
#include <ChimeraTK/ControlSystemAdapter/ProcessVariable.h>
#include <ChimeraTK/ControlSystemAdapter/ControlSystemPVManager.h>
#include "DoocsUpdater.h"

#include <boost/noncopyable.hpp>
#include <boost/scoped_ptr.hpp>

namespace ChimeraTK{

class CSAdapterEqFct : public EqFct , boost::noncopyable {
 protected:
    boost::shared_ptr<ControlSystemPVManager> controlSystemPVManager_;
    int fctCode_;
    std::vector< boost::shared_ptr<D_fct> > doocsProperties_;
    void registerProcessVariablesInDoocs();
    std::vector < ChimeraTK::ProcessVariable::SharedPtr > getProcessVariablesInThisLocation();

    static bool emptyLocationVariablesHandled;
    boost::shared_ptr<DoocsUpdater> updater_;
    
 public:
    // The fctName (location name ) is usually coming from the config file and
    // should be left empty. Only for testing without actually running a DOOCS server
    // you need it.
    CSAdapterEqFct(int fctCode,
		   boost::shared_ptr<ControlSystemPVManager> const & controlSystemPVManager,
                   boost::shared_ptr<DoocsUpdater> const & updater,
		   std::string fctName = std::string());
    ~CSAdapterEqFct();
    
    void init() override;
    int fct_code() override;
};

}// namespace ChimeraTK

#endif// CS_ADAPTER_EQ_FCT_H