00001 00051 #ifndef _M_LC_SLOW_CONTROLLER_HH_ 00052 #define _M_LC_SLOW_CONTROLLER_HH_ 00053 00054 00055 #include "QModule.hh" 00056 00057 00058 #include <list> 00059 #include <vector> 00060 00061 class QLCSlowConfig; 00062 00063 class MLCSlowController : public QModule { 00064 00065 public: 00067 MLCSlowController(QSequence* s); 00068 00070 virtual ~MLCSlowController(); 00071 00079 void Init(); 00080 00087 QEvent* Do(QEvent* ev); 00088 00090 void Done(); 00091 00092 private: 00094 enum QLCStepMode { 00095 QLC_STEP_LINEAR, 00097 QLC_STEP_LOG 00100 }; 00101 00106 std::vector< std::list<unsigned short> > fGroups; 00107 00108 short fDefaultBias; 00109 short fDefaultGain; 00110 bool fDefaultResistance; 00111 float fExtBiasStepSize; 00112 float fDefaultExternalBias; 00113 bool fAdjustOffsetAtStartup; 00116 QLCStepMode fStepMode; 00117 00125 void GroupChannels(const std::list<unsigned short>& channels); 00126 00132 void InitConfig(QLCSlowConfig& conf,const bool polarity); 00133 00138 void GetInitParameters(); 00139 00146 virtual bool PopulateNextConfig(); 00147 00158 bool IncrementExternalBias(int step = 0); 00159 00161 float GetExtBiasStepSize() const { return fExtBiasStepSize; } 00162 00164 void SetExtBiasStepSize(const float size) { fExtBiasStepSize = size; } 00165 }; 00166 00167 #endif // _M_LC_SLOW_CONTROLLER_HH_