MNE-CPP  beta 1.0
rtcov.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef RTCOV_H
37 #define RTCOV_H
38 
39 //*************************************************************************************************************
40 //=============================================================================================================
41 // INCLUDES
42 //=============================================================================================================
43 
44 #include "rtinv_global.h"
45 
46 
47 //*************************************************************************************************************
48 //=============================================================================================================
49 // FIFF INCLUDES
50 //=============================================================================================================
51 
52 #include <fiff/fiff_cov.h>
53 #include <fiff/fiff_info.h>
54 
55 
56 //*************************************************************************************************************
57 //=============================================================================================================
58 // Generics INCLUDES
59 //=============================================================================================================
60 
62 
63 
64 //*************************************************************************************************************
65 //=============================================================================================================
66 // QT INCLUDES
67 //=============================================================================================================
68 
69 #include <QThread>
70 #include <QMutex>
71 #include <QSharedPointer>
72 
73 
74 //*************************************************************************************************************
75 //=============================================================================================================
76 // Eigen INCLUDES
77 //=============================================================================================================
78 
79 #include <Eigen/Core>
80 
81 
82 //*************************************************************************************************************
83 //=============================================================================================================
84 // DEFINE NAMESPACE INVRTLIB
85 //=============================================================================================================
86 
87 namespace RTINVLIB
88 {
89 
90 
91 //*************************************************************************************************************
92 //=============================================================================================================
93 // USED NAMESPACES
94 //=============================================================================================================
95 
96 using namespace Eigen;
97 using namespace IOBuffer;
98 using namespace FIFFLIB;
99 
100 
101 //=============================================================================================================
107 class RTINVSHARED_EXPORT RtCov : public QThread
108 {
109  Q_OBJECT
110 public:
111  typedef QSharedPointer<RtCov> SPtr;
112  typedef QSharedPointer<const RtCov> ConstSPtr;
114  //=========================================================================================================
122  explicit RtCov(qint32 p_iMaxSamples, FiffInfo::SPtr p_pFiffInfo, QObject *parent = 0);
123 
124  //=========================================================================================================
128  ~RtCov();
129 
130  //=========================================================================================================
136  void append(const MatrixXd &p_DataSegment);
137 
138  //=========================================================================================================
144  inline bool isRunning();
145 
146  //=========================================================================================================
152  void setSamples(qint32 samples);
153 
154  //=========================================================================================================
160  virtual bool start();
161 
162  //=========================================================================================================
168  virtual bool stop();
169 
170 signals:
171  //=========================================================================================================
177  void covCalculated(FIFFLIB::FiffCov::SPtr p_pCov);
178 
179 protected:
180  //=========================================================================================================
186  virtual void run();
187 
188 private:
189  QMutex mutex;
191  quint32 m_iMaxSamples;
193  quint32 m_iNewMaxSamples;
195  FiffInfo::SPtr m_pFiffInfo;
197  bool m_bIsRunning;
199  CircularMatrixBuffer<double>::SPtr m_pRawMatrixBuffer;
200 };
201 
202 //*************************************************************************************************************
203 //=============================================================================================================
204 // INLINE DEFINITIONS
205 //=============================================================================================================
206 
207 inline bool RtCov::isRunning()
208 {
209  return m_bIsRunning;
210 }
211 
212 } // NAMESPACE
213 
214 #ifndef metatype_fiffcovsptr
215 #define metatype_fiffcovsptr
217 #endif
218 
219 #endif // RTCOV_H
QSharedPointer< FiffCov > SPtr
Definition: fiff_cov.h:97
QSharedPointer< const RtCov > ConstSPtr
Definition: rtcov.h:112
Real-time covariance estimation.
Definition: rtcov.h:107
CircularMatrixBuffer class declaration.
rtinv library export/import macros.
Q_DECLARE_METATYPE(FIFFLIB::FiffCov::SPtr)
The circular matrix buffer.
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
FiffInfo class declaration.
Definition: fiff.h:98
#define RTINVSHARED_EXPORT
Definition: rtinv_global.h:58
QSharedPointer< RtCov > SPtr
Definition: rtcov.h:111
Definition: rtave.h:89
bool isRunning()
Definition: rtcov.h:207
FiffCov class declaration.