00001
00002 #ifndef SCTAPIIPC_SCANWRAPPER_H
00003 #define SCTAPIIPC_SCANWRAPPER_H
00004
00019
00020 class ScanWrapper;
00021
00022
00023 #include "SctApi/Scan.h"
00024 #include "SctApi/Trigger.h"
00025 #include "Sct_SctApi/SctApi.hh"
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) :
00045 m_memoryPolicy(doNotTakeOwnershipOfObjectReference) {
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