QSlowControlServer.hh
Go to the documentation of this file.00001
00010 #ifndef _QSLOW_CONTROL_SERVER_HH_
00011 #define _QSLOW_CONTROL_SERVER_HH_
00012
00013
00014 #include <map>
00015 #include <vector>
00016 #include <string>
00017
00018
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
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