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