Skip to content

Commit 9f069c7

Browse files
authored
add support for multiple internal buffers (#510)
* add multiple buffers Signed-off-by: Andrey Parfenov <[email protected]>
1 parent 06a015e commit 9f069c7

File tree

161 files changed

+5541
-2602
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

161 files changed

+5541
-2602
lines changed

.github/workflows/clang_format.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ jobs:
99
steps:
1010
- uses: actions/checkout@v2
1111
- name: Run clang-format
12-
uses: DoozyX/clang-format-lint-action@v0.11
12+
uses: DoozyX/clang-format-lint-action@v0.13
1313
with:
1414
source: 'src'
1515
exclude: './third_party'
1616
extensions: 'h,cpp,c'
17-
clangFormatVersion: 11
17+
clangFormatVersion: 12.0.1
1818
inplace: False

.github/workflows/run_unix.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ jobs:
145145
env:
146146
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
147147
- name: Synthetic Python
148-
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -1 --streamer-params file://$GITHUB_WORKSPACE/test.csv:w
148+
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -1
149+
- name: Synthetic Python Multiple Buffers
150+
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/multiple_buffers.py
149151
- name: Synthetic Cpp
150152
run: $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id -1
151153
env:
@@ -175,9 +177,9 @@ jobs:
175177
env:
176178
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
177179
- name: Streaming Python
178-
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --other-info -1
180+
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
179181
- name: Streaming Python Markers
180-
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --other-info -1
182+
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
181183
- name: Denoising Python
182184
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/denoising.py
183185
- name: Serialization Python

.github/workflows/run_windows.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,6 @@ jobs:
145145
- name: Cyton Windows Python Test Commands
146146
run: python %GITHUB_WORKSPACE%\emulator\brainflow_emulator\cyton_windows.py python %GITHUB_WORKSPACE%\python_package\examples\tests\cyton_commands.py --serial-port
147147
shell: cmd
148-
- name: Cyton Windows Python Test with Streamer
149-
run: python %GITHUB_WORKSPACE%\emulator\brainflow_emulator\cyton_windows.py python %GITHUB_WORKSPACE%\python_package\examples\tests\brainflow_get_data.py --board-id 0 --streamer-params file://file_streamer.csv:w --serial-port
150-
shell: cmd
151148
- name: Cyton Multiboard Windows Python Test
152149
run: python %GITHUB_WORKSPACE%\emulator\brainflow_emulator\cyton_windows.py python %GITHUB_WORKSPACE%\python_package\examples\tests\brainflow_multiboard_get_data.py --board-id 0 --serial-port
153150
shell: cmd
@@ -170,9 +167,6 @@ jobs:
170167
cd %GITHUB_WORKSPACE%\rust_package\brainflow
171168
cargo run --example=markers
172169
shell: cmd
173-
- name: Synthetic Windows Python Test with Streamer
174-
run: python %GITHUB_WORKSPACE%\python_package\examples\tests\brainflow_get_data.py --board-id -1 --streamer-params file://file_streamer.csv:w
175-
shell: cmd
176170
- name: Synthetic Windows Cpp Test
177171
run: .\cpp_package\examples\get_data\build\Release\brainflow_get_data.exe --board-id -1
178172
shell: cmd
@@ -184,9 +178,6 @@ jobs:
184178
- name: Cyton Daisy Windows Python Test
185179
run: python %GITHUB_WORKSPACE%\emulator\brainflow_emulator\cyton_windows.py python %GITHUB_WORKSPACE%\python_package\examples\tests\brainflow_get_data.py --board-id 2 --serial-port
186180
shell: cmd
187-
- name: Cyton Daisy Windows Python Test with Streamer
188-
run: python %GITHUB_WORKSPACE%\emulator\brainflow_emulator\cyton_windows.py python %GITHUB_WORKSPACE%\python_package\examples\tests\brainflow_get_data.py --board-id 2 --streamer-params file://file_streamer.csv:w --serial-port
189-
shell: cmd
190181
- name: Cyton Daisy Multiboard Windows Python Test
191182
run: python %GITHUB_WORKSPACE%\emulator\brainflow_emulator\cyton_windows.py python %GITHUB_WORKSPACE%\python_package\examples\tests\brainflow_multiboard_get_data.py --board-id 2 --serial-port
192183
shell: cmd

.github/workflows/valgrind.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ jobs:
102102
env:
103103
LD_LIBRARY_PATH: $GITHUB_WORKSPACE/installed/lib
104104
- name: Streaming Cpp
105-
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py valgrind --error-exitcode=1 --track-origins=yes --leak-check=full $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --other-info -1
105+
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py valgrind --error-exitcode=1 --track-origins=yes --leak-check=full $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
106106
- name: Cyton Cpp Markers
107107
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py valgrind --error-exitcode=1 --track-origins=yes --leak-check=full $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/markers --board-id 0 --serial-port
108108
- name: Synthetic Cpp
@@ -114,7 +114,7 @@ jobs:
114114
env:
115115
LD_LIBRARY_PATH: $GITHUB_WORKSPACE/installed/lib
116116
- name: Streaming Cpp Markers
117-
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py valgrind --error-exitcode=1 --track-origins=yes --leak-check=full $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/markers --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --other-info -1
117+
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py valgrind --error-exitcode=1 --track-origins=yes --leak-check=full $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/markers --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
118118
- name: Denoising Cpp
119119
run: valgrind --error-exitcode=1 --track-origins=yes --leak-check=full $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/denoising
120120
env:

cpp_package/build.cmake

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@ else (CMAKE_SIZEOF_VOID_P EQUAL 8)
1010
endif (APPLE)
1111
endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
1212

13-
add_library (
14-
${BRAINFLOW_CPP_BINDING_NAME} STATIC
13+
SET (CPP_BINDING_SRC
1514
${CMAKE_HOME_DIRECTORY}/cpp_package/src/board_shim.cpp
1615
${CMAKE_HOME_DIRECTORY}/cpp_package/src/ml_model.cpp
1716
${CMAKE_HOME_DIRECTORY}/cpp_package/src/data_filter.cpp
1817
)
1918

19+
add_library (
20+
${BRAINFLOW_CPP_BINDING_NAME} STATIC ${CPP_BINDING_SRC}
21+
)
22+
2023
target_include_directories (
2124
${BRAINFLOW_CPP_BINDING_NAME} PRIVATE
2225
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc

cpp_package/examples/get_data/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,23 @@ target_link_libraries (
105105
${MLModulePath}
106106
${DataHandlerPath}
107107
${BoardControllerPath}
108+
)
109+
110+
add_executable (
111+
get_data_muse
112+
src/get_data_muse.cpp
113+
)
114+
115+
target_include_directories (
116+
get_data_muse PUBLIC
117+
${brainflow_INCLUDE_DIRS}
118+
)
119+
120+
target_link_libraries (
121+
get_data_muse PUBLIC
122+
# for some systems(ubuntu for example) order matters
123+
${BrainflowPath}
124+
${MLModulePath}
125+
${DataHandlerPath}
126+
${BoardControllerPath}
108127
)

cpp_package/examples/get_data/src/brainflow_get_data.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ int main (int argc, char *argv[])
1919
{
2020
BoardShim::enable_dev_board_logger ();
2121

22+
BoardShim::get_board_presets (-1);
2223
struct BrainFlowInputParams params;
2324
int board_id = 0;
2425
if (!parse_args (argc, argv, &params, &board_id))
@@ -196,6 +197,32 @@ bool parse_args (int argc, char *argv[], struct BrainFlowInputParams *params, in
196197
return false;
197198
}
198199
}
200+
if (std::string (argv[i]) == std::string ("--master-board"))
201+
{
202+
if (i + 1 < argc)
203+
{
204+
i++;
205+
params->master_board = std::stoi (std::string (argv[i]));
206+
}
207+
else
208+
{
209+
std::cerr << "missed argument" << std::endl;
210+
return false;
211+
}
212+
}
213+
if (std::string (argv[i]) == std::string ("--preset"))
214+
{
215+
if (i + 1 < argc)
216+
{
217+
i++;
218+
params->preset = std::stoi (std::string (argv[i]));
219+
}
220+
else
221+
{
222+
std::cerr << "missed argument" << std::endl;
223+
return false;
224+
}
225+
}
199226
}
200227
if (!board_id_found)
201228
{
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include <iostream>
2+
#include <stdlib.h>
3+
#include <string>
4+
5+
#ifdef _WIN32
6+
#include <windows.h>
7+
#else
8+
#include <unistd.h>
9+
#endif
10+
11+
#include "board_shim.h"
12+
#include "data_filter.h"
13+
#include "ml_model.h"
14+
15+
using namespace std;
16+
17+
18+
int main (int argc, char *argv[])
19+
{
20+
BoardShim::enable_dev_board_logger ();
21+
22+
struct BrainFlowInputParams params;
23+
int board_id = (int)BoardIds::MUSE_S_BOARD;
24+
int res = 0;
25+
26+
BoardShim *board = new BoardShim (board_id, params);
27+
28+
try
29+
{
30+
board->prepare_session ();
31+
board->config_board ("p61");
32+
board->add_streamer ("file://streamer_default.csv:w");
33+
board->add_streamer ("file://streamer_aux.csv:w", (int)BrainFlowPresets::AUXILIARY_PRESET);
34+
board->add_streamer ("file://streamer_anc.csv:w", (int)BrainFlowPresets::ANCILLARY_PRESET);
35+
board->start_stream ();
36+
37+
#ifdef _WIN32
38+
Sleep (10000);
39+
#else
40+
sleep (10);
41+
#endif
42+
board->stop_stream ();
43+
board->release_session ();
44+
}
45+
catch (const BrainFlowException &err)
46+
{
47+
BoardShim::log_message ((int)LogLevels::LEVEL_ERROR, err.what ());
48+
res = err.exit_code;
49+
if (board->is_prepared ())
50+
{
51+
board->release_session ();
52+
}
53+
}
54+
55+
delete board;
56+
57+
return res;
58+
}

cpp_package/examples/get_data/src/get_data_twice.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414

1515
using namespace std;
1616

17-
bool parse_args (int argc, char *argv[], struct BrainFlowInputParams *params, int *board_id);
18-
1917

2018
int main (int argc, char *argv[])
2119
{
@@ -33,7 +31,9 @@ int main (int argc, char *argv[])
3331
try
3432
{
3533
board->prepare_session ();
34+
board->add_streamer ("file://streamer_default.csv:w");
3635
board->start_stream ();
36+
board->add_streamer ("file://streamer_aux.csv:w", (int)BrainFlowPresets::AUXILIARY_PRESET);
3737

3838
#ifdef _WIN32
3939
Sleep (5000);

cpp_package/examples/get_data/src/markers.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,32 @@ bool parse_args (int argc, char *argv[], struct BrainFlowInputParams *params, in
200200
return false;
201201
}
202202
}
203+
if (std::string (argv[i]) == std::string ("--master-board"))
204+
{
205+
if (i + 1 < argc)
206+
{
207+
i++;
208+
params->master_board = std::stoi (std::string (argv[i]));
209+
}
210+
else
211+
{
212+
std::cerr << "missed argument" << std::endl;
213+
return false;
214+
}
215+
}
216+
if (std::string (argv[i]) == std::string ("--preset"))
217+
{
218+
if (i + 1 < argc)
219+
{
220+
i++;
221+
params->preset = std::stoi (std::string (argv[i]));
222+
}
223+
else
224+
{
225+
std::cerr << "missed argument" << std::endl;
226+
return false;
227+
}
228+
}
203229
}
204230
if (!board_id_found)
205231
{

cpp_package/examples/signal_processing/src/downsampling.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ int main (int argc, char *argv[])
3838
#endif
3939

4040
board->stop_stream ();
41-
BrainFlowArray<double, 2> data = board->get_board_data (32);
41+
BrainFlowArray<double, 2> data = board->get_board_data ();
4242
board->release_session ();
4343

4444
double *downsampled_data = NULL;

0 commit comments

Comments
 (0)