From 94eb23991bc257ad9129e82983a7df8efa9b285e Mon Sep 17 00:00:00 2001 From: Orhan aib Kavrakoglu Date: Thu, 21 Jul 2022 10:09:04 +0300 Subject: core: Add helper find_alt_endpoint() --- libusb/core.c | 27 +++++++++++++++++++++++++++ libusb/version_nano.h | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/libusb/core.c b/libusb/core.c index 848679b..61b6564 100644 --- a/libusb/core.c +++ b/libusb/core.c @@ -1081,6 +1081,33 @@ out: return r; } +static const struct libusb_endpoint_descriptor *find_alt_endpoint( + struct libusb_config_descriptor *config, + int iface_idx, int altsetting_idx, unsigned char endpoint) +{ + if (iface_idx >= config->bNumInterfaces) { + return NULL; + } + + const struct libusb_interface *iface = &config->interface[iface_idx]; + + if (altsetting_idx >= iface->num_altsetting) { + return NULL; + } + + const struct libusb_interface_descriptor *altsetting + = &iface->altsetting[altsetting_idx]; + int ep_idx; + + for (ep_idx = 0; ep_idx < altsetting->bNumEndpoints; ep_idx++) { + const struct libusb_endpoint_descriptor *ep = + &altsetting->endpoint[ep_idx]; + if (ep->bEndpointAddress == endpoint) + return ep; + } + return NULL; +} + static int get_endpoint_max_packet_size(libusb_device *dev, const struct libusb_endpoint_descriptor *ep) { diff --git a/libusb/version_nano.h b/libusb/version_nano.h index cd5097b..ee98827 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 11773 +#define LIBUSB_NANO 11774 -- cgit v1.2.1