MNE-CPP  beta 1.0
neuromag.h
1 //=============================================================================================================
36 #ifndef NEUROMAG_H
37 #define NEUROMAG_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "neuromag_global.h"
46 
51 
52 
53 //*************************************************************************************************************
54 //=============================================================================================================
55 // FIFF INCLUDES
56 //=============================================================================================================
57 
58 #include <fiff/fiff_info.h>
59 
60 
61 //*************************************************************************************************************
62 //=============================================================================================================
63 // MNE INCLUDES
64 //=============================================================================================================
65 
66 #include <rtClient/rtcmdclient.h>
67 
68 
69 //*************************************************************************************************************
70 //=============================================================================================================
71 // QT INCLUDES
72 //=============================================================================================================
73 
74 #include <QtWidgets>
75 #include <QVector>
76 #include <QTimer>
77 
78 
79 //*************************************************************************************************************
80 //=============================================================================================================
81 // DEFINE NAMESPACE MneRtClientPlugin
82 //=============================================================================================================
83 
84 namespace MneRtClientPlugin
85 {
86 
87 
88 //*************************************************************************************************************
89 //=============================================================================================================
90 // USED NAMESPACES
91 //=============================================================================================================
92 
93 using namespace MNEX;
94 using namespace IOBuffer;
95 using namespace RTCLIENTLIB;
96 using namespace FIFFLIB;
97 using namespace XMEASLIB;
98 
99 
100 //*************************************************************************************************************
101 //=============================================================================================================
102 // FORWARD DECLARATIONS
103 //=============================================================================================================
104 
105 class NeuromagProducer;
106 //class ECGChannel;
107 
108 
109 //=============================================================================================================
115 class NEUROMAGSHARED_EXPORT Neuromag : public ISensor
116 {
117  Q_OBJECT
118  Q_PLUGIN_METADATA(IID "mne_x/1.0" FILE "neuromag.json") //NEw Qt5 Plugin system replaces Q_EXPORT_PLUGIN2 macro
119  // Use the Q_INTERFACES() macro to tell Qt's meta-object system about the interfaces
120  Q_INTERFACES(MNEX::ISensor)
121 
122  friend class NeuromagProducer;
123  friend class NeuromagSetupWidget;
124 
125 public:
126 
127  //=========================================================================================================
131  Neuromag();
132 
133  //=========================================================================================================
137  virtual ~Neuromag();
138 
139  //=========================================================================================================
143  void clear();
144 
145  //=========================================================================================================
149  virtual QSharedPointer<IPlugin> clone() const;
150 
151  //=========================================================================================================
155  virtual void init();
156 
157  //=========================================================================================================
161  virtual void unload();
162 
163  virtual bool start();
164  virtual bool stop();
165 
166  virtual IPlugin::PluginType getType() const;
167  virtual QString getName() const;
168 
169  virtual QWidget* setupWidget();
170 
171 //slots:
172  //=========================================================================================================
178  void changeConnector(qint32 p_iNewConnectorId);
179 
180  //=========================================================================================================
184  void connectCmdClient();
185 
186  //=========================================================================================================
190  void disconnectCmdClient();
191 
192  //=========================================================================================================
196  void requestInfo();
197 
198 signals:
199  //=========================================================================================================
205  void cmdConnectionChanged(bool p_bStatus);
206 
207  //=========================================================================================================
211  void fiffInfoAvailable();
212 
213 protected:
214  virtual void run();
215 
216 private:
217  //=========================================================================================================
221  void initConnector();
222 
223 
224  QMutex rtServerMutex;
225 
226 
227  QString m_sNeuromagClientAlias;
229 // float m_fSamplingRate; /**< The sampling rate.*/
230 // int m_iDownsamplingFactor; /**< The down sampling factor.*/
231 
234  QSharedPointer<RtCmdClient> m_pRtCmdClient;
235  bool m_bCmdClientIsConnected;
237  QString m_sNeuromagIP;
239  QSharedPointer<NeuromagProducer> m_pNeuromagProducer;
241  QMap<qint32, QString> m_qMapConnectors;
242  qint32 m_iActiveConnectorId;
244  FiffInfo::SPtr m_pFiffInfo;
245  qint32 m_iBufferSize;
247  QTimer m_cmdConnectionTimer;
249  QSharedPointer<RawMatrixBuffer> m_pRawMatrixBuffer_In;
251  bool m_bIsRunning;
253 };
254 
255 } // NAMESPACE
256 
257 #endif // NEUROMAG_H
The NeuromagSetupWidget class provides the ECG configuration window.
CircularMatrixBuffer class declaration.
QSharedPointer< PluginOutputData< T > > SPtr
The ISensor class provides an interface for a sensor plugin.
Definition: ISensor.h:63
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
FiffInfo class declaration.
Contains the declaration of the CircularBuffer_old class.
The Neuromag class provides a RT server connection.
Definition: neuromag.h:115
Definition: arrow.h:75
Definition: fiff.h:98
Contains the declaration of the NewRealTimeMultiSampleArray class.
declaration of the RtCmdClient Class.
The NeuromagProducer class provides a Rt Client data producer for a given sampling rate...
Contains declaration of IIinverseAlgorithm interface class.