Skip to content

Commit 491ef1f

Browse files
authored
Support 8 and 32 channel Explore Plus devices (#700)
* add explore plus code for 8 and 32 chan
1 parent f400b10 commit 491ef1f

File tree

9 files changed

+101
-3
lines changed

9 files changed

+101
-3
lines changed

csharp_package/brainflow/brainflow/board_controller_library.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ public enum BoardIds
112112
NTL_WIFI_BOARD = 50,
113113
ANT_NEURO_EE_511_BOARD = 51,
114114
FREEEEG128_BOARD = 52,
115-
AAVAA_V3_BOARD = 53
115+
AAVAA_V3_BOARD = 53,
116+
EXPLORE_PLUS_8_CHAN_BOARD = 54,
117+
EXPLORE_PLUS_32_CHAN_BOARD = 55,
116118
};
117119

118120

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ public enum BoardIds
6262
NTL_WIFI_BOARD (50),
6363
ANT_NEURO_EE_511_BOARD (51),
6464
FREEEEG128_BOARD (52),
65-
AAVAA_V3_BOARD(53);
65+
AAVAA_V3_BOARD(53),
66+
EXPLORE_PLUS_8_CHAN_BOARD(54),
67+
EXPLORE_PLUS_32_CHAN_BOARD(55);
6668

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

julia_package/brainflow/src/board_shim.jl

+2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ export BrainFlowInputParams
5858
ANT_NEURO_EE_511_BOARD = 51
5959
FREEEEG128_BOARD = 52
6060
AAVAA_V3_BOARD = 53
61+
EXPLORE_PLUS_8_CHAN_BOARD = 54
62+
EXPLORE_PLUS_32_CHAN_BOARD = 55
6163

6264
end
6365

matlab_package/brainflow/BoardIds.m

+2
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,7 @@
5656
ANT_NEURO_EE_511_BOARD(51)
5757
FREEEEG128_BOARD(52)
5858
AAVAA_V3_BOARD(53)
59+
EXPLORE_PLUS_8_CHAN_BOARD(54)
60+
EXPLORE_PLUS_32_CHAN_BOARD(55)
5961
end
6062
end

python_package/brainflow/board_shim.py

+2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ class BoardIds(enum.IntEnum):
7272
ANT_NEURO_EE_511_BOARD = 51 #:
7373
FREEEEG128_BOARD = 52 #:
7474
AAVAA_V3_BOARD = 53 #:
75+
EXPLORE_PLUS_8_CHAN_BOARD = 54 #:
76+
EXPLORE_PLUS_32_CHAN_BOARD = 55 #:
7577

7678

7779
class IpProtocolTypes(enum.IntEnum):

src/board_controller/board_controller.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,12 @@ int prepare_session (int board_id, const char *json_brainflow_input_params)
271271
case BoardIds::AAVAA_V3_BOARD:
272272
board = std::shared_ptr<Board> (new AAVAAv3 (params));
273273
break;
274+
case BoardIds::EXPLORE_PLUS_8_CHAN_BOARD:
275+
board = std::shared_ptr<Board> (new Explore (board_id, params));
276+
break;
277+
case BoardIds::EXPLORE_PLUS_32_CHAN_BOARD:
278+
board = std::shared_ptr<Board> (new Explore (board_id, params));
279+
break;
274280
default:
275281
return (int)BrainFlowExitCodes::UNSUPPORTED_BOARD_ERROR;
276282
}

src/board_controller/brainflow_boards.cpp

