00001
00002 #ifndef __DTI_CTRLVALU_ADAPTER_HH__
00003 #define __DTI_CTRLVALU_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 ReadCTRLVALUParaAdapter
00040 {
00041 public:
00042
00043 static auto_ptr<const ReadCTRLVALUParaAdapter> 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 ReadCTRLVALUParaAdapter>(new ReadCTRLVALUParaAdapter(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 ReadCTRLVALUParaAdapter(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
00082 typedef auto_ptr<const ReadCTRLVALUParaAdapter> ReadCTRLVALUParaP;
00083
00089 class E_API ReadCTRLVALUDataAdapter
00090 {
00091 public:
00092
00093 static auto_ptr<const ReadCTRLVALUDataAdapter> createRcvP(const DeviceAccess::AccData& data)
00094 {
00095 if (data.size()>3) {
00096 throw(AccDevException(ODA_MOREDATA,ODA_OK,ACCDEV_ERRORLOCATION));
00097 }
00098 DeviceAccess::AccData& mutual_data = const_cast<DeviceAccess::AccData&>(data);
00099 return auto_ptr<const ReadCTRLVALUDataAdapter>(new ReadCTRLVALUDataAdapter(mutual_data,0));
00100 }
00101
00102 static auto_ptr<ReadCTRLVALUDataAdapter> createSndP(DeviceAccess::AccData& data)
00103 {
00104 data.assign(3,Float32());
00105
00106 auto_ptr<ReadCTRLVALUDataAdapter> p(new ReadCTRLVALUDataAdapter(data,0));
00107 p->init();
00108 return p;
00109 }
00110
00114 Float32 value() const {
00115 return (*_ptr)[_offset+0].convert(Float32());
00116 }
00117
00121 void value(Float32 val) {
00122 (*_ptr)[_offset+0] = val;
00123 }
00124
00128 Float32 deviation() const {
00129 return (*_ptr)[_offset+1].convert(Float32());
00130 }
00131
00135 void deviation(Float32 val) {
00136 (*_ptr)[_offset+1] = val;
00137 }
00138
00140 Float32 count() const {
00141 return (*_ptr)[_offset+2].convert(Float32());
00142 }
00143
00145 void count(Float32 val) {
00146 (*_ptr)[_offset+2] = val;
00147 }
00148
00149
00151 ReadCTRLVALUDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00152 {
00153 }
00154
00156 void init() {
00157 (*_ptr)[_offset+0] = Float32();
00158 (*_ptr)[_offset+1] = Float32();
00159 (*_ptr)[_offset+2] = Float32();
00160
00161 }
00162
00163
00164
00165 private:
00166 DeviceAccess::AccData* _ptr;
00167 size_t _offset;
00168 };
00169
00171 typedef auto_ptr<ReadCTRLVALUDataAdapter> ReadCTRLVALUDataP;
00172
00178 class E_API WriteCTRLVALUParaAdapter
00179 {
00180 public:
00181
00182 static auto_ptr<const WriteCTRLVALUParaAdapter> createRcvP(const DeviceAccess::AccData& data)
00183 {
00184 if (data.size()>1) {
00185 throw(AccDevException(ODA_MOREDATA,ODA_OK,ACCDEV_ERRORLOCATION));
00186 }
00187 DeviceAccess::AccData& mutual_data = const_cast<DeviceAccess::AccData&>(data);
00188 return auto_ptr<const WriteCTRLVALUParaAdapter>(new WriteCTRLVALUParaAdapter(mutual_data,0));
00189 }
00190
00192 UWord ctrlType() const {
00193 return (*_ptr)[_offset+0].convert(UWord());
00194 }
00195
00197 void ctrlType(UWord val) {
00198 (*_ptr)[_offset+0] = val;
00199 }
00200
00201
00203 WriteCTRLVALUParaAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00204 {
00205 }
00206
00208 void init() {
00209 (*_ptr)[_offset+0] = UWord();
00210
00211 }
00212
00213
00214
00215 private:
00216 DeviceAccess::AccData* _ptr;
00217 size_t _offset;
00218 };
00219
00221 typedef auto_ptr<const WriteCTRLVALUParaAdapter> WriteCTRLVALUParaP;
00222
00228 class E_API WriteCTRLVALUDataAdapter
00229 {
00230 public:
00231
00232 static auto_ptr<const WriteCTRLVALUDataAdapter> createRcvP(const DeviceAccess::AccData& data)
00233 {
00234 if (data.size()>2) {
00235 throw(AccDevException(ODA_MOREDATA,ODA_OK,ACCDEV_ERRORLOCATION));
00236 }
00237 DeviceAccess::AccData& mutual_data = const_cast<DeviceAccess::AccData&>(data);
00238 return auto_ptr<const WriteCTRLVALUDataAdapter>(new WriteCTRLVALUDataAdapter(mutual_data,0));
00239 }
00240
00244 Float32 value() const {
00245 return (*_ptr)[_offset+0].convert(Float32());
00246 }
00247
00251 void value(Float32 val) {
00252 (*_ptr)[_offset+0] = val;
00253 }
00254
00258 Float32 deviation() const {
00259 return (*_ptr)[_offset+1].convert(Float32());
00260 }
00261
00265 void deviation(Float32 val) {
00266 (*_ptr)[_offset+1] = val;
00267 }
00268
00269
00271 WriteCTRLVALUDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00272 {
00273 }
00274
00276 void init() {
00277 (*_ptr)[_offset+0] = Float32();
00278 (*_ptr)[_offset+1] = Float32();
00279
00280 }
00281
00282
00283
00284 private:
00285 DeviceAccess::AccData* _ptr;
00286 size_t _offset;
00287 };
00288
00290 typedef auto_ptr<const WriteCTRLVALUDataAdapter> WriteCTRLVALUDataP;
00291
00295 }
00296 }
00297
00298 #endif