Skip to content

Commit 3fa1bd7

Browse files
committed
Merge remote-tracking branch 'openbci/master'
2 parents a292a3a + 4e246c1 commit 3fa1bd7

File tree

28 files changed

+194
-113
lines changed

28 files changed

+194
-113
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ add_library (
239239
target_include_directories (
240240
${BRAINFLOW_CPP_BINDING_NAME} PRIVATE
241241
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc
242+
${CMAKE_HOME_DIRECTORY}/src/utils/inc
242243
${CMAKE_HOME_DIRECTORY}/src/data_handler/inc
243244
${CMAKE_HOME_DIRECTORY}/cpp-package/src/inc
244245
${CMAKE_HOME_DIRECTORY}/third_party/json
@@ -261,6 +262,7 @@ if (MSVC)
261262
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_controller.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_controller.h"
262263
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_info_getter.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_info_getter.h"
263264
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
265+
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/utils/inc/shared_export_matlab.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/shared_export.h"
264266
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${NEUROSDK_LIB_NAME}.dll"
265267
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${NEUROSDK_LIB_NAME}.dll"
266268
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${NEUROSDK_LIB_NAME}.dll"
@@ -274,6 +276,7 @@ if (MSVC)
274276
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
275277
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
276278
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/data_handler/inc/data_handler.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/data_handler.h"
279+
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/utils/inc/shared_export_matlab.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/shared_export.h"
277280
)
278281
endif (MSVC)
279282
if (UNIX)
@@ -284,6 +287,7 @@ if (UNIX)
284287
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/${BOARD_CONTROLLER_COMPILED_NAME}"
285288
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_controller.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_controller.h"
286289
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_info_getter.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_info_getter.h"
290+
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/utils/inc/shared_export_matlab.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/shared_export.h"
287291
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
288292
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${BOARD_CONTROLLER_COMPILED_NAME}"
289293
)
@@ -294,6 +298,7 @@ if (UNIX)
294298
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
295299
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
296300
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/data_handler/inc/data_handler.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/data_handler.h"
301+
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/utils/inc/shared_export_matlab.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/shared_export.h"
297302
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
298303
)
299304
endif (UNIX)
@@ -343,6 +348,7 @@ install (
343348
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h
344349
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_info_getter.h
345350
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_input_params.h
351+
${CMAKE_HOME_DIRECTORY}/src/utils/inc/shared_export.h
346352
${CMAKE_HOME_DIRECTORY}/src/data_handler/inc/data_handler.h
347353
${CMAKE_HOME_DIRECTORY}/cpp-package/src/inc/data_filter.h
348354
${CMAKE_HOME_DIRECTORY}/cpp-package/src/inc/board_shim.h

cpp-package/src/board_shim.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ std::string params_to_string (struct BrainFlowInputParams params)
2323
j["ip_address"] = params.ip_address;
2424
j["mac_address"] = params.mac_address;
2525
j["other_info"] = params.other_info;
26+
j["timeout"] = params.timeout;
2627
std::string post_str = j.dump ();
2728
return post_str;
2829
}

csharp-package/brainflow/brainflow/brainflow_input_params.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public class BrainFlowInputParams
4949
/// </summary>
5050
[DataMember]
5151
public string other_info;
52+
/// <summary>
53+
/// timeout for device discovery or connection
54+
/// </summary>
55+
[DataMember]
56+
public int timeout;
5257

5358
public BrainFlowInputParams ()
5459
{
@@ -58,6 +63,7 @@ public BrainFlowInputParams ()
5863
ip_port = 0;
5964
ip_protocol = (int)IpProtocolType.NONE;
6065
other_info = "";
66+
timeout = 0;
6167
}
6268

6369
public string to_json ()

csharp-package/brainflow/brainflow_get_data/brainflow_get_data.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ static int parse_args (string[] args, BrainFlowInputParams input_params)
6363
{
6464
board_id = Convert.ToInt32 (args[i + 1]);
6565
}
66+
if (args[i].Equals("--timeout"))
67+
{
68+
input_params.timeout = Convert.ToInt32(args[i + 1]);
69+
}
6670
}
6771
return board_id;
6872
}

