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

Method read_thread

src/board_controller/pieeg/pieeg_board.cpp:206–277  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204}
205
206void PIEEGBoard::read_thread ()
207{
208 uint8_t buf[27] = {0};
209 uint8_t zero27[27] = {0};
210 int num_rows = board_descr["default"]["num_rows"];
211 double *package = new double[num_rows];
212 for (int i = 0; i < num_rows; i++)
213 {
214 package[i] = 0.0;
215 }
216
217 std::vector<int> eeg_channels = board_descr["default"]["eeg_channels"];
218
219 double eeg_scale = 4.5 / float ((pow (2, 23) - 1)) / 8 * 1000000.;
220 double timestamp = 0;
221 unsigned int counter = 0;
222 int timeout_ms = 1000;
223 uint32_t data_test = 0x7FFFFF;
224 uint32_t data_check = 0xFFFFFF;
225
226 while (keep_alive)
227 {
228 int gpio_res = gpio_poll (gpio_in, timeout_ms);
229 timestamp = get_timestamp ();
230 if (gpio_res == 0)
231 {
232 safe_logger (spdlog::level::trace, "no gpio event in {} ms", timeout_ms);
233 }
234 else if (gpio_res < 0)
235 {
236 safe_logger (spdlog::level::warn, "error in gpio_poll: {}", gpio_res);
237 }
238 else
239 {
240 gpio_edge_t edge = GPIO_EDGE_NONE;
241 gpio_res = gpio_read_event (gpio_in, &edge, NULL);
242 if (gpio_res != 0)
243 {
244 safe_logger (spdlog::level::warn, "failed to get gpio event: {}", gpio_res);
245 continue;
246 }
247 if (edge != GPIO_EDGE_FALLING)
248 {
249 safe_logger (spdlog::level::warn, "unexpected gpio event");
250 continue;
251 }
252 int spi_res = spi_transfer (spi, zero27, buf, 27);
253 if (spi_res != 0)
254 {
255 safe_logger (spdlog::level::warn, "failed to read from spi: {}", spi_res);
256 continue;
257 }
258 for (size_t i = 0; i < eeg_channels.size (); i++)
259 {
260 int offset = 3 * i + 3;
261 uint32_t voltage = (buf[offset] << 8) | buf[offset + 1];
262 voltage = (voltage << 8) | buf[offset + 2];
263 uint32_t voltage_test = voltage | data_test;

Callers 1

start_streamMethod · 0.95

Calls 1

get_timestampFunction · 0.85

Tested by

no test coverage detected