X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fusb.c;h=ec502c97501704f38bed9b2d535374166ff7601e;hb=5c868fef4383e2e8ec4b1d09608c1c0a0f158410;hp=c3279d0ae1ef58640013483f9b6711deca9be15a;hpb=155b680da482cea2381becb73c51cfb838bff31e;p=libsigrok.git diff --git a/src/usb.c b/src/usb.c index c3279d0a..ec502c97 100644 --- a/src/usb.c +++ b/src/usb.c @@ -20,6 +20,7 @@ */ #include +#include #include #include #include "libsigrok.h" @@ -269,3 +270,19 @@ SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx return SR_OK; } + +SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len) +{ + uint8_t port_numbers[8]; + int i, n, len; + + n = libusb_get_port_numbers(dev, port_numbers, sizeof(port_numbers)); + + len = snprintf(path, path_len, "usb/%d-%d", + libusb_get_bus_number(dev), port_numbers[0]); + + for (i = 1; i < n; i++) + len += snprintf(path+len, path_len-len, ".%d", port_numbers[i]); + + return SR_OK; +}