/*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
*
* Copyright (C) 2010-2012 Bert Vermeulen <bert@biot.com>
*
ret = libusb_control_transfer(hdl, LIBUSB_REQUEST_TYPE_VENDOR, 0xa0,
0xe600, 0x0000, buf, 1, 100);
if (ret < 0)
- sr_err("Unable to send control request: %d", ret);
+ sr_err("Unable to send control request: %s.",
+ libusb_error_name(ret));
return ret;
}
LIBUSB_ENDPOINT_OUT, 0xa0, offset,
0x0000, buf, chunksize, 100);
if (ret < 0) {
- sr_err("Unable to send firmware to device: %d",
- ret);
+ sr_err("Unable to send firmware to device: %s.",
+ libusb_error_name(ret));
result = SR_ERR;
break;
}
libusb_get_bus_number(dev), libusb_get_device_address(dev));
if ((ret = libusb_open(dev, &hdl)) < 0) {
- sr_err("failed to open device: %d", ret);
+ sr_err("failed to open device: %s.", libusb_error_name(ret));
return SR_ERR;
}
-/* Neither Windows/MinGW nor Darwin/Mac support these libusb-1.0 calls. */
-#if !defined(_WIN32) && !defined(__APPLE__)
- if (libusb_kernel_driver_active(hdl, 0)) {
+/*
+ * The libusbx darwin backend is broken: it can report a kernel driver being
+ * active, but detaching it always returns an error.
+ */
+#if !defined(__APPLE__)
+ if (libusb_kernel_driver_active(hdl, 0) == 1) {
if ((ret = libusb_detach_kernel_driver(hdl, 0)) < 0) {
- sr_err("failed to detach kernel driver: %d", ret);
+ sr_err("failed to detach kernel driver: %s",
+ libusb_error_name(ret));
return SR_ERR;
}
}
#endif
if ((ret = libusb_set_configuration(hdl, configuration)) < 0) {
- sr_err("Unable to set configuration: %d", ret);
+ sr_err("Unable to set configuration: %s",
+ libusb_error_name(ret));
return SR_ERR;
}