Skip to content

Commit 37a64fe

Browse files
committed
Copy AntNeuroEdxLib to package outputs and install it
1 parent ee7d056 commit 37a64fe

31 files changed

Lines changed: 3006 additions & 29 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ option (BUILD_OYMOTION_SDK "BUILD_OYMOTION_SDK" OFF)
2424
option (BUILD_SYNCHRONI_SDK "BUILD_SYNCHRONI_SDK" ON)
2525
option (BUILD_BLUETOOTH "BUILD_BLUETOOTH" OFF)
2626
option (BUILD_BLE "BUILD_BLE" OFF)
27+
option (BUILD_ANT_EDX "BUILD_ANT_EDX" OFF)
2728
option (BUILD_ONNX "BUILD_ONNX" OFF)
2829
option (BUILD_TESTS "BUILD_TESTS" OFF)
2930
option (BUILD_PERIPHERY "BUILD_PERIPHERY" OFF)
@@ -76,4 +77,4 @@ install (
7677
EXPORT ${TARGETS_EXPORT_NAME}
7778
NAMESPACE brainflow::
7879
DESTINATION ${CONFIG_INSTALL_DIR}
79-
)
80+
)

cpp_package/src/board_shim.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,4 +602,4 @@ std::string BoardShim::get_version ()
602602
std::string verion_str (version, string_len);
603603

604604
return verion_str;
605-
}
605+
}

csharp_package/brainflow/brainflow/board_controller_library.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Runtime.InteropServices;
1+
using System.Runtime.InteropServices;
22

33

44
namespace brainflow
@@ -122,7 +122,21 @@ public enum BoardIds
122122
OB3000_24_CHANNELS_BOARD = 63,
123123
BIOLISTENER_BOARD = 64,
124124
IRONBCI_32_BOARD = 65,
125-
NEUROPAWN_KNIGHT_BOARD_IMU = 66
125+
NEUROPAWN_KNIGHT_BOARD_IMU = 66,
126+
ANT_NEURO_EE_410_EDX_BOARD = 67,
127+
ANT_NEURO_EE_411_EDX_BOARD = 68,
128+
ANT_NEURO_EE_430_EDX_BOARD = 69,
129+
ANT_NEURO_EE_211_EDX_BOARD = 70,
130+
ANT_NEURO_EE_212_EDX_BOARD = 71,
131+
ANT_NEURO_EE_213_EDX_BOARD = 72,
132+
ANT_NEURO_EE_214_EDX_BOARD = 73,
133+
ANT_NEURO_EE_215_EDX_BOARD = 74,
134+
ANT_NEURO_EE_221_EDX_BOARD = 75,
135+
ANT_NEURO_EE_222_EDX_BOARD = 76,
136+
ANT_NEURO_EE_223_EDX_BOARD = 77,
137+
ANT_NEURO_EE_224_EDX_BOARD = 78,
138+
ANT_NEURO_EE_225_EDX_BOARD = 79,
139+
ANT_NEURO_EE_511_EDX_BOARD = 80
126140
};
127141

128142

@@ -874,3 +888,4 @@ public static int release_all_sessions ()
874888
}
875889
}
876890
}
891+

csharp_package/brainflow/brainflow/board_shim.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.IO;
33
using System.Runtime.Serialization.Json;
44
using System.Text;
@@ -987,3 +987,4 @@ public int get_board_data_count (int preset = (int)BrainFlowPresets.DEFAULT_PRES
987987
}
988988
}
989989
}
990+

docs/BuildBrainFlow.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ Windows
193193
~~~~~~~~
194194

195195
- Install CMake>=3.16 you can install it from PYPI via pip or from `CMake website <https://cmake.org/>`_
196-
- Install Visual Studio 2019(preferred) or Visual Studio 2017. Other versions may work but not tested
197-
- In VS installer make sure you selected "Visual C++ ATL support"
196+
- Install Visual Studio with C++ build tools
197+
- In Visual Studio installer make sure you selected "Visual C++ ATL support"
198198
- Build it as a standard CMake project, you don't need to set any options
199199

