MCPcopy Create free account
hub / github.com/brainflow-dev/brainflow / read_thread

Method read_thread

src/board_controller/streaming_board.cpp:194–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

192}
193
194void StreamingBoard::read_thread (int num)
195{
196 std::string preset_str = preset_to_string (presets[num]);
197 if (board_descr.find (preset_str) == board_descr.end ())
198 {
199 safe_logger (spdlog::level::err, "invalid json or push_package args, no such key");
200 return;
201 }
202
203 json board_preset = board_descr[preset_str];
204 int num_rows = board_preset["num_rows"];
205 int num_packages = get_brainflow_batch_size ();
206 int transaction_len = num_rows * num_packages;
207 int bytes_per_recv = sizeof (double) * transaction_len;
208 double *transaction = new double[transaction_len];
209 for (int i = 0; i < num_rows; i++)
210 {
211 transaction[i] = 0.0;
212 }
213
214 while (keep_alive)
215 {
216 int res = clients[num]->recv (transaction, bytes_per_recv);
217 if (res != bytes_per_recv)
218 {
219 safe_logger (
220 spdlog::level::trace, "unable to read {} bytes, read {}", bytes_per_recv, res);
221 log_socket_error (-1);
222 continue;
223 }
224 for (int i = 0; i < num_packages; i++)
225 {
226 push_package (transaction + i * num_rows, presets[num]);
227 }
228 }
229 delete[] transaction;
230}
231
232void StreamingBoard::log_socket_error (int error_code)
233{

Callers 1

start_streamMethod · 0.95

Calls 2

get_brainflow_batch_sizeFunction · 0.85
recvMethod · 0.45

Tested by

no test coverage detected