Skip to content

Commit e0aae5f

Browse files
Address PR brainflow-dev#799 review comments and add ANT Neuro RX-300 EDX board
- Remove EDX=3 from IpProtocolTypes across all 8 language bindings (EDX uses gRPC only, not a generic IP protocol variant) - Restore accidentally removed `using System.Runtime.Serialization.Json;` in board_shim.cs (fixes DataContractJsonSerializer compile error) - Replace verbose EDX build docs with a single brief CMake note; emit FATAL_ERROR with install instructions when gRPC/protobuf not found - Collapse SupportedBoards.rst EDX examples to one per language; remove ip_protocol and master_board references; add RX-300 subsection - Add #else block in board_controller.cpp so EDX board IDs return a clear error when BrainFlow is built without -DBUILD_ANT_EDX=ON - Separate impedance channels into ancillary preset in clone_ant_edx_board; default preset now contains only EEG/streaming channels - Strip params.master_board cross-check from ant_neuro_edx.cpp (no longer used) - Add ANT_NEURO_RX_300_EDX_BOARD (id=81) as a self-contained EDX-only board with direct JSON config (4 EEG + 4 EMG + 17 aux channels, 500 Hz); no hidden legacy master board entry - Make board IDs contiguous: close gap at 67 by shifting EDX series from 68-82 down to 67-81; update LAST sentinel in all bindings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 48a93ff commit e0aae5f

17 files changed

Lines changed: 252 additions & 226 deletions

File tree

csharp_package/brainflow/brainflow/board_controller_library.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ public enum IpProtocolTypes
1818
{
1919
NO_IP_PROTOCOL = 0,
2020
UDP = 1,
21-
TCP = 2,
22-
EDX = 3
21+
TCP = 2
2322
};
2423

2524
public enum BrainFlowPresets
@@ -124,20 +123,21 @@ public enum BoardIds
124123
BIOLISTENER_BOARD = 64,
125124
IRONBCI_32_BOARD = 65,
126125
NEUROPAWN_KNIGHT_BOARD_IMU = 66,
127-
ANT_NEURO_EE_410_EDX_BOARD = 68,
128-
ANT_NEURO_EE_411_EDX_BOARD = 69,
129-
ANT_NEURO_EE_430_EDX_BOARD = 70,
130-
ANT_NEURO_EE_211_EDX_BOARD = 71,
131-
ANT_NEURO_EE_212_EDX_BOARD = 72,
132-
ANT_NEURO_EE_213_EDX_BOARD = 73,
133-
ANT_NEURO_EE_214_EDX_BOARD = 74,
134-
ANT_NEURO_EE_215_EDX_BOARD = 75,
135-
ANT_NEURO_EE_221_EDX_BOARD = 76,
136-
ANT_NEURO_EE_222_EDX_BOARD = 77,
137-
ANT_NEURO_EE_223_EDX_BOARD = 78,
138-
ANT_NEURO_EE_224_EDX_BOARD = 79,
139-
ANT_NEURO_EE_225_EDX_BOARD = 80,
140-
ANT_NEURO_EE_511_EDX_BOARD = 81
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,
140+
ANT_NEURO_RX_300_EDX_BOARD = 81
141141
};
142142

143143

csharp_package/brainflow/brainflow/board_shim.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.IO;
3+
using System.Runtime.Serialization.Json;
34
using System.Text;
45

56
namespace brainflow

docs/BuildBrainFlow.rst

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -208,18 +208,8 @@ Windows
208208
# to get info about args and configure your build you can run
209209
python build.py --help
210210

211-
.. compound::
212-
213-
EDX profile on Windows (gRPC transport) example: ::
214-
215-
# make sure gRPC and protobuf are available in your CMake toolchain,
216-
# for example via vcpkg or another preinstalled toolchain package
217-
218-
mkdir build-edx
219-
cd build-edx
220-
cmake -G "Visual Studio 17 2022" -A x64 -DBUILD_ANT_EDX=ON -DMSVC_RUNTIME=dynamic -DCMAKE_INSTALL_PREFIX=../installed-edx ..
221-
cmake --build . --target install --config Release -j 2 --parallel 2
222-
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).
223213

224214
Linux
225215
~~~~~~
@@ -239,23 +229,6 @@ Linux
239229
# to get info about args and configure your build you can run
240230
python3 build.py --help
241231

242-
.. compound::
243-
244-
EDX profile on Linux example: ::
245-
246-
# install grpc/protobuf development dependencies first
247-
# protobuf-compiler-grpc provides grpc_cpp_plugin used by CMake
248-
sudo apt-get update
249-
sudo apt-get install -y libprotobuf-dev protobuf-compiler libgrpc++-dev protobuf-compiler-grpc
250-
251-
mkdir build-edx
252-
cd build-edx
253-
cmake -DBUILD_ANT_EDX=ON -DBUILD_SYNCHRONI_SDK=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../installed-edx ..
254-
make
255-
make install
256-
257-
For EDX board configuration details, see :ref:`ant-neuro-edx-label`.
258-
259232
MacOS
260233
~~~~~~~
261234

