QSlowControlServer.hh

Go to the documentation of this file.
00001 
00010 #ifndef _QSLOW_CONTROL_SERVER_HH_
00011 #define _QSLOW_CONTROL_SERVER_HH_
00012 
00013 // C/C++ Includes
00014 #include <map>
00015 #include <vector>
00016 #include <string>
00017 
00018 // Apollo Includes
00019 #include "QCuore.hh"
00020 #include "QCommand.hh"
00021 #include "QFrontEnd.hh"
00022 #include "QBessel.hh"
00023 #include "QPulser.hh"
00024 #include "QPowerSupply.hh"
00025 #include "QError.hh"
00026 
00027 class QSlowControlServer {
00028 
00029 public:
00030   
00034    virtual ~QSlowControlServer();
00035    
00036    
00038    static QSlowControlServer& GetInstance();
00039 
00043    QFrontEnd& GetFrontEnd() {return *fFrontEnd;} 
00044    
00048    QBessel& GetBessel() {return *fBessel;} 
00049 
00053    QPulser& GetPulser() {return *fPulser;} 
00054 
00058    QPowerSupply& GetPowerSupply() {return *fPower;}
00059 
00060    
00064    inline const QSlowTypes::QSlowMode_t GetServerMode() const {return fMode;}
00065 
00069    inline double GetLiveTime(){return ::difftime(::time(NULL),fStart);};
00070 
00074    inline int GetBasket(){ return fBasket; }
00075 
00079    inline const QSlowTypes::QSlowNumFormat_t GetNumFormat() const {return fFormat;}
00080 
00084    inline const QSlowTypes::QSlowWriteStatus_t GetWriteStatus() const {return fStatus;}
00085 
00089    inline QApolloError* GetApolloError() const {return fErr;}
00090    
00094    inline unsigned long GetPPortAddress() const {return fPPortAddress;}
00095    
00100    void SendMessage(const std::string& text, MsgLevel severity);
00101 
00107    inline const QError& SetServerMode(QSlowTypes::QSlowMode_t mode, unsigned int basket) {return UpdateServerMode(mode,basket);}
00108    
00112    inline const QError& SetBaseMode() {return UpdateServerMode(QSlowTypes::QSLOW_BASE_MODE,-1);}
00113 
00119    inline void SetWriteStatus(QSlowTypes::QSlowWriteStatus_t Status) {fStatus=Status;return;}
00120 
00124    inline void LockWriting() {return SetWriteStatus(QSlowTypes::QSLOW_WRITE_LOCKED);}
00125    
00129    inline void UnlockWriting() {return SetWriteStatus(QSlowTypes::QSLOW_WRITE_UNLOCKED);}
00130 
00135    inline void SetNumFormat(QSlowTypes::QSlowNumFormat_t Format) {fFormat=Format;return;}
00136    
00140    inline void SetHexFormat() {return SetNumFormat(QSlowTypes::QSLOW_HEX);}
00141    
00145    inline void SetDecFormat() {return SetNumFormat(QSlowTypes::QSLOW_DEC);}
00146    inline void SetBinFormat() {return SetNumFormat(QSlowTypes::QSLOW_BIN);}
00147 
00152    bool IsValidInterface(QSlowTypes::QSlowDevice_t dev);
00153    
00160    const QError& LoadElectronicsDevice(QSlowTypes::QSlowDevice_t dev, QSlowTypes::QSlowEleInterface_t iFace);
00161 
00167    const QError& LoadInstrumentDevice(QSlowTypes::QSlowDevice_t instru, QSlowTypes::QSlowEleInterface_t iFace);
00168 
00169 private:
00170   
00171 
00172    QSlowControlServer(); 
00175    QSlowTypes::QSlowMode_t fMode; 
00176    time_t fStart;                 
00177    int    fBasket;                
00178    unsigned long fPPortAddress;   
00180    QSlowTypes::QSlowWriteStatus_t fStatus; 
00181    QSlowTypes::QSlowNumFormat_t   fFormat; 
00183    QFrontEnd        *fFrontEnd; 
00184    QBessel          *fBessel;   
00185    QPulser          *fPulser;   
00186    QPowerSupply     *fPower;    
00187    QApolloError     *fErr;      
00192    QEleBaseInterface* fPpFace; 
00193    QEleBaseInterface* fNwFace; 
00195    GPIBBaseInterface* fgpib;   
00197    std::map<QSlowTypes::QSlowDevice_t,bool> fIsValid;  
00198    std::map<unsigned int, QDaqChannel>     fChannels; 
00203    //inline const std::map<unsigned int, QDaqChannel>& GetSettings() const {return *fChannels;}
00204 
00205   
00212    const QError& UpdateServerMode(QSlowTypes::QSlowMode_t mode, int basket);
00213    
00214    
00221    void GetDBConfiguration(QSlowTypes::QSlowMode_t mode, int basket);
00222 
00229    void SetInterfaceStatus(QSlowTypes::QSlowDevice_t dev, bool status);
00230    
00231 
00232 };
00233 
00234 #endif // _QSLOW_CONTROL_SERVER_HH_
00235 

Generated on Tue Nov 16 10:49:55 2010 for CUORE Software by  doxygen 1.5.6