00001
00002 #ifndef __DTI_GAINMODS_ADAPTER_HH__
00003 #define __DTI_GAINMODS_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 GAINMODSDataAdapter
00040 {
00041 public:
00042
00043 static auto_ptr<const GAINMODSDataAdapter> 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 GAINMODSDataAdapter>(new GAINMODSDataAdapter(mutual_data,0));
00050 }
00051
00052 static auto_ptr<GAINMODSDataAdapter> createSndP(DeviceAccess::AccData& data)
00053 {
00054 data.assign(1,UWord());
00055
00056 auto_ptr<GAINMODSDataAdapter> p(new GAINMODSDataAdapter(data,0));
00057 p->init();
00058 return p;
00059 }
00060
00071 UWord gainmode() const {
00072 return (*_ptr)[_offset+0].convert(UWord());
00073 }
00074
00085 void gainmode(UWord val) {
00086 (*_ptr)[_offset+0] = val;
00087 }
00088
00089
00091 GAINMODSDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00092 {
00093 }
00094
00096 void init() {
00097 (*_ptr)[_offset+0] = UWord();
00098
00099 }
00100
00101
00102
00103 private:
00104 DeviceAccess::AccData* _ptr;
00105 size_t _offset;
00106 };
00107
00109 typedef GAINMODSDataAdapter ReadGAINMODSDataAdapter;
00110
00112 typedef auto_ptr<ReadGAINMODSDataAdapter> ReadGAINMODSDataP;
00113
00115 typedef GAINMODSDataAdapter WriteGAINMODSDataAdapter;
00116
00118 typedef auto_ptr<const WriteGAINMODSDataAdapter> WriteGAINMODSDataP;
00119
00123 }
00124 }
00125
00126 #endif