200200
.. compound::
@@ -208,6 +208,8 @@ Windows
208208
# to get info about args and configure your build you can run
209209
python build.py --help
210210

211+
To build with ANT Neuro EDX support, pass ``-DBUILD_ANT_EDX=ON`` to CMake.
212+
gRPC and protobuf development libraries must be available (e.g. via vcpkg or system packages).
211213

212214
Linux
213215
~~~~~~

docs/SupportedBoards.rst

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,93 @@ Available commands:
11481148

11491149
For more information about Ant Neuro boards please refer to their User Manual.
11501150

1151+
Ant Neuro EDX
1152+
~~~~~~~~~~~~~~
1153+
1154+
EDX is a transport board that exposes ANT Neuro amplifiers through an external gRPC service.
1155+
1156+
Use board id:
1157+
1158+
- explicit self-describing EDX ids for known amplifiers:
1159+
1160+
- :code:`BoardIds.ANT_NEURO_EE_410_EDX_BOARD`
1161+
- :code:`BoardIds.ANT_NEURO_EE_411_EDX_BOARD`
1162+
- :code:`BoardIds.ANT_NEURO_EE_430_EDX_BOARD`
1163+
- :code:`BoardIds.ANT_NEURO_EE_211_EDX_BOARD`
1164+
- :code:`BoardIds.ANT_NEURO_EE_212_EDX_BOARD`
1165+
- :code:`BoardIds.ANT_NEURO_EE_213_EDX_BOARD`
1166+
- :code:`BoardIds.ANT_NEURO_EE_214_EDX_BOARD`
1167+
- :code:`BoardIds.ANT_NEURO_EE_215_EDX_BOARD`
1168+
- :code:`BoardIds.ANT_NEURO_EE_221_EDX_BOARD`
1169+
- :code:`BoardIds.ANT_NEURO_EE_222_EDX_BOARD`
1170+
- :code:`BoardIds.ANT_NEURO_EE_223_EDX_BOARD`
1171+
- :code:`BoardIds.ANT_NEURO_EE_224_EDX_BOARD`
1172+
- :code:`BoardIds.ANT_NEURO_EE_225_EDX_BOARD`
1173+
- :code:`BoardIds.ANT_NEURO_EE_511_EDX_BOARD`
1174+
1175+
Use one of the explicit EDX ids when you know the amplifier model.
1176+
1177+
Required BrainFlowInputParams fields:
1178+
1179+
- :code:`ip_address`, EDX service host (for example :code:`localhost`)
1180+
- :code:`ip_port`, EDX service port (for example :code:`3390`)
1181+
1182+
Optional fields:
1183+
1184+
- :code:`timeout`, timeout for discovery and session operations, default is 15 sec
1185+
1186+
Important notes:
1187+
1188+
- Available sampling rates and signal ranges are discovered from the amplifier at runtime via :code:`board.config_board("edx:get_capabilities")`.
1189+
1190+
Available commands:
1191+
1192+
- Get runtime capabilities: :code:`board.config_board("edx:get_capabilities")`
1193+
- Set sampling rate: :code:`board.config_board("sampling_rate:500")`
1194+
- Set reference range: :code:`board.config_board("reference_range:0.15")`
1195+
- Set bipolar range: :code:`board.config_board("bipolar_range:2.5")`
1196+
- Set impedance mode: :code:`board.config_board("impedance_mode:1")`, mode 0 or 1
1197+
1198+
Example (Python):
1199+
1200+
.. code-block:: python
1201+
1202+
params = BrainFlowInputParams()
1203+
params.ip_address = "localhost"
1204+
params.ip_port = 3390
1205+
board = BoardShim(BoardIds.ANT_NEURO_EE_511_EDX_BOARD, params)
1206+
board.prepare_session()
1207+
print(board.config_board("edx:get_capabilities"))
1208+
board.config_board("sampling_rate:500")
1209+
board.config_board("reference_range:0.15")
1210+
board.config_board("bipolar_range:2.5")
1211+
board.start_stream()
1212+
1213+
Example (C++):
1214+
1215+
.. code-block:: cpp
1216+
1217+
BrainFlowInputParams params;
1218+
params.ip_address = "localhost";
1219+
params.ip_port = 3390;
1220+
BoardShim board ((int)BoardIds::ANT_NEURO_EE_511_EDX_BOARD, params);
1221+
board.prepare_session ();
1222+
std::string caps = board.config_board ("edx:get_capabilities");
1223+
board.config_board ("sampling_rate:500");
1224+
board.config_board ("reference_range:0.15");
1225+
board.config_board ("bipolar_range:2.5");
1226+
board.start_stream ();
1227+
1228+
Example (Rust):
1229+
1230+
.. code-block:: rust
1231+
1232+
let params = BrainFlowInputParamsBuilder::default()
1233+
.ip_address("localhost")
1234+
.ip_port(3390)
1235+
.build();
1236+
let board = BoardShim::new(BoardIds::AntNeuroEe511EdxBoard, params)?;
1237+
11511238
Enophone
11521239
---------
11531240

