63 #include <QSharedPointer>
64 #include <qapplication.h>
129 typedef enum _TMSiConnectionEnum {
130 TMSiConnectionUndefined = 0,
132 TMSiConnectionBluetooth,
135 TMSiConnectionNetwork
136 } TMSiConnectionType;
139 {
unsigned short NrOfChannels;
140 unsigned short SampleRateSetting;
142 unsigned short maxRS232;
143 unsigned long Serial;
144 unsigned short NrExg;
145 unsigned short NrAux;
146 unsigned short HwVersion;
147 unsigned short SwVersion;
148 unsigned short RecBufSize;
149 unsigned short SendBufSize;
150 unsigned short NrOfSwChannels;
151 unsigned short BaseSf;
152 unsigned short Power;
153 unsigned short Check;
162 typedef BOOLEAN ( __stdcall * POPEN) (
void *Handle,
const char *DeviceLocator);
163 typedef BOOL ( __stdcall * PCLOSE) (HANDLE hHandle);
164 typedef BOOLEAN ( __stdcall * PSTART) (IN HANDLE Handle);
165 typedef BOOLEAN ( __stdcall * PSTOP) (IN HANDLE Handle);
166 typedef PSIGNAL_FORMAT ( __stdcall * PGETSIGNALFORMAT) (IN HANDLE Handle, IN OUT
char* FrontEndName);
167 typedef BOOLEAN ( __stdcall * PSETSIGNALBUFFER) (IN HANDLE Handle, IN OUT PULONG SampleRate, IN OUT PULONG BufferSize);
168 typedef LONG ( __stdcall * PGETSAMPLES) (IN HANDLE Handle, OUT PULONG SampleBuffer, IN ULONG Size);
169 typedef BOOLEAN ( __stdcall * PGETBUFFERINFO) (IN HANDLE Handle, OUT PULONG Overflow, OUT PULONG PercentFull);
170 typedef BOOL ( __stdcall * PFREE) (IN VOID *Memory);
171 typedef HANDLE ( __stdcall * PLIBRARYINIT) (IN TMSiConnectionType GivenConnectionType, IN OUT
int *ErrorCode );
172 typedef int ( __stdcall * PLIBRARYEXIT) (IN HANDLE Handle);
173 typedef char** ( __stdcall * PGETDEVICELIST) (IN HANDLE Handle, IN OUT
int *NrOfFrontEnds);
174 typedef BOOLEAN ( __stdcall * PGETFRONTENDINFO) (IN HANDLE Handle, IN OUT
FRONTENDINFO *FrontEndInfo );
175 typedef BOOLEAN ( __stdcall * PSETREFCALCULATION) (IN HANDLE Handle, IN
int OnOrOff );
176 typedef BOOLEAN ( __stdcall * PSETMEASURINGMODE) (IN HANDLE Handle, IN ULONG Mode, IN
int Value );
177 typedef BOOLEAN ( __stdcall * PGETERRORCODE) (IN HANDLE Handle);
186 using namespace Eigen;
202 #define MAX_BUFFER_SIZE 0xFFFFFFFF
205 #define __load_dll_func__(var, type, name) \
206 var = (type)::GetProcAddress(m_oLibHandle, name); \
208 cout<< "Plugin TMSI - ERROR - Error loading method " << name << "\n"; \
211 #define MEASURE_MODE_NORMAL ((ULONG)0x0)
212 #define MEASURE_MODE_IMPEDANCE ((ULONG)0x1)
213 #define MEASURE_MODE_CALIBRATION ((ULONG)0x2)
215 #define MEASURE_MODE_IMPEDANCE_EX ((ULONG)0x3)
216 #define MEASURE_MODE_CALIBRATION_EX ((ULONG)0x4)
227 // for MEASURE_MODE_CALIBRATION:
228 #define IC_VOLT_050 0
229 #define IC_VOLT_100 1
230 #define IC_VOLT_200 2
231 #define IC_VOLT_500 3
234 #define SF_UNSIGNED 0x0 // Unsigned integer
235 #define SF_INTEGER 0x1 // signed integer
238 #define OVERFLOW_32BITS ((long) 0x80000000)
241 #define SIGNAL_NAME 40
244 #define UNIT_UNKNOWN 0 // Used for digital inputs or if the driver cannot determine the units of a channel
245 #define UNIT_VOLT 1 // Channel measures voltage
246 #define UNIT_PERCENT 2 // Channel measures a percentage
247 #define UNIT_BPM 3 // Beats per minute
248 #define UNIT_BAR 4 // Pressure in bar
249 #define UNIT_PSI 5 // Pressure in psi
250 #define UNIT_MH20 6 // Pressure calibrated to meters water
251 #define UNIT_MHG 7 // Pressure calibrated to meters mercury
252 #define UNIT_BIT 8 // Used for digital inputs
295 bool getSampleMatrixValue(MatrixXf& sampleMatrix);
312 bool initDevice(
int iNumberOfChannels,
313 int iSamplingFrequency,
314 int iSamplesPerBlock,
318 bool bWriteDriverDebugToFile,
319 QString sOutpuFilePath,
320 bool bUseCommonAverage,
321 bool bMeasureImpedance);
334 bool m_bInitDeviceSuccess;
338 uint m_uiNumberOfChannels;
339 uint m_uiSamplingFrequency;
340 uint m_uiSamplesPerBlock;
341 bool m_bUseChExponent;
343 bool m_bUseUnitOffset;
344 bool m_bWriteDriverDebugToFile;
345 bool m_bUsePreprocessing;
346 QString m_sOutputFilePath;
347 bool m_bUseCommonAverage;
348 bool m_bMeasureImpedances;
351 HANDLE m_HandleMaster;
352 HINSTANCE m_oLibHandle;
355 WCHAR m_wcDeviceName[40];
356 ULONG m_ulSerialNumber;
357 PSP_DEVICE_PATH m_PSPDPMasterDevicePath;
358 ULONG m_uiNumberOfAvailableChannels;
361 QVector <LONG> m_vExponentChannel;
362 QVector <FLOAT> m_vUnitGain;
363 QVector <FLOAT> m_vUnitOffSet;
364 LONG* m_lSignalBuffer;
365 LONG m_lSignalBufferSize;
366 ofstream m_outputFileStream;
367 QVector <double> m_vSampleBlockBuffer;
374 PGETSIGNALFORMAT m_oFpGetSignalFormat;
375 PSETSIGNALBUFFER m_oFpSetSignalBuffer;
376 PGETSAMPLES m_oFpGetSamples;
377 PGETBUFFERINFO m_oFpGetBufferInfo;
379 PLIBRARYINIT m_oFpLibraryInit;
380 PLIBRARYEXIT m_oFpLibraryExit;
381 PGETDEVICELIST m_oFpGetDeviceList;
382 PGETFRONTENDINFO m_oFpGetFrontEndInfo;
383 PSETREFCALCULATION m_oFpSetRefCalculation;
384 PSETMEASURINGMODE m_oFpSetMeasuringMode;
385 PGETERRORCODE m_oFpGetErrorCode;
390 #endif // TMSIDRIVER_H
The EEGProducer class provides a EEG data producer for a given sampling rate.
The TMSIDriver class provides real time data acquisition of EEG data with a TMSi Refa device...