summaryrefslogtreecommitdiff
path: root/libusb/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'libusb/core.c')
-rw-r--r--libusb/core.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/libusb/core.c b/libusb/core.c
index 00af3eb..aadabd0 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -1561,29 +1561,30 @@ int API_EXPORTED libusb_get_configuration(libusb_device_handle *dev_handle,
int *config)
{
int r = LIBUSB_ERROR_NOT_SUPPORTED;
+ uint8_t tmp = 0;
usbi_dbg(" ");
if (usbi_backend.get_configuration)
- r = usbi_backend.get_configuration(dev_handle, config);
+ r = usbi_backend.get_configuration(dev_handle, &tmp);
if (r == LIBUSB_ERROR_NOT_SUPPORTED) {
- uint8_t tmp = 0;
usbi_dbg("falling back to control message");
r = libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_IN,
LIBUSB_REQUEST_GET_CONFIGURATION, 0, 0, &tmp, 1, 1000);
- if (r == 0) {
+ if (r == 1) {
+ r = 0;
+ } else if (r == 0) {
usbi_err(HANDLE_CTX(dev_handle), "zero bytes returned in ctrl transfer?");
r = LIBUSB_ERROR_IO;
- } else if (r == 1) {
- r = 0;
- *config = tmp;
} else {
usbi_dbg("control failed, error %d", r);
}
}
- if (r == 0)
- usbi_dbg("active config %d", *config);
+ if (r == 0) {
+ usbi_dbg("active config %u", tmp);
+ *config = (int)tmp;
+ }
return r;
}
@@ -1688,7 +1689,7 @@ int API_EXPORTED libusb_claim_interface(libusb_device_handle *dev_handle,
if (dev_handle->claimed_interfaces & (1U << interface_number))
goto out;
- r = usbi_backend.claim_interface(dev_handle, interface_number);
+ r = usbi_backend.claim_interface(dev_handle, (uint8_t)interface_number);
if (r == 0)
dev_handle->claimed_interfaces |= 1U << interface_number;
@@ -1731,7 +1732,7 @@ int API_EXPORTED libusb_release_interface(libusb_device_handle *dev_handle,
goto out;
}
- r = usbi_backend.release_interface(dev_handle, interface_number);
+ r = usbi_backend.release_interface(dev_handle, (uint8_t)interface_number);
if (r == 0)
dev_handle->claimed_interfaces &= ~(1U << interface_number);
@@ -1783,8 +1784,8 @@ int API_EXPORTED libusb_set_interface_alt_setting(libusb_device_handle *dev_hand
}
usbi_mutex_unlock(&dev_handle->lock);
- return usbi_backend.set_interface_altsetting(dev_handle, interface_number,
- alternate_setting);
+ return usbi_backend.set_interface_altsetting(dev_handle,
+ (uint8_t)interface_number, (uint8_t)alternate_setting);
}
/** \ingroup libusb_dev
@@ -1996,7 +1997,7 @@ int API_EXPORTED libusb_kernel_driver_active(libusb_device_handle *dev_handle,
return LIBUSB_ERROR_NO_DEVICE;
if (usbi_backend.kernel_driver_active)
- return usbi_backend.kernel_driver_active(dev_handle, interface_number);
+ return usbi_backend.kernel_driver_active(dev_handle, (uint8_t)interface_number);
else
return LIBUSB_ERROR_NOT_SUPPORTED;
}
@@ -2034,7 +2035,7 @@ int API_EXPORTED libusb_detach_kernel_driver(libusb_device_handle *dev_handle,
return LIBUSB_ERROR_NO_DEVICE;
if (usbi_backend.detach_kernel_driver)
- return usbi_backend.detach_kernel_driver(dev_handle, interface_number);
+ return usbi_backend.detach_kernel_driver(dev_handle, (uint8_t)interface_number);
else
return LIBUSB_ERROR_NOT_SUPPORTED;
}
@@ -2071,7 +2072,7 @@ int API_EXPORTED libusb_attach_kernel_driver(libusb_device_handle *dev_handle,
return LIBUSB_ERROR_NO_DEVICE;
if (usbi_backend.attach_kernel_driver)
- return usbi_backend.attach_kernel_driver(dev_handle, interface_number);
+ return usbi_backend.attach_kernel_driver(dev_handle, (uint8_t)interface_number);
else
return LIBUSB_ERROR_NOT_SUPPORTED;
}