docs/SupportedBoards.rst

Lines changed: 28 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,6 +1171,7 @@ Use board id:
11711171
- :code:`BoardIds.ANT_NEURO_EE_224_EDX_BOARD`
11721172
- :code:`BoardIds.ANT_NEURO_EE_225_EDX_BOARD`
11731173
- :code:`BoardIds.ANT_NEURO_EE_511_EDX_BOARD`
1174+
- :code:`BoardIds.ANT_NEURO_RX_300_EDX_BOARD`
11741175

11751176
Use one of the explicit EDX ids when you know the amplifier model.
11761177

@@ -1181,12 +1182,10 @@ Required BrainFlowInputParams fields:
11811182

11821183
Optional fields:
11831184

1184-
- :code:`ip_protocol`, optional; :code:`IpProtocolTypes.EDX` is accepted for clarity
11851185
- :code:`timeout`, timeout for discovery and session operations, default is 15 sec
11861186

11871187
Important notes:
11881188

1189-
- Explicit EDX ids are self-describing and do not require :code:`master_board`.
11901189
- Available sampling rates and signal ranges are discovered from the amplifier at runtime via :code:`board.config_board("edx:get_capabilities")`.
11911190

11921191
Available commands:
@@ -1197,24 +1196,13 @@ Available commands:
11971196
- Set bipolar range: :code:`board.config_board("bipolar_range:2.5")`
11981197
- Set impedance mode: :code:`board.config_board("impedance_mode:1")`, mode 0 or 1
11991198

1200-
Initialization example (Python):
1199+
Example (Python):
12011200

12021201
.. code-block:: python
12031202
12041203
params = BrainFlowInputParams()
12051204
params.ip_address = "localhost"
12061205
params.ip_port = 3390
1207-
params.ip_protocol = IpProtocolTypes.EDX
1208-
board = BoardShim(BoardIds.ANT_NEURO_EE_511_EDX_BOARD, params)
1209-
1210-
Configuration example (Python):
1211-
1212-
.. code-block:: python
1213-
1214-
params = BrainFlowInputParams()
1215-
params.ip_address = "localhost"
1216-
params.ip_port = 3390
1217-
params.ip_protocol = IpProtocolTypes.EDX
12181206
board = BoardShim(BoardIds.ANT_NEURO_EE_511_EDX_BOARD, params)
12191207
board.prepare_session()
12201208
print(board.config_board("edx:get_capabilities"))
@@ -1223,25 +1211,13 @@ Configuration example (Python):
12231211
board.config_board("bipolar_range:2.5")
12241212
board.start_stream()
12251213
1226-
Initialization example (C++):
1214+
Example (C++):
12271215

12281216
.. code-block:: cpp
12291217
12301218
BrainFlowInputParams params;
12311219
params.ip_address = "localhost";
12321220
params.ip_port = 3390;
1233-
params.ip_protocol = (int)IpProtocolTypes::EDX;
1234-
BoardShim board ((int)BoardIds::ANT_NEURO_EE_511_EDX_BOARD, params);
1235-
1236-
Configuration example (C++):
1237-
1238-
.. code-block:: cpp
1239-
1240-
BrainFlowInputParams params;
1241-
params.ip_address = "localhost";
1242-
params.ip_port = 3390;
1243-
params.ip_protocol = (int)IpProtocolTypes::EDX;
1244-
12451221
BoardShim board ((int)BoardIds::ANT_NEURO_EE_511_EDX_BOARD, params);
12461222
board.prepare_session ();
12471223
std::string caps = board.config_board ("edx:get_capabilities");
@@ -1250,33 +1226,42 @@ Configuration example (C++):
12501226
board.config_board ("bipolar_range:2.5");
12511227
board.start_stream ();
12521228
1253-
Initialization example (Rust):
1229+
Example (Rust):
12541230

12551231
.. code-block:: rust
12561232
12571233
let params = BrainFlowInputParamsBuilder::default()
12581234
.ip_address("localhost")
12591235
.ip_port(3390)
1260-
.ip_protocol(IpProtocolTypes::Edx)
12611236
.build();
12621237
let board = BoardShim::new(BoardIds::AntNeuroEe511EdxBoard, params)?;
12631238
1264-
Configuration example (Rust):
1239+
ANT Neuro RX-300 EDX
1240+
~~~~~~~~~~~~~~~~~~~~~
12651241

1266-
.. code-block:: rust
1242+
The RX-300 is a 25-channel research amplifier available over the EDX gRPC transport.
12671243

