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

Method parse_env_data

src/board_controller/mentalab/explore.cpp:463–494  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

461}
462
463void Explore::parse_env_data (const ExploreHeader *header, double *package, unsigned char *payload)
464{
465 int payload_size = header->payload_size;
466 if ((payload[payload_size - 4] != 0xAF) || (payload[payload_size - 3] != 0xBE) ||
467 (payload[payload_size - 2] != 0xAD) || (payload[payload_size - 1] != 0xDE))
468 {
469 safe_logger (spdlog::level::warn, "checksum failed, {} {} {} {}", payload[payload_size - 4],
470 payload[payload_size - 3], payload[payload_size - 2], payload[payload_size - 1]);
471 return;
472 }
473 payload_size = payload_size - 4;
474 if (payload_size < 5)
475 {
476 safe_logger (spdlog::level::warn, "invalid size for env package: {}", payload_size);
477 return;
478 }
479 int temperature_channel = board_descr["ancillary"]["temperature_channels"][0];
480 int battery_channel = board_descr["ancillary"]["battery_channel"];
481 int other_channel = board_descr["ancillary"]["other_channels"][0];
482
483 uint16_t battery_raw = 0;
484 memcpy (&battery_raw, payload + 3, 2);
485 double battery = (16.8 / 6.8) * (1.8 / 2457) * battery_raw;
486 package[temperature_channel] = (double)payload[0];
487 package[battery_channel] = get_battery_percentage (battery);
488 uint16_t light_raw = 0;
489 memcpy (&light_raw, payload + 1, 2);
490 package[other_channel] = (1000.0 / 4095.0) * light_raw;
491 package[board_descr["ancillary"]["timestamp_channel"].get<int> ()] = get_timestamp ();
492 package[board_descr["ancillary"]["package_num_channel"].get<int> ()] = header->counter;
493 push_package (package, (int)BrainFlowPresets::ANCILLARY_PRESET);
494}
495
496double Explore::get_battery_percentage (double battery)
497{

Callers

nothing calls this directly

Calls 1

get_timestampFunction · 0.85

Tested by

no test coverage detected