00001 #ifndef SCTAPIIPC_TRIGGERSERVER_H
00002 #define SCTAPIIPC_TRIGGERSERVER_H
00003
00004
00005
00006
00007 class TriggerServer;
00008
00009
00010 #include "Sct_SctApi/SctApi.hh"
00011 #include <ipc/object.h>
00012 #include <omniORB4/poa.h>
00013 #include <boost/shared_ptr.hpp>
00014
00015
00016 namespace SctApi {
00017 class Trigger;
00018 };
00019
00020
00021 class TriggerServer :
00022 public IPCNamedObject<POA_Sct_SctApi::Trigger>,
00023 public virtual PortableServer::RefCountServantBase {
00024 TriggerServer(const TriggerServer &);
00025 TriggerServer &operator=(const TriggerServer &);
00026 static int nextNumber;
00027 public:
00028 TriggerServer();
00029 explicit TriggerServer(const boost::shared_ptr< ::SctApi::Trigger> other);
00030
00031
00032
00033
00034 virtual ~TriggerServer();
00035
00036 virtual char* print ();
00037 virtual void singleL1A ();
00038 virtual void doubleL1A (CORBA::UShort delay);
00039 virtual void delayedL1A (CORBA::UShort delay);
00040 virtual void calL1A (CORBA::UShort delay);
00041 virtual void pulseL1A (CORBA::UShort delay);
00042 virtual void softL1A (CORBA::UShort delay);
00043 virtual void softCalL1A (CORBA::UShort delay, CORBA::UShort delay2);
00044 virtual void softPulseL1A (CORBA::UShort delay, CORBA::UShort delay2);
00045 virtual void softBc (CORBA::UShort delay);
00046 virtual void soft();
00047 virtual void bc();
00048 virtual void bcL1A (CORBA::UShort delay);
00049 virtual void bcCalL1A (CORBA::UShort delay, CORBA::UShort delay2);
00050 virtual void bcPulseL1A (CORBA::UShort delay, CORBA::UShort delay2);
00051 virtual void setCommIncr (CORBA::UShort command, CORBA::UShort incr);
00052 virtual void getCommIncr (CORBA::UShort & command, CORBA::UShort & incr);
00053
00054 virtual void clear ();
00055 virtual void addCommand (Sct_SctApi::RODTriggerFirstType first, Sct_SctApi::RODTriggerSecondType second);
00056
00057 ::Sct_SctApi::Trigger::Source getSource();
00058 void setSource(::Sct_SctApi::Trigger::Source s);
00059 CORBA::Short getRandom();
00060 void setRandom(CORBA::Short random);
00061 CORBA::Double getFrequency();
00062 void setFrequency(CORBA::Double freq);
00063
00064 virtual Sct_SctApi::RODTriggers * getRODTriggers(CORBA::Short scan_point);
00065 virtual Sct_SctApi::TIMTriggers * getTIMTriggers(CORBA::Short scan_point);
00066
00067 virtual CORBA::Boolean isValidRODTrigger();
00068 virtual CORBA::Boolean isValidTIMTrigger();
00069 virtual CORBA::Boolean timNeedsSequencer();
00070 virtual void shutdown();
00071
00072 private:
00073 boost::shared_ptr< ::SctApi::Trigger> m_worker;
00074 boost::shared_ptr< ::SctApi::Trigger> worker() { return m_worker; };
00075 protected:
00076
00077
00078 private:
00079 static std::string getServerName();
00080
00081
00082 };
00083
00084 #endif