@@ -1560,4 +1647,4 @@ Supported platforms:
15601647
- Windows
15611648
- Linux
15621649
- MacOS
1563-
- Devices like Raspberry Pi
1650+
- Devices like Raspberry Pi

java_package/brainflow/src/main/java/brainflow/BoardIds.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,21 @@ public enum BoardIds
7272
OB3000_24_CHANNELS_BOARD(63),
7373
BIOLISTENER_BOARD(64),
7474
IRONBCI_32_BOARD(65),
75-
NEUROPAWN_KNIGHT_BOARD_IMU(66);
75+
NEUROPAWN_KNIGHT_BOARD_IMU(66),
76+
ANT_NEURO_EE_410_EDX_BOARD(67),
77+
ANT_NEURO_EE_411_EDX_BOARD(68),
78+
ANT_NEURO_EE_430_EDX_BOARD(69),
79+
ANT_NEURO_EE_211_EDX_BOARD(70),
80+
ANT_NEURO_EE_212_EDX_BOARD(71),
81+
ANT_NEURO_EE_213_EDX_BOARD(72),
82+
ANT_NEURO_EE_214_EDX_BOARD(73),
83+
ANT_NEURO_EE_215_EDX_BOARD(74),
84+
ANT_NEURO_EE_221_EDX_BOARD(75),
85+
ANT_NEURO_EE_222_EDX_BOARD(76),
86+
ANT_NEURO_EE_223_EDX_BOARD(77),
87+
ANT_NEURO_EE_224_EDX_BOARD(78),
88+
ANT_NEURO_EE_225_EDX_BOARD(79),
89+
ANT_NEURO_EE_511_EDX_BOARD(80);
7690

7791
private final int board_id;
7892
private static final Map<Integer, BoardIds> bi_map = new HashMap<Integer, BoardIds> ();
@@ -106,3 +120,4 @@ public static BoardIds from_code (final int code)
106120
}
107121
}
108122
}
123+

