v2.0.0
Loading...
Searching...
No Matches
rtsensordatacontroller.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef BRAINVIEW_RTSENSORDATACONTROLLER_H
36#define BRAINVIEW_RTSENSORDATACONTROLLER_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
43
44#include <fiff/fiff_evoked.h>
46
47#include <QObject>
48#include <QSharedPointer>
49#include <QVector>
50#include <QString>
51#include <Eigen/Core>
52
53//=============================================================================================================
54// FORWARD DECLARATIONS
55//=============================================================================================================
56
57class QThread;
58class QTimer;
59
60namespace DISP3DRHILIB {
63}
64
65//=============================================================================================================
94{
95 Q_OBJECT
96
97public:
98 //=========================================================================================================
104 explicit RtSensorDataController(QObject *parent = nullptr);
105
106 //=========================================================================================================
110 ~RtSensorDataController() override;
111
112 //=========================================================================================================
120 void addData(const Eigen::VectorXf &data);
121
122 //=========================================================================================================
129 void setMappingMatrix(QSharedPointer<Eigen::MatrixXf> mat);
130
131 //=========================================================================================================
137 void setStreamingState(bool state);
138
139 //=========================================================================================================
145 bool isStreaming() const;
146
147 //=========================================================================================================
153 void setTimeInterval(int msec);
154
155 //=========================================================================================================
161 void setNumberAverages(int numAvr);
162
163 //=========================================================================================================
169 void setColormapType(const QString &name);
170
171 //=========================================================================================================
179 void setThresholds(double min, double max);
180
181 //=========================================================================================================
187 void setLoopState(bool enabled);
188
189 //=========================================================================================================
195 void setSFreq(double sFreq);
196
197 //=========================================================================================================
201 void clearData();
202
203 //=========================================================================================================
210 void setStreamSmoothedData(bool bStreamSmoothedData);
211
212 //=========================================================================================================
213 // ── On-the-fly interpolation matrix computation ─────────────────────
214 //=========================================================================================================
215
222 void setEvoked(const FIFFLIB::FiffEvoked &evoked);
223
224 //=========================================================================================================
231 void setTransform(const FIFFLIB::FiffCoordTrans &trans, bool applySensorTrans);
232
233 //=========================================================================================================
240 void setMegFieldMapOnHead(bool onHead);
241
242 //=========================================================================================================
251 void setMegSurface(const QString &surfaceKey,
252 const Eigen::MatrixX3f &vertices,
253 const Eigen::MatrixX3f &normals,
254 const Eigen::MatrixX3i &triangles);
255
256 //=========================================================================================================
263 void setEegSurface(const QString &surfaceKey,
264 const Eigen::MatrixX3f &vertices);
265
266 //=========================================================================================================
272 void setBadChannels(const QStringList &bads);
273
274 //=========================================================================================================
280 void recomputeMapping();
281
282signals:
283 //=========================================================================================================
290 void newSensorColorsAvailable(const QString &surfaceKey,
291 const QVector<uint32_t> &colors);
292
293 //=========================================================================================================
299 void newRawSensorDataAvailable(const Eigen::VectorXf &data);
300
301 //=========================================================================================================
309 void newMegMappingAvailable(const QString &surfaceKey,
310 QSharedPointer<Eigen::MatrixXf> mappingMat,
311 const QVector<int> &pick);
312
313 //=========================================================================================================
321 void newEegMappingAvailable(const QString &surfaceKey,
322 QSharedPointer<Eigen::MatrixXf> mappingMat,
323 const QVector<int> &pick);
324
325private slots:
326 void onNewMegMapping(const QString &surfaceKey,
327 QSharedPointer<Eigen::MatrixXf> mappingMat,
328 const QVector<int> &pick);
329 void onNewEegMapping(const QString &surfaceKey,
330 QSharedPointer<Eigen::MatrixXf> mappingMat,
331 const QVector<int> &pick);
332
333private:
334 QThread *m_pWorkerThread = nullptr;
335 DISP3DRHILIB::RtSensorDataWorker *m_pWorker = nullptr;
336 QTimer *m_pTimer = nullptr;
337 bool m_bIsStreaming = false;
338 int m_iTimeInterval = 17;
339
340 QThread *m_pInterpThread = nullptr;
341 DISP3DRHILIB::RtSensorInterpolationMatWorker *m_pInterpWorker = nullptr;
342};
343
344#endif // BRAINVIEW_RTSENSORDATACONTROLLER_H
FiffEvoked class declaration.
FiffCoordTrans class declaration.
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
3-D brain visualisation using the Qt RHI rendering backend.
void newSensorColorsAvailable(const QString &surfaceKey, const QVector< uint32_t > &colors)
void newMegMappingAvailable(const QString &surfaceKey, QSharedPointer< Eigen::MatrixXf > mappingMat, const QVector< int > &pick)
void setColormapType(const QString &name)
void setMegSurface(const QString &surfaceKey, const Eigen::MatrixX3f &vertices, const Eigen::MatrixX3f &normals, const Eigen::MatrixX3i &triangles)
void setBadChannels(const QStringList &bads)
void setTransform(const FIFFLIB::FiffCoordTrans &trans, bool applySensorTrans)
void setMappingMatrix(QSharedPointer< Eigen::MatrixXf > mat)
void setEegSurface(const QString &surfaceKey, const Eigen::MatrixX3f &vertices)
void newRawSensorDataAvailable(const Eigen::VectorXf &data)
void addData(const Eigen::VectorXf &data)
void setEvoked(const FIFFLIB::FiffEvoked &evoked)
void setStreamSmoothedData(bool bStreamSmoothedData)
void newEegMappingAvailable(const QString &surfaceKey, QSharedPointer< Eigen::MatrixXf > mappingMat, const QVector< int > &pick)
RtSensorDataController(QObject *parent=nullptr)
void setThresholds(double min, double max)
Background worker for real-time sensor data streaming.
Background worker for computing sensor field mapping matrices.
Coordinate transformation description.