00001
00002 #ifndef __DTI_CUSTOM_TYPES_HH__
00003 #define __DTI_CUSTOM_TYPES_HH__
00004
00015 #include <accdata.hh>
00016 #include <accvector.hh>
00017 #include <accdevexception.hh>
00018
00019 using std::auto_ptr;
00020
00021 namespace DeviceAccess
00022 {
00023 namespace EqModDTI
00024 {
00025
00038 class E_API TRangeType
00039 {
00040 public:
00041
00043 Float32 range() const {
00044 return (*_ptr)[_offset+0].convert(Float32());
00045 }
00046
00048 void range(Float32 val) {
00049 (*_ptr)[_offset+0] = val;
00050 }
00051
00053 Float32 resolution() const {
00054 return (*_ptr)[_offset+1].convert(Float32());
00055 }
00056
00058 void resolution(Float32 val) {
00059 (*_ptr)[_offset+1] = val;
00060 }
00061
00062
00064 TRangeType(DeviceAccess::AccData& data, size_t offset) : _ptr(&data), _offset(offset)
00065 {
00066 }
00067
00069 void init() {
00070 (*_ptr)[_offset+0] = Float32();
00071 (*_ptr)[_offset+1] = Float32();
00072
00073 }
00074
00075
00076
00077 private:
00078 DeviceAccess::AccData* _ptr;
00079 size_t _offset;
00080 };
00081
00088 class E_API ConstantStructType
00089 {
00090 public:
00091
00093 Float32 numGain() const {
00094 return (*_ptr)[_offset+0].convert(Float32());
00095 }
00096
00098 void numGain(Float32 val) {
00099 (*_ptr)[_offset+0] = val;
00100 }
00101
00102
00104 ConstantStructType(DeviceAccess::AccData& data, size_t offset) : gain(data,offset+1,5,2), _ptr(&data), _offset(offset)
00105 {
00106 }
00107
00109 void init() {
00110 (*_ptr)[_offset+0] = Float32();
00111 gain.init();
00112
00113 }
00114
00115
00117 AccCustomBoundedVector<TRangeType> gain;
00118
00119
00120 private:
00121 DeviceAccess::AccData* _ptr;
00122 size_t _offset;
00123 };
00124
00131 class E_API MMIDataTypeType
00132 {
00133 public:
00134
00136 Float32 current() const {
00137 return (*_ptr)[_offset+0].convert(Float32());
00138 }
00139
00141 void current(Float32 val) {
00142 (*_ptr)[_offset+0] = val;
00143 }
00144
00146 Float32 datastatus() const {
00147 return (*_ptr)[_offset+1].convert(Float32());
00148 }
00149
00151 void datastatus(Float32 val) {
00152 (*_ptr)[_offset+1] = val;
00153 }
00154
00155
00157 MMIDataTypeType(DeviceAccess::AccData& data, size_t offset) : _ptr(&data), _offset(offset)
00158 {
00159 }
00160
00162 void init() {
00163 (*_ptr)[_offset+0] = Float32();
00164 (*_ptr)[_offset+1] = Float32();
00165
00166 }
00167
00168
00169
00170 private:
00171 DeviceAccess::AccData* _ptr;
00172 size_t _offset;
00173 };
00174
00179 }
00180 }
00181
00182 #endif