int response_length;
int response_bytes_read;
int remaining_length;
+ int rigol_ds1000;
};
/* Some USBTMC-specific enums, as defined in the USBTMC standard. */
}
}
found = 1;
+ uscpi->rigol_ds1000 = des.idVendor == 0x1ab1 &&
+ des.idProduct == 0x0588;
}
libusb_free_config_descriptor(confdes);
if (found)
return SR_ERR;
}
+ if (!uscpi->rigol_ds1000) {
if ((ret = libusb_clear_halt(usb->devhdl, uscpi->bulk_in_ep)) < 0) {
sr_err("Failed to clear halt/stall condition for EP %d: %s.",
uscpi->bulk_in_ep, libusb_error_name(ret));
uscpi->interrupt_ep, libusb_error_name(ret));
return SR_ERR;
}
+ }
/* Get capabilities. */
ret = libusb_control_transfer(usb->devhdl,
}
static int scpi_usbtmc_libusb_source_add(void *priv, int events, int timeout,
- sr_receive_data_callback_t cb, void *cb_data)
+ sr_receive_data_callback cb, void *cb_data)
{
struct scpi_usbtmc_libusb *uscpi = priv;
(void)events;
if (!usb->devhdl)
return SR_ERR;
+ if (!uscpi->rigol_ds1000) {
if ((ret = libusb_clear_halt(usb->devhdl, uscpi->bulk_in_ep)) < 0)
sr_err("Failed to clear halt/stall condition for EP %d: %s.",
uscpi->bulk_in_ep, libusb_error_name(ret));
if ((ret = libusb_clear_halt(usb->devhdl, uscpi->interrupt_ep)) < 0)
sr_err("Failed to clear halt/stall condition for EP %d: %s.",
uscpi->interrupt_ep, libusb_error_name(ret));
+ }
if ((ret = libusb_release_interface(usb->devhdl, uscpi->interface)) < 0)
sr_err("Failed to release interface: %s.",