00001 00100 #ifndef _M_LC_SLOW_CONTROLLER_HH_ 00101 #define _M_LC_SLOW_CONTROLLER_HH_ 00102 00103 00104 #include "QModule.hh" 00105 00106 00107 #include <list> 00108 #include <vector> 00109 00110 class QEleChannelConfig; 00111 00112 class MLCSlowController : public QModule { 00113 00114 public: 00116 MLCSlowController(QSequence* s); 00117 00119 virtual ~MLCSlowController(); 00120 00128 void Init(); 00129 00136 QEvent* Do(QEvent* ev); 00137 00139 void Done(); 00140 00141 private: 00147 enum QLCStepMode { 00148 QLC_STEP_LINEAR, 00150 QLC_STEP_LOG, 00152 QLC_STEP_FILE 00154 }; 00155 00160 std::vector< std::list<unsigned int> > fGroups; 00161 00162 int fDefaultBias; 00163 int fDefaultGain; 00164 bool fDefaultResistance; 00165 float fExtBiasStepSize; 00166 float fDefaultExternalBias; 00167 bool fAdjustOffsetAtStartup; 00170 QLCStepMode fStepMode; 00171 00173 std::vector<float> fExtBiasFromFile; 00174 00178 size_t fExtBiasIndex; 00179 00187 void GroupChannels(const std::list<unsigned int>& channels); 00188 00194 void InitConfig(QEleChannelConfig& conf,const bool polarity); 00195 00200 void GetInitParameters(); 00201 00208 virtual bool PopulateNextConfig(); 00209 00220 bool IncrementExternalBias(int step = 0); 00221 00223 float GetExtBiasStepSize() const { return fExtBiasStepSize; } 00224 00226 void SetExtBiasStepSize(const float size) { fExtBiasStepSize = size; } 00227 }; 00228 00229 #endif // _M_LC_SLOW_CONTROLLER_HH_