00001
00002 #ifndef SCT_SCTAPI_TRIGGER_H
00003 #define SCT_SCTAPI_TRIGGER_H
00004
00005
00006 #include <utility>
00007 #include <vector>
00008
00009 #include "CommonWithDsp/processor.h"
00010
00011 #include "config.h"
00012
00013
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
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