00001
00002 #ifndef __DTI_GAINMODI_ADAPTER_HH__
00003 #define __DTI_GAINMODI_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 GAINMODIDataAdapter
00040 {
00041 public:
00042
00043 static auto_ptr<const GAINMODIDataAdapter> 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 GAINMODIDataAdapter>(new GAINMODIDataAdapter(mutual_data,0));
00050 }
00051
00052 static auto_ptr<GAINMODIDataAdapter> createSndP(DeviceAccess::AccData& data)
00053 {
00054 data.assign(1,UWord());
00055
00056 auto_ptr<GAINMODIDataAdapter> p(new GAINMODIDataAdapter(data,0));
00057 p->init();
00058 return p;
00059 }
00060
00062 UWord gainmode() const {
00063 return (*_ptr)[_offset+0].convert(UWord());
00064 }
00065
00067 void gainmode(UWord val) {
00068 (*_ptr)[_offset+0] = val;
00069 }
00070
00071
00073 GAINMODIDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00074 {
00075 }
00076
00078 void init() {
00079 (*_ptr)[_offset+0] = UWord();
00080
00081 }
00082
00083
00084
00085 private:
00086 DeviceAccess::AccData* _ptr;
00087 size_t _offset;
00088 };
00089
00091 typedef GAINMODIDataAdapter ReadGAINMODIDataAdapter;
00092
00094 typedef auto_ptr<ReadGAINMODIDataAdapter> ReadGAINMODIDataP;
00095
00099 }
00100 }
00101
00102 #endif