java_package/brainflow/src/main/java/brainflow/BoardShim.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
@SuppressWarnings ("deprecation")
1919
public class BoardShim
2020
{
21-
2221
private interface DllInterface extends Library
2322
{
2423
int prepare_session (int board_id, String params);
@@ -1303,7 +1302,8 @@ public BoardShim (int board_id, BrainFlowInputParams params)
13031302
{
13041303
if (params.get_master_board () == BoardIds.NO_BOARD.get_code ())
13051304
{
1306-
throw new BrainFlowError ("need to set master board attribute in BrainFlowInputParams",
1305+
throw new BrainFlowError (
1306+
"need to set master board attribute in BrainFlowInputParams",
13071307
BrainFlowExitCode.INVALID_ARGUMENTS_ERROR.get_code ());
13081308
} else
13091309
{
@@ -1328,7 +1328,8 @@ public BoardShim (BoardIds board_id, BrainFlowInputParams params)
13281328
{
13291329
if (params.get_master_board () == BoardIds.NO_BOARD.get_code ())
13301330
{
1331-
throw new BrainFlowError ("need to set master board attribute in BrainFlowInputParams",
1331+
throw new BrainFlowError (
1332+
"need to set master board attribute in BrainFlowInputParams",
13321333
BrainFlowExitCode.INVALID_ARGUMENTS_ERROR.get_code ());
13331334
} else
13341335
{
@@ -1640,3 +1641,4 @@ public double[][] get_board_data (int num_datapoints) throws BrainFlowError
16401641
return get_board_data (num_datapoints, BrainFlowPresets.DEFAULT_PRESET);
16411642
}
16421643
}
1644+

julia_package/brainflow/src/board_shim.jl

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@ export BrainFlowInputParams
6868
BIOLISTENER_BOARD = 64
6969
IRONBCI_32_BOARD = 65
7070
NEUROPAWN_KNIGHT_BOARD_IMU = 66
71+
ANT_NEURO_EE_410_EDX_BOARD = 67
72+
ANT_NEURO_EE_411_EDX_BOARD = 68
73+
ANT_NEURO_EE_430_EDX_BOARD = 69
74+
ANT_NEURO_EE_211_EDX_BOARD = 70
75+
ANT_NEURO_EE_212_EDX_BOARD = 71
76+
ANT_NEURO_EE_213_EDX_BOARD = 72
77+
ANT_NEURO_EE_214_EDX_BOARD = 73
78+
ANT_NEURO_EE_215_EDX_BOARD = 74
79+
ANT_NEURO_EE_221_EDX_BOARD = 75
80+
ANT_NEURO_EE_222_EDX_BOARD = 76
81+
ANT_NEURO_EE_223_EDX_BOARD = 77
82+
ANT_NEURO_EE_224_EDX_BOARD = 78
83+
ANT_NEURO_EE_225_EDX_BOARD = 79
84+
ANT_NEURO_EE_511_EDX_BOARD = 80
7185

7286
end
7387

@@ -229,7 +243,11 @@ struct BoardShim
229243

230244
function BoardShim(id::Integer, params::BrainFlowInputParams)
231245
master_id = id
232-
if id == Integer(STREAMING_BOARD) || id == Integer(PLAYBACK_FILE_BOARD)
246+
if (id == Integer(STREAMING_BOARD) || id == Integer(PLAYBACK_FILE_BOARD))
247+
if Integer(params.master_board) == Integer(NO_BOARD)
248+
throw(BrainFlowError("master board id is required for streaming or playback boards",
249+
Integer(INVALID_ARGUMENTS_ERROR)))
250+
end
233251
master_id = Integer(params.master_board)
234252
end
235253
new(master_id, id, JSON.json(params))
@@ -335,4 +353,5 @@ end
335353
num_samples, Int32(preset), val, data_size, board_shim.board_id, board_shim.input_json)
336354
value = transpose(reshape(val[1:data_size[1] * num_rows], (data_size[1], num_rows)))
337355
return value
338-
end
356+
end
357+

matlab_package/brainflow/BoardIds.m

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,19 @@
6666
BIOLISTENER_BOARD(64)
6767
IRONBCI_32_BOARD(65)
6868
NEUROPAWN_KNIGHT_BOARD_IMU(66)
69+
ANT_NEURO_EE_410_EDX_BOARD(67)
70+
ANT_NEURO_EE_411_EDX_BOARD(68)
71+
ANT_NEURO_EE_430_EDX_BOARD(69)
72+
ANT_NEURO_EE_211_EDX_BOARD(70)
73+
ANT_NEURO_EE_212_EDX_BOARD(71)
74+
ANT_NEURO_EE_213_EDX_BOARD(72)
75+
ANT_NEURO_EE_214_EDX_BOARD(73)
76+
ANT_NEURO_EE_215_EDX_BOARD(74)
77+
ANT_NEURO_EE_221_EDX_BOARD(75)
78+
ANT_NEURO_EE_222_EDX_BOARD(76)
79+
ANT_NEURO_EE_223_EDX_BOARD(77)
80+
ANT_NEURO_EE_224_EDX_BOARD(78)
81+
ANT_NEURO_EE_225_EDX_BOARD(79)
82+
ANT_NEURO_EE_511_EDX_BOARD(80)
6983
end
70-
end
84+
end

0 commit comments

Comments
 (0)