summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrhan aib Kavrakoglu <aibok42@gmail.com>2022-07-21 10:09:04 +0300
committerTormod Volden <debian.tormod@gmail.com>2023-01-20 17:51:34 +0100
commit94eb23991bc257ad9129e82983a7df8efa9b285e (patch)
treee164860b1f81f4563f4969f44e7cae4a060964f6
parent6c2149662ad777e72856e968c2c68ebddf7d49a7 (diff)
downloadlibusb-94eb23991bc257ad9129e82983a7df8efa9b285e.tar.gz
core: Add helper find_alt_endpoint()
-rw-r--r--libusb/core.c27
-rw-r--r--libusb/version_nano.h2
2 files changed, 28 insertions, 1 deletions
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