00001
00002 #ifndef __DTI_CTRLMODE_ADAPTER_HH__
00003 #define __DTI_CTRLMODE_ADAPTER_HH__
00004
00014 #include <accdata.hh>
00015 #include <accvector.hh>
00016 #include <accdevexception.hh>
00017
00018
00019 #include <dti-customtypes.hh>
00020
00021
00022 using std::auto_ptr;
00023
00024 namespace DeviceAccess
00025 {
00026 namespace EqModDTI
00027 {
00028
00039 class E_API CTRLMODEParaAdapter
00040 {
00041 public:
00042
00043 static auto_ptr<const CTRLMODEParaAdapter> createRcvP(const DeviceAccess::AccData& data)
00044 {
00045 if (data.size()>1) {
00046 throw(AccDevException(ODA_MOREDATA,ODA_OK,ACCDEV_ERRORLOCATION));
00047 }
00048 DeviceAccess::AccData& mutual_data = const_cast<DeviceAccess::AccData&>(data);
00049 return auto_ptr<const CTRLMODEParaAdapter>(new CTRLMODEParaAdapter(mutual_data,0));
00050 }
00051
00053 UWord ctrlType() const {
00054 return (*_ptr)[_offset+0].convert(UWord());
00055 }
00056
00058 void ctrlType(UWord val) {
00059 (*_ptr)[_offset+0] = val;
00060 }
00061
00062
00064 CTRLMODEParaAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00065 {
00066 }
00067
00069 void init() {
00070 (*_ptr)[_offset+0] = UWord();
00071
00072 }
00073
00074
00075
00076 private:
00077 DeviceAccess::AccData* _ptr;
00078 size_t _offset;
00079 };
00080
00086 class E_API CTRLMODEDataAdapter
00087 {
00088 public:
00089
00090 static auto_ptr<const CTRLMODEDataAdapter> createRcvP(const DeviceAccess::AccData& data)
00091 {
00092 if (data.size()>1) {
00093 throw(AccDevException(ODA_MOREDATA,ODA_OK,ACCDEV_ERRORLOCATION));
00094 }
00095 DeviceAccess::AccData& mutual_data = const_cast<DeviceAccess::AccData&>(data);
00096 return auto_ptr<const CTRLMODEDataAdapter>(new CTRLMODEDataAdapter(mutual_data,0));
00097 }
00098
00099 static auto_ptr<CTRLMODEDataAdapter> createSndP(DeviceAccess::AccData& data)
00100 {
00101 data.assign(1,UWord());
00102
00103 auto_ptr<CTRLMODEDataAdapter> p(new CTRLMODEDataAdapter(data,0));
00104 p->init();
00105 return p;
00106 }
00107
00109 UWord enable() const {
00110 return (*_ptr)[_offset+0].convert(UWord());
00111 }
00112
00114 void enable(UWord val) {
00115 (*_ptr)[_offset+0] = val;
00116 }
00117
00118
00120 CTRLMODEDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00121 {
00122 }
00123
00125 void init() {
00126 (*_ptr)[_offset+0] = UWord();
00127
00128 }
00129
00130
00131
00132 private:
00133 DeviceAccess::AccData* _ptr;
00134 size_t _offset;
00135 };
00136
00138 typedef CTRLMODEParaAdapter ReadCTRLMODEParaAdapter;
00139
00141 typedef auto_ptr<const ReadCTRLMODEParaAdapter> ReadCTRLMODEParaP;
00142
00144 typedef CTRLMODEDataAdapter ReadCTRLMODEDataAdapter;
00145
00147 typedef auto_ptr<ReadCTRLMODEDataAdapter> ReadCTRLMODEDataP;
00148
00150 typedef CTRLMODEParaAdapter WriteCTRLMODEParaAdapter;
00151
00153 typedef auto_ptr<const WriteCTRLMODEParaAdapter> WriteCTRLMODEParaP;
00154
00156 typedef CTRLMODEDataAdapter WriteCTRLMODEDataAdapter;
00157
00159 typedef auto_ptr<const WriteCTRLMODEDataAdapter> WriteCTRLMODEDataP;
00160
00164 }
00165 }
00166
00167 #endif