Skip to content

Commit 8382329

Browse files
authored
fix board id for neurosity boards (#532)
Signed-off-by: Andrey Parfenov <[email protected]>
1 parent 3988b6a commit 8382329

File tree

11 files changed

+361
-451
lines changed

11 files changed

+361
-451
lines changed

emulator/brainflow_emulator/galea_manual.py

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,9 @@ def __init__(self):
3030
self.server_socket.bind((self.local_ip, self.local_port))
3131
self.state = State.wait.value
3232
self.addr = None
33-
self.exg_package_num = 0
34-
self.aux_package_num = 0
35-
self.exg_package_size = 59
36-
self.aux_package_size = 26
37-
self.num_exg_packages_in_transaction = 20
38-
self.num_aux_packages_in_transaction = 4
33+
self.package_num = 0
34+
self.transaction_size = 19
35+
self.package_size = 72
3936

4037
def run(self):
4138
start_time = time.time()
@@ -60,39 +57,37 @@ def run(self):
6057
logging.debug('timeout for recv')
6158

6259
if self.state == State.stream.value:
63-
package = list()
64-
# exg
65-
for _ in range(self.num_exg_packages_in_transaction):
66-
package.append(0xA0)
67-
package.append(self.exg_package_num)
68-
self.exg_package_num = self.exg_package_num + 1
69-
if self.exg_package_num % 256 == 0:
70-
self.exg_package_num = 0
71-
for i in range(1, self.exg_package_size - 10):
72-
package.append(random.randint(0, 30))
73-
cur_time = time.time()
74-
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
75-
package.extend(timestamp)
76-
package.append(0xC0)
77-
try:
78-
self.server_socket.sendto(bytes(package), self.addr)
79-
except socket.timeout:
80-
logging.info('timeout for send')
81-
# aux
82-
package = list()
83-
for _ in range(self.num_aux_packages_in_transaction):
84-
package.append(0xA1)
85-
package.append(self.aux_package_num)
86-
self.aux_package_num = self.aux_package_num + 1
87-
if self.aux_package_num % 256 == 0:
88-
self.aux_package_num = 0
89-
for i in range(1, self.aux_package_size - 10):
90-
package.append(random.randint(0, 5))
60+
transaction = list()
61+
for _ in range(self.transaction_size):
62+
single_package = list()
63+
for i in range(self.package_size):
64+
single_package.append(random.randint(0, 255))
65+
single_package[0] = self.package_num
66+
9167
cur_time = time.time()
9268
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
93-
package.extend(timestamp)
94-
package.append(0xC0)
69+
eda = bytearray(struct.pack('f', random.random()))
70+
ppg_red = bytearray(struct.pack('i', int(random.random() * 5000)))
71+
ppg_ir = bytearray(struct.pack('i', int(random.random() * 5000)))
72+
73+
for i in range(64, 72):
74+
single_package[i] = timestamp[i - 64]
75+
for i in range(1, 5):
76+
single_package[i] = eda[i - 1]
77+
for i in range(60, 64):
78+
single_package[i] = ppg_ir[i - 60]
79+
for i in range(56, 60):
80+
single_package[i] = ppg_red[i - 56]
81+
single_package[53] = random.randint(0, 100)
82+
83+
self.package_num = self.package_num + 1
84+
if self.package_num % 256 == 0:
85+
self.package_num = 0
86+
transaction.append(single_package)
9587
try:
88+
package = list()
89+
for i in range(self.transaction_size):
90+
package.extend(bytes(transaction[i]))
9691
self.server_socket.sendto(bytes(package), self.addr)
9792
except socket.timeout:
9893
logging.info('timeout for send')
@@ -105,4 +100,4 @@ def main():
105100

106101
if __name__ == '__main__':
107102
logging.basicConfig(format='%(asctime)s %(levelname)-8s %(message)s', level=logging.INFO)
108-
main()
103+
main()

emulator/brainflow_emulator/galea_serial_manual.py

Lines changed: 13 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -119,49 +119,24 @@ def __init__(self, port, delay, write):
119119
self.port = port
120120
self.write = write
121121
self.delay = delay
122+
self.package_size = 72 * 19
123+
self.package_num = 0
122124
self.need_data = True
123125

124-
self.exg_package_num = 0
125-
self.aux_package_num = 0
126-
self.exg_package_size = 59
127-
self.aux_package_size = 26
128-
self.num_exg_packages_in_transaction = 20
129-
self.num_aux_packages_in_transaction = 4
130-
131126
def run(self):
132-
start_time = time.time()
133127
while self.need_data:
128+
if self.package_num % 256 == 0:
129+
self.package_num = 0
130+
134131
package = list()
135-
# exg
136-
for _ in range(self.num_exg_packages_in_transaction):
137-
package.append(0xA0)
138-
package.append(self.exg_package_num)
139-
self.exg_package_num = self.exg_package_num + 1
140-
if self.exg_package_num % 256 == 0:
141-
self.exg_package_num = 0
142-
for i in range(1, self.exg_package_size - 10):
143-
package.append(random.randint(0, 30))
144-
cur_time = time.time()
145-
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
146-
package.extend(timestamp)
147-
package.append(0xC0)
148-
self.write(self.port, bytes(package))
149-
time.sleep(self.delay)
150-
# aux
151-
package = list()
152-
for _ in range(self.num_aux_packages_in_transaction):
153-
package.append(0xA1)
154-
package.append(self.aux_package_num)
155-
self.aux_package_num = self.aux_package_num + 1
156-
if self.aux_package_num % 256 == 0:
157-
self.aux_package_num = 0
158-
for i in range(1, self.aux_package_size - 10):
159-
package.append(random.randint(0, 5))
160-
cur_time = time.time()
161-
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
162-
package.extend(timestamp)
163-
package.append(0xC0)
132+
package.append(0xA0)
133+
for i in range(self.package_size):
134+
package.append(random.randint(0, 255))
135+
package.append(0xC0)
136+
logging.debug('package is %s' % ' '.join([str(x) for x in package]))
164137
self.write(self.port, bytes(package))
138+
139+
self.package_num = self.package_num + 1
165140
time.sleep(self.delay)
166141

167142

@@ -172,4 +147,4 @@ def main():
172147

173148
if __name__ == '__main__':
174149
logging.basicConfig(level=logging.INFO)
175-
main()
150+
main()

emulator/brainflow_emulator/galea_serial_windows.py

Lines changed: 13 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -133,49 +133,24 @@ def __init__(self, port, delay, write):
133133
self.port = port
134134
self.write = write
135135
self.delay = delay
136+
self.package_size = 72 * 19
137+
self.package_num = 0
136138
self.need_data = True
137-
138-
self.exg_package_num = 0
139-
self.aux_package_num = 0
140-
self.exg_package_size = 59
141-
self.aux_package_size = 26
142-
self.num_exg_packages_in_transaction = 20
143-
self.num_aux_packages_in_transaction = 4
144139

145140
def run(self):
146-
start_time = time.time()
147141
while self.need_data:
142+
if self.package_num % 256 == 0:
143+
self.package_num = 0
144+
148145
package = list()
149-
# exg
150-
for _ in range(self.num_exg_packages_in_transaction):
151-
package.append(0xA0)
152-
package.append(self.exg_package_num)
153-
self.exg_package_num = self.exg_package_num + 1
154-
if self.exg_package_num % 256 == 0:
155-
self.exg_package_num = 0
156-
for i in range(1, self.exg_package_size - 10):
157-
package.append(random.randint(0, 30))
158-
cur_time = time.time()
159-
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
160-
package.extend(timestamp)
161-
package.append(0xC0)
162-
self.write(self.port, bytes(package))
163-
time.sleep(self.delay)
164-
# aux
165-
package = list()
166-
for _ in range(self.num_aux_packages_in_transaction):
167-
package.append(0xA1)
168-
package.append(self.aux_package_num)
169-
self.aux_package_num = self.aux_package_num + 1
170-
if self.aux_package_num % 256 == 0:
171-
self.aux_package_num = 0
172-
for i in range(1, self.aux_package_size - 10):
173-
package.append(random.randint(0, 5))
174-
cur_time = time.time()
175-
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
176-
package.extend(timestamp)
177-
package.append(0xC0)
146+
package.append(0xA0)
147+
for i in range(self.package_size):
148+
package.append(random.randint(0, 255))
149+
package.append(0xC0)
150+
logging.debug('package is %s' % ' '.join([str(x) for x in package]))
178151
self.write(self.port, bytes(package))
152+
153+
self.package_num = self.package_num + 1
179154
time.sleep(self.delay)
180155

181156

@@ -189,4 +164,4 @@ def main(cmd_list):
189164

190165
if __name__ == '__main__':
191166
logging.basicConfig(level=logging.INFO)
192-
main(sys.argv[1:])
167+
main(sys.argv[1:])

emulator/brainflow_emulator/galea_udp.py

Lines changed: 11 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,9 @@ def __init__(self):
5656
self.server_socket.bind((self.local_ip, self.local_port))
5757
self.state = State.wait.value
5858
self.addr = None
59+
self.package_num = 0
60+
self.package_size = 72
5961
self.keep_alive = True
60-
61-
self.exg_package_num = 0
62-
self.aux_package_num = 0
63-
self.exg_package_size = 59
64-
self.aux_package_size = 26
65-
self.num_exg_packages_in_transaction = 20
66-
self.num_aux_packages_in_transaction = 4
67-
6862

6963
def run(self):
7064
start_time = time.time()
@@ -92,42 +86,22 @@ def run(self):
9286

9387
if self.state == State.stream.value:
9488
package = list()
95-
# exg
96-
for _ in range(self.num_exg_packages_in_transaction):
97-
package.append(0xA0)
98-
package.append(self.exg_package_num)
99-
self.exg_package_num = self.exg_package_num + 1
100-
if self.exg_package_num % 256 == 0:
101-
self.exg_package_num = 0
102-
for i in range(1, self.exg_package_size - 10):
103-
package.append(random.randint(0, 30))
89+
for _ in range(19):
90+
package.append(self.package_num)
91+
self.package_num = self.package_num + 1
92+
if self.package_num % 256 == 0:
93+
self.package_num = 0
94+
for i in range(1, self.package_size - 8):
95+
package.append(random.randint(0, 255))
10496
cur_time = time.time()
10597
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
10698
package.extend(timestamp)
107-
package.append(0xC0)
108-
try:
109-
self.server_socket.sendto(bytes(package), self.addr)
110-
except socket.timeout:
111-
logging.info('timeout for send')
112-
# aux
113-
package = list()
114-
for _ in range(self.num_aux_packages_in_transaction):
115-
package.append(0xA1)
116-
package.append(self.aux_package_num)
117-
self.aux_package_num = self.aux_package_num + 1
118-
if self.aux_package_num % 256 == 0:
119-
self.aux_package_num = 0
120-
for i in range(1, self.aux_package_size - 10):
121-
package.append(random.randint(0, 5))
122-
cur_time = time.time()
123-
timestamp = bytearray(struct.pack('d', (cur_time - start_time) * 1000))
124-
package.extend(timestamp)
125-
package.append(0xC0)
12699
try:
127100
self.server_socket.sendto(bytes(package), self.addr)
128101
except socket.timeout:
129102
logging.info('timeout for send')
130103

104+
131105
def main(cmd_list):
132106
if not cmd_list:
133107
raise Exception('No command to execute')
@@ -139,4 +113,4 @@ def main(cmd_list):
139113

140114
if __name__ == '__main__':
141115
logging.basicConfig(format='%(asctime)s %(levelname)-8s %(message)s', level=logging.INFO)
142-
main(sys.argv[1:])
116+
main(sys.argv[1:])

src/board_controller/board_controller.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,13 @@ int prepare_session (int board_id, const char *json_brainflow_input_params)
136136
// notion 1, notion 2 and crown have the same class
137137
// the only difference are get_eeg_names and sampling_rate
138138
case BoardIds::NOTION_1_BOARD:
139-
board = std::shared_ptr<Board> (new NotionOSC (params));
139+
board = std::shared_ptr<Board> (new NotionOSC (board_id, params));
140140
break;
141141
case BoardIds::NOTION_2_BOARD:
142-
board = std::shared_ptr<Board> (new NotionOSC (params));
142+
board = std::shared_ptr<Board> (new NotionOSC (board_id, params));
143143
break;
144144
case BoardIds::CROWN_BOARD:
145-
board = std::shared_ptr<Board> (new NotionOSC (params));
145+
board = std::shared_ptr<Board> (new NotionOSC (board_id, params));
146146
break;
147147
case BoardIds::IRONBCI_BOARD:
148148
board = std::shared_ptr<Board> (new IronBCI (params));

src/board_controller/neurosity/inc/notion_osc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class NotionOSC : public Board
3030
void handle_packet (double *package, const OSCPP::Server::Packet &packet);
3131

3232
public:
33-
NotionOSC (struct BrainFlowInputParams params);
33+
NotionOSC (int board_id, struct BrainFlowInputParams params);
3434
~NotionOSC ();
3535

3636
int prepare_session ();

src/board_controller/neurosity/notion_osc.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
#include <iostream>
1111

1212

13-
NotionOSC::NotionOSC (struct BrainFlowInputParams params)
14-
: Board ((int)BoardIds::NOTION_1_BOARD, params)
13+
NotionOSC::NotionOSC (int board_id, struct BrainFlowInputParams params) : Board (board_id, params)
1514
{
1615
socket = NULL;
1716
keep_alive = false;

0 commit comments

Comments
 (0)