71 QTcpSocket::connectToHost(p_sRtServerHostName, 4218);
79 QTcpSocket::disconnectFromHost();
94 QString t_sCommand(
"");
98 this->waitForReadyRead(100);
103 m_clientID = *t_pTag->toInt();
114 bool t_bReadMeasBlockStart =
false;
115 bool t_bReadMeasBlockEnd =
false;
122 while(!t_bReadMeasBlockStart)
125 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_MEAS_INFO)
127 printf(
"FIFF_BLOCK_START FIFFB_MEAS_INFO\n");
128 t_bReadMeasBlockStart =
true;
136 bool dev_head_t_read =
false;
137 bool ctf_head_t_read =
false;
139 while(!t_bReadMeasBlockEnd)
145 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_DACQ_PARS)
147 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_DACQ_PARS)
150 if(t_pTag->kind == FIFF_DACQ_PARS)
151 p_pFiffInfo->acq_pars = t_pTag->toString();
152 else if(t_pTag->kind == FIFF_DACQ_STIM)
153 p_pFiffInfo->acq_stim = t_pTag->toString();
159 if (t_pTag->kind == FIFF_COORD_TRANS)
161 if (!dev_head_t_read)
163 p_pFiffInfo->dev_head_t = t_pTag->toCoordTrans();
164 dev_head_t_read =
true;
166 else if (!ctf_head_t_read)
168 p_pFiffInfo->ctf_head_t = t_pTag->toCoordTrans();
169 ctf_head_t_read =
true;
175 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_ISOTRAK)
177 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_ISOTRAK)
181 if(t_pTag->kind == FIFF_DIG_POINT)
182 p_pFiffInfo->dig.append(t_pTag->toDigPoint());
188 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_PROJ)
190 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_PROJ)
193 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_PROJ_ITEM)
196 qint32 countProj = p_pFiffInfo->projs.size();
197 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_PROJ_ITEM)
200 switch (t_pTag->kind)
204 p_pFiffInfo->projs.append(proj);
205 p_pFiffInfo->projs[countProj].desc = t_pTag->toString();
207 case FIFF_PROJ_ITEM_KIND:
208 p_pFiffInfo->projs[countProj].kind = *(t_pTag->toInt());
212 p_pFiffInfo->projs[countProj].data->ncol = *(t_pTag->toInt());
214 case FIFF_PROJ_ITEM_NVEC:
215 p_pFiffInfo->projs[countProj].data->nrow = *(t_pTag->toInt());
218 p_pFiffInfo->projs[countProj].active = *(t_pTag->toInt());
220 case FIFF_PROJ_ITEM_CH_NAME_LIST:
223 case FIFF_PROJ_ITEM_VECTORS:
224 p_pFiffInfo->projs[countProj].data->data = t_pTag->toFloatMatrix().cast<
double>();
232 for(qint32 i = 0; i < p_pFiffInfo->projs.size(); ++i)
234 if(p_pFiffInfo->projs[i].data->data.rows() != p_pFiffInfo->projs[i].data->nrow)
235 p_pFiffInfo->projs[i].data->data.transposeInPlace();
241 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_MNE_CTF_COMP)
243 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_MNE_CTF_COMP)
246 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_MNE_CTF_COMP_DATA)
249 qint32 countComp = p_pFiffInfo->comps.size();
250 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_MNE_CTF_COMP_DATA)
253 switch (t_pTag->kind)
257 p_pFiffInfo->comps.append(comp);
258 p_pFiffInfo->comps[countComp].ctfkind = *(t_pTag->toInt());
261 p_pFiffInfo->comps[countComp].save_calibrated = *(t_pTag->toInt());
274 if(t_pTag->kind == FIFF_BLOCK_START && *(t_pTag->toInt()) == FIFFB_MNE_BAD_CHANNELS)
276 while(t_pTag->kind != FIFF_BLOCK_END || *(t_pTag->toInt()) != FIFFB_MNE_BAD_CHANNELS)
279 if(t_pTag->kind == FIFF_MNE_CH_NAME_LIST)
289 p_pFiffInfo->sfreq = *(t_pTag->toFloat());
292 p_pFiffInfo->highpass = *(t_pTag->toFloat());
295 p_pFiffInfo->lowpass = *(t_pTag->toFloat());
298 p_pFiffInfo->nchan = *(t_pTag->toInt());
301 p_pFiffInfo->meas_date[0] = t_pTag->toInt()[0];
302 p_pFiffInfo->meas_date[1] = t_pTag->toInt()[1];
306 if (t_pTag->kind == FIFF_CH_INFO)
307 p_pFiffInfo->chs.append(t_pTag->toChInfo());
310 if(t_pTag->kind == FIFF_BLOCK_END && *t_pTag->toInt() == FIFFB_MEAS_INFO)
312 printf(
"FIFF_BLOCK_END FIFFB_MEAS_INFO\n");
313 t_bReadMeasBlockEnd =
true;
321 for (qint32 c = 0; c < p_pFiffInfo->nchan; ++c)
322 p_pFiffInfo->ch_names << p_pFiffInfo->chs[c].ch_name;
346 qint32 nSamples = (t_pTag->size()/4)/p_nChannels;
347 data = MatrixXf(Map< MatrixXf >(t_pTag->toFloat(), p_nChannels, nSamples));
#define FIFF_MNE_RT_CLIENT_ID
#define FIFF_MNE_CTF_COMP_KIND
void readRawBuffer(qint32 p_nChannels, MatrixXf &data, fiff_int_t &kind)
FIFF measurement file information.
void setClientAlias(const QString &p_sAlias)
static QStringList split_name_list(QString p_sNameList)
QSharedPointer< FiffTag > SPtr
RtDataClient(QObject *parent=0)
void write_rt_command(fiff_int_t command, const QString &data)
static bool read_tag(FiffStream *p_pStream, FiffTag::SPtr &p_pTag, qint64 pos=-1)
#define FIFF_MNE_CTF_COMP_CALIBRATED
QSharedPointer< FiffInfo > SPtr
#define FIFF_MNE_PROJ_ITEM_ACTIVE
FiffInfo::SPtr readInfo()
static bool read_rt_tag(FiffStream *p_pStream, FiffTag::SPtr &p_pTag)
CTF software compensation data.
declaration of the RtDataClient Class.
void connectToHost(const QString &p_sRtServerHostName)
virtual void disconnectFromHost()