From 1279d36b1b261203076e034f65b68ad344d68250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Fri, 8 Nov 2024 23:00:46 +0100 Subject: [PATCH 01/20] typo fix --- src/board_controller/board.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/board_controller/board.cpp b/src/board_controller/board.cpp index fd67ad832..58bd3867c 100644 --- a/src/board_controller/board.cpp +++ b/src/board_controller/board.cpp @@ -467,7 +467,7 @@ int Board::get_board_data (int data_count, int preset, double *data_buf) if (dbs.find (preset) == dbs.end ()) { safe_logger (spdlog::level::err, - "stream is not startted or no preset: {} found for this board", preset); + "stream is not started or no preset: {} found for this board", preset); return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR; } if (!dbs[preset]) From e0076dddc11d1f2175b05f78b35ad9ea392b96cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Fri, 8 Nov 2024 23:01:16 +0100 Subject: [PATCH 02/20] added impedance_mode bool to ant neuro board class --- src/board_controller/ant_neuro/ant_neuro.cpp | 29 +++++++++++++++++++ .../ant_neuro/inc/ant_neuro.h | 1 + 2 files changed, 30 insertions(+) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 34293eb56..41ac45b7c 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -293,6 +293,7 @@ int AntNeuroBoard::config_board (std::string config, std::string &response) std::string prefix = "sampling_rate:"; std::string rv_prefix = "reference_range:"; std::string bv_prefix = "bipolar_range:"; + std::string mode_prefix = "impedance_mode:"; if (config.find (prefix) != std::string::npos) { @@ -391,6 +392,34 @@ int AntNeuroBoard::config_board (std::string config, std::string &response) return (int)BrainFlowExitCodes::STATUS_OK; } + else if (config.find(mode_prefix) != std::string::npos) + { + bool new_impedance_mode; + std::string value = config.substr(mode_prefix.size()); + + if (value == "0" || value == "1") + { + try + { + new_impedance_mode = static_cast(std::stod(value)); + } + catch (...) + { + safe_logger (spdlog::level::err, "format is '{}value'", mode_prefix.c_str ()); + return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR; + } + + impedance_mode = new_impedance_mode; + return (int)BrainFlowExitCodes::STATUS_OK; + } + else + { + safe_logger (spdlog::level::err, "not supported value provided"); + safe_logger (spdlog::level::debug, "supported values: '0' or '1'"); + return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR; + } + } + safe_logger (spdlog::level::err, "format is '{}value'", prefix.c_str ()); return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR; } diff --git a/src/board_controller/ant_neuro/inc/ant_neuro.h b/src/board_controller/ant_neuro/inc/ant_neuro.h index 873511318..895e386e1 100644 --- a/src/board_controller/ant_neuro/inc/ant_neuro.h +++ b/src/board_controller/ant_neuro/inc/ant_neuro.h @@ -28,6 +28,7 @@ class AntNeuroBoard : public Board int sampling_rate; double reference_range; double bipolar_range; + bool impedance_mode; void read_thread (); #endif From a6c1b5e1b0ce9164855bcf5673af3cd60b2cc168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Sat, 9 Nov 2024 00:13:56 +0100 Subject: [PATCH 03/20] updated start_stream to get eeg or impedance data depending on mode --- src/board_controller/ant_neuro/ant_neuro.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 41ac45b7c..95407d3e2 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -143,10 +143,18 @@ int AntNeuroBoard::start_stream (int buffer_size, const char *streamer_params) try { - safe_logger (spdlog::level::info, - "sampling rate: {}, reference range: {}, bipolar range: {}", sampling_rate, - reference_range, bipolar_range); - stream = amp->OpenEegStream (sampling_rate, reference_range, bipolar_range); + if (impedance_mode) { + safe_logger (spdlog::level::info, + "start impedance stream"); + stream = amp->OpenImpedanceStream(); + } + else + { + safe_logger (spdlog::level::info, + "sampling rate: {}, reference range: {}, bipolar range: {}", sampling_rate, + reference_range, bipolar_range); + stream = amp->OpenEegStream (sampling_rate, reference_range, bipolar_range); + } } catch (const std::runtime_error &e) { From 2328d8e09bc97cbfc517d84c2a422abd3529f117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Mon, 23 Dec 2024 15:50:26 +0100 Subject: [PATCH 04/20] reduced amount of impedance read events --- src/board_controller/ant_neuro/ant_neuro.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 95407d3e2..fe6a62fa6 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -280,6 +280,9 @@ void AntNeuroBoard::read_thread () push_package (package); } std::this_thread::sleep_for (std::chrono::milliseconds (1)); + if (impedance_mode) { + std::this_thread::sleep_for (std::chrono::milliseconds (500)); // some more sleep; twice every second should be more than enough + } } catch (...) { From ddeb876cfc06111270eb8ba3ce920255b73f7a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Mon, 23 Dec 2024 15:55:17 +0100 Subject: [PATCH 05/20] added example with 8 channel ant amplifier --- .../examples/tests/eego_impedances_and_eeg.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 python_package/examples/tests/eego_impedances_and_eeg.py diff --git a/python_package/examples/tests/eego_impedances_and_eeg.py b/python_package/examples/tests/eego_impedances_and_eeg.py new file mode 100644 index 000000000..7adf7b7d1 --- /dev/null +++ b/python_package/examples/tests/eego_impedances_and_eeg.py @@ -0,0 +1,29 @@ +import time + +from brainflow.board_shim import BoardShim, BrainFlowInputParams, BoardIds + +if __name__ == '__main__': + params = BrainFlowInputParams() + board = BoardShim(BoardIds.ANT_NEURO_EE_410_BOARD, params) # 8 channel amplifier + board.prepare_session() + + # Get impedance data + board.config_board('impedance_mode:1') + board.start_stream() + for i in range(5): + time.sleep(1) + data = board.get_board_data() # get all data and remove it from internal buffer + print(f'{data.shape[0]} channels x {data.shape[1]} samples') + board.stop_stream() + + # Get EEG data + board.config_board('impedance_mode:0') + board.start_stream() + for i in range(3): + time.sleep(1) + data = board.get_board_data() # get all data and remove it from internal buffer + print(f'{data.shape[0]} channels x {data.shape[1]} samples') + board.stop_stream() + + board.release_session() + From f382334f48359e4c4d843538b1afa8a52a407f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Mon, 23 Dec 2024 15:55:49 +0100 Subject: [PATCH 06/20] updated comment --- src/board_controller/ant_neuro/ant_neuro.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index fe6a62fa6..5d39a9e7c 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -281,7 +281,9 @@ void AntNeuroBoard::read_thread () } std::this_thread::sleep_for (std::chrono::milliseconds (1)); if (impedance_mode) { - std::this_thread::sleep_for (std::chrono::milliseconds (500)); // some more sleep; twice every second should be more than enough + // some more sleep; twice every second should be more than enough + // if left out, it yields impedances at around 64 Hz + std::this_thread::sleep_for (std::chrono::milliseconds (500)); } } catch (...) From 91cf2aee4b4817dab5e84f3da5c635d0fc4bbdd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Mon, 23 Dec 2024 16:16:00 +0100 Subject: [PATCH 07/20] updated docs to contain ANT neuro example --- docs/SupportedBoards.rst | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/SupportedBoards.rst b/docs/SupportedBoards.rst index b5696add3..7dfda43e0 100644 --- a/docs/SupportedBoards.rst +++ b/docs/SupportedBoards.rst @@ -1026,12 +1026,20 @@ Ant Neuro has many devices and all of them are supported by BrainFlow: - :code:`ANT_NEURO_EE_225_BOARD` - :code:`ANT_NEURO_EE_511_BOARD` -Initialization Example: +Initialization and EEG reading example: .. code-block:: python params = BrainFlowInputParams() - board = BoardShim(BoardIds.ANT_NEURO_EE_410_BOARD, params) + board = BoardShim(BoardIds.ANT_NEURO_EE_410_BOARD, params) # 8 channel amplifier + board.prepare_session() + board.start_stream() + for i in range(3): + time.sleep(1) + data = board.get_board_data() # get all data and remove it from internal buffer + print(f'{data.shape[0]} channels x {data.shape[1]} samples') + board.stop_stream() + board.release_session() Supported platforms: @@ -1040,7 +1048,10 @@ Supported platforms: Available commands: +- Set impedance mode: :code:`board.config_board("impedance_mode:1")`, mode 0 or 1. - Set sampling rate: :code:`board.config_board("sampling_rate:500")`, for available values check docs from Ant Neuro. +- Set reference range: :code:`board.config_board("reference_range:1.0")`, for available values check docs from Ant Neuro. +- Set bipolar range: :code:`board.config_board("bipolar_range:2.5")`, for available values check docs from Ant Neuro. For more information about Ant Neuro boards please refer to their User Manual. From d0c92f28e91ccda4cc03508f9f14e840fef879be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Mon, 23 Dec 2024 16:35:27 +0100 Subject: [PATCH 08/20] set default impedance mode to false --- src/board_controller/ant_neuro/ant_neuro.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 5d39a9e7c..ba78177aa 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -94,6 +94,7 @@ int AntNeuroBoard::prepare_session () fact->getVersion ().major, fact->getVersion ().minor, fact->getVersion ().micro, fact->getVersion ().build); amp = fact->getAmplifier (); + impedance_mode = false; reference_range = amp->getReferenceRangesAvailable ()[0]; bipolar_range = amp->getBipolarRangesAvailable ()[0]; if (sampling_rate < 0) From 37b84bac938024065ae80420a6e43ad125a074fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Mon, 23 Dec 2024 16:40:14 +0100 Subject: [PATCH 09/20] updated formatting --- src/board_controller/ant_neuro/ant_neuro.cpp | 21 ++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index ba78177aa..eace3b75d 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -144,10 +144,10 @@ int AntNeuroBoard::start_stream (int buffer_size, const char *streamer_params) try { - if (impedance_mode) { - safe_logger (spdlog::level::info, - "start impedance stream"); - stream = amp->OpenImpedanceStream(); + if (impedance_mode) + { + safe_logger (spdlog::level::info, "start impedance stream"); + stream = amp->OpenImpedanceStream (); } else { @@ -281,9 +281,10 @@ void AntNeuroBoard::read_thread () push_package (package); } std::this_thread::sleep_for (std::chrono::milliseconds (1)); - if (impedance_mode) { - // some more sleep; twice every second should be more than enough - // if left out, it yields impedances at around 64 Hz + if (impedance_mode) + { + // some more sleep; twice every second should be more than enough + // if left out, it yields impedances at around 64 Hz std::this_thread::sleep_for (std::chrono::milliseconds (500)); } } @@ -406,16 +407,16 @@ int AntNeuroBoard::config_board (std::string config, std::string &response) return (int)BrainFlowExitCodes::STATUS_OK; } - else if (config.find(mode_prefix) != std::string::npos) + else if (config.find (mode_prefix) != std::string::npos) { bool new_impedance_mode; - std::string value = config.substr(mode_prefix.size()); + std::string value = config.substr (mode_prefix.size ()); if (value == "0" || value == "1") { try { - new_impedance_mode = static_cast(std::stod(value)); + new_impedance_mode = static_cast (std::stod (value)); } catch (...) { From bc5309760891a655e4fd40d3e33cab7055dbb9b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Tue, 24 Dec 2024 12:11:11 +0100 Subject: [PATCH 10/20] corrected formatting --- src/board_controller/ant_neuro/ant_neuro.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index eace3b75d..3aae17fd5 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -144,7 +144,7 @@ int AntNeuroBoard::start_stream (int buffer_size, const char *streamer_params) try { - if (impedance_mode) + if (impedance_mode) { safe_logger (spdlog::level::info, "start impedance stream"); stream = amp->OpenImpedanceStream (); @@ -281,7 +281,7 @@ void AntNeuroBoard::read_thread () push_package (package); } std::this_thread::sleep_for (std::chrono::milliseconds (1)); - if (impedance_mode) + if (impedance_mode) { // some more sleep; twice every second should be more than enough // if left out, it yields impedances at around 64 Hz From df0560759d4629d4c4af2825d81d299d35d371d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Fri, 3 Jan 2025 16:07:21 +0100 Subject: [PATCH 11/20] chose different amplifier in python example (eego8) --- python_package/examples/tests/eego_impedances_and_eeg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_package/examples/tests/eego_impedances_and_eeg.py b/python_package/examples/tests/eego_impedances_and_eeg.py index 7adf7b7d1..fd921fa0b 100644 --- a/python_package/examples/tests/eego_impedances_and_eeg.py +++ b/python_package/examples/tests/eego_impedances_and_eeg.py @@ -4,7 +4,7 @@ if __name__ == '__main__': params = BrainFlowInputParams() - board = BoardShim(BoardIds.ANT_NEURO_EE_410_BOARD, params) # 8 channel amplifier + board = BoardShim(BoardIds.ANT_NEURO_EE_411_BOARD, params) # 8 channel amplifier board.prepare_session() # Get impedance data From 434bc543aaa4f1cdbd4cbbc31e69425615a55b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Fri, 3 Jan 2025 16:07:37 +0100 Subject: [PATCH 12/20] added resistance_channels to ANT boards --- src/board_controller/ant_neuro/ant_neuro.cpp | 50 +++++--- src/board_controller/brainflow_boards.cpp | 128 ++++++++++--------- 2 files changed, 99 insertions(+), 79 deletions(-) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 3aae17fd5..36911bbb8 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -61,14 +61,7 @@ AntNeuroBoard::AntNeuroBoard (int board_id, struct BrainFlowInputParams params) fact = NULL; amp = NULL; stream = NULL; - try - { - sampling_rate = board_descr["default"]["sampling_rate"]; - } - catch (...) - { - sampling_rate = -1.0; - } + sampling_rate = -1.0; reference_range = -1.0; bipolar_range = -1.0; } @@ -97,10 +90,7 @@ int AntNeuroBoard::prepare_session () impedance_mode = false; reference_range = amp->getReferenceRangesAvailable ()[0]; bipolar_range = amp->getBipolarRangesAvailable ()[0]; - if (sampling_rate < 0) - { - sampling_rate = amp->getSamplingRatesAvailable ()[0]; - } + sampling_rate = amp->getSamplingRatesAvailable ()[0]; } catch (const exceptions::notFound &e) { @@ -152,7 +142,7 @@ int AntNeuroBoard::start_stream (int buffer_size, const char *streamer_params) else { safe_logger (spdlog::level::info, - "sampling rate: {}, reference range: {}, bipolar range: {}", sampling_rate, + "start eeg stream (sampling rate: {}, reference range: {}, bipolar range: {})", sampling_rate, reference_range, bipolar_range); stream = amp->OpenEegStream (sampling_rate, reference_range, bipolar_range); } @@ -226,6 +216,7 @@ void AntNeuroBoard::read_thread () } std::vector emg_channels; std::vector eeg_channels; + std::vector resistance_channels; try { emg_channels = board_descr["default"]["emg_channels"].get> (); @@ -242,6 +233,14 @@ void AntNeuroBoard::read_thread () { safe_logger (spdlog::level::trace, "device has no eeg channels"); } + try + { + resistance_channels = board_descr["default"]["resistance_channels"].get> (); + } + catch (...) + { + safe_logger (spdlog::level::trace, "device has no resistance_channels channels"); + } std::vector ant_channels = stream->getChannelList (); while (keep_alive) @@ -254,17 +253,26 @@ void AntNeuroBoard::read_thread () { int eeg_counter = 0; int emg_counter = 0; + int resistance_counter = 0; for (int j = 0; j < buf_channels_len; j++) { if ((ant_channels[j].getType () == channel::reference) && (eeg_counter < (int)eeg_channels.size ())) { package[eeg_channels[eeg_counter++]] = buf.getSample (j, i); + if (impedance_mode) + { + resistance_counter++; + } } if ((ant_channels[j].getType () == channel::bipolar) && (emg_counter < (int)emg_channels.size ())) { package[emg_channels[emg_counter++]] = buf.getSample (j, i); + if (impedance_mode) + { + resistance_counter++; + } } if (ant_channels[j].getType () == channel::sample_counter) { @@ -276,17 +284,21 @@ void AntNeuroBoard::read_thread () package[board_descr["default"]["other_channels"][0].get ()] = buf.getSample (j, i); } + if ((ant_channels[j].getType () == channel::impedance_reference) && + (resistance_counter < (int)resistance_channels.size ())) + { + package[resistance_channels[resistance_counter++]] = buf.getSample (j, i); + } + if ((ant_channels[j].getType () == channel::impedance_ground) && + (resistance_counter < (int)resistance_channels.size ())) + { + package[resistance_channels[resistance_counter++]] = buf.getSample (j, i); + } } package[board_descr["default"]["timestamp_channel"].get ()] = get_timestamp (); push_package (package); } std::this_thread::sleep_for (std::chrono::milliseconds (1)); - if (impedance_mode) - { - // some more sleep; twice every second should be more than enough - // if left out, it yields impedances at around 64 Hz - std::this_thread::sleep_for (std::chrono::milliseconds (500)); - } } catch (...) { diff --git a/src/board_controller/brainflow_boards.cpp b/src/board_controller/brainflow_boards.cpp index 884e2efb5..cecc2250c 100644 --- a/src/board_controller/brainflow_boards.cpp +++ b/src/board_controller/brainflow_boards.cpp @@ -485,153 +485,161 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["24"]["default"] = { {"name", "AntNeuroEE410"}, - {"sampling_rate", 2000}, {"timestamp_channel", 10}, {"marker_channel", 11}, - {"package_num_channel", 0}, + {"package_num_channel", 9}, {"num_rows", 12}, - {"emg_channels", {1, 2, 3, 4, 5, 6, 7, 8}}, - {"other_channels", {9}} + {"emg_channels", {0, 1, 2, 3, 4, 5, 6, 7}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + {"other_channels", {8}} }; brainflow_boards_json["boards"]["25"]["default"] = { {"name", "AntNeuroEE411"}, - {"sampling_rate", 2000}, {"timestamp_channel", 10}, {"marker_channel", 11}, - {"package_num_channel", 0}, + {"package_num_channel", 9}, {"num_rows", 12}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8}}, - {"other_channels", {9}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + {"other_channels", {8}} }; brainflow_boards_json["boards"]["26"]["default"] = { {"name", "AntNeuroEE430"}, - {"sampling_rate", 512}, {"timestamp_channel", 10}, {"marker_channel", 11}, - {"package_num_channel", 0}, + {"package_num_channel", 9}, {"num_rows", 12}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8}}, - {"other_channels", {9}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + {"other_channels", {8}} }; brainflow_boards_json["boards"]["27"]["default"] = { {"name", "AntNeuroEE211"}, - {"sampling_rate", 2000}, {"timestamp_channel", 66}, {"marker_channel", 67}, - {"package_num_channel", 0}, + {"package_num_channel", 65}, {"num_rows", 68}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, - {"other_channels", {65}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65}}, + {"other_channels", {64}} }; brainflow_boards_json["boards"]["28"]["default"] = { {"name", "AntNeuroEE212"}, - {"sampling_rate", 2000}, {"timestamp_channel", 34}, {"marker_channel", 35}, - {"package_num_channel", 0}, + {"package_num_channel", 33}, {"num_rows", 36}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, - {"other_channels", {33}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}}, + {"other_channels", {32}} }; brainflow_boards_json["boards"]["29"]["default"] = { {"name", "AntNeuroEE213"}, - {"sampling_rate", 2000}, {"timestamp_channel", 18}, {"marker_channel", 19}, - {"package_num_channel", 0}, + {"package_num_channel", 17}, {"num_rows", 20}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}, - {"other_channels", {17}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}}, + {"other_channels", {16}} }; brainflow_boards_json["boards"]["30"]["default"] = { {"name", "AntNeuroEE214"}, - {"sampling_rate", 2000}, {"timestamp_channel", 58}, {"marker_channel", 59}, - {"package_num_channel", 0}, + {"package_num_channel", 57}, {"num_rows", 60}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, - {"emg_channels", {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56}}, - {"other_channels", {57}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, + {"emg_channels", {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55}}, + {"other_channels", {56}} }; brainflow_boards_json["boards"]["31"]["default"] = { {"name", "AntNeuroEE215"}, - {"sampling_rate", 2000}, {"timestamp_channel", 90}, {"marker_channel", 91}, - {"package_num_channel", 0}, + {"package_num_channel", 89}, {"num_rows", 92}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, - {"emg_channels", {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88}}, - {"other_channels", {89}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, + {"emg_channels", {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89}}, + {"other_channels", {88}} }; brainflow_boards_json["boards"]["32"]["default"] = { {"name", "AntNeuroEE221"}, - {"sampling_rate", 16000}, {"timestamp_channel", 18}, {"marker_channel", 19}, - {"package_num_channel", 0}, + {"package_num_channel", 17}, {"num_rows", 20}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}, - {"other_channels", {17}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}}, + {"other_channels", {16}} }; brainflow_boards_json["boards"]["33"]["default"] = { {"name", "AntNeuroEE222"}, - {"sampling_rate", 16000}, {"timestamp_channel", 34}, {"marker_channel", 35}, - {"package_num_channel", 0}, + {"package_num_channel", 33}, {"num_rows", 36}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, - {"other_channels", {33}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}}, + {"other_channels", {32}} }; brainflow_boards_json["boards"]["34"]["default"] = { {"name", "AntNeuroEE223"}, - {"sampling_rate", 16000}, {"timestamp_channel", 58}, {"marker_channel", 59}, - {"package_num_channel", 0}, + {"package_num_channel", 57}, {"num_rows", 60}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, - {"emg_channels", {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56}}, - {"other_channels", {57}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, + {"emg_channels", {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57}}, + {"other_channels", {56}} }; brainflow_boards_json["boards"]["35"]["default"] = { {"name", "AntNeuroEE224"}, - {"sampling_rate", 16000}, {"timestamp_channel", 66}, {"marker_channel", 67}, - {"package_num_channel", 0}, + {"package_num_channel", 65}, {"num_rows", 68}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, - {"other_channels", {65}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65}}, + {"other_channels", {64}} }; brainflow_boards_json["boards"]["36"]["default"] = { {"name", "AntNeuroEE225"}, - {"sampling_rate", 16000}, {"timestamp_channel", 90}, {"marker_channel", 91}, - {"package_num_channel", 0}, + {"package_num_channel", 89}, {"num_rows", 92}, - {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, - {"emg_channels", {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88}}, - {"other_channels", {89}} + {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, + {"emg_channels", {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87}}, + {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89}}, + {"other_channels", {88}} }; brainflow_boards_json["boards"]["37"]["default"] = { From 1663374771f6aa3cfe18c9e7629b00736acd2948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Fri, 3 Jan 2025 16:11:45 +0100 Subject: [PATCH 13/20] updated docs --- docs/SupportedBoards.rst | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/SupportedBoards.rst b/docs/SupportedBoards.rst index 7dfda43e0..89b97ca1c 100644 --- a/docs/SupportedBoards.rst +++ b/docs/SupportedBoards.rst @@ -1026,20 +1026,14 @@ Ant Neuro has many devices and all of them are supported by BrainFlow: - :code:`ANT_NEURO_EE_225_BOARD` - :code:`ANT_NEURO_EE_511_BOARD` -Initialization and EEG reading example: +Initialization example: .. code-block:: python params = BrainFlowInputParams() board = BoardShim(BoardIds.ANT_NEURO_EE_410_BOARD, params) # 8 channel amplifier - board.prepare_session() - board.start_stream() - for i in range(3): - time.sleep(1) - data = board.get_board_data() # get all data and remove it from internal buffer - print(f'{data.shape[0]} channels x {data.shape[1]} samples') - board.stop_stream() - board.release_session() + +`More elaborate example `_ (reading EEG and impedances) Supported platforms: From 14c7db0a476a35d0fbd7c0f4204a3a5fbd501d62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Fri, 3 Jan 2025 16:16:34 +0100 Subject: [PATCH 14/20] added sleep again between impedance measurements --- src/board_controller/ant_neuro/ant_neuro.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 36911bbb8..2e2f60cff 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -299,6 +299,12 @@ void AntNeuroBoard::read_thread () push_package (package); } std::this_thread::sleep_for (std::chrono::milliseconds (1)); + if (impedance_mode) + { + // some more sleep; twice every second should be more than enough + // if left out, it yields impedances at around 64 Hz + std::this_thread::sleep_for (std::chrono::milliseconds (500)); + } } catch (...) { From 584195e9bfdec709cbcce22d209ebe5cd909e5a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Thu, 9 Jan 2025 17:09:11 +0100 Subject: [PATCH 15/20] added default sampling rates again --- src/board_controller/brainflow_boards.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/board_controller/brainflow_boards.cpp b/src/board_controller/brainflow_boards.cpp index cecc2250c..a30f99e0c 100644 --- a/src/board_controller/brainflow_boards.cpp +++ b/src/board_controller/brainflow_boards.cpp @@ -485,6 +485,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["24"]["default"] = { {"name", "AntNeuroEE410"}, + {"sampling_rate", 2000}, {"timestamp_channel", 10}, {"marker_channel", 11}, {"package_num_channel", 9}, @@ -496,6 +497,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["25"]["default"] = { {"name", "AntNeuroEE411"}, + {"sampling_rate", 2000}, {"timestamp_channel", 10}, {"marker_channel", 11}, {"package_num_channel", 9}, @@ -507,6 +509,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["26"]["default"] = { {"name", "AntNeuroEE430"}, + {"sampling_rate", 512}, {"timestamp_channel", 10}, {"marker_channel", 11}, {"package_num_channel", 9}, @@ -518,6 +521,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["27"]["default"] = { {"name", "AntNeuroEE211"}, + {"sampling_rate", 2000}, {"timestamp_channel", 66}, {"marker_channel", 67}, {"package_num_channel", 65}, @@ -531,6 +535,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["28"]["default"] = { {"name", "AntNeuroEE212"}, + {"sampling_rate", 2000}, {"timestamp_channel", 34}, {"marker_channel", 35}, {"package_num_channel", 33}, @@ -542,6 +547,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["29"]["default"] = { {"name", "AntNeuroEE213"}, + {"sampling_rate", 2000}, {"timestamp_channel", 18}, {"marker_channel", 19}, {"package_num_channel", 17}, @@ -553,6 +559,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["30"]["default"] = { {"name", "AntNeuroEE214"}, + {"sampling_rate", 2000}, {"timestamp_channel", 58}, {"marker_channel", 59}, {"package_num_channel", 57}, @@ -566,6 +573,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["31"]["default"] = { {"name", "AntNeuroEE215"}, + {"sampling_rate", 2000}, {"timestamp_channel", 90}, {"marker_channel", 91}, {"package_num_channel", 89}, @@ -581,6 +589,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["32"]["default"] = { {"name", "AntNeuroEE221"}, + {"sampling_rate", 16000}, {"timestamp_channel", 18}, {"marker_channel", 19}, {"package_num_channel", 17}, @@ -592,6 +601,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["33"]["default"] = { {"name", "AntNeuroEE222"}, + {"sampling_rate", 16000}, {"timestamp_channel", 34}, {"marker_channel", 35}, {"package_num_channel", 33}, @@ -603,6 +613,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["34"]["default"] = { {"name", "AntNeuroEE223"}, + {"sampling_rate", 16000}, {"timestamp_channel", 58}, {"marker_channel", 59}, {"package_num_channel", 57}, @@ -616,6 +627,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["35"]["default"] = { {"name", "AntNeuroEE224"}, + {"sampling_rate", 16000}, {"timestamp_channel", 66}, {"marker_channel", 67}, {"package_num_channel", 65}, @@ -629,6 +641,7 @@ BrainFlowBoards::BrainFlowBoards() brainflow_boards_json["boards"]["36"]["default"] = { {"name", "AntNeuroEE225"}, + {"sampling_rate", 16000}, {"timestamp_channel", 90}, {"marker_channel", 91}, {"package_num_channel", 89}, From c6c771f7d96a8de9adf3ad479fa6257b7264fc0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Thu, 9 Jan 2025 17:11:49 +0100 Subject: [PATCH 16/20] added default sampling rate again to ant_neuro.cpp --- src/board_controller/ant_neuro/ant_neuro.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 2e2f60cff..abb9a232a 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -61,7 +61,14 @@ AntNeuroBoard::AntNeuroBoard (int board_id, struct BrainFlowInputParams params) fact = NULL; amp = NULL; stream = NULL; + try + { + sampling_rate = board_descr["default"]["sampling_rate"]; + } + catch (...) + { sampling_rate = -1.0; + } reference_range = -1.0; bipolar_range = -1.0; } @@ -90,8 +97,11 @@ int AntNeuroBoard::prepare_session () impedance_mode = false; reference_range = amp->getReferenceRangesAvailable ()[0]; bipolar_range = amp->getBipolarRangesAvailable ()[0]; + if (sampling_rate < 0) + { sampling_rate = amp->getSamplingRatesAvailable ()[0]; } + } catch (const exceptions::notFound &e) { safe_logger (spdlog::level::err, "No devices found, {}", e.what ()); From 8fa60239939cd558f8f7601f3382594bb8b6b7b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Thu, 9 Jan 2025 17:29:52 +0100 Subject: [PATCH 17/20] rearranged channels for ant devices --- src/board_controller/brainflow_boards.cpp | 210 +++++++++++----------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/src/board_controller/brainflow_boards.cpp b/src/board_controller/brainflow_boards.cpp index a30f99e0c..0ba7f1450 100644 --- a/src/board_controller/brainflow_boards.cpp +++ b/src/board_controller/brainflow_boards.cpp @@ -486,173 +486,173 @@ BrainFlowBoards::BrainFlowBoards() { {"name", "AntNeuroEE410"}, {"sampling_rate", 2000}, - {"timestamp_channel", 10}, - {"marker_channel", 11}, - {"package_num_channel", 9}, - {"num_rows", 12}, - {"emg_channels", {0, 1, 2, 3, 4, 5, 6, 7}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - {"other_channels", {8}} + {"timestamp_channel", 12}, + {"marker_channel", 13}, + {"package_num_channel", 0}, + {"num_rows", 14}, + {"emg_channels", {1, 2, 3, 4, 5, 6, 7, 8}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}, + {"other_channels", {11}} }; brainflow_boards_json["boards"]["25"]["default"] = { {"name", "AntNeuroEE411"}, {"sampling_rate", 2000}, - {"timestamp_channel", 10}, - {"marker_channel", 11}, - {"package_num_channel", 9}, - {"num_rows", 12}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - {"other_channels", {8}} + {"timestamp_channel", 12}, + {"marker_channel", 13}, + {"package_num_channel", 0}, + {"num_rows", 14}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}, + {"other_channels", {11}} }; brainflow_boards_json["boards"]["26"]["default"] = { {"name", "AntNeuroEE430"}, {"sampling_rate", 512}, - {"timestamp_channel", 10}, - {"marker_channel", 11}, - {"package_num_channel", 9}, - {"num_rows", 12}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - {"other_channels", {8}} + {"timestamp_channel", 12}, + {"marker_channel", 13}, + {"package_num_channel", 0}, + {"num_rows", 14}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}, + {"other_channels", {11}} }; brainflow_boards_json["boards"]["27"]["default"] = { {"name", "AntNeuroEE211"}, {"sampling_rate", 2000}, - {"timestamp_channel", 66}, - {"marker_channel", 67}, - {"package_num_channel", 65}, - {"num_rows", 68}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65}}, - {"other_channels", {64}} + {"timestamp_channel", 68}, + {"marker_channel", 69}, + {"package_num_channel", 0}, + {"num_rows", 70}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66}}, + {"other_channels", {67}} }; brainflow_boards_json["boards"]["28"]["default"] = { {"name", "AntNeuroEE212"}, {"sampling_rate", 2000}, - {"timestamp_channel", 34}, - {"marker_channel", 35}, - {"package_num_channel", 33}, - {"num_rows", 36}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}}, - {"other_channels", {32}} + {"timestamp_channel", 36}, + {"marker_channel", 37}, + {"package_num_channel", 0}, + {"num_rows", 38}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34}}, + {"other_channels", {35}} }; brainflow_boards_json["boards"]["29"]["default"] = { {"name", "AntNeuroEE213"}, {"sampling_rate", 2000}, - {"timestamp_channel", 18}, - {"marker_channel", 19}, - {"package_num_channel", 17}, - {"num_rows", 20}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}}, - {"other_channels", {16}} + {"timestamp_channel", 20}, + {"marker_channel", 21}, + {"package_num_channel", 0}, + {"num_rows", 22}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}}, + {"other_channels", {19}} }; brainflow_boards_json["boards"]["30"]["default"] = { {"name", "AntNeuroEE214"}, {"sampling_rate", 2000}, - {"timestamp_channel", 58}, - {"marker_channel", 59}, - {"package_num_channel", 57}, - {"num_rows", 60}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, - {"emg_channels", {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55}}, - {"other_channels", {56}} + {"timestamp_channel", 60}, + {"marker_channel", 61}, + {"package_num_channel", 0}, + {"num_rows", 62}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, + {"emg_channels", {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58}}, + {"other_channels", {59}} }; brainflow_boards_json["boards"]["31"]["default"] = { {"name", "AntNeuroEE215"}, {"sampling_rate", 2000}, - {"timestamp_channel", 90}, - {"marker_channel", 91}, - {"package_num_channel", 89}, - {"num_rows", 92}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, - {"emg_channels", {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + {"timestamp_channel", 92}, + {"marker_channel", 93}, + {"package_num_channel", 0}, + {"num_rows", 94}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, + {"emg_channels", {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89}}, - {"other_channels", {88}} + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90}}, + {"other_channels", {91}} }; brainflow_boards_json["boards"]["32"]["default"] = { {"name", "AntNeuroEE221"}, {"sampling_rate", 16000}, - {"timestamp_channel", 18}, - {"marker_channel", 19}, - {"package_num_channel", 17}, - {"num_rows", 20}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}}, - {"other_channels", {16}} + {"timestamp_channel", 20}, + {"marker_channel", 21}, + {"package_num_channel", 0}, + {"num_rows", 22}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}}, + {"other_channels", {19}} }; brainflow_boards_json["boards"]["33"]["default"] = { {"name", "AntNeuroEE222"}, {"sampling_rate", 16000}, - {"timestamp_channel", 34}, - {"marker_channel", 35}, - {"package_num_channel", 33}, - {"num_rows", 36}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}}, - {"other_channels", {32}} + {"timestamp_channel", 36}, + {"marker_channel", 37}, + {"package_num_channel", 0}, + {"num_rows", 38}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34}}, + {"other_channels", {35}} }; brainflow_boards_json["boards"]["34"]["default"] = { {"name", "AntNeuroEE223"}, {"sampling_rate", 16000}, - {"timestamp_channel", 58}, - {"marker_channel", 59}, - {"package_num_channel", 57}, - {"num_rows", 60}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}}, - {"emg_channels", {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57}}, - {"other_channels", {56}} + {"timestamp_channel", 60}, + {"marker_channel", 61}, + {"package_num_channel", 0}, + {"num_rows", 62}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, + {"emg_channels", {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58}}, + {"other_channels", {59}} }; brainflow_boards_json["boards"]["35"]["default"] = { {"name", "AntNeuroEE224"}, {"sampling_rate", 16000}, - {"timestamp_channel", 66}, - {"marker_channel", 67}, - {"package_num_channel", 65}, - {"num_rows", 68}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65}}, - {"other_channels", {64}} + {"timestamp_channel", 68}, + {"marker_channel", 69}, + {"package_num_channel", 0}, + {"num_rows", 70}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66}}, + {"other_channels", {67}} }; brainflow_boards_json["boards"]["36"]["default"] = { {"name", "AntNeuroEE225"}, {"sampling_rate", 16000}, - {"timestamp_channel", 90}, - {"marker_channel", 91}, - {"package_num_channel", 89}, - {"num_rows", 92}, - {"eeg_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}}, - {"emg_channels", {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87}}, - {"resistance_channels", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + {"timestamp_channel", 92}, + {"marker_channel", 93}, + {"package_num_channel", 0}, + {"num_rows", 94}, + {"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}, + {"emg_channels", {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88}}, + {"resistance_channels", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89}}, - {"other_channels", {88}} + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90}}, + {"other_channels", {91}} }; brainflow_boards_json["boards"]["37"]["default"] = { From 97c53cafa432af8e7819330c6c6a2d2253ad2dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Dieudonn=C3=A9?= Date: Thu, 9 Jan 2025 17:31:14 +0100 Subject: [PATCH 18/20] added manual impedance package number for ANT (and updated formatting) --- src/board_controller/ant_neuro/ant_neuro.cpp | 23 +++++++++++++------ .../ant_neuro/inc/ant_neuro.h | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index abb9a232a..16e4a7cf7 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -67,10 +67,12 @@ AntNeuroBoard::AntNeuroBoard (int board_id, struct BrainFlowInputParams params) } catch (...) { - sampling_rate = -1.0; + sampling_rate = -1.0; } reference_range = -1.0; bipolar_range = -1.0; + impedance_mode = false; + impedance_package_num = -1; } AntNeuroBoard::~AntNeuroBoard () @@ -94,13 +96,14 @@ int AntNeuroBoard::prepare_session () fact->getVersion ().major, fact->getVersion ().minor, fact->getVersion ().micro, fact->getVersion ().build); amp = fact->getAmplifier (); - impedance_mode = false; reference_range = amp->getReferenceRangesAvailable ()[0]; bipolar_range = amp->getBipolarRangesAvailable ()[0]; if (sampling_rate < 0) { - sampling_rate = amp->getSamplingRatesAvailable ()[0]; - } + sampling_rate = amp->getSamplingRatesAvailable ()[0]; + } + impedance_mode = false; + impedance_package_num = 0; } catch (const exceptions::notFound &e) { @@ -152,8 +155,8 @@ int AntNeuroBoard::start_stream (int buffer_size, const char *streamer_params) else { safe_logger (spdlog::level::info, - "start eeg stream (sampling rate: {}, reference range: {}, bipolar range: {})", sampling_rate, - reference_range, bipolar_range); + "start eeg stream (sampling rate: {}, reference range: {}, bipolar range: {})", + sampling_rate, reference_range, bipolar_range); stream = amp->OpenEegStream (sampling_rate, reference_range, bipolar_range); } } @@ -245,7 +248,8 @@ void AntNeuroBoard::read_thread () } try { - resistance_channels = board_descr["default"]["resistance_channels"].get> (); + resistance_channels = + board_descr["default"]["resistance_channels"].get> (); } catch (...) { @@ -306,6 +310,11 @@ void AntNeuroBoard::read_thread () } } package[board_descr["default"]["timestamp_channel"].get ()] = get_timestamp (); + if (impedance_mode) + { + package[board_descr["default"]["package_num_channel"].get ()] = + impedance_package_num++; + } push_package (package); } std::this_thread::sleep_for (std::chrono::milliseconds (1)); diff --git a/src/board_controller/ant_neuro/inc/ant_neuro.h b/src/board_controller/ant_neuro/inc/ant_neuro.h index 895e386e1..2a0f85492 100644 --- a/src/board_controller/ant_neuro/inc/ant_neuro.h +++ b/src/board_controller/ant_neuro/inc/ant_neuro.h @@ -29,6 +29,7 @@ class AntNeuroBoard : public Board double reference_range; double bipolar_range; bool impedance_mode; + int impedance_package_num; void read_thread (); #endif From f43919f736906506bbb31e0be6f00a730e23a17b Mon Sep 17 00:00:00 2001 From: Andrey Parfenov Date: Sun, 12 Jan 2025 21:59:22 +0100 Subject: [PATCH 19/20] fixing ci Signed-off-by: Andrey Parfenov --- .github/workflows/run_android.yml | 2 +- src/board_controller/ant_neuro/ant_neuro.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run_android.yml b/.github/workflows/run_android.yml index 5e71369c8..5181196c0 100644 --- a/.github/workflows/run_android.yml +++ b/.github/workflows/run_android.yml @@ -64,7 +64,7 @@ jobs: cd $GITHUB_WORKSPACE/tools zip -r jniLibs.zip jniLibs - name: Install AWS CLI - run: sudo -H python3 -m pip install awscli==1.21.10 + run: sudo -H python3 -m pip install awscli==1.35.24 - name: Upload To AWS if: ${{ github.event_name == 'push' && github.repository == 'brainflow-dev/brainflow' }} run: | diff --git a/src/board_controller/ant_neuro/ant_neuro.cpp b/src/board_controller/ant_neuro/ant_neuro.cpp index 16e4a7cf7..e49ed3a38 100644 --- a/src/board_controller/ant_neuro/ant_neuro.cpp +++ b/src/board_controller/ant_neuro/ant_neuro.cpp @@ -155,7 +155,7 @@ int AntNeuroBoard::start_stream (int buffer_size, const char *streamer_params) else { safe_logger (spdlog::level::info, - "start eeg stream (sampling rate: {}, reference range: {}, bipolar range: {})", + "start eeg stream (sampling rate: {}, reference range: {}, bipolar range: {})", sampling_rate, reference_range, bipolar_range); stream = amp->OpenEegStream (sampling_rate, reference_range, bipolar_range); } @@ -248,7 +248,7 @@ void AntNeuroBoard::read_thread () } try { - resistance_channels = + resistance_channels = board_descr["default"]["resistance_channels"].get> (); } catch (...) @@ -312,7 +312,7 @@ void AntNeuroBoard::read_thread () package[board_descr["default"]["timestamp_channel"].get ()] = get_timestamp (); if (impedance_mode) { - package[board_descr["default"]["package_num_channel"].get ()] = + package[board_descr["default"]["package_num_channel"].get ()] = impedance_package_num++; } push_package (package); From 1b29a6510a10570dd3eb2f2201e49199f0105e5d Mon Sep 17 00:00:00 2001 From: Andrey Parfenov Date: Sun, 12 Jan 2025 23:04:53 +0100 Subject: [PATCH 20/20] fixing ci Signed-off-by: Andrey Parfenov --- .github/workflows/cppcheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index 3d47ec469..0b7850f5f 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -15,7 +15,7 @@ jobs: env: DEBIAN_FRONTEND: noninteractive - name: Run Cppcheck - run: cppcheck --std=c++11 -ithird_party/spdlog -ithird_party/libsvm -ithird_party/SimpleBLE -ithird_party/fmt -ithird_party/SimpleDBus -ithird_party/SimpleBluez -ithird_party/kissfft -isrc/utils/os_serial_ioctl.cpp --error-exitcode=1 --xml --xml-version=2 --force src cpp_package third_party 2>cppcheck_res.xml + run: cppcheck --std=c++11 -ithird_party/wavelib -ithird_party/spdlog -ithird_party/libsvm -ithird_party/SimpleBLE -ithird_party/fmt -ithird_party/SimpleDBus -ithird_party/SimpleBluez -ithird_party/kissfft -isrc/utils/os_serial_ioctl.cpp --error-exitcode=1 --xml --xml-version=2 --force src cpp_package third_party 2>cppcheck_res.xml - name: Generate Report if: ${{ failure() }} run: cppcheck-htmlreport --title=BrainFlow --file=cppcheck_res.xml --report-dir=report