QLCSlowConfigHandler.hh

Go to the documentation of this file.
00001 
00008 #ifndef _QSLOW_CONFIG_HANDLER_HH_
00009 #define _QSLOW_CONFIG_HANDLER_HH_
00010 
00011 #include "QCuore.hh"
00012 #include "QDaqClient.hh"
00013 #include "QSlowControlClient.hh"
00014 
00015 #include <map>
00016 #include <list>
00017 #include <vector>
00018 
00019 class QLCSlowConfig;
00020 
00021 class QLCSlowConfigHandler
00022 {
00023 public:
00024    
00026    static QLCSlowConfigHandler& GetInstance();
00027 
00029    virtual ~QLCSlowConfigHandler();
00030 
00039    const QLCSlowConfig* GetConfig(const unsigned short lg,
00040                                   const unsigned short id) const;
00041 
00043    bool GetCurrentBranch() const { return fCurrentBranch; }
00044        
00046    float GetExternalBias() const { return fExternalBias; }
00047 
00060    bool SetExternalBias(const float bias);
00061 
00080    bool AddConfig(const unsigned short lg, QLCSlowConfig* config);
00081    
00098    bool Schedule(const unsigned short lg, QLCSlowConfig* config);
00099 
00107    const QLCSlowConfig* GetNextScheduled(const unsigned short lg) const;
00108    
00118    void EraseNextScheduled(const unsigned short lg);
00119    
00125    const QLCSlowConfig* GetLastConfig(const unsigned short lg) const;
00126 
00134    bool AddNextScheduled(const unsigned short lg);
00135 
00142    void SetConfDone(const unsigned short lg,const unsigned short id);
00143 
00148    bool IsConfDone() const { return fCurrentConfig.empty(); }
00149 
00158    bool SetCurveDone(const unsigned short lg);
00159 
00164    bool IsCurvesDone() const { return fChannels.empty(); }
00165 
00173    bool SetBranchDone(const unsigned short lg);
00174 
00180    bool IsBranchDone() const;
00181 
00188    bool SetActiveChannels(const std::list<unsigned short>& channels);
00189 
00195    bool GoToPositiveBranch();
00196 
00201    const std::list<unsigned short>& GetActiveChannels() const 
00202    { return fChannels; }
00203 
00208    void Clear();
00209 
00212    void ClearMemory();
00213 
00214 
00232    bool Consolidate();
00233 
00234    void Dump() const;
00235 
00236    bool SetSleepTime(const unsigned short sleepTime);
00237 
00238    unsigned short GetSleepTime() const { return fSleepTime; }
00239 private:
00241    QLCSlowConfigHandler();
00242 
00243    void InitSlowClient();
00244 
00245 
00247    float fExternalBias;
00248 
00255    std::map<unsigned short,std::vector<QLCSlowConfig*> > fConfigMap;
00256 
00263    std::map<unsigned short, std::list<QLCSlowConfig*> > fScheduled;
00264 
00270    std::map<unsigned short,unsigned short> fCurrentConfig;
00271 
00273    std::list<unsigned short> fChannels;
00274 
00276    std::list<unsigned short> fBranchDone;
00277 
00287    bool fCurrentBranch;
00288 
00296    std::list<int> fCrates;
00297 
00304    std::map<unsigned short, QLCSlowConfig*> fNextConfig;
00305 
00307    unsigned short fSleepTime;
00308 
00309    QDaqClient fDaqClient;
00310    QSlowControlClient fSlowClient;
00311 
00323    bool ApplyConfig(const unsigned short lg,
00324                     QLCSlowConfig* conf,
00325                     const QLCSlowConfig* oldConf);
00326 
00327 
00329    void GetCratesToKill();
00330 
00332    void UpdateExternalBias();
00333 
00339    bool CheckSlowStatus();
00340 };
00341 
00342 #endif

Generated on Fri Mar 6 13:40:40 2009 for CUORE Software by  doxygen 1.5.1