#include <stdlib.h>
#include <string.h>
#include <libsigrok/libsigrok.h>
-#include "libsigrok-internal.h"
+#include <libsigrok-internal.h>
#include "protocol.h"
/* Supported device scan options.
}
ret = drain_usb(usb, EP_REPLY);
- if (ret != SR_OK)
+ if (ret != SR_OK) {
+ sr_usb_close(usb);
return ret;
+ }
+ /* This delay appears to be necessary for reliable operation. */
+ g_usleep(30 * 1000);
sdi->status = SR_ST_ACTIVE;
devc->active_fpga_config = FPGA_NOCONF;
+ devc->short_transfer_quirk = FALSE;
devc->state = STATE_IDLE;
ret = (*devc->model->apply_fpga_config)(sdi);
if (ret != SR_OK) {
sdi->status = SR_ST_INACTIVE;
sr_usb_close(usb);
+ return ret;
}
- return ret;
+ if (devc->short_transfer_quirk)
+ sr_warn("Short transfer quirk detected! "
+ "Memory reads will be slow.");
+ return SR_OK;
}
/* Shutdown and close device.