00001
00002 #ifndef __DTI_SGLCURR_ADAPTER_HH__
00003 #define __DTI_SGLCURR_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 SGLCURRDataAdapter
00040 {
00041 public:
00042
00043 static auto_ptr<const SGLCURRDataAdapter> createRcvP(const DeviceAccess::AccData& data)
00044 {
00045 if (data.size()>13) {
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 SGLCURRDataAdapter>(new SGLCURRDataAdapter(mutual_data,0));
00050 }
00051
00052 static auto_ptr<SGLCURRDataAdapter> createSndP(DeviceAccess::AccData& data)
00053 {
00054 data.assign(13,Float32());
00055
00056 auto_ptr<SGLCURRDataAdapter> p(new SGLCURRDataAdapter(data,0));
00057 p->init();
00058 return p;
00059 }
00060
00062 Float32 current() const {
00063 return (*_ptr)[_offset+0].convert(Float32());
00064 }
00065
00067 void current(Float32 val) {
00068 (*_ptr)[_offset+0] = val;
00069 }
00070
00072 Float32 range() const {
00073 return (*_ptr)[_offset+1].convert(Float32());
00074 }
00075
00077 void range(Float32 val) {
00078 (*_ptr)[_offset+1] = val;
00079 }
00080
00082 Float32 resolut() const {
00083 return (*_ptr)[_offset+2].convert(Float32());
00084 }
00085
00087 void resolut(Float32 val) {
00088 (*_ptr)[_offset+2] = val;
00089 }
00090
00092 Float32 integrat() const {
00093 return (*_ptr)[_offset+3].convert(Float32());
00094 }
00095
00097 void integrat(Float32 val) {
00098 (*_ptr)[_offset+3] = val;
00099 }
00100
00102 Float32 gainrngi() const {
00103 return (*_ptr)[_offset+4].convert(Float32());
00104 }
00105
00107 void gainrngi(Float32 val) {
00108 (*_ptr)[_offset+4] = val;
00109 }
00110
00112 Float32 gainrngs() const {
00113 return (*_ptr)[_offset+5].convert(Float32());
00114 }
00115
00117 void gainrngs(Float32 val) {
00118 (*_ptr)[_offset+5] = val;
00119 }
00120
00122 Float32 gainmodi() const {
00123 return (*_ptr)[_offset+6].convert(Float32());
00124 }
00125
00127 void gainmodi(Float32 val) {
00128 (*_ptr)[_offset+6] = val;
00129 }
00130
00132 Float32 gainmods() const {
00133 return (*_ptr)[_offset+7].convert(Float32());
00134 }
00135
00137 void gainmods(Float32 val) {
00138 (*_ptr)[_offset+7] = val;
00139 }
00140
00142 Float32 active() const {
00143 return (*_ptr)[_offset+8].convert(Float32());
00144 }
00145
00147 void active(Float32 val) {
00148 (*_ptr)[_offset+8] = val;
00149 }
00150
00152 Float32 datastat() const {
00153 return (*_ptr)[_offset+9].convert(Float32());
00154 }
00155
00157 void datastat(Float32 val) {
00158 (*_ptr)[_offset+9] = val;
00159 }
00160
00162 Float32 avgcurr() const {
00163 return (*_ptr)[_offset+10].convert(Float32());
00164 }
00165
00167 void avgcurr(Float32 val) {
00168 (*_ptr)[_offset+10] = val;
00169 }
00170
00172 Float32 avgcounti() const {
00173 return (*_ptr)[_offset+11].convert(Float32());
00174 }
00175
00177 void avgcounti(Float32 val) {
00178 (*_ptr)[_offset+11] = val;
00179 }
00180
00182 Float32 avgcounts() const {
00183 return (*_ptr)[_offset+12].convert(Float32());
00184 }
00185
00187 void avgcounts(Float32 val) {
00188 (*_ptr)[_offset+12] = val;
00189 }
00190
00191
00193 SGLCURRDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : _ptr(&data), _offset(offset)
00194 {
00195 }
00196
00198 void init() {
00199 (*_ptr)[_offset+0] = Float32();
00200 (*_ptr)[_offset+1] = Float32();
00201 (*_ptr)[_offset+2] = Float32();
00202 (*_ptr)[_offset+3] = Float32();
00203 (*_ptr)[_offset+4] = Float32();
00204 (*_ptr)[_offset+5] = Float32();
00205 (*_ptr)[_offset+6] = Float32();
00206 (*_ptr)[_offset+7] = Float32();
00207 (*_ptr)[_offset+8] = Float32();
00208 (*_ptr)[_offset+9] = Float32();
00209 (*_ptr)[_offset+10] = Float32();
00210 (*_ptr)[_offset+11] = Float32();
00211 (*_ptr)[_offset+12] = Float32();
00212
00213 }
00214
00215
00216
00217 private:
00218 DeviceAccess::AccData* _ptr;
00219 size_t _offset;
00220 };
00221
00223 typedef SGLCURRDataAdapter ReadSGLCURRDataAdapter;
00224
00226 typedef auto_ptr<ReadSGLCURRDataAdapter> ReadSGLCURRDataP;
00227
00231 }
00232 }
00233
00234 #endif