54 #include <QtCore/QtPlugin>
55 #include <QtCore/QTextStream>
56 #include <QtCore/QFile>
77 : m_sNeuromagClientAlias(
"mne-x")
78 , m_pRtCmdClient(NULL)
79 , m_bCmdClientIsConnected(false)
80 , m_sNeuromagIP(
"172.21.16.88")
83 , m_pRawMatrixBuffer_In(0)
94 if(m_pNeuromagProducer->isRunning() || this->isRunning())
103 QSharedPointer<Neuromag> pNeuromagClone(
new Neuromag());
104 return pNeuromagClone;
113 m_pNeuromagProducer->start();
136 void Neuromag::initConnector()
142 m_pRTMSA_Neuromag->data()->initFromFiffInfo(m_pFiffInfo);
143 m_pRTMSA_Neuromag->data()->setMultiArraySize(1);
145 m_pRTMSA_Neuromag->data()->setVisibility(
true);
147 m_pRTMSA_Neuromag->data()->setXMLLayoutFile(
"./mne_x_plugins/resources/Neuromag/VectorViewLayout.xml");
159 if(p_iNewConnectorId != m_iActiveConnectorId)
162 (*m_pRtCmdClient)[
"selcon"].pValues()[0].setValue(p_iNewConnectorId);
163 (*m_pRtCmdClient)[
"selcon"].send();
165 m_iActiveConnectorId = p_iNewConnectorId;
173 m_pRtCmdClient->requestCommands();
184 m_iBufferSize = m_pRtCmdClient->requestBufsize();
204 if(m_pRtCmdClient.isNull())
205 m_pRtCmdClient = QSharedPointer<RtCmdClient>(
new RtCmdClient);
206 else if(m_bCmdClientIsConnected)
209 m_pRtCmdClient->connectToHost(m_sNeuromagIP);
210 m_pRtCmdClient->waitForConnected(1000);
212 if(m_pRtCmdClient->state() == QTcpSocket::ConnectedState)
214 rtServerMutex.lock();
216 if(!m_bCmdClientIsConnected)
221 m_pRtCmdClient->requestCommands();
226 m_bCmdClientIsConnected =
true;
237 if(m_qMapConnectors.size() == 0)
238 m_iActiveConnectorId = m_pRtCmdClient->requestConnectors(m_qMapConnectors);
240 QMap<qint32, QString>::const_iterator it;
241 for(it = m_qMapConnectors.begin(); it != m_qMapConnectors.end(); ++it)
242 if(it.value().compare(
"Neuromag Connector") == 0 && m_iActiveConnectorId != it.key())
248 m_iBufferSize = m_pRtCmdClient->requestBufsize();
252 rtServerMutex.unlock();
261 if(m_bCmdClientIsConnected)
263 m_pRtCmdClient->disconnectFromHost();
264 m_pRtCmdClient->waitForDisconnected();
265 rtServerMutex.lock();
266 m_bCmdClientIsConnected =
false;
267 rtServerMutex.unlock();
277 while(!(m_pNeuromagProducer->m_iDataClientId > -1 && m_bCmdClientIsConnected))
278 qWarning() <<
"NeuromagProducer is not running! Retry...";
280 if(m_pNeuromagProducer->m_iDataClientId > -1 && m_bCmdClientIsConnected)
283 (*m_pRtCmdClient)[
"measinfo"].pValues()[0].setValue(m_pNeuromagProducer->m_iDataClientId);
284 (*m_pRtCmdClient)[
"measinfo"].send();
286 m_pNeuromagProducer->producerMutex.lock();
287 m_pNeuromagProducer->m_bFlagInfoRequest =
true;
288 m_pNeuromagProducer->producerMutex.unlock();
291 qWarning() <<
"NeuromagProducer is not connected!";
300 if(this->isRunning())
303 if(m_bCmdClientIsConnected && m_pFiffInfo)
309 (*m_pRtCmdClient)[
"bufsize"].pValues()[0].setValue(m_iBufferSize);
310 (*m_pRtCmdClient)[
"bufsize"].send();
313 m_pRawMatrixBuffer_In = QSharedPointer<RawMatrixBuffer>(
new RawMatrixBuffer(8,m_pFiffInfo->nchan,m_iBufferSize));
320 m_pNeuromagProducer->start();
322 while(!m_pNeuromagProducer->m_bFlagMeasuring)
327 (*m_pRtCmdClient)[
"start"].pValues()[0].setValue(m_pNeuromagProducer->m_iDataClientId);
328 (*m_pRtCmdClient)[
"start"].send();
341 if(m_pNeuromagProducer->isRunning())
342 m_pNeuromagProducer->stop();
345 m_bIsRunning =
false;
347 if(this->isRunning())
350 m_pRawMatrixBuffer_In->releaseFromPop();
352 m_pRawMatrixBuffer_In->clear();
354 m_pRTMSA_Neuromag->data()->clear();
396 matValue = m_pRawMatrixBuffer_In->pop();
399 m_pRTMSA_Neuromag->data()->setValue(matValue.cast<
double>());
OutputConnectorList m_outputConnectors
Real-time command client.
virtual QSharedPointer< IPlugin > clone() const
virtual QString getName() const
void cmdConnectionChanged(bool p_bStatus)
Contains the declaration of the NeuromagProducer class.
void disconnectCmdClient()
static QSharedPointer< PluginOutputData< T > > create(IPlugin *parent, const QString &name, const QString &descr)
The NeuromagProducer class provides a Rt Client data producer for a given sampling rate...
virtual IPlugin::PluginType getType() const
void changeConnector(qint32 p_iNewConnectorId)
IOUtils class declaration.
virtual QWidget * setupWidget()