1268-
let params = BrainFlowInputParamsBuilder::default()
1269-
.ip_address("localhost")
1270-
.ip_port(3390)
1271-
.ip_protocol(IpProtocolTypes::Edx)
1272-
.build();
1273-
let board = BoardShim::new(BoardIds::AntNeuroEe511EdxBoard, params)?;
1274-
board.prepare_session()?;
1275-
let caps = board.config_board("edx:get_capabilities")?;
1276-
board.config_board("sampling_rate:500")?;
1277-
board.config_board("reference_range:0.15")?;
1278-
board.config_board("bipolar_range:2.5")?;
1279-
board.start_stream(45000, "")?;
1244+
Channel layout (500 Hz default):
1245+
1246+
- EEG channels: E0, E1, E2, E3, MTG0, MTG1 (channels 1–4, 9–10)
1247+
- Monitor channels: S1, S2, S0, SX (channels 5–8)
1248+
- Other channels: DBG0–5, HWTRIG, DAC1, DAC2, RSV2–7 (channels 11–25)
1249+
1250+
Use board id :code:`BoardIds.ANT_NEURO_RX_300_EDX_BOARD`.
1251+
1252+
Required BrainFlowInputParams fields: :code:`ip_address`, :code:`ip_port`.
1253+
1254+
Example (Python):
1255+
1256+
.. code-block:: python
1257+
1258+
params = BrainFlowInputParams()
1259+
params.ip_address = "localhost"
1260+
params.ip_port = 3390
1261+
board = BoardShim(BoardIds.ANT_NEURO_RX_300_EDX_BOARD, params)
1262+
board.prepare_session()
1263+
print(board.config_board("edx:get_capabilities"))
1264+
board.start_stream()
12801265
12811266
Enophone
12821267
---------

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

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,20 +73,21 @@ public enum BoardIds
7373
BIOLISTENER_BOARD(64),
7474
IRONBCI_32_BOARD(65),
7575
NEUROPAWN_KNIGHT_BOARD_IMU(66),
76-
ANT_NEURO_EE_410_EDX_BOARD(68),
77-
ANT_NEURO_EE_411_EDX_BOARD(69),
78-
ANT_NEURO_EE_430_EDX_BOARD(70),
79-
ANT_NEURO_EE_211_EDX_BOARD(71),
80-
ANT_NEURO_EE_212_EDX_BOARD(72),
81-
ANT_NEURO_EE_213_EDX_BOARD(73),
82-
ANT_NEURO_EE_214_EDX_BOARD(74),
83-
ANT_NEURO_EE_215_EDX_BOARD(75),
84-
ANT_NEURO_EE_221_EDX_BOARD(76),
85-
ANT_NEURO_EE_222_EDX_BOARD(77),
86-
ANT_NEURO_EE_223_EDX_BOARD(78),
87-
ANT_NEURO_EE_224_EDX_BOARD(79),
88-
ANT_NEURO_EE_225_EDX_BOARD(80),
89-
ANT_NEURO_EE_511_EDX_BOARD(81);
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),
90+
ANT_NEURO_RX_300_EDX_BOARD(81);
9091

9192
private final int board_id;
9293
private static final Map<Integer, BoardIds> bi_map = new HashMap<Integer, BoardIds> ();

java_package/brainflow/src/main/java/brainflow/IpProtocolTypes.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ public enum IpProtocolTypes
88

99
NO_IP_PROTOCOL (0),
1010
UDP (1),
11-
TCP (2),
12-
EDX (3);
11+
TCP (2);
1312

1413
private final int protocol;
1514
private static final Map<Integer, IpProtocolTypes> ip_map = new HashMap<Integer, IpProtocolTypes> ();

julia_package/brainflow/src/board_shim.jl

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

8687
end
8788

@@ -92,7 +93,6 @@ BoardIdType = Union{BoardIds, Integer}
9293
NO_IP_PROTOCOL = 0
9394
UDP = 1
9495
TCP = 2
95-
EDX = 3
9696

9797
end
9898

matlab_package/brainflow/BoardIds.m

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,20 @@
6666
BIOLISTENER_BOARD(64)
6767
IRONBCI_32_BOARD(65)
6868
NEUROPAWN_KNIGHT_BOARD_IMU(66)
69-
ANT_NEURO_EE_410_EDX_BOARD(68)
70-
ANT_NEURO_EE_411_EDX_BOARD(69)
71-
ANT_NEURO_EE_430_EDX_BOARD(70)
72-
ANT_NEURO_EE_211_EDX_BOARD(71)
73-
ANT_NEURO_EE_212_EDX_BOARD(72)
74-
ANT_NEURO_EE_213_EDX_BOARD(73)
75-
ANT_NEURO_EE_214_EDX_BOARD(74)
76-
ANT_NEURO_EE_215_EDX_BOARD(75)
77-
ANT_NEURO_EE_221_EDX_BOARD(76)
78-
ANT_NEURO_EE_222_EDX_BOARD(77)
79-
ANT_NEURO_EE_223_EDX_BOARD(78)
80-
ANT_NEURO_EE_224_EDX_BOARD(79)
81-
ANT_NEURO_EE_225_EDX_BOARD(80)
82-
ANT_NEURO_EE_511_EDX_BOARD(81)
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)
83+
ANT_NEURO_RX_300_EDX_BOARD(81)
8384
end
8485
end

matlab_package/brainflow/IpProtocolTypes.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@
44
NO_IP_PROTOCOL(0)
55
UDP(1)
66
TCP(2)
7-
EDX(3)
87
end
98
end

0 commit comments

Comments
 (0)