MCPcopy Create free account
hub / github.com/brainflow-dev/brainflow / read_thread

Method read_thread

src/board_controller/neuromd/brainbit.cpp:340–427  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

338}
339
340void BrainBit::read_thread ()
341{
342 /*
343 * Format for output from BrainFlow is:
344 * package[0] - package counter
345 * package [1-4] - eeg t3, t4, o1, o2
346 * package[5-8] - resistance t3, t4, o1, o2. Place it to other_channels
347 * package[9] - battery
348 */
349 int num_rows = board_descr["default"]["num_rows"];
350 double *package = new double[num_rows];
351 for (int i = 0; i < num_rows; i++)
352 {
353 package[i] = 0.0;
354 }
355
356 while (keep_alive)
357 {
358 size_t length_t3 = 0;
359 size_t length_t4 = 0;
360 size_t length_o1 = 0;
361 size_t length_o2 = 0;
362
363 do
364 {
365 AnyChannel_get_total_length ((AnyChannel *)signal_t3, &length_t3);
366 AnyChannel_get_total_length ((AnyChannel *)signal_t4, &length_t4);
367 AnyChannel_get_total_length ((AnyChannel *)signal_o1, &length_o1);
368 AnyChannel_get_total_length ((AnyChannel *)signal_o2, &length_o2);
369 } while ((keep_alive) &&
370 ((length_o2 < (counter + 1) || length_o1 < (counter + 1) || length_t3 < (counter + 1) ||
371 length_t4 < (counter + 1))));
372
373 // check that inner loop ended not because of stop_stream invocation
374 if (!keep_alive)
375 {
376 break;
377 }
378
379 // get timestamp as soon as loop ends
380 double timestamp = get_timestamp ();
381 double t3_data;
382 double t4_data;
383 double o1_data;
384 double o2_data;
385
386 size_t stub = 0;
387 int sdk_ec = SDK_NO_ERROR;
388 sdk_ec =
389 DoubleChannel_read_data ((DoubleChannel *)signal_t3, counter, 1, &t3_data, 1, &stub);
390 if (sdk_ec != SDK_NO_ERROR)
391 {
392 continue;
393 }
394 sdk_ec =
395 DoubleChannel_read_data ((DoubleChannel *)signal_t4, counter, 1, &t4_data, 1, &stub);
396 if (sdk_ec != SDK_NO_ERROR)
397 {

Callers 1

start_streamMethod · 0.95

Calls 1

get_timestampFunction · 0.85

Tested by

no test coverage detected