SR_PRIV int hung_chang_dso_2100_poll(int fd, int revents, void *cb_data) { struct sr_datafeed_packet packet = { .type = SR_DF_FRAME_BEGIN }; const struct sr_dev_inst *sdi; struct dev_context *devc; uint8_t state, buf[1000]; (void)fd; (void)revents; if (!(sdi = cb_data)) return TRUE; if (!(devc = sdi->priv)) return TRUE; if (devc->state_known) hung_chang_dso_2100_write_mbox(sdi->conn, 0x99); state = hung_chang_dso_2100_read_mbox(sdi->conn, 0.00025); devc->state_known = (state != 0x00); if (!devc->state_known || state == 0x21) return TRUE; if (state != 0x03) { sr_err("Unexpected state 0x%X while checking for trigger", state); return FALSE; } sr_session_send(sdi, &packet); if (devc->channel) { while (read_subframe(sdi, buf)) { if (hung_chang_dso_2100_move_to(sdi, 1) != SR_OK) break; hung_chang_dso_2100_write_mbox(sdi->conn, 3); g_usleep(1700); if (hung_chang_dso_2100_read_mbox(sdi->conn, 0.02) != 0x03) break; } } packet.type = SR_DF_FRAME_END; sr_session_send(sdi, &packet); if (++devc->frame >= devc->frame_limit) hung_chang_dso_2100_dev_acquisition_stop(sdi); else hung_chang_dso_2100_move_to(sdi, 0x21); return TRUE; }
static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) { return hung_chang_dso_2100_dev_acquisition_stop(sdi, cb_data); }
static int dev_acquisition_stop(struct sr_dev_inst *sdi) { return hung_chang_dso_2100_dev_acquisition_stop(sdi); }