MNE-CPP  beta 1.0
newrealtimemultisamplearray.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef NEWREALTIMEMULTISAMPLEARRAY_H
37 #define NEWREALTIMEMULTISAMPLEARRAY_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "xmeas_global.h"
46 #include "newmeasurement.h"
48 
49 #include <fiff/fiff_info.h>
50 
51 
52 //*************************************************************************************************************
53 //=============================================================================================================
54 // Qt INCLUDES
55 //=============================================================================================================
56 
57 #include <QSharedPointer>
58 #include <QVector>
59 #include <QList>
60 #include <QMutex>
61 #include <QMutexLocker>
62 
63 
64 //*************************************************************************************************************
65 //=============================================================================================================
66 // DEFINE NAMESPACE XMEASLIB
67 //=============================================================================================================
68 
69 namespace XMEASLIB
70 {
71 
72 
73 //*************************************************************************************************************
74 //=============================================================================================================
75 // USED NAMESPACES
76 //=============================================================================================================
77 
78 using namespace FIFFLIB;
79 
80 
81 //=========================================================================================================
88 {
89  Q_OBJECT
90 public:
91  typedef QSharedPointer<NewRealTimeMultiSampleArray> SPtr;
92  typedef QSharedPointer<const NewRealTimeMultiSampleArray> ConstSPtr;
94  //=========================================================================================================
98  explicit NewRealTimeMultiSampleArray(QObject *parent = 0);
99 
100  //=========================================================================================================
104  virtual ~NewRealTimeMultiSampleArray();
105 
106  //=========================================================================================================
110  void clear();
111 
112  //=========================================================================================================
118  void init(QList<RealTimeSampleArrayChInfo> &chInfo);
119 
120  //=========================================================================================================
126  void initFromFiffInfo(FiffInfo::SPtr &p_pFiffInfo);
127 
128  //=========================================================================================================
134  inline bool isChInit() const;
135 
136  //=========================================================================================================
142  inline const QString& getXMLLayoutFile() const;
143 
144  //=========================================================================================================
150  inline void setXMLLayoutFile(const QString& layout);
151 
152  //=========================================================================================================
158  inline void setSamplingRate(double dSamplingRate);
159 
160  //=========================================================================================================
166  inline double getSamplingRate() const;
167 
168  //=========================================================================================================
174  inline unsigned int getNumChannels() const;
175 
176  //=========================================================================================================
182  inline QList<RealTimeSampleArrayChInfo>& chInfo();
183 
184  //=========================================================================================================
190  inline FiffInfo::SPtr& info();
191 
192  //=========================================================================================================
198  inline void setMultiArraySize(qint32 iMultiArraySize);
199 
200  //=========================================================================================================
206  inline qint32 getMultiArraySize() const;
207 
208  //=========================================================================================================
214  inline const QList< MatrixXd >& getMultiSampleArray();
215 
216  //=========================================================================================================
222  virtual void setValue(const MatrixXd& mat);
223 
224  //=========================================================================================================
230 // virtual void setValue(MatrixXd& v);
231 
232 private:
233  mutable QMutex m_qMutex;
235  FiffInfo::SPtr m_pFiffInfo_orig;
237  QString m_sXMLLayoutFile;
238  double m_dSamplingRate;
239 // MatrixXd m_vecValue; /**< The current attached sample vector.*/
240  qint32 m_iMultiArraySize;
241  QList< MatrixXd > m_matSamples;
242  QList<RealTimeSampleArrayChInfo> m_qListChInfo;
243  bool m_bChInfoIsInit;
244 };
245 
246 
247 //*************************************************************************************************************
248 //=============================================================================================================
249 // INLINE DEFINITIONS
250 //=============================================================================================================
251 
253 {
254  QMutexLocker locker(&m_qMutex);
255  m_matSamples.clear();
256 }
257 
258 
259 //*************************************************************************************************************
260 
262 {
263  QMutexLocker locker(&m_qMutex);
264  return m_bChInfoIsInit;
265 }
266 
267 
268 //*************************************************************************************************************
269 
271 {
272  QMutexLocker locker(&m_qMutex);
273  return m_sXMLLayoutFile;
274 }
275 
276 
277 //*************************************************************************************************************
278 
279 inline void NewRealTimeMultiSampleArray::setXMLLayoutFile(const QString& layout)
280 {
281  QMutexLocker locker(&m_qMutex);
282  m_sXMLLayoutFile = layout;
283 }
284 
285 
286 //*************************************************************************************************************
287 
288 inline void NewRealTimeMultiSampleArray::setSamplingRate(double dSamplingRate)
289 {
290  QMutexLocker locker(&m_qMutex);
291  m_dSamplingRate = dSamplingRate;
292 }
293 
294 
295 //*************************************************************************************************************
296 
298 {
299  QMutexLocker locker(&m_qMutex);
300  return m_dSamplingRate;
301 }
302 
303 
304 //*************************************************************************************************************
305 
307 {
308  QMutexLocker locker(&m_qMutex);
309  return m_qListChInfo.size();
310 }
311 
312 
313 //*************************************************************************************************************
314 
315 inline QList<RealTimeSampleArrayChInfo>& NewRealTimeMultiSampleArray::chInfo()
316 {
317  QMutexLocker locker(&m_qMutex);
318  return m_qListChInfo;
319 }
320 
321 
322 //*************************************************************************************************************
323 
325 {
326  QMutexLocker locker(&m_qMutex);
327  return m_pFiffInfo_orig;
328 }
329 
330 
331 //*************************************************************************************************************
332 
333 inline void NewRealTimeMultiSampleArray::setMultiArraySize(qint32 iMultiArraySize)
334 {
335  QMutexLocker locker(&m_qMutex);
336  //Obsolete unsigned char can't be bigger
337 // if(ucArraySize > 255)
338 // m_ucArraySize = 255;
339 // else
340  m_iMultiArraySize = iMultiArraySize;
341 }
342 
343 
344 //*************************************************************************************************************
345 
347 {
348  QMutexLocker locker(&m_qMutex);
349  return m_iMultiArraySize;
350 }
351 
352 
353 //*************************************************************************************************************
354 
355 inline const QList< MatrixXd >& NewRealTimeMultiSampleArray::getMultiSampleArray()
356 {
357  return m_matSamples;
358 }
359 
360 } // NAMESPACE
361 
363 
364 #endif // REALTIMEMULTISAMPLEARRAYNEW_H
QSharedPointer< const NewRealTimeMultiSampleArray > ConstSPtr
QSharedPointer< NewRealTimeMultiSampleArray > SPtr
Contains the declaration of the NewMeasurement class.
#define XMEASSHARED_EXPORT
Definition: xmeas_global.h:54
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
Contains the declaration of the RealTimeSampleArrayChInfo class.
FiffInfo class declaration.
Definition: fiff.h:98
Contains the xMeas library export/import macros.
The RealTimeMultiSampleArrayNew class is the base class of every RealTimeMultiSampleArrayNew Measurem...
QList< RealTimeSampleArrayChInfo > & chInfo()