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

Method read_data

src/board_controller/brainalive/brainalive.cpp:384–440  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

382}
383
384void BrainAlive::read_data (simpleble_uuid_t service, simpleble_uuid_t characteristic,
385 const uint8_t *data, size_t size, int channel_num)
386{
387 if (size == brainalive_packet_size)
388 {
389 for (int i = 0; i < (int)size; i += brainalive_single_packet_size)
390 {
391
392 int num_rows = board_descr["default"]["num_rows"];
393 double *package = new double[num_rows];
394 for (int i = 0; i < num_rows; i++)
395 {
396 package[i] = 0.0;
397 }
398 std::vector<int> eeg_channels = board_descr["default"]["eeg_channels"];
399 std::vector<int> accel_channels = board_descr["default"]["accel_channels"];
400 std::vector<int> gyro_channels = board_descr["default"]["gyro_channels"];
401
402 package[board_descr["default"]["package_num_channel"].get<int> ()] =
403 data[brainalive_packet_index + i];
404
405 for (int j = i + brainalive_eeg_Start_index, k = 0; j < i + brainalive_eeg_end_index;
406 j += 3, k++)
407 {
408 package[eeg_channels[k]] =
409 (float)(((data[j] << 16 | data[j + 1] << 8 | data[j + 2]) << 8) >> 8) *
410 ((((float)get_ref_voltage () * 1000) /
411 (float)(get_internal_gain () * get_external_gain () * FSR_Value)));
412 }
413
414 for (int j = i + brainalive_axl_start_index, k = 0; j < i + brainalive_axl_end_index;
415 j += 2, k++)
416 {
417 package[accel_channels[k]] = (data[j] << 8) | data[j + 1];
418 if (package[accel_channels[k]] > 32767)
419 package[accel_channels[k]] = package[accel_channels[k]] - 65535;
420 }
421 for (int j = i + brainalive_gyro_start_index, k = 0; j < i + brainalive_gyro_end_index;
422 j += 2, k++)
423 {
424 package[gyro_channels[k]] = (data[j] << 8) | data[j + 1];
425 if (package[gyro_channels[k]] > 32767)
426 package[gyro_channels[k]] = package[gyro_channels[k]] - 65535;
427 }
428 package[board_descr["default"]["marker_channel"].get<int> ()] =
429 data[(brainalive_packet_index + 1) + i];
430 package[board_descr["default"]["timestamp_channel"].get<int> ()] = get_timestamp ();
431
432 push_package (&package[0]);
433 }
434 }
435 else
436 {
437 safe_logger (spdlog::level::warn, "unknown size of BrainAlive Data {}", size);
438 return;
439 }
440}

Callers 1

Calls 1

get_timestampFunction · 0.85

Tested by

no test coverage detected