MNE-CPP  beta 1.0
IConnector.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef ICONNECTOR_H
37 #define ICONNECTOR_H
38 
39 //*************************************************************************************************************
40 //=============================================================================================================
41 // INCLUDES
42 //=============================================================================================================
43 
44 #include <fiff/fiff_info.h>
45 #include <rtCommand/commandmanager.h>
46 
47 
48 //*************************************************************************************************************
49 //=============================================================================================================
50 // QT INCLUDES
51 //=============================================================================================================
52 
53 #include <QThread>
54 #include <QtPlugin>
55 #include <QByteArray>
56 #include <QStringList>
57 #include <QJsonObject>
58 
59 
60 //*************************************************************************************************************
61 //=============================================================================================================
62 // Eigen INCLUDES
63 //=============================================================================================================
64 
65 #include <Eigen/Core>
66 
67 
68 //*************************************************************************************************************
69 //=============================================================================================================
70 // DEFINE NAMESPACE RTSERVER
71 //=============================================================================================================
72 
73 namespace RTSERVER
74 {
75 
76 
77 //*************************************************************************************************************
78 //=============================================================================================================
79 // ENUMERATIONS
80 //=============================================================================================================
81 
82 //=========================================================================================================
86 enum ConnectorID
87 {
88  _FIFFSIMULATOR = 1,
89  _NEUROMAG = _FIFFSIMULATOR + 1,
90  _BABYMEG = _NEUROMAG + 1,
91  _default = -1
92 };
93 
94 
95 //*************************************************************************************************************
96 //=============================================================================================================
97 // DEFINES
98 //=============================================================================================================
99 
100 #define RAW_BUFFFER_SIZE 10
101 
102 
103 //*************************************************************************************************************
104 //=============================================================================================================
105 // USED NAMESPACES
106 //=============================================================================================================
107 
108 using namespace FIFFLIB;
109 using namespace RTCOMMANDLIB;
110 using namespace Eigen;
111 
112 
113 //=========================================================================================================
119 class IConnector : public QThread
120 {
121  Q_OBJECT
122 public:
123  //=========================================================================================================
127  virtual ~IConnector() {};
128 
129  //=========================================================================================================
135  inline CommandManager& getCommandManager();
136 
137  //=========================================================================================================
141  virtual void connectCommandManager() = 0;
142 
143  //=========================================================================================================
150  virtual ConnectorID getConnectorID() const = 0;
151 
152  //=========================================================================================================
159  virtual const char* getName() const = 0;
160 
161  //=========================================================================================================
167  inline bool isActive() const;
168 
169  //=========================================================================================================
176  virtual bool start() = 0;// = 0 call is not longer possible - it has to be reimplemented in child;
177 
178  //=========================================================================================================
185  virtual bool stop() = 0;
186 
187  //=========================================================================================================
193  inline void setMetaData(QJsonObject& p_MetaData);
194 
195  //=========================================================================================================
201  inline void setStatus(bool status);
202 
203  //=========================================================================================================
209  virtual void info(qint32 ID) = 0;
210 
211 signals:
212  void remitMeasInfo(qint32, FIFFLIB::FiffInfo);
213 
214  void remitRawBuffer(QSharedPointer<Eigen::MatrixXf>);
215 
216 protected:
217 
218  //=========================================================================================================
224  virtual void run() = 0;
225 
226  QJsonObject m_qJsonObjectMetaData;
230 private:
231  bool m_bIsActive;
232 };
233 
234 //*************************************************************************************************************
235 //=============================================================================================================
236 // INLINE DEFINITIONS
237 //=============================================================================================================
238 
240 {
241  return m_commandManager;
242 }
243 
244 
245 //*************************************************************************************************************
246 
247 inline bool IConnector::isActive() const
248 {
249  return m_bIsActive;
250 }
251 
252 
253 //*************************************************************************************************************
254 
255 inline void IConnector::setMetaData(QJsonObject& p_MetaData)
256 {
257  m_qJsonObjectMetaData = p_MetaData;
258 }
259 
260 
261 //*************************************************************************************************************
262 
263 inline void IConnector::setStatus(bool status)
264 {
265  m_bIsActive = status;
266  m_commandManager.setStatus(status);
267 }
268 
269 } //Namespace
270 
271 #ifndef IConnector_iid
272 #define IConnector_iid "mne_rt_server/1.0"
273 #endif
274 Q_DECLARE_INTERFACE(RTSERVER::IConnector, IConnector_iid)
275 
276 #endif //ICONNECTOR_H
CommandManager & getCommandManager()
Definition: IConnector.h:239
FIFF measurement file information.
Definition: fiff_info.h:96
virtual ~IConnector()
Definition: IConnector.h:127
QJsonObject m_qJsonObjectMetaData
Definition: IConnector.h:226
CommandManager m_commandManager
Definition: IConnector.h:228
The IConnector class is the interface class of all plugins.
Definition: IConnector.h:119
bool isActive() const
Definition: IConnector.h:247
FiffInfo class declaration.
Definition: fiff.h:98
void setStatus(bool status)
Definition: IConnector.h:263
void setMetaData(QJsonObject &p_MetaData)
Definition: IConnector.h:255