summaryrefslogtreecommitdiff
path: root/lib/iface.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/iface.c')
-rw-r--r--lib/iface.c150
1 files changed, 0 insertions, 150 deletions
diff --git a/lib/iface.c b/lib/iface.c
index 85dfcd8..445d902 100644
--- a/lib/iface.c
+++ b/lib/iface.c
@@ -223,153 +223,3 @@ uhd_iface_set_protocol(const uhd_iface *iface,
}
-bool
-uhd_iface_list_valid(const uhd_iface *list)
-{
- for (; list != NULL; list = list->next)
- if (!uhd_iface_valid(list))
- return false;
-
- return true;
-}
-
-
-size_t
-uhd_iface_list_len(const uhd_iface *list)
-{
- size_t len = 0;
-
- for (; list != NULL; list = list->next)
- len++;
-
- return len;
-}
-
-
-void
-uhd_iface_list_free(uhd_iface *list)
-{
- uhd_iface *next;
-
- for (; list != NULL; list = next)
- {
- next = list->next;
- uhd_iface_free(list);
- }
-}
-
-
-enum libusb_error
-uhd_iface_list_new_from_dev(libusb_device_handle *handle,
- uhd_iface **plist)
-{
- enum libusb_error err = LIBUSB_ERROR_OTHER;
-
- struct libusb_config_descriptor *config = NULL;
- const struct libusb_interface *libusb_iface;
- const struct libusb_endpoint_descriptor *ep_list;
- uint8_t ep_num;
- const struct libusb_endpoint_descriptor *ep;
- uhd_iface *list = NULL;
- uhd_iface *last = NULL;
- uhd_iface *iface;
-
- assert(handle != NULL);
-
- /* Retrieve active configuration descriptor */
- err = libusb_get_active_config_descriptor(libusb_get_device(handle),
- &config);
- if (err != LIBUSB_SUCCESS)
- goto cleanup;
-
- /* Build the matching interface list */
- for (libusb_iface = config->interface;
- libusb_iface - config->interface < config->bNumInterfaces;
- libusb_iface++)
- {
- if (libusb_iface->num_altsetting != 1 ||
- libusb_iface->altsetting->bInterfaceClass != LIBUSB_CLASS_HID)
- continue;
-
- ep_list = libusb_iface->altsetting->endpoint;
- ep_num = libusb_iface->altsetting->bNumEndpoints;
-
- for (ep = ep_list; (ep - ep_list) < ep_num; ep++)
- {
- if ((ep->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) !=
- LIBUSB_TRANSFER_TYPE_INTERRUPT ||
- (ep->bEndpointAddress & LIBUSB_ENDPOINT_DIR_MASK) !=
- LIBUSB_ENDPOINT_IN)
- continue;
-
- iface = uhd_iface_new(
- handle,
- libusb_iface->altsetting->bInterfaceNumber,
- ep->bEndpointAddress, ep->wMaxPacketSize);
- if (iface == NULL)
- {
- err = LIBUSB_ERROR_NO_MEM;
- goto cleanup;
- }
-
- if (last == NULL)
- list = iface;
- else
- last->next = iface;
- last = iface;
-
- break;
- }
- }
-
- /* Output the resulting list, if requested */
- if (plist != NULL)
- {
- *plist = list;
- list = NULL;
- }
-
-cleanup:
-
- uhd_iface_list_free(list);
-
- if (config != NULL)
- libusb_free_config_descriptor(config);
-
- return err;
-}
-
-
-uhd_iface *
-uhd_iface_list_fltr_by_num(uhd_iface *list,
- int number)
-{
- uhd_iface *prev;
- uhd_iface *iface;
- uhd_iface *next;
-
- assert(uhd_iface_list_valid(list));
- assert(number < UINT8_MAX);
-
- if (number < 0)
- return list;
-
- for (prev = NULL, iface = list; iface != NULL; iface = next)
- {
- next = iface->next;
- if (iface->number == (uint8_t)number)
- prev = iface;
- else
- {
- if (prev == NULL)
- list = next;
- else
- prev->next = next;
- free(iface);
- }
- }
-
- return list;
-}
-
-