Trigger.h

00001 
00002 #ifndef SCT_SCTAPI_TRIGGER_H
00003 #define SCT_SCTAPI_TRIGGER_H
00004 
00005 //includes
00006 #include <utility> // for std::pair
00007 #include <vector>
00008 
00009 #include "CommonWithDsp/processor.h"
00010 
00011 #include "config.h"
00012 
00013 //defn
00014 namespace SctApi {
00015 
00016   class Trigger {
00017   public:
00018     virtual ~Trigger();
00019 
00021     typedef std::pair<UINT16, UINT32>  RODTrigger;
00022     typedef std::vector<RODTrigger>    RODTriggers;
00023     typedef UINT16 TIMTrigger;
00024     typedef std::vector<UINT16> TIMTriggers;
00025 
00026     enum Source{SOURCE_UNKNOWN, SOURCE_ROD,
00027         SOURCE_TIM_INTERNAL, SOURCE_TIM_EXTERNAL};
00028     
00030     virtual void singleL1A() = 0;
00032     virtual void doubleL1A(unsigned short delay) = 0;
00034     virtual void delayedL1A(unsigned short delay) = 0;
00036     virtual void calL1A(unsigned short delay) = 0;
00037     virtual void pulseL1A(unsigned short delay) = 0;
00038     virtual void softL1A(unsigned short delay) = 0;
00039     virtual void softCalL1A(unsigned short delay, unsigned short delay2) = 0;
00040     virtual void softPulseL1A(unsigned short delay, unsigned short delay2) = 0;
00041     virtual void softBc(unsigned short delay) = 0;
00042     virtual void soft() = 0;
00043     virtual void bc() = 0;
00044     virtual void bcL1A(unsigned short delay) = 0;
00045     virtual void bcCalL1A(unsigned short delay, unsigned short delay2) = 0;
00046     virtual void bcPulseL1A(unsigned short delay, unsigned short delay2) = 0;
00047 
00048     virtual void setCommIncr(unsigned short command, unsigned short incr) = 0;
00049     virtual void getCommIncr(unsigned short &command, unsigned short &incr) const = 0;
00050 
00051     virtual void clear() = 0;
00052     virtual void addCommand(UINT16 first, UINT32 second) = 0;
00053 
00054     virtual Source getSource() const = 0;
00055     virtual void setSource(Source) = 0;
00056     
00058     virtual void setFrequency(double freq) = 0;
00060     virtual double getFrequency() const = 0;
00061 
00062     // what sort of randomiser to use?
00063     virtual int getRandom() const = 0;
00064     virtual void setRandom(int) = 0;
00065 
00067     virtual const RODTriggers getRODTriggers(int scan_point=0) const = 0; 
00068     virtual const TIMTriggers getTIMTriggers(int scan_point=0) const = 0;
00069 
00070     virtual std::string print() const = 0;
00071 
00072     virtual bool isValidRODTrigger() const = 0;
00073 
00074     virtual bool isValidTIMTrigger() const = 0;
00075 
00076     virtual bool timNeedsSequencer() const = 0;
00077 
00083   static ::SctApi::Trigger::TIMTriggers convertToTIMTriggers(const ::SctApi::Trigger::RODTriggers& rTrigs);
00084 
00091   static int getUniqueSlowCommandType(const ::SctApi::Trigger::RODTriggers& rTrigs);
00092 
00096   static std::string getNameOfRODTrigger(RODTrigger t);
00097 };
00098 
00099 }
00100 #endif

Generated on Mon Feb 6 14:01:36 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6