diff options
author | Orhan aib Kavrakoglu <aibok42@gmail.com> | 2022-07-21 10:09:04 +0300 |
---|---|---|
committer | Tormod Volden <debian.tormod@gmail.com> | 2023-01-20 17:51:34 +0100 |
commit | 94eb23991bc257ad9129e82983a7df8efa9b285e (patch) | |
tree | e164860b1f81f4563f4969f44e7cae4a060964f6 | |
parent | 6c2149662ad777e72856e968c2c68ebddf7d49a7 (diff) | |
download | libusb-94eb23991bc257ad9129e82983a7df8efa9b285e.tar.gz |
core: Add helper find_alt_endpoint()
-rw-r--r-- | libusb/core.c | 27 | ||||
-rw-r--r-- | libusb/version_nano.h | 2 |
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 |