54 #include <QtCore/QtPlugin>
55 #include <QtCore/QTextStream>
56 #include <QtCore/QFile>
67 using namespace MneRtClientPlugin;
68 using namespace UTILSLIB;
77 : m_sMneRtClientClientAlias(
"mne-x")
78 , m_pRtCmdClient(NULL)
79 , m_bCmdClientIsConnected(false)
80 , m_sMneRtClientIP(
"127.0.0.1")
83 , m_pRawMatrixBuffer_In(0)
96 if(m_pMneRtClientProducer->isRunning())
97 m_pMneRtClientProducer->stop();
105 QSharedPointer<MneRtClient> pMneRtClientClone(
new MneRtClient());
106 return pMneRtClientClone;
115 m_pMneRtClientProducer->start();
137 void MneRtClient::initConnector()
141 qDebug() <<
"MneRtClient::init()";
156 m_pRTMSA_MneRtClient->data()->initFromFiffInfo(m_pFiffInfo);
157 m_pRTMSA_MneRtClient->data()->setMultiArraySize(10);
159 m_pRTMSA_MneRtClient->data()->setVisibility(
true);
171 if(p_iNewConnectorId != m_iActiveConnectorId)
174 (*m_pRtCmdClient)[
"selcon"].pValues()[0].setValue(p_iNewConnectorId);
175 (*m_pRtCmdClient)[
"selcon"].send();
177 m_iActiveConnectorId = p_iNewConnectorId;
185 m_pRtCmdClient->requestCommands();
196 m_iBufferSize = m_pRtCmdClient->requestBufsize();
216 if(m_pRtCmdClient.isNull())
217 m_pRtCmdClient = QSharedPointer<RtCmdClient>(
new RtCmdClient);
218 else if(m_bCmdClientIsConnected)
221 m_pRtCmdClient->connectToHost(m_sMneRtClientIP);
222 m_pRtCmdClient->waitForConnected(1000);
224 if(m_pRtCmdClient->state() == QTcpSocket::ConnectedState)
226 rtServerMutex.lock();
231 if(!m_bCmdClientIsConnected)
236 m_pRtCmdClient->requestCommands();
241 m_bCmdClientIsConnected =
true;
252 if(m_qMapConnectors.size() == 0)
253 m_iActiveConnectorId = m_pRtCmdClient->requestConnectors(m_qMapConnectors);
258 m_iBufferSize = m_pRtCmdClient->requestBufsize();
262 rtServerMutex.unlock();
271 if(m_bCmdClientIsConnected)
273 m_pRtCmdClient->disconnectFromHost();
274 m_pRtCmdClient->waitForDisconnected();
275 rtServerMutex.lock();
276 m_bCmdClientIsConnected =
false;
277 rtServerMutex.unlock();
287 if(m_pMneRtClientProducer->m_iDataClientId > -1 && m_bCmdClientIsConnected)
290 (*m_pRtCmdClient)[
"measinfo"].pValues()[0].setValue(m_pMneRtClientProducer->m_iDataClientId);
291 (*m_pRtCmdClient)[
"measinfo"].send();
293 m_pMneRtClientProducer->producerMutex.lock();
294 m_pMneRtClientProducer->m_bFlagInfoRequest =
true;
295 m_pMneRtClientProducer->producerMutex.unlock();
298 qWarning() <<
"MneRtClientProducer is not connected!";
306 if(m_bCmdClientIsConnected && m_pFiffInfo)
312 (*m_pRtCmdClient)[
"bufsize"].pValues()[0].setValue(m_iBufferSize);
313 (*m_pRtCmdClient)[
"bufsize"].send();
316 m_pRawMatrixBuffer_In = QSharedPointer<RawMatrixBuffer>(
new RawMatrixBuffer(8,m_pFiffInfo->nchan,m_iBufferSize));
323 (*m_pRtCmdClient)[
"start"].pValues()[0].setValue(m_pMneRtClientProducer->m_iDataClientId);
324 (*m_pRtCmdClient)[
"start"].send();
326 m_pMneRtClientProducer->producerMutex.lock();
327 m_pMneRtClientProducer->m_bFlagMeasuring =
true;
328 m_pMneRtClientProducer->producerMutex.unlock();
329 m_pMneRtClientProducer->start();
342 if(m_bCmdClientIsConnected)
345 (*m_pRtCmdClient)[
"stop-all"].send();
347 m_pMneRtClientProducer->producerMutex.lock();
348 m_pMneRtClientProducer->m_bFlagMeasuring =
false;
349 m_pMneRtClientProducer->producerMutex.unlock();
353 QThread::terminate();
357 m_pRawMatrixBuffer_In->clear();
400 matValue = m_pRawMatrixBuffer_In->pop();
404 for(qint32 i = 0; i < matValue.cols(); ++i)
405 m_pRTMSA_MneRtClient->data()->setValue(matValue.col(i).cast<
double>());
OutputConnectorList m_outputConnectors
virtual QWidget * setupWidget()
The MneRtClientProducer class provides a Rt Client data producer for a given sampling rate...
Real-time command client.
Contains the declaration of the RTServerProducer class.
Contains the declaration of the MneRtClient class.
virtual QString getName() const
virtual QSharedPointer< IPlugin > clone() const
static QSharedPointer< PluginOutputData< T > > create(IPlugin *parent, const QString &name, const QString &descr)
void changeConnector(qint32 p_iNewConnectorId)
virtual IPlugin::PluginType getType() const
void cmdConnectionChanged(bool p_bStatus)
IOUtils class declaration.
void disconnectCmdClient()