docs/BuildBrainFlow.rst

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,14 @@ You are able to download jar files directly from `release page <https://github.c
6262
Matlab
6363
--------
6464

65-
To use Matlab binding you HAVE to build core module first.
66-
After compilation of core module you will be able to open brainflow/matlab-package/brainflow folder in Matlab IDE, add examples folder to Matlab's path and run them.
65+
Steps to setup Matlab binding for BrainFlow:
6766

68-
Compilation of Core module and C++ binding
67+
- Compile Core Module, using instructions below
68+
- Open Matlab IDE and open brainflow/matlab-package/brainflow folder there
69+
- Add folders lib and inc to Matlab path
70+
- If you want to run Matlab scripts from folders different than brainflow/matlab-package/brainflow you need to add it to your Matlab path too
71+
72+
Compilation of Core Module and C++ Binding
6973
-------------------------------------------
7074

7175
Windows

docs/SupportedBoards.rst

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ Supported Boards
66
To create an instance of BoardShim class for your board check required inputs in the table below:
77

88
.. csv-table:: Required inputs
9-
:header: "Board", "Board Id", "BrainFlowInputParams.serial_port", "BrainFlowInputParams.mac_address", "BrainFlowInputParams.ip_address", "BrainFlowInputParams.ip_port", "BrainFlowInputParams.ip_protocol", "BrainFlowInputParams.other_info"
9+
:header: "Board", "Board Id", "BrainFlowInputParams.serial_port", "BrainFlowInputParams.mac_address", "BrainFlowInputParams.ip_address", "BrainFlowInputParams.ip_port", "BrainFlowInputParams.ip_protocol", "BrainFlowInputParams.other_info", "BrainFlowInputParams.timeout"
1010

11-
"Streaming Board", "BoardIds.STREAMING_BOARD (-2)", "-", "-", "multicast IP address", "port", "-", "Board Id of master board"
12-
"Synthetic Board", "BoardIds.SYNTHETIC_BOARD (-1)", "-", "-", "-", "-", "-", "-"
13-
"Cyton", "BoardIds.CYTON_BOARD (0)", "dongle serial port(COM3, /dev/ttyUSB0, /dev/cu.usbserial-xxxxxx...)", "-", "-", "-", "-", "-"
14-
"Ganglion", "BoardIds.GANGLION_BOARD (1)", "dongle serial port(COM3, /dev/ttyUSB0...)", "Optional: Ganglion's MAC address", "-", "-", "-", "-"
15-
"Cyton Daisy", "BoardIds.CYTON_DAISY_BOARD (2)", "dongle serial port(COM3, /dev/ttyUSB0, /dev/cu.usbserial-xxxxxx...)", "-", "-", "-", "-", "-"
16-
"Ganglion Wifi", "BoardIds.GANGLION_WIFI_BOARD (4)", "-", "-", "Wifi Shield IP(default 192.168.4.1)", "any local port which is free", "-", "-"
17-
"Cyton Wifi", "BoardIds.CYTON_WIFI_BOARD (5)", "-", "-", "Wifi Shield IP(default 192.168.4.1)", "any local port which is free", "-", "-"
18-
"Cyton Daisy Wifi", "BoardIds.CYTON_DAISY_WIFI_BOARD (6)", "-", "-", "Wifi Shield IP(default 192.168.4.1)", "any local port which is free", "-", "-"
19-
"BrainBit", "BoardIds.BRAINBIT_BOARD (7)", "-", "-", "-", "-", "-", "Serial Number of BrainBit device"
11+
"Streaming Board", "BoardIds.STREAMING_BOARD (-2)", "-", "-", "multicast IP address", "port", "-", "Board Id of master board", "-"
12+
"Synthetic Board", "BoardIds.SYNTHETIC_BOARD (-1)", "-", "-", "-", "-", "-", "-", "-"
13+
"Cyton", "BoardIds.CYTON_BOARD (0)", "dongle serial port(COM3, /dev/ttyUSB0, /dev/cu.usbserial-xxxxxx...)", "-", "-", "-", "-", "-", "-"
14+
"Ganglion", "BoardIds.GANGLION_BOARD (1)", "dongle serial port(COM3, /dev/ttyUSB0...)", "Optional: Ganglion's MAC address", "-", "-", "-", "-", "Timeout for device discovery(default 15sec)"
15+
"Cyton Daisy", "BoardIds.CYTON_DAISY_BOARD (2)", "dongle serial port(COM3, /dev/ttyUSB0, /dev/cu.usbserial-xxxxxx...)", "-", "-", "-", "-", "-", "-"
16+
"Ganglion Wifi", "BoardIds.GANGLION_WIFI_BOARD (4)", "-", "-", "Wifi Shield IP(default 192.168.4.1)", "any local port which is free", "-", "-", "-"
17+
"Cyton Wifi", "BoardIds.CYTON_WIFI_BOARD (5)", "-", "-", "Wifi Shield IP(default 192.168.4.1)", "any local port which is free", "-", "-", "-"
18+
"Cyton Daisy Wifi", "BoardIds.CYTON_DAISY_WIFI_BOARD (6)", "-", "-", "Wifi Shield IP(default 192.168.4.1)", "any local port which is free", "-", "-", "-"
19+
"BrainBit", "BoardIds.BRAINBIT_BOARD (7)", "-", "-", "-", "-", "-", "Serial Number of BrainBit device", "Timeout for device discovery(default 15sec)"
2020

2121

2222
Streaming Board
@@ -136,6 +136,7 @@ To choose this board in BoardShim constructor please specify:
136136
- board_id: 1
137137
- serial_port field of BrainFlowInputParams structure
138138
- mac_address field of BrainFlowInputParams structure, if its empty BrainFlow will try to autodiscover Ganglion
139+
- optional: timeout field of BrainFlowInputParams structure, default is 15sec
139140

140141
To get Ganglion's MAC address you can use:
141142

@@ -297,6 +298,7 @@ To choose this board in BoardShim constructor please specify:
297298

298299
- board_id: 7
299300
- other_info field of BrainFlowInputParams structure should contain Serial Number of BrainBit device
301+
- optional: timeout field of BrainFlowInputParams structure, default is 15sec
300302

301303
Supported platforms:
302304

docs/UserAPI.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,9 @@ Matlab API Reference
118118
----------------------
119119

120120
Matlab binding calls C\C++ code as any other binding, it's not compatible with Octave. Use our code samples as a reference for Matlab API.
121+
122+
A few general rules to keep in mind:
123+
124+
- Use char arrays instead strings to work with BrainFlow API, it means 'my_string' instead "my_string", otherwise you will get calllib error
125+
- Use int32 values intead enums, it means int32 (BoardIDs.SYNTHETIC_BOARD) instead BoardIDs.SYNTHETIC_BOARD, the same is true for all enums in BrainFlow API
126+

java-package/brainflow/src/main/java/brainflow/BrainFlowInputParams.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class BrainFlowInputParams
1313
public int ip_port;
1414
public int ip_protocol;
1515
public String other_info;
16+
public int timeout;
1617

1718
public BrainFlowInputParams ()
1819
{
@@ -22,6 +23,7 @@ public BrainFlowInputParams ()
2223
ip_port = 0;
2324
ip_protocol = IpProtocolType.NONE.get_code ();
2425
other_info = "";
26+
timeout = 0;
2527
}
2628

2729
public String to_json ()
@@ -88,4 +90,14 @@ public void set_other_info (String other_info)
8890
{
8991
this.other_info = other_info;
9092
}
93+
94+
public void set_timeout (int timeout)
95+
{
96+
this.timeout = timeout;
97+
}
98+
99+
public int get_timeout ()
100+
{
101+
return timeout;
102+
}
91103
}

java-package/brainflow/src/main/java/brainflow/examples/BrainFlowGetData.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ private static int parse_args (String[] args, BrainFlowInputParams params)
6565
{
6666
board_id = Integer.parseInt (args[i + 1]);
6767
}
68+
if (args[i].equals ("--timeout"))
69+
{
70+
params.timeout = Integer.parseInt (args[i + 1]);
71+
}
6872
}
6973
return board_id;
7074
}

matlab-package/brainflow/BoardShim.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@
1010
function lib_name = load_lib ()
1111
if ispc
1212
if not (libisloaded ('BoardController'))
13-
loadlibrary ('./lib/BoardController.dll', './inc/board_controller.h', 'includepath', './inc', 'addheader', 'board_info_getter');
13+
loadlibrary ('BoardController.dll', 'board_controller.h', 'addheader', 'board_info_getter');
1414
end
1515
lib_name = 'BoardController';
1616
elseif ismac
1717
if not (libisloaded ('libBoardController'))
18-
loadlibrary ('./lib/libBoardController.dylib', './inc/board_controller.h', 'includepath', './inc', 'addheader', 'board_info_getter');
18+
loadlibrary ('libBoardController.dylib', 'board_controller.h', 'addheader', 'board_info_getter');
1919
end
2020
lib_name = 'libBoardController';
2121
elseif isunix
2222
if not (libisloaded ('libBoardController'))
23-
loadlibrary ('./liblibBoardController.so', './inc/board_controller.h', 'includepath', './inc', 'addheader', 'board_info_getter');
23+
loadlibrary ('libBoardController.so', 'board_controller.h', 'addheader', 'board_info_getter');
2424
end
2525
lib_name = 'libBoardController';
2626
else

0 commit comments

Comments
 (0)