summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dickens <christopher.a.dickens@gmail.com>2020-04-28 22:04:11 -0700
committerChris Dickens <christopher.a.dickens@gmail.com>2020-04-28 22:04:11 -0700
commite9eec3a680cad3b2c9c5213fb7d60148cf6900da (patch)
treef525022f61d24aba50da630ed851807f8c3104d6
parent14a302a2f55cb2e619158854f94845f2ca2c8214 (diff)
downloadlibusb-e9eec3a680cad3b2c9c5213fb7d60148cf6900da.tar.gz
core: Narrow the types passed to certain backend functions
Backend functions dealing with interfaces and alternate settings should use a type whose range represents that of valid values for interfaces and alternate settings. Switch to use uint8_t instead of int so that backends do not have to cast values or do range checks. Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
-rw-r--r--libusb/core.c31
-rw-r--r--libusb/libusbi.h14
-rw-r--r--libusb/os/darwin_usb.c49
-rw-r--r--libusb/os/darwin_usb.h2
-rw-r--r--libusb/os/haiku_usb.h10
-rw-r--r--libusb/os/haiku_usb_backend.cpp10
-rw-r--r--libusb/os/haiku_usb_raw.cpp8
-rw-r--r--libusb/os/linux_usbfs.c102
-rw-r--r--libusb/os/netbsd_usb.c28
-rw-r--r--libusb/os/null_usb.c8
-rw-r--r--libusb/os/openbsd_usb.c24
-rw-r--r--libusb/os/sunos_usb.c42
-rw-r--r--libusb/os/windows_common.c12
-rw-r--r--libusb/os/windows_common.h10
-rw-r--r--libusb/os/windows_usbdk.c10
-rw-r--r--libusb/os/windows_winusb.c88
-rw-r--r--libusb/os/windows_winusb.h8
-rw-r--r--libusb/version_nano.h2
18 files changed, 230 insertions, 228 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;
}
diff --git a/libusb/libusbi.h b/libusb/libusbi.h
index 9826bec..3c5add6 100644
--- a/libusb/libusbi.h
+++ b/libusb/libusbi.h
@@ -942,7 +942,7 @@ struct usbi_os_backend {
* blocking
* - another LIBUSB_ERROR code on other failure.
*/
- int (*get_configuration)(struct libusb_device_handle *dev_handle, int *config);
+ int (*get_configuration)(struct libusb_device_handle *dev_handle, uint8_t *config);
/* Set the active configuration for a device.
*
@@ -978,7 +978,7 @@ struct usbi_os_backend {
* was opened
* - another LIBUSB_ERROR code on other failure
*/
- int (*claim_interface)(struct libusb_device_handle *dev_handle, int interface_number);
+ int (*claim_interface)(struct libusb_device_handle *dev_handle, uint8_t interface_number);
/* Release a previously claimed interface.
*
@@ -995,7 +995,7 @@ struct usbi_os_backend {
* was opened
* - another LIBUSB_ERROR code on other failure
*/
- int (*release_interface)(struct libusb_device_handle *dev_handle, int interface_number);
+ int (*release_interface)(struct libusb_device_handle *dev_handle, uint8_t interface_number);
/* Set the alternate setting for an interface.
*
@@ -1012,7 +1012,7 @@ struct usbi_os_backend {
* - another LIBUSB_ERROR code on other failure
*/
int (*set_interface_altsetting)(struct libusb_device_handle *dev_handle,
- int interface_number, int altsetting);
+ uint8_t interface_number, uint8_t altsetting);
/* Clear a halt/stall condition on an endpoint.
*
@@ -1076,7 +1076,7 @@ struct usbi_os_backend {
* - another LIBUSB_ERROR code on other failure
*/
int (*kernel_driver_active)(struct libusb_device_handle *dev_handle,
- int interface_number);
+ uint8_t interface_number);
/* Detach a kernel driver from an interface. Optional.
*
@@ -1092,7 +1092,7 @@ struct usbi_os_backend {
* - another LIBUSB_ERROR code on other failure
*/
int (*detach_kernel_driver)(struct libusb_device_handle *dev_handle,
- int interface_number);
+ uint8_t interface_number);
/* Attach a kernel driver to an interface. Optional.
*
@@ -1109,7 +1109,7 @@ struct usbi_os_backend {
* - another LIBUSB_ERROR code on other failure
*/
int (*attach_kernel_driver)(struct libusb_device_handle *dev_handle,
- int interface_number);
+ uint8_t interface_number);
/* Destroy a device. Optional.
*
diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c
index de5ce9c..58944be 100644
--- a/libusb/os/darwin_usb.c
+++ b/libusb/os/darwin_usb.c
@@ -76,8 +76,8 @@ static const char *darwin_device_class = kIOUSBDeviceClassName;
static pthread_t libusb_darwin_at;
static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, void *buffer, size_t len);
-static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface);
-static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface);
+static int darwin_claim_interface(struct libusb_device_handle *dev_handle, uint8_t iface);
+static int darwin_release_interface(struct libusb_device_handle *dev_handle, uint8_t iface);
static int darwin_reset_device(struct libusb_device_handle *dev_handle);
static void darwin_async_io_callback (void *refcon, IOReturn result, void *arg0);
@@ -661,7 +661,7 @@ static void darwin_exit (struct libusb_context *ctx) {
pthread_mutex_unlock (&libusb_darwin_init_mutex);
}
-static int get_configuration_index (struct libusb_device *dev, int config_value) {
+static int get_configuration_index (struct libusb_device *dev, UInt8 config_value) {
struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev);
UInt8 i, numConfig;
IOUSBConfigurationDescriptorPtr desc;
@@ -784,7 +784,7 @@ static enum libusb_error darwin_check_configuration (struct libusb_context *ctx,
} else
/* not configured */
dev->active_config = 0;
-
+
usbi_dbg ("active config: %u, first config: %u", dev->active_config, dev->first_config);
return LIBUSB_SUCCESS;
@@ -1280,10 +1280,10 @@ static void darwin_close (struct libusb_device_handle *dev_handle) {
}
}
-static int darwin_get_configuration(struct libusb_device_handle *dev_handle, int *config) {
+static int darwin_get_configuration(struct libusb_device_handle *dev_handle, uint8_t *config) {
struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev);
- *config = (int) dpriv->active_config;
+ *config = dpriv->active_config;
return LIBUSB_SUCCESS;
}
@@ -1291,9 +1291,10 @@ static int darwin_get_configuration(struct libusb_device_handle *dev_handle, int
static enum libusb_error darwin_set_configuration(struct libusb_device_handle *dev_handle, int config) {
struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev);
IOReturn kresult;
- int i;
+ uint8_t i;
- assert(config >= 0 && config <= UINT8_MAX);
+ if (config == -1)
+ config = 0;
/* Setting configuration will invalidate the interface, so we need
to reclaim it. First, dispose of existing interfaces, if any. */
@@ -1315,7 +1316,7 @@ static enum libusb_error darwin_set_configuration(struct libusb_device_handle *d
return LIBUSB_SUCCESS;
}
-static IOReturn darwin_get_interface (usb_device_t **darwin_device, int ifc, io_service_t *usbInterfacep) {
+static IOReturn darwin_get_interface (usb_device_t **darwin_device, uint8_t ifc, io_service_t *usbInterfacep) {
IOUSBFindInterfaceRequest request;
IOReturn kresult;
io_iterator_t interface_iterator;
@@ -1352,7 +1353,7 @@ static IOReturn darwin_get_interface (usb_device_t **darwin_device, int ifc, io_
return kIOReturnSuccess;
}
-static enum libusb_error get_endpoints (struct libusb_device_handle *dev_handle, int iface) {
+static enum libusb_error get_endpoints (struct libusb_device_handle *dev_handle, uint8_t iface) {
struct darwin_device_handle_priv *priv = usbi_get_device_handle_priv(dev_handle);
/* current interface */
@@ -1412,7 +1413,7 @@ static enum libusb_error get_endpoints (struct libusb_device_handle *dev_handle,
return LIBUSB_SUCCESS;
}
-static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface) {
+static int darwin_claim_interface(struct libusb_device_handle *dev_handle, uint8_t iface) {
struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev);
struct darwin_device_handle_priv *priv = usbi_get_device_handle_priv(dev_handle);
io_service_t usbInterface = IO_OBJECT_NULL;
@@ -1421,12 +1422,10 @@ static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int i
IOCFPlugInInterface **plugInInterface = NULL;
SInt32 score;
- assert(iface >= 0 && iface <= UINT8_MAX);
-
/* current interface */
struct darwin_interface *cInterface = &priv->interfaces[iface];
- kresult = darwin_get_interface (dpriv->device, (uint8_t)iface, &usbInterface);
+ kresult = darwin_get_interface (dpriv->device, iface, &usbInterface);
if (kresult != kIOReturnSuccess)
return darwin_to_libusb (kresult);
@@ -1435,13 +1434,13 @@ static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int i
usbi_info (HANDLE_CTX (dev_handle), "no interface found; setting configuration: %d", dpriv->first_config);
/* set the configuration */
- ret = darwin_set_configuration (dev_handle, dpriv->first_config);
+ ret = darwin_set_configuration (dev_handle, (int) dpriv->first_config);
if (ret != LIBUSB_SUCCESS) {
usbi_err (HANDLE_CTX (dev_handle), "could not set configuration");
return ret;
}
- kresult = darwin_get_interface (dpriv->device, (uint8_t)iface, &usbInterface);
+ kresult = darwin_get_interface (dpriv->device, iface, &usbInterface);
if (kresult != kIOReturnSuccess) {
usbi_err (HANDLE_CTX (dev_handle), "darwin_get_interface: %s", darwin_error_str(kresult));
return darwin_to_libusb (kresult);
@@ -1519,7 +1518,7 @@ static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int i
return LIBUSB_SUCCESS;
}
-static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface) {
+static int darwin_release_interface(struct libusb_device_handle *dev_handle, uint8_t iface) {
struct darwin_device_handle_priv *priv = usbi_get_device_handle_priv(dev_handle);
IOReturn kresult;
@@ -1552,7 +1551,7 @@ static int darwin_release_interface(struct libusb_device_handle *dev_handle, int
return darwin_to_libusb (kresult);
}
-static int darwin_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) {
+static int darwin_set_interface_altsetting(struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting) {
struct darwin_device_handle_priv *priv = usbi_get_device_handle_priv(dev_handle);
IOReturn kresult;
enum libusb_error ret;
@@ -1563,8 +1562,7 @@ static int darwin_set_interface_altsetting(struct libusb_device_handle *dev_hand
if (!cInterface->interface)
return LIBUSB_ERROR_NO_DEVICE;
- assert(altsetting >= 0 && altsetting <= UINT8_MAX);
- kresult = (*(cInterface->interface))->SetAlternateInterface (cInterface->interface, (UInt8)altsetting);
+ kresult = (*(cInterface->interface))->SetAlternateInterface (cInterface->interface, altsetting);
if (kresult != kIOReturnSuccess)
darwin_reset_device (dev_handle);
@@ -1639,16 +1637,16 @@ static int darwin_restore_state (struct libusb_device_handle *dev_handle, int8_t
usbi_dbg ("darwin/restore_state: reclaiming interfaces");
if (claimed_interfaces) {
- for (int iface = 0 ; iface < USB_MAXINTERFACES ; ++iface) {
+ for (uint8_t iface = 0 ; iface < USB_MAXINTERFACES ; ++iface) {
if (!(claimed_interfaces & (1U << iface))) {
continue;
}
- usbi_dbg ("darwin/restore_state: re-claiming interface %d", iface);
+ usbi_dbg ("darwin/restore_state: re-claiming interface %u", iface);
ret = darwin_claim_interface (dev_handle, iface);
if (LIBUSB_SUCCESS != ret) {
- usbi_dbg ("darwin/restore_state: could not claim interface %d", iface);
+ usbi_dbg ("darwin/restore_state: could not claim interface %u", iface);
return LIBUSB_ERROR_NOT_FOUND;
}
@@ -1724,14 +1722,13 @@ static int darwin_reset_device(struct libusb_device_handle *dev_handle) {
return darwin_restore_state (dev_handle, active_config, claimed_interfaces);
}
-static int darwin_kernel_driver_active(struct libusb_device_handle *dev_handle, int interface) {
+static int darwin_kernel_driver_active(struct libusb_device_handle *dev_handle, uint8_t interface) {
struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev);
io_service_t usbInterface;
CFTypeRef driver;
IOReturn kresult;
- assert(interface >= 0 && interface <= UINT8_MAX);
- kresult = darwin_get_interface (dpriv->device, (uint8_t)interface, &usbInterface);
+ kresult = darwin_get_interface (dpriv->device, interface, &usbInterface);
if (kresult != kIOReturnSuccess) {
usbi_err (HANDLE_CTX (dev_handle), "darwin_get_interface: %s", darwin_error_str(kresult));
diff --git a/libusb/os/darwin_usb.h b/libusb/os/darwin_usb.h
index 3d76baf..b799bfd 100644
--- a/libusb/os/darwin_usb.h
+++ b/libusb/os/darwin_usb.h
@@ -162,7 +162,7 @@ struct darwin_cached_device {
char sys_path[21];
usb_device_t **device;
int open_count;
- UInt8 first_config, active_config, port;
+ UInt8 first_config, active_config, port;
int can_enumerate;
int refcount;
bool in_reenumerate;
diff --git a/libusb/os/haiku_usb.h b/libusb/os/haiku_usb.h
index 9a87859..2dd5177 100644
--- a/libusb/os/haiku_usb.h
+++ b/libusb/os/haiku_usb.h
@@ -42,8 +42,8 @@ public:
const usb_configuration_descriptor* ActiveConfiguration() const;
uint8 EndpointToIndex(uint8) const;
uint8 EndpointToInterface(uint8) const;
- int ClaimInterface(int);
- int ReleaseInterface(int);
+ int ClaimInterface(uint8);
+ int ReleaseInterface(uint8);
int CheckInterfacesFree(uint8);
void SetActiveConfiguration(uint8);
uint8 ActiveConfigurationIndex() const;
@@ -65,10 +65,10 @@ class USBDeviceHandle {
public:
USBDeviceHandle(USBDevice *dev);
virtual ~USBDeviceHandle();
- int ClaimInterface(int);
- int ReleaseInterface(int);
+ int ClaimInterface(uint8);
+ int ReleaseInterface(uint8);
int SetConfiguration(uint8);
- int SetAltSetting(int, int);
+ int SetAltSetting(uint8, uint8);
int ClearHalt(uint8);
status_t SubmitTransfer(struct usbi_transfer *);
status_t CancelTransfer(USBTransfer *);
diff --git a/libusb/os/haiku_usb_backend.cpp b/libusb/os/haiku_usb_backend.cpp
index 2b6ad71..8bbf3e0 100644
--- a/libusb/os/haiku_usb_backend.cpp
+++ b/libusb/os/haiku_usb_backend.cpp
@@ -252,7 +252,7 @@ USBDeviceHandle::~USBDeviceHandle()
}
int
-USBDeviceHandle::ClaimInterface(int inumber)
+USBDeviceHandle::ClaimInterface(uint8 inumber)
{
int status = fUSBDevice->ClaimInterface(inumber);
if (status == LIBUSB_SUCCESS)
@@ -261,7 +261,7 @@ USBDeviceHandle::ClaimInterface(int inumber)
}
int
-USBDeviceHandle::ReleaseInterface(int inumber)
+USBDeviceHandle::ReleaseInterface(uint8 inumber)
{
fUSBDevice->ReleaseInterface(inumber);
fClaimedInterfaces &= ~(1U << inumber);
@@ -285,7 +285,7 @@ USBDeviceHandle::SetConfiguration(uint8 config)
}
int
-USBDeviceHandle::SetAltSetting(int inumber, int alt)
+USBDeviceHandle::SetAltSetting(uint8 inumber, uint8 alt)
{
usb_raw_command command;
command.alternate.config_index = fUSBDevice->ActiveConfigurationIndex();
@@ -401,7 +401,7 @@ USBDevice::ActiveConfigurationIndex() const
return fActiveConfiguration;
}
-int USBDevice::ClaimInterface(int interface)
+int USBDevice::ClaimInterface(uint8 interface)
{
if (interface > ActiveConfiguration()->number_interfaces)
return LIBUSB_ERROR_NOT_FOUND;
@@ -411,7 +411,7 @@ int USBDevice::ClaimInterface(int interface)
return LIBUSB_SUCCESS;
}
-int USBDevice::ReleaseInterface(int interface)
+int USBDevice::ReleaseInterface(uint8 interface)
{
fClaimedInterfaces &= ~(1U << interface);
return LIBUSB_SUCCESS;
diff --git a/libusb/os/haiku_usb_raw.cpp b/libusb/os/haiku_usb_raw.cpp
index a9fb6b8..bce706c 100644
--- a/libusb/os/haiku_usb_raw.cpp
+++ b/libusb/os/haiku_usb_raw.cpp
@@ -108,14 +108,14 @@ haiku_set_configuration(struct libusb_device_handle *dev_handle, int config)
}
static int
-haiku_claim_interface(struct libusb_device_handle *dev_handle, int interface_number)
+haiku_claim_interface(struct libusb_device_handle *dev_handle, uint8_t interface_number)
{
USBDeviceHandle *handle = *((USBDeviceHandle **)usbi_get_device_handle_priv(dev_handle));
return handle->ClaimInterface(interface_number);
}
static int
-haiku_set_altsetting(struct libusb_device_handle *dev_handle, int interface_number, int altsetting)
+haiku_set_altsetting(struct libusb_device_handle *dev_handle, uint8_t interface_number, uint8_t altsetting)
{
USBDeviceHandle *handle = *((USBDeviceHandle **)usbi_get_device_handle_priv(dev_handle));
return handle->SetAltSetting(interface_number, altsetting);
@@ -129,10 +129,10 @@ haiku_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint
}
static int
-haiku_release_interface(struct libusb_device_handle *dev_handle, int interface_number)
+haiku_release_interface(struct libusb_device_handle *dev_handle, uint8_t interface_number)
{
USBDeviceHandle *handle = *((USBDeviceHandle **)usbi_get_device_handle_priv(dev_handle));
- haiku_set_altsetting(dev_handle,interface_number, 0);
+ haiku_set_altsetting(dev_handle, interface_number, 0);
return handle->ReleaseInterface(interface_number);
}
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
index cfa9402..020db0d 100644
--- a/libusb/os/linux_usbfs.c
+++ b/libusb/os/linux_usbfs.c
@@ -100,7 +100,7 @@ static usbi_mutex_static_t linux_hotplug_startstop_lock = USBI_MUTEX_INITIALIZER
usbi_mutex_static_t linux_hotplug_lock = USBI_MUTEX_INITIALIZER;
static int linux_scan_devices(struct libusb_context *ctx);
-static int detach_kernel_driver_and_claim(struct libusb_device_handle *, int);
+static int detach_kernel_driver_and_claim(struct libusb_device_handle *, uint8_t);
#if !defined(HAVE_LIBUDEV)
static int linux_default_scan_devices(struct libusb_context *ctx);
@@ -116,7 +116,7 @@ struct linux_device_priv {
char *sysfs_dir;
unsigned char *descriptors;
int descriptors_len;
- int active_config; /* cache val for !sysfs_available */
+ uint8_t active_config; /* cache val for !sysfs_available */
};
struct linux_device_handle_priv {
@@ -529,18 +529,20 @@ static int sysfs_scan_device(struct libusb_context *ctx, const char *devname)
}
/* read the bConfigurationValue for a device */
-static int sysfs_get_active_config(struct libusb_device *dev, int *config)
+static int sysfs_get_active_config(struct libusb_device *dev, uint8_t *config)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
- int ret;
+ int ret, tmp;
ret = read_sysfs_attr(DEVICE_CTX(dev), priv->sysfs_dir, "bConfigurationValue",
- UINT8_MAX, config);
+ UINT8_MAX, &tmp);
if (ret < 0)
return ret;
- if (*config == -1)
- usbi_dbg("device unconfigured");
+ if (tmp == -1)
+ tmp = 0; /* unconfigured */
+
+ *config = (uint8_t)tmp;
return 0;
}
@@ -716,21 +718,25 @@ static int op_get_active_config_descriptor(struct libusb_device *dev,
void *buffer, size_t len)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
- int r, config;
void *config_desc;
+ uint8_t active_config;
+ int r;
if (priv->sysfs_dir) {
- r = sysfs_get_active_config(dev, &config);
+ r = sysfs_get_active_config(dev, &active_config);
if (r < 0)
return r;
} else {
/* Use cached bConfigurationValue */
- config = priv->active_config;
+ active_config = priv->active_config;
}
- if (config == -1)
+
+ if (active_config == 0) {
+ usbi_err(DEVICE_CTX(dev), "device unconfigured");
return LIBUSB_ERROR_NOT_FOUND;
+ }
- r = op_get_config_descriptor_by_value(dev, config, &config_desc);
+ r = op_get_config_descriptor_by_value(dev, active_config, &config_desc);
if (r < 0)
return r;
@@ -770,7 +776,7 @@ static int op_get_config_descriptor(struct libusb_device *dev,
static int usbfs_get_active_config(struct libusb_device *dev, int fd)
{
struct linux_device_priv *priv = usbi_get_device_priv(dev);
- unsigned char active_config = 0;
+ uint8_t active_config = 0;
int r;
struct usbfs_ctrltransfer ctrl = {
@@ -790,21 +796,17 @@ static int usbfs_get_active_config(struct libusb_device *dev, int fd)
/* we hit this error path frequently with buggy devices :( */
usbi_warn(DEVICE_CTX(dev), "get configuration failed, errno=%d", errno);
- priv->active_config = -1;
- } else {
- if (active_config > 0) {
- priv->active_config = active_config;
- } else {
- /* some buggy devices have a configuration 0, but we're
- * reaching into the corner of a corner case here, so let's
- * not support buggy devices in these circumstances.
- * stick to the specs: a configuration value of 0 means
- * unconfigured. */
- usbi_warn(DEVICE_CTX(dev), "active cfg 0? assuming unconfigured device");
- priv->active_config = -1;
- }
+ } else if (active_config == 0) {
+ /* some buggy devices have a configuration 0, but we're
+ * reaching into the corner of a corner case here, so let's
+ * not support buggy devices in these circumstances.
+ * stick to the specs: a configuration value of 0 means
+ * unconfigured. */
+ usbi_warn(DEVICE_CTX(dev), "active cfg 0? assuming unconfigured device");
}
+ priv->active_config = active_config;
+
return LIBUSB_SUCCESS;
}
@@ -912,7 +914,7 @@ static int initialize_device(struct libusb_device *dev, uint8_t busnum,
config = (struct usbi_configuration_descriptor *)(priv->descriptors + LIBUSB_DT_DEVICE_SIZE);
priv->active_config = config->bConfigurationValue;
} else {
- priv->active_config = -1; /* No config dt */
+ priv->active_config = 0; /* No config dt */
}
return LIBUSB_SUCCESS;
@@ -1332,7 +1334,7 @@ static void op_close(struct libusb_device_handle *dev_handle)
}
static int op_get_configuration(struct libusb_device_handle *handle,
- int *config)
+ uint8_t *config)
{
struct linux_device_priv *priv = usbi_get_device_priv(handle->dev);
int r;
@@ -1349,10 +1351,8 @@ static int op_get_configuration(struct libusb_device_handle *handle,
if (r < 0)
return r;
- if (*config == -1) {
+ if (*config == 0)
usbi_err(HANDLE_CTX(handle), "device unconfigured");
- *config = 0;
- }
return 0;
}
@@ -1376,13 +1376,16 @@ static int op_set_configuration(struct libusb_device_handle *handle, int config)
return LIBUSB_ERROR_OTHER;
}
+ if (config == -1)
+ config = 0;
+
/* update our cached active config descriptor */
- priv->active_config = config;
+ priv->active_config = (uint8_t)config;
return LIBUSB_SUCCESS;
}
-static int claim_interface(struct libusb_device_handle *handle, int iface)
+static int claim_interface(struct libusb_device_handle *handle, unsigned int iface)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
@@ -1402,7 +1405,7 @@ static int claim_interface(struct libusb_device_handle *handle, int iface)
return 0;
}
-static int release_interface(struct libusb_device_handle *handle, int iface)
+static int release_interface(struct libusb_device_handle *handle, unsigned int iface)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
@@ -1418,15 +1421,15 @@ static int release_interface(struct libusb_device_handle *handle, int iface)
return 0;
}
-static int op_set_interface(struct libusb_device_handle *handle, int iface,
- int altsetting)
+static int op_set_interface(struct libusb_device_handle *handle, uint8_t interface,
+ uint8_t altsetting)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
struct usbfs_setinterface setintf;
int r;
- setintf.interface = iface;
+ setintf.interface = interface;
setintf.altsetting = altsetting;
r = ioctl(fd, IOCTL_USBFS_SETINTERFACE, &setintf);
if (r < 0) {
@@ -1467,7 +1470,8 @@ static int op_reset_device(struct libusb_device_handle *handle)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
- int i, r, ret = 0;
+ int r, ret = 0;
+ uint8_t i;
/* Doing a device reset will cause the usbfs driver to get unbound
* from any interfaces it is bound to. By voluntarily unbinding
@@ -1503,7 +1507,7 @@ static int op_reset_device(struct libusb_device_handle *handle)
*/
r = detach_kernel_driver_and_claim(handle, i);
if (r) {
- usbi_warn(HANDLE_CTX(handle), "failed to re-claim interface %d after reset: %s",
+ usbi_warn(HANDLE_CTX(handle), "failed to re-claim interface %u after reset: %s",
i, libusb_error_name(r));
handle->claimed_interfaces &= ~(1UL << i);
ret = LIBUSB_ERROR_NOT_FOUND;
@@ -1589,7 +1593,7 @@ static int op_dev_mem_free(struct libusb_device_handle *handle, void *buffer,
}
static int op_kernel_driver_active(struct libusb_device_handle *handle,
- int interface)
+ uint8_t interface)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
@@ -1612,7 +1616,7 @@ static int op_kernel_driver_active(struct libusb_device_handle *handle,
}
static int op_detach_kernel_driver(struct libusb_device_handle *handle,
- int interface)
+ uint8_t interface)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
@@ -1646,7 +1650,7 @@ static int op_detach_kernel_driver(struct libusb_device_handle *handle,
}
static int op_attach_kernel_driver(struct libusb_device_handle *handle,
- int interface)
+ uint8_t interface)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int fd = hpriv->fd;
@@ -1678,7 +1682,7 @@ static int op_attach_kernel_driver(struct libusb_device_handle *handle,
}
static int detach_kernel_driver_and_claim(struct libusb_device_handle *handle,
- int interface)
+ uint8_t interface)
{
struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle);
struct usbfs_disconnect_claim dc;
@@ -1713,24 +1717,24 @@ static int detach_kernel_driver_and_claim(struct libusb_device_handle *handle,
return claim_interface(handle, interface);
}
-static int op_claim_interface(struct libusb_device_handle *handle, int iface)
+static int op_claim_interface(struct libusb_device_handle *handle, uint8_t interface)
{
if (handle->auto_detach_kernel_driver)
- return detach_kernel_driver_and_claim(handle, iface);
+ return detach_kernel_driver_and_claim(handle, interface);
else
- return claim_interface(handle, iface);
+ return claim_interface(handle, interface);
}
-static int op_release_interface(struct libusb_device_handle *handle, int iface)
+static int op_release_interface(struct libusb_device_handle *handle, uint8_t interface)
{
int r;
- r = release_interface(handle, iface);
+ r = release_interface(handle, interface);
if (r)
return r;
if (handle->auto_detach_kernel_driver)
- op_attach_kernel_driver(handle, iface);
+ op_attach_kernel_driver(handle, interface);
return 0;
}
diff --git a/libusb/os/netbsd_usb.c b/libusb/os/netbsd_usb.c
index 2a1359b..7a36209 100644
--- a/libusb/os/netbsd_usb.c
+++ b/libusb/os/netbsd_usb.c
@@ -56,14 +56,14 @@ static int netbsd_get_active_config_descriptor(struct libusb_device *,
static int netbsd_get_config_descriptor(struct libusb_device *, uint8_t,
void *, size_t);
-static int netbsd_get_configuration(struct libusb_device_handle *, int *);
+static int netbsd_get_configuration(struct libusb_device_handle *, uint8_t *);
static int netbsd_set_configuration(struct libusb_device_handle *, int);
-static int netbsd_claim_interface(struct libusb_device_handle *, int);
-static int netbsd_release_interface(struct libusb_device_handle *, int);
+static int netbsd_claim_interface(struct libusb_device_handle *, uint8_t);
+static int netbsd_release_interface(struct libusb_device_handle *, uint8_t);
-static int netbsd_set_interface_altsetting(struct libusb_device_handle *, int,
- int);
+static int netbsd_set_interface_altsetting(struct libusb_device_handle *,
+ uint8_t, uint8_t);
static int netbsd_clear_halt(struct libusb_device_handle *, unsigned char);
static void netbsd_destroy_device(struct libusb_device *);
@@ -273,16 +273,18 @@ netbsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
}
int
-netbsd_get_configuration(struct libusb_device_handle *handle, int *config)
+netbsd_get_configuration(struct libusb_device_handle *handle, uint8_t *config)
{
struct device_priv *dpriv = usbi_get_device_priv(handle->dev);
+ int tmp;
usbi_dbg(" ");
- if (ioctl(dpriv->fd, USB_GET_CONFIG, config) < 0)
+ if (ioctl(dpriv->fd, USB_GET_CONFIG, &tmp) < 0)
return _errno_to_libusb(errno);
- usbi_dbg("configuration %d", *config);
+ usbi_dbg("configuration %d", tmp);
+ *config = (uint8_t)tmp;
return (LIBUSB_SUCCESS);
}
@@ -301,7 +303,7 @@ netbsd_set_configuration(struct libusb_device_handle *handle, int config)
}
int
-netbsd_claim_interface(struct libusb_device_handle *handle, int iface)
+netbsd_claim_interface(struct libusb_device_handle *handle, uint8_t iface)
{
struct handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int i;
@@ -315,7 +317,7 @@ netbsd_claim_interface(struct libusb_device_handle *handle, int iface)
}
int
-netbsd_release_interface(struct libusb_device_handle *handle, int iface)
+netbsd_release_interface(struct libusb_device_handle *handle, uint8_t iface)
{
struct handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int i;
@@ -330,13 +332,13 @@ netbsd_release_interface(struct libusb_device_handle *handle, int iface)
}
int
-netbsd_set_interface_altsetting(struct libusb_device_handle *handle, int iface,
- int altsetting)
+netbsd_set_interface_altsetting(struct libusb_device_handle *handle, uint8_t iface,
+ uint8_t altsetting)
{
struct device_priv *dpriv = usbi_get_device_priv(handle->dev);
struct usb_alt_interface intf;
- usbi_dbg("iface %d, setting %d", iface, altsetting);
+ usbi_dbg("iface %u, setting %u", iface, altsetting);
memset(&intf, 0, sizeof(intf));
diff --git a/libusb/os/null_usb.c b/libusb/os/null_usb.c
index 06278b1..0cd531d 100644
--- a/libusb/os/null_usb.c
+++ b/libusb/os/null_usb.c
@@ -57,20 +57,20 @@ null_set_configuration(struct libusb_device_handle *handle, int config)
}
static int
-null_claim_interface(struct libusb_device_handle *handle, int iface)
+null_claim_interface(struct libusb_device_handle *handle, uint8_t iface)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
static int
-null_release_interface(struct libusb_device_handle *handle, int iface)
+null_release_interface(struct libusb_device_handle *handle, uint8_t iface)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
static int
-null_set_interface_altsetting(struct libusb_device_handle *handle, int iface,
- int altsetting)
+null_set_interface_altsetting(struct libusb_device_handle *handle, uint8_t iface,
+ uint8_t altsetting)
{
return LIBUSB_ERROR_NOT_SUPPORTED;
}
diff --git a/libusb/os/openbsd_usb.c b/libusb/os/openbsd_usb.c
index 42cfbd5..f5b0470 100644
--- a/libusb/os/openbsd_usb.c
+++ b/libusb/os/openbsd_usb.c
@@ -56,14 +56,14 @@ static int obsd_get_active_config_descriptor(struct libusb_device *,
static int obsd_get_config_descriptor(struct libusb_device *, uint8_t,
void *, size_t);
-static int obsd_get_configuration(struct libusb_device_handle *, int *);
+static int obsd_get_configuration(struct libusb_device_handle *, uint8_t *);
static int obsd_set_configuration(struct libusb_device_handle *, int);
-static int obsd_claim_interface(struct libusb_device_handle *, int);
-static int obsd_release_interface(struct libusb_device_handle *, int);
+static int obsd_claim_interface(struct libusb_device_handle *, uint8_t);
+static int obsd_release_interface(struct libusb_device_handle *, uint8_t);
-static int obsd_set_interface_altsetting(struct libusb_device_handle *, int,
- int);
+static int obsd_set_interface_altsetting(struct libusb_device_handle *, uint8_t,
+ uint8_t);
static int obsd_clear_halt(struct libusb_device_handle *, unsigned char);
static void obsd_destroy_device(struct libusb_device *);
@@ -298,13 +298,13 @@ obsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
}
int
-obsd_get_configuration(struct libusb_device_handle *handle, int *config)
+obsd_get_configuration(struct libusb_device_handle *handle, uint8_t *config)
{
struct device_priv *dpriv = usbi_get_device_priv(handle->dev);
*config = dpriv->cdesc->bConfigurationValue;
- usbi_dbg("bConfigurationValue %d", *config);
+ usbi_dbg("bConfigurationValue %u", *config);
return (LIBUSB_SUCCESS);
}
@@ -326,7 +326,7 @@ obsd_set_configuration(struct libusb_device_handle *handle, int config)
}
int
-obsd_claim_interface(struct libusb_device_handle *handle, int iface)
+obsd_claim_interface(struct libusb_device_handle *handle, uint8_t iface)
{
struct handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int i;
@@ -340,7 +340,7 @@ obsd_claim_interface(struct libusb_device_handle *handle, int iface)
}
int
-obsd_release_interface(struct libusb_device_handle *handle, int iface)
+obsd_release_interface(struct libusb_device_handle *handle, uint8_t iface)
{
struct handle_priv *hpriv = usbi_get_device_handle_priv(handle);
int i;
@@ -355,8 +355,8 @@ obsd_release_interface(struct libusb_device_handle *handle, int iface)
}
int
-obsd_set_interface_altsetting(struct libusb_device_handle *handle, int iface,
- int altsetting)
+obsd_set_interface_altsetting(struct libusb_device_handle *handle, uint8_t iface,
+ uint8_t altsetting)
{
struct device_priv *dpriv = usbi_get_device_priv(handle->dev);
struct usb_alt_interface intf;
@@ -364,7 +364,7 @@ obsd_set_interface_altsetting(struct libusb_device_handle *handle, int iface,
if (dpriv->devname == NULL)
return (LIBUSB_ERROR_NOT_SUPPORTED);
- usbi_dbg("iface %d, setting %d", iface, altsetting);
+ usbi_dbg("iface %u, setting %u", iface, altsetting);
memset(&intf, 0, sizeof(intf));
diff --git a/libusb/os/sunos_usb.c b/libusb/os/sunos_usb.c
index 11cf688..3e2fb4f 100644
--- a/libusb/os/sunos_usb.c
+++ b/libusb/os/sunos_usb.c
@@ -64,20 +64,20 @@ static int sunos_get_active_config_descriptor(struct libusb_device *,
void *, size_t);
static int sunos_get_config_descriptor(struct libusb_device *, uint8_t,
void *, size_t);
-static int sunos_get_configuration(struct libusb_device_handle *, int *);
+static int sunos_get_configuration(struct libusb_device_handle *, uint8_t *);
static int sunos_set_configuration(struct libusb_device_handle *, int);
-static int sunos_claim_interface(struct libusb_device_handle *, int);
-static int sunos_release_interface(struct libusb_device_handle *, int);
+static int sunos_claim_interface(struct libusb_device_handle *, uint8_t);
+static int sunos_release_interface(struct libusb_device_handle *, uint8_t);
static int sunos_set_interface_altsetting(struct libusb_device_handle *,
- int, int);
-static int sunos_clear_halt(struct libusb_device_handle *, uint8_t);
+ uint8_t, uint8_t);
+static int sunos_clear_halt(struct libusb_device_handle *, unsigned char);
static void sunos_destroy_device(struct libusb_device *);
static int sunos_submit_transfer(struct usbi_transfer *);
static int sunos_cancel_transfer(struct usbi_transfer *);
static int sunos_handle_transfer_completion(struct usbi_transfer *);
-static int sunos_kernel_driver_active(struct libusb_device_handle *, int interface);
-static int sunos_detach_kernel_driver (struct libusb_device_handle *dev, int interface_number);
-static int sunos_attach_kernel_driver (struct libusb_device_handle *dev, int interface_number);
+static int sunos_kernel_driver_active(struct libusb_device_handle *, uint8_t);
+static int sunos_detach_kernel_driver(struct libusb_device_handle *, uint8_t);
+static int sunos_attach_kernel_driver(struct libusb_device_handle *, uint8_t);
static int sunos_usb_open_ep0(sunos_dev_handle_priv_t *hpriv, sunos_dev_priv_t *dpriv);
static int sunos_usb_ioctl(struct libusb_device *dev, int cmd);
@@ -222,7 +222,7 @@ sunos_usb_ioctl(struct libusb_device *dev, int cmd)
}
static int
-sunos_kernel_driver_active(struct libusb_device_handle *dev_handle, int interface)
+sunos_kernel_driver_active(struct libusb_device_handle *dev_handle, uint8_t interface)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(dev_handle->dev);
@@ -345,7 +345,7 @@ sunos_exec_command(struct libusb_context *ctx, const char *path,
static int
sunos_detach_kernel_driver(struct libusb_device_handle *dev_handle,
- int interface_number)
+ uint8_t interface_number)
{
struct libusb_context *ctx = HANDLE_CTX(dev_handle);
string_list_t *list;
@@ -402,7 +402,7 @@ sunos_detach_kernel_driver(struct libusb_device_handle *dev_handle,
static int
sunos_attach_kernel_driver(struct libusb_device_handle *dev_handle,
- int interface_number)
+ uint8_t interface_number)
{
struct libusb_context *ctx = HANDLE_CTX(dev_handle);
string_list_t *list;
@@ -1054,13 +1054,13 @@ sunos_get_config_descriptor(struct libusb_device *dev, uint8_t idx,
}
int
-sunos_get_configuration(struct libusb_device_handle *handle, int *config)
+sunos_get_configuration(struct libusb_device_handle *handle, uint8_t *config)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(handle->dev);
*config = dpriv->cfgvalue;
- usbi_dbg("bConfigurationValue %d", *config);
+ usbi_dbg("bConfigurationValue %u", *config);
return (LIBUSB_SUCCESS);
}
@@ -1087,21 +1087,21 @@ sunos_set_configuration(struct libusb_device_handle *handle, int config)
}
int
-sunos_claim_interface(struct libusb_device_handle *handle, int iface)
+sunos_claim_interface(struct libusb_device_handle *handle, uint8_t iface)
{
UNUSED(handle);
- usbi_dbg("iface %d", iface);
+ usbi_dbg("iface %u", iface);
return (LIBUSB_SUCCESS);
}
int
-sunos_release_interface(struct libusb_device_handle *handle, int iface)
+sunos_release_interface(struct libusb_device_handle *handle, uint8_t iface)
{
sunos_dev_handle_priv_t *hpriv = usbi_get_device_handle_priv(handle);
- usbi_dbg("iface %d", iface);
+ usbi_dbg("iface %u", iface);
/* XXX: can we release it? */
hpriv->altsetting[iface] = 0;
@@ -1110,13 +1110,13 @@ sunos_release_interface(struct libusb_device_handle *handle, int iface)
}
int
-sunos_set_interface_altsetting(struct libusb_device_handle *handle, int iface,
- int altsetting)
+sunos_set_interface_altsetting(struct libusb_device_handle *handle, uint8_t iface,
+ uint8_t altsetting)
{
sunos_dev_priv_t *dpriv = usbi_get_device_priv(handle->dev);
sunos_dev_handle_priv_t *hpriv = usbi_get_device_handle_priv(handle);
- usbi_dbg("iface %d, setting %d", iface, altsetting);
+ usbi_dbg("iface %u, setting %u", iface, altsetting);
if (dpriv->ugenpath == NULL)
return (LIBUSB_ERROR_NOT_FOUND);
@@ -1340,7 +1340,7 @@ solaris_submit_ctrl_on_default(struct libusb_transfer *transfer)
}
int
-sunos_clear_halt(struct libusb_device_handle *handle, uint8_t endpoint)
+sunos_clear_halt(struct libusb_device_handle *handle, unsigned char endpoint)
{
int ret;
diff --git a/libusb/os/windows_common.c b/libusb/os/windows_common.c
index 1c1ca01..d8f1e38 100644
--- a/libusb/os/windows_common.c
+++ b/libusb/os/windows_common.c
@@ -619,7 +619,7 @@ static int windows_get_config_descriptor_by_value(struct libusb_device *dev,
return priv->backend->get_config_descriptor_by_value(dev, bConfigurationValue, buffer);
}
-static int windows_get_configuration(struct libusb_device_handle *dev_handle, int *config)
+static int windows_get_configuration(struct libusb_device_handle *dev_handle, uint8_t *config)
{
struct windows_context_priv *priv = usbi_get_context_priv(HANDLE_CTX(dev_handle));
return priv->backend->get_configuration(dev_handle, config);
@@ -628,23 +628,25 @@ static int windows_get_configuration(struct libusb_device_handle *dev_handle, in
static int windows_set_configuration(struct libusb_device_handle *dev_handle, int config)
{
struct windows_context_priv *priv = usbi_get_context_priv(HANDLE_CTX(dev_handle));
- return priv->backend->set_configuration(dev_handle, config);
+ if (config == -1)
+ config = 0;
+ return priv->backend->set_configuration(dev_handle, (uint8_t)config);
}
-static int windows_claim_interface(struct libusb_device_handle *dev_handle, int interface_number)
+static int windows_claim_interface(struct libusb_device_handle *dev_handle, uint8_t interface_number)
{
struct windows_context_priv *priv = usbi_get_context_priv(HANDLE_CTX(dev_handle));
return priv->backend->claim_interface(dev_handle, interface_number);
}
-static int windows_release_interface(struct libusb_device_handle *dev_handle, int interface_number)
+static int windows_release_interface(struct libusb_device_handle *dev_handle, uint8_t interface_number)
{
struct windows_context_priv *priv = usbi_get_context_priv(HANDLE_CTX(dev_handle));
return priv->backend->release_interface(dev_handle, interface_number);
}
static int windows_set_interface_altsetting(struct libusb_device_handle *dev_handle,
- int interface_number, int altsetting)
+ uint8_t interface_number, uint8_t altsetting)
{
struct windows_context_priv *priv = usbi_get_context_priv(HANDLE_CTX(dev_handle));
return priv->backend->set_interface_altsetting(dev_handle, interface_number, altsetting);
diff --git a/libusb/os/windows_common.h b/libusb/os/windows_common.h
index 6617de4..59891d4 100644
--- a/libusb/os/windows_common.h
+++ b/libusb/os/windows_common.h
@@ -304,12 +304,12 @@ struct windows_backend {
uint8_t config_index, void *buffer, size_t len);
int (*get_config_descriptor_by_value)(struct libusb_device *device,
uint8_t bConfigurationValue, void **buffer);
- int (*get_configuration)(struct libusb_device_handle *dev_handle, int *config);
- int (*set_configuration)(struct libusb_device_handle *dev_handle, int config);
- int (*claim_interface)(struct libusb_device_handle *dev_handle, int interface_number);
- int (*release_interface)(struct libusb_device_handle *dev_handle, int interface_number);
+ int (*get_configuration)(struct libusb_device_handle *dev_handle, uint8_t *config);
+ int (*set_configuration)(struct libusb_device_handle *dev_handle, uint8_t config);
+ int (*claim_interface)(struct libusb_device_handle *dev_handle, uint8_t interface_number);
+ int (*release_interface)(struct libusb_device_handle *dev_handle, uint8_t interface_number);
int (*set_interface_altsetting)(struct libusb_device_handle *dev_handle,
- int interface_number, int altsetting);
+ uint8_t interface_number, uint8_t altsetting);
int (*clear_halt)(struct libusb_device_handle *dev_handle,
unsigned char endpoint);
int (*reset_device)(struct libusb_device_handle *dev_handle);
diff --git a/libusb/os/windows_usbdk.c b/libusb/os/windows_usbdk.c
index 7d6a3d5..d9e2a9c 100644
--- a/libusb/os/windows_usbdk.c
+++ b/libusb/os/windows_usbdk.c
@@ -421,7 +421,7 @@ static void usbdk_close(struct libusb_device_handle *dev_handle)
usbi_err(HANDLE_CTX(dev_handle), "Redirector shutdown failed");
}
-static int usbdk_get_configuration(struct libusb_device_handle *dev_handle, int *config)
+static int usbdk_get_configuration(struct libusb_device_handle *dev_handle, uint8_t *config)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -430,21 +430,21 @@ static int usbdk_get_configuration(struct libusb_device_handle *dev_handle, int
return LIBUSB_SUCCESS;
}
-static int usbdk_set_configuration(struct libusb_device_handle *dev_handle, int config)
+static int usbdk_set_configuration(struct libusb_device_handle *dev_handle, uint8_t config)
{
UNUSED(dev_handle);
UNUSED(config);
return LIBUSB_SUCCESS;
}
-static int usbdk_claim_interface(struct libusb_device_handle *dev_handle, int iface)
+static int usbdk_claim_interface(struct libusb_device_handle *dev_handle, uint8_t iface)
{
UNUSED(dev_handle);
UNUSED(iface);
return LIBUSB_SUCCESS;
}
-static int usbdk_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting)
+static int usbdk_set_interface_altsetting(struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting)
{
struct usbdk_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -456,7 +456,7 @@ static int usbdk_set_interface_altsetting(struct libusb_device_handle *dev_handl
return LIBUSB_SUCCESS;
}
-static int usbdk_release_interface(struct libusb_device_handle *dev_handle, int iface)
+static int usbdk_release_interface(struct libusb_device_handle *dev_handle, uint8_t iface)
{
UNUSED(dev_handle);
UNUSED(iface);
diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c
index a623a61..8ea9697 100644
--- a/libusb/os/windows_winusb.c
+++ b/libusb/os/windows_winusb.c
@@ -54,11 +54,11 @@ static bool winusbx_init(struct libusb_context *ctx);
static void winusbx_exit(void);
static int winusbx_open(int sub_api, struct libusb_device_handle *dev_handle);
static void winusbx_close(int sub_api, struct libusb_device_handle *dev_handle);
-static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface);
-static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface);
-static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface);
+static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer);
-static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting);
+static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting);
static int winusbx_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer);
static int winusbx_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer);
static int winusbx_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint);
@@ -70,9 +70,9 @@ static bool hid_init(struct libusb_context *ctx);
static void hid_exit(void);
static int hid_open(int sub_api, struct libusb_device_handle *dev_handle);
static void hid_close(int sub_api, struct libusb_device_handle *dev_handle);
-static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface);
-static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface);
-static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting);
+static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting);
static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer);
static int hid_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer);
static int hid_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint);
@@ -81,9 +81,9 @@ static enum libusb_transfer_status hid_copy_transfer_data(int sub_api, struct us
// Composite API prototypes
static int composite_open(int sub_api, struct libusb_device_handle *dev_handle);
static void composite_close(int sub_api, struct libusb_device_handle *dev_handle);
-static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface);
-static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting);
-static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface);
+static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting);
+static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
static int composite_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer);
static int composite_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer);
static int composite_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer);
@@ -467,7 +467,7 @@ static int get_interface_by_endpoint(struct libusb_config_descriptor *conf_desc,
/*
* Populate the endpoints addresses of the device_priv interface helper structs
*/
-static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, int iface, int altsetting)
+static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
struct libusb_config_descriptor *conf_desc;
@@ -484,7 +484,7 @@ static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, int
safe_free(priv->usb_interface[iface].endpoint);
if (if_desc->bNumEndpoints == 0) {
- usbi_dbg("no endpoints found for interface %d", iface);
+ usbi_dbg("no endpoints found for interface %u", iface);
libusb_free_config_descriptor(conf_desc);
priv->usb_interface[iface].current_altsetting = altsetting;
return LIBUSB_SUCCESS;
@@ -499,7 +499,7 @@ static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, int
priv->usb_interface[iface].nb_endpoints = if_desc->bNumEndpoints;
for (i = 0; i < if_desc->bNumEndpoints; i++) {
priv->usb_interface[iface].endpoint[i] = if_desc->endpoint[i].bEndpointAddress;
- usbi_dbg("(re)assigned endpoint %02X to interface %d", priv->usb_interface[iface].endpoint[i], iface);
+ usbi_dbg("(re)assigned endpoint %02X to interface %u", priv->usb_interface[iface].endpoint[i], iface);
}
libusb_free_config_descriptor(conf_desc);
@@ -1595,15 +1595,10 @@ static void winusb_close(struct libusb_device_handle *dev_handle)
priv->apib->close(SUB_API_NOTSET, dev_handle);
}
-static int winusb_get_configuration(struct libusb_device_handle *dev_handle, int *config)
+static int winusb_get_configuration(struct libusb_device_handle *dev_handle, uint8_t *config)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
- if (priv->active_config == 0) {
- *config = 0;
- return LIBUSB_ERROR_NOT_FOUND;
- }
-
*config = priv->active_config;
return LIBUSB_SUCCESS;
}
@@ -1613,23 +1608,23 @@ static int winusb_get_configuration(struct libusb_device_handle *dev_handle, int
* does not currently expose a service that allows higher-level drivers to set
* the configuration."
*/
-static int winusb_set_configuration(struct libusb_device_handle *dev_handle, int config)
+static int winusb_set_configuration(struct libusb_device_handle *dev_handle, uint8_t config)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
int r = LIBUSB_SUCCESS;
r = libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_OUT |
LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE,
- LIBUSB_REQUEST_SET_CONFIGURATION, (uint16_t)config,
+ LIBUSB_REQUEST_SET_CONFIGURATION, config,
0, NULL, 0, 1000);
if (r == LIBUSB_SUCCESS)
- priv->active_config = (uint8_t)config;
+ priv->active_config = config;
return r;
}
-static int winusb_claim_interface(struct libusb_device_handle *dev_handle, int iface)
+static int winusb_claim_interface(struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
int r;
@@ -1647,7 +1642,7 @@ static int winusb_claim_interface(struct libusb_device_handle *dev_handle, int i
return r;
}
-static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting)
+static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
int r;
@@ -1665,7 +1660,7 @@ static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_hand
return r;
}
-static int winusb_release_interface(struct libusb_device_handle *dev_handle, int iface)
+static int winusb_release_interface(struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -2160,7 +2155,7 @@ static void winusbx_close(int sub_api, struct libusb_device_handle *dev_handle)
}
}
-static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_handle_priv *handle_priv = usbi_get_device_handle_priv(dev_handle);
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -2213,7 +2208,7 @@ static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle
return LIBUSB_SUCCESS;
}
-static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct libusb_context *ctx = HANDLE_CTX(dev_handle);
struct winusb_device_handle_priv *handle_priv = usbi_get_device_handle_priv(dev_handle);
@@ -2244,7 +2239,7 @@ static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev
switch (err) {
case ERROR_BAD_COMMAND:
// The device was disconnected
- usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(0));
+ usbi_err(ctx, "could not access interface %u: %s", iface, windows_error_str(0));
return LIBUSB_ERROR_NO_DEVICE;
default:
// it may be that we're using the libusb0 filter driver.
@@ -2287,7 +2282,7 @@ static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev
if (r != LIBUSB_SUCCESS)
return r;
if (!found_filter) {
- usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(err));
+ usbi_err(ctx, "could not access interface %u: %s", iface, windows_error_str(err));
return LIBUSB_ERROR_ACCESS;
}
}
@@ -2302,9 +2297,9 @@ static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev
file_handle = handle_priv->interface_handle[0].dev_handle;
if (WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) {
handle_priv->interface_handle[0].api_handle = winusb_handle;
- usbi_warn(ctx, "auto-claimed interface 0 (required to claim %d with WinUSB)", iface);
+ usbi_warn(ctx, "auto-claimed interface 0 (required to claim %u with WinUSB)", iface);
} else {
- usbi_warn(ctx, "failed to auto-claim interface 0 (required to claim %d with WinUSB): %s", iface, windows_error_str(0));
+ usbi_warn(ctx, "failed to auto-claim interface 0 (required to claim %u with WinUSB): %s", iface, windows_error_str(0));
return LIBUSB_ERROR_ACCESS;
}
}
@@ -2319,19 +2314,19 @@ static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev
case ERROR_ALREADY_EXISTS: // already claimed
return LIBUSB_ERROR_BUSY;
default:
- usbi_err(ctx, "could not claim interface %d: %s", iface, windows_error_str(0));
+ usbi_err(ctx, "could not claim interface %u: %s", iface, windows_error_str(0));
return LIBUSB_ERROR_ACCESS;
}
}
handle_priv->interface_handle[iface].dev_handle = handle_priv->interface_handle[0].dev_handle;
}
- usbi_dbg("claimed interface %d", iface);
+ usbi_dbg("claimed interface %u", iface);
handle_priv->active_interface = iface;
return LIBUSB_SUCCESS;
}
-static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_handle_priv *handle_priv = usbi_get_device_handle_priv(dev_handle);
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -2479,7 +2474,7 @@ static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *it
return LIBUSB_SUCCESS;
}
-static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting)
+static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting)
{
struct winusb_device_handle_priv *handle_priv = usbi_get_device_handle_priv(dev_handle);
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -2493,7 +2488,7 @@ static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_ha
return LIBUSB_ERROR_NOT_FOUND;
}
- if (!WinUSBX[sub_api].SetCurrentAlternateSetting(winusb_handle, (UCHAR)altsetting)) {
+ if (!WinUSBX[sub_api].SetCurrentAlternateSetting(winusb_handle, altsetting)) {
usbi_err(HANDLE_CTX(dev_handle), "SetCurrentAlternateSetting failed: %s", windows_error_str(0));
return LIBUSB_ERROR_IO;
}
@@ -3549,7 +3544,7 @@ static void hid_close(int sub_api, struct libusb_device_handle *dev_handle)
}
}
-static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_handle_priv *handle_priv = usbi_get_device_handle_priv(dev_handle);
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -3567,13 +3562,13 @@ static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_han
handle_priv->interface_handle[iface].dev_handle = INTERFACE_CLAIMED;
- usbi_dbg("claimed interface %d", iface);
+ usbi_dbg("claimed interface %u", iface);
handle_priv->active_interface = iface;
return LIBUSB_SUCCESS;
}
-static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_handle_priv *handle_priv = usbi_get_device_handle_priv(dev_handle);
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -3592,7 +3587,7 @@ static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_h
return LIBUSB_SUCCESS;
}
-static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting)
+static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting)
{
UNUSED(sub_api);
UNUSED(iface);
@@ -3617,7 +3612,8 @@ static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itrans
WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *)transfer->buffer;
HANDLE hid_handle;
OVERLAPPED *overlapped;
- int current_interface, config;
+ int current_interface;
+ uint8_t config;
size_t size;
int r;
@@ -3654,7 +3650,7 @@ static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itrans
r = winusb_get_configuration(dev_handle, &config);
if (r == LIBUSB_SUCCESS) {
size = 1;
- ((uint8_t *)transfer->buffer)[LIBUSB_CONTROL_SETUP_SIZE] = (uint8_t)config;
+ ((uint8_t *)transfer->buffer)[LIBUSB_CONTROL_SETUP_SIZE] = config;
r = LIBUSB_COMPLETED;
}
break;
@@ -3672,7 +3668,7 @@ static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itrans
r = LIBUSB_COMPLETED;
break;
case LIBUSB_REQUEST_SET_INTERFACE:
- r = hid_set_interface_altsetting(0, dev_handle, setup->Index, setup->Value);
+ r = hid_set_interface_altsetting(0, dev_handle, (uint8_t)setup->Index, (uint8_t)setup->Value);
if (r == LIBUSB_SUCCESS)
r = LIBUSB_COMPLETED;
break;
@@ -3951,7 +3947,7 @@ static void composite_close(int sub_api, struct libusb_device_handle *dev_handle
hid_close(SUB_API_NOTSET, dev_handle);
}
-static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -3962,7 +3958,7 @@ static int composite_claim_interface(int sub_api, struct libusb_device_handle *d
claim_interface(priv->usb_interface[iface].sub_api, dev_handle, iface);
}
-static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting)
+static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
@@ -3973,7 +3969,7 @@ static int composite_set_interface_altsetting(int sub_api, struct libusb_device_
set_interface_altsetting(priv->usb_interface[iface].sub_api, dev_handle, iface, altsetting);
}
-static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
+static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface)
{
struct winusb_device_priv *priv = usbi_get_device_priv(dev_handle->dev);
diff --git a/libusb/os/windows_winusb.h b/libusb/os/windows_winusb.h
index 39ce6fe..88863ff 100644
--- a/libusb/os/windows_winusb.h
+++ b/libusb/os/windows_winusb.h
@@ -98,10 +98,10 @@ struct windows_usb_api_backend {
void (*exit)(void);
int (*open)(int sub_api, struct libusb_device_handle *dev_handle);
void (*close)(int sub_api, struct libusb_device_handle *dev_handle);
- int (*configure_endpoints)(int sub_api, struct libusb_device_handle *dev_handle, int iface);
- int (*claim_interface)(int sub_api, struct libusb_device_handle *dev_handle, int iface);
- int (*set_interface_altsetting)(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting);
- int (*release_interface)(int sub_api, struct libusb_device_handle *dev_handle, int iface);
+ int (*configure_endpoints)(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+ int (*claim_interface)(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
+ int (*set_interface_altsetting)(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface, uint8_t altsetting);
+ int (*release_interface)(int sub_api, struct libusb_device_handle *dev_handle, uint8_t iface);
int (*clear_halt)(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint);
int (*reset_device)(int sub_api, struct libusb_device_handle *dev_handle);
int (*submit_bulk_transfer)(int sub_api, struct usbi_transfer *itransfer);
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index a81bd38..f648dfc 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11513
+#define LIBUSB_NANO 11514