ScanWrapper.h

00001 
00002 #ifndef SCTAPIIPC_SCANWRAPPER_H
00003 #define SCTAPIIPC_SCANWRAPPER_H
00004 
00019 //Forward declaration
00020 class ScanWrapper;
00021 
00022 // Need complete types for public inheritence
00023 #include "SctApi/Scan.h"
00024 #include "SctApi/Trigger.h" // could replace by a fwd dec if desired
00025 #include "Sct_SctApi/SctApi.hh" // for Scan{_var,_ptr} interface 
00026 
00027 class ScanWrapper : public ::SctApi::Scan {
00028  public:
00029   typedef enum MemoryPolicy_enum { 
00030     takeOwnershipOfObjectReference, 
00031     doNotTakeOwnershipOfObjectReference
00032   } MemoryPolicy;
00033  private:
00034   const MemoryPolicy m_memoryPolicy;
00035  private:
00036   Sct_SctApi::Scan_var m_worker;
00037   Sct_SctApi::Scan_ptr corbaScanServer() const { return Sct_SctApi::Scan::_duplicate(m_worker); };
00038   Sct_SctApi::Scan_ptr corbaScanServer() { return Sct_SctApi::Scan::_duplicate(m_worker); };
00039  public:
00040   typedef ::SctApi::Scan::ScanPoints ScanPoints;
00041   typedef ::SctApi::Scan::TrigPoints TrigPoints;
00042   typedef ::SctApi::Scan::ScanOptionsEnum ScanOptionsEnum;
00043  public:
00044   ScanWrapper(Sct_SctApi::Scan_ptr w/*, const MemoryPolicy memoryPolicy*/) :
00045     m_memoryPolicy(doNotTakeOwnershipOfObjectReference/*memoryPolicy*/) {
00046     if (m_memoryPolicy == doNotTakeOwnershipOfObjectReference) {
00047       m_worker = Sct_SctApi::Scan::_duplicate(w);
00048     } else {
00049       m_worker = w;
00050     };
00051   };
00052   virtual ~ScanWrapper() {
00053   };
00054 
00055   void configure(unsigned short type, float start, float stop, float step) { return corbaScanServer()->configure(type, start, stop, step); };
00056   void configure2(unsigned short type, float start, float stop, float step) { return corbaScanServer()->configure2(type, start, stop, step); };
00057 
00058   const boost::shared_ptr< ::SctApi::Trigger> getTrigger1() const;
00059   const boost::shared_ptr< ::SctApi::Trigger> getTrigger2() const;
00060 
00061   boost::shared_ptr< ::SctApi::Trigger> getTrigger1();
00062   boost::shared_ptr< ::SctApi::Trigger> getTrigger2();
00063 
00064   void setTrigger1(boost::shared_ptr< ::SctApi::Trigger> trigger);
00065   void setTrigger2(boost::shared_ptr< ::SctApi::Trigger> trigger);
00066 
00067   void setScanVariable1(unsigned short var) { return corbaScanServer()->setScanVariable1(var); };
00068   void setScanVariable2(unsigned short var) { return corbaScanServer()->setScanVariable2(var); };
00069 
00070   unsigned short getScanVariable1() const { return corbaScanServer()->getScanVariable1(); };
00071   unsigned short getScanVariable2() const { return corbaScanServer()->getScanVariable2(); };
00072 
00073   void setNTrigs(unsigned long nTrigs) { corbaScanServer()->setNTrigs(nTrigs); };
00074   unsigned long getNTrigs() const { return corbaScanServer()->getNTrigs(); };
00075 
00076   const TrigPoints getVariableTrigs() const;
00077   void setVariableTrigs(const TrigPoints &scans);
00078   void setVariableTrigRange(unsigned short start, unsigned short end, unsigned long value);
00079 
00080   const ScanPoints getScanPoints1() const;
00081   const ScanPoints getScanPoints2() const;
00082   void setScanPoints1(const ScanPoints &scans);
00083   void setScanPoints2(const ScanPoints &scans);
00084 
00085   int getOption(ScanOptionsEnum scanOption) const;
00086   void setOption(ScanOptionsEnum scanOption, int option);
00087 
00089   std::string print() const;
00090  
00091   void setScanNumber(unsigned int scan);
00092   unsigned int getScanNumber() const;
00093   void setRunNumber(unsigned int scan);
00094   unsigned int getRunNumber() const;
00095 
00096 #if !USE_CONST_SCAN
00097   ::SctApi::ModuleList getModuleList(unsigned int group) const;
00098   void setModuleList(unsigned int group, const ::SctApi::ModuleList & newList);
00099   unsigned int getNGroups() const;
00100   void setNGroups(unsigned int val);
00101   
00102   boost::posix_time::ptime getStartTime() const;
00103   void setStartTime(boost::posix_time::ptime t);
00104   
00105   boost::posix_time::ptime getEndTime() const;
00106   void setEndTime(boost::posix_time::ptime t);
00107 #endif
00108 };
00109 
00110 #endif

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