MNE-CPP  0.1.9
A Framework for Electrophysiology
rtsensordatacontroller.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 //=============================================================================================================
36 // INCLUDES
37 //=============================================================================================================
38 
39 #include "rtsensordatacontroller.h"
41 #include "rtsensordataworker.h"
42 
43 //=============================================================================================================
44 // QT INCLUDES
45 //=============================================================================================================
46 
47 //=============================================================================================================
48 // EIGEN INCLUDES
49 //=============================================================================================================
50 
51 #include <Eigen/Core>
52 
53 //=============================================================================================================
54 // USED NAMESPACES
55 //=============================================================================================================
56 
57 using namespace DISP3DLIB;
58 using namespace Eigen;
59 using namespace FIFFLIB;
60 
61 //=============================================================================================================
62 // DEFINE MEMBER METHODS
63 //=============================================================================================================
64 
66 : m_iMSecInterval(17)
67 {
68  //Stream data
71 
72  connect(&m_rtSensorDataWorkerThread, &QThread::finished,
73  m_pRtSensorDataWorker.data(), &QObject::deleteLater);
74 
77 
80 
81  connect(&m_timer, &QTimer::timeout,
83 
86 
89 
92 
94  m_pRtSensorDataWorker.data(), &RtSensorDataWorker::setThresholds, Qt::DirectConnection);
95 
98 
101 
103  m_pRtSensorDataWorker.data(), &RtSensorDataWorker::setNumberAverages, Qt::DirectConnection);
104 
106  m_pRtSensorDataWorker.data(), &RtSensorDataWorker::setColormapType, Qt::DirectConnection);
107 
110 
112 
113  //Calculate interpolation matrix
116 
119 
120  connect(&m_rtInterpolationWorkerThread, &QThread::finished,
121  m_pRtInterpolationWorker.data(), &QObject::deleteLater);
122 
125 
128 
131 
134 
136 }
137 
138 //=============================================================================================================
139 
141 {
146 }
147 
148 //=============================================================================================================
149 
151 {
152  if(bStreamingState) {
153  m_timer.start(m_iMSecInterval);
154  } else {
155  m_timer.stop();
156  }
157 }
158 
159 //=============================================================================================================
160 
161 void RtSensorDataController::setInterpolationFunction(const QString &sInterpolationFunction)
162 {
163  emit interpolationFunctionChanged(sInterpolationFunction);
164 }
165 
166 //=============================================================================================================
167 
169 {
170  emit loopStateChanged(bLoopState);
171 }
172 
173 //=============================================================================================================
174 
176 {
177  emit cancelDistanceChanged(dCancelDist);
178 }
179 
180 //=============================================================================================================
181 
183 {
184 // if(iMSec < 17) {
185 // qDebug() << "RtSensorDataController::setTimeInterval - The minimum time interval is 17mSec.";
186 // iMSec = 17;
187 // }
188 
189  m_iMSecInterval = iMSec;
190  m_timer.setInterval(m_iMSecInterval);
191 }
192 
193 //=============================================================================================================
194 
195 void RtSensorDataController::setInterpolationInfo(const Eigen::MatrixX3f &matVertices,
196  const QVector<QVector<int> > &vecNeighborVertices,
197  const QVector<Vector3f> &vecSensorPos,
198  const FiffInfo &fiffInfo,
199  int iSensorType)
200 {
201  emit numberVerticesChanged(matVertices.rows());
202 
203  emit interpolationInfoChanged(matVertices,
204  vecNeighborVertices,
205  vecSensorPos,
206  fiffInfo,
207  iSensorType);
208 }
209 
210 //=============================================================================================================
211 
212 void RtSensorDataController::setThresholds(const QVector3D &vecThresholds)
213 {
214  emit thresholdsChanged(vecThresholds);
215 }
216 
217 //=============================================================================================================
218 
219 void RtSensorDataController::setColormapType(const QString &sColormapType)
220 {
221  emit colormapTypeChanged(sColormapType);
222 }
223 
224 //=============================================================================================================
225 
227 {
228  emit numberAveragesChanged(iNumAvr);
229 }
230 
231 //=============================================================================================================
232 
234 {
235  emit sFreqChanged(dSFreq);
236 }
237 
238 //=============================================================================================================
239 
241 {
242  emit badChannelsChanged(info);
243 }
244 
245 //=============================================================================================================
246 
247 void RtSensorDataController::setStreamSmoothedData(bool bStreamSmoothedData)
248 {
249  emit streamSmoothedDataChanged(bStreamSmoothedData);
250 }
251 
252 //=============================================================================================================
253 
254 void RtSensorDataController::addData(const MatrixXd& data)
255 {
256  emit rawDataChanged(data);
257 }
258 
259 //=============================================================================================================
260 
261 void RtSensorDataController::onNewRtRawData(const VectorXd &vecDataVector)
262 {
263  emit newRtRawDataAvailable(vecDataVector);
264 }
265 
266 //=============================================================================================================
267 
268 void RtSensorDataController::onNewSmoothedRtRawData(const MatrixX4f &matColorMatrix)
269 {
270  emit newRtSmoothedDataAvailable(matColorMatrix);
271 }
272 
273 //=============================================================================================================
274 
275 void RtSensorDataController::onNewInterpolationMatrixCalculated(QSharedPointer<SparseMatrix<float> > pMatInterpolationMatrix)
276 {
277  emit newInterpolationMatrixAvailable(pMatInterpolationMatrix);
278 }
void setNumberVertices(int iNumberVerts)
void setStreamSmoothedData(bool bStreamSmoothedData)
void streamSmoothedDataChanged(bool bStreamSmoothedData)
void rawDataChanged(const Eigen::MatrixXd &data)
FIFF measurement file information.
Definition: fiff_info.h:84
void setColormapType(const QString &sColormapType)
void addData(const Eigen::MatrixXd &data)
void newRtSmoothedData(const Eigen::MatrixX4f &matColorMatrix)
This worker calculates the interpolation matrix.
void setSFreq(const double dSFreq)
void onNewInterpolationMatrixCalculated(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrix)
void setStreamingState(bool bStreamingState)
void thresholdsChanged(const QVector3D &vecThresholds)
void setLoopState(bool bLoopState)
void setColormapType(const QString &sColormapType)
void setThresholds(const QVector3D &vecThresholds)
void onNewSmoothedRtRawData(const Eigen::MatrixX4f &matColorMatrix)
void interpolationFunctionChanged(const QString &sInterpolationFunction)
void sFreqChanged(double dSFreq)
void setInterpolationInfo(const Eigen::MatrixX3f &matVertices, const QVector< QVector< int > > &vecNeighborVertices, const QVector< Eigen::Vector3f > &vecSensorPos, const FIFFLIB::FiffInfo &fiffInfo, int iSensorType)
void loopStateChanged(bool bLoopState)
RtSensorInterpolationMatWorker class declaration.
RtSensorDataController class declaration.
void colormapTypeChanged(const QString &sColormapType)
void setBadChannels(const FIFFLIB::FiffInfo &info)
void newRtSmoothedDataAvailable(const Eigen::MatrixX4f &matColorMatrix)
QPointer< RtSensorDataWorker > m_pRtSensorDataWorker
void newInterpolationMatrixCalculated(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrix)
This worker streams either interpolated or raw data.
void setInterpolationFunction(const QString &sInterpolationFunction)
RtSensorDataWorker class declaration.
void setInterpolationMatrix(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrix)
QPointer< RtSensorInterpolationMatWorker > m_pRtInterpolationWorker
void numberAveragesChanged(int iNumAvr)
void setInterpolationFunction(const QString &sInterpolationFunction)
void onNewRtRawData(const Eigen::VectorXd &vecDataVector)
void interpolationInfoChanged(const Eigen::MatrixX3f &matVertices, const QVector< QVector< int > > &vecNeighborVertices, const QVector< Eigen::Vector3f > &vecSensorPos, const FIFFLIB::FiffInfo &fiffInfo, int iSensorType)
void newRtRawDataAvailable(const Eigen::VectorXd &vecDataVector)
void cancelDistanceChanged(double dCancelDist)
void newInterpolationMatrixAvailable(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrix)
void numberVerticesChanged(int iNumberVerts)
void addData(const Eigen::MatrixXd &data)
void setThresholds(const QVector3D &vecThresholds)
void setInterpolationInfo(const Eigen::MatrixX3f &matVertices, const QVector< QVector< int > > &vecNeighborVertices, const QVector< Eigen::Vector3f > &vecSensorPos, const FIFFLIB::FiffInfo &fiffInfo, int iSensorType)
void newRtRawData(Eigen::VectorXd vecDataVector)
void setStreamSmoothedData(bool bStreamSmoothedData)
void badChannelsChanged(const FIFFLIB::FiffInfo &info)