SR_PRIV int brymen_bm86x_receive_data(int fd, int revents, void *cb_data) { struct sr_dev_inst *sdi; struct dev_context *devc; (void)fd; (void)revents; if (!(sdi = cb_data)) return TRUE; if (!(devc = sdi->priv)) return TRUE; if (!devc->interrupt_pending) { if (brymen_bm86x_send_command(sdi)) return FALSE; devc->interrupt_pending = 1; } if (brymen_bm86x_read_interrupt(sdi)) return FALSE; if (sr_sw_limits_check(&devc->sw_limits)) sdi->driver->dev_acquisition_stop(sdi); return TRUE; }
SR_PRIV int brymen_bm86x_receive_data(int fd, int revents, void *cb_data) { struct sr_dev_inst *sdi; struct dev_context *devc; int64_t time; (void)fd; (void)revents; if (!(sdi = cb_data)) return TRUE; if (!(devc = sdi->priv)) return TRUE; if (!devc->interrupt_pending) { if (brymen_bm86x_send_command(sdi)) return FALSE; devc->interrupt_pending = 1; } if (brymen_bm86x_read_interrupt(sdi)) return FALSE; if (devc->limit_samples && devc->num_samples >= devc->limit_samples) { sr_info("Requested number of samples reached, stopping."); sdi->driver->dev_acquisition_stop(sdi, cb_data); return TRUE; } if (devc->limit_msec) { time = (g_get_monotonic_time() - devc->start_time) / 1000; if (time > (int64_t)devc->limit_msec) { sr_info("Requested time limit reached, stopping."); sdi->driver->dev_acquisition_stop(sdi, cb_data); return TRUE; } } return TRUE; }