+74
Original file line numberDiff line numberDiff line change
@@ -1008,6 +1008,80 @@ BrainFlowBoards::BrainFlowBoards()
10081008
{"battery_channel", 12},
10091009
{"other_channels", {13, 14}}
10101010
};
1011+
brainflow_boards_json["boards"]["54"]["default"] =
1012+
{
1013+
{"name", "ExplorePlus8Channels"},
1014+
{"sampling_rate", 250},
1015+
{"timestamp_channel", 10},
1016+
{"marker_channel", 11},
1017+
{"package_num_channel", 0},
1018+
{"num_rows", 12},
1019+
{"eeg_channels", {1, 2, 3, 4, 5, 6, 7, 8}},
1020+
{"emg_channels", {1, 2, 3, 4, 5, 6, 7, 8}},
1021+
{"ecg_channels", {1, 2, 3, 4, 5, 6, 7, 8}},
1022+
{"other_channels", {9}} // data status
1023+
};
1024+
brainflow_boards_json["boards"]["54"]["auxiliary"] =
1025+
{
1026+
{"name", "ExplorePlus8Channels"},
1027+
{"sampling_rate", 20},
1028+
{"timestamp_channel", 10},
1029+
{"marker_channel", 11},
1030+
{"package_num_channel", 0},
1031+
{"num_rows", 12},
1032+
{"accel_channels", {1, 2, 3}},
1033+
{"gyro_channels", {4, 5, 6}},
1034+
{"magnetometer_channels", {7, 8, 9}}
1035+
};
1036+
brainflow_boards_json["boards"]["54"]["ancillary"] =
1037+
{
1038+
{"name", "ExplorePlus8Channels"},
1039+
{"sampling_rate", 1},
1040+
{"timestamp_channel", 4},
1041+
{"marker_channel", 5},
1042+
{"package_num_channel", 0},
1043+
{"num_rows", 6},
1044+
{"temperature_channels", {1}},
1045+
{"battery_channel", 2},
1046+
{"other_channels", {3}}
1047+
};
1048+
brainflow_boards_json["boards"]["55"]["default"] =
1049+
{
1050+
{"name", "ExplorePlus32Channels"},
1051+
{"sampling_rate", 250},
1052+
{"timestamp_channel", 34},
1053+
{"marker_channel", 35},
1054+
{"package_num_channel", 0},
1055+
{"num_rows", 36},
1056+
{"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}},
1057+
{"emg_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}},
1058+
{"ecg_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}},
1059+
{"other_channels", {33}} // data status
1060+
};
1061+
brainflow_boards_json["boards"]["55"]["auxiliary"] =
1062+
{
1063+
{"name", "ExplorePlus32Channels"},
1064+
{"sampling_rate", 20},
1065+
{"timestamp_channel", 10},
1066+
{"marker_channel", 11},
1067+
{"package_num_channel", 0},
1068+
{"num_rows", 12},
1069+
{"accel_channels", {1, 2, 3}},
1070+
{"gyro_channels", {4, 5, 6}},
1071+
{"magnetometer_channels", {7, 8, 9}}
1072+
};
1073+
brainflow_boards_json["boards"]["55"]["ancillary"] =
1074+
{
1075+
{"name", "ExplorePlus32Channels"},
1076+
{"sampling_rate", 1},
1077+
{"timestamp_channel", 4},
1078+
{"marker_channel", 5},
1079+
{"package_num_channel", 0},
1080+
{"num_rows", 6},
1081+
{"temperature_channels", {1}},
1082+
{"battery_channel", 2},
1083+
{"other_channels", {3}}
1084+
};
10111085
}
10121086

10131087
BrainFlowBoards boards_struct;

src/board_controller/mentalab/explore.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,12 @@ void Explore::read_thread ()
306306
case 0x1e: // eeg99s
307307
parse_eeg_data (&header, package_exg, payload_buffer, 4.5, 16);
308308
break;
309+
case 0x96: // eeg98 plus
310+
parse_eeg_data (&header, package_exg, payload_buffer, 2.4, 16);
311+
break;
312+
case 0x94: // eeg32 plus
313+
parse_eeg_data (&header, package_exg, payload_buffer, 2.4, 4);
314+
break;
309315
case 0x13: // env
310316
parse_env_data (&header, package_anc, payload_buffer);
311317
break;

src/utils/inc/brainflow_constants.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,11 @@ enum class BoardIds : int
8585
ANT_NEURO_EE_511_BOARD = 51,
8686
FREEEEG128_BOARD = 52,
8787
AAVAA_V3_BOARD = 53,
88+
EXPLORE_PLUS_8_CHAN_BOARD = 54,
89+
EXPLORE_PLUS_32_CHAN_BOARD = 55,
8890
// use it to iterate
8991
FIRST = PLAYBACK_FILE_BOARD,
90-
LAST = AAVAA_V3_BOARD
92+
LAST = EXPLORE_PLUS_32_CHAN_BOARD
9193
};
9294

9395
enum class IpProtocolTypes : int

0 commit comments

Comments
 (0)