The branch, master has been updated
via 814e69f509963067d3b1432269e96c667ed31dda (commit)
from 7964636842a44bcfad9416b90483770f7cb172fa (commit)
- Log -----------------------------------------------------------------
commit 814e69f509963067d3b1432269e96c667ed31dda
Author: Maxwell Dreytser <admin@xxxxxxxxx>
Date: Fri Apr 21 18:01:24 2017 +0200
Add a ftdi_usb_open_bus_port() function
[Thomas Jarosch] from the libftdi mailinglist:
This patch adds a function that will open using the specified bus and
port. I don't know how useful it would be to others, but I decided to
submit it cause why not. I pretty much just copied
"ftdi_usb_open_desc_index" and modified the parameters and loop.
-----------------------------------------------------------------------
Summary of changes:
src/ftdi.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
src/ftdi.h | 1 +
2 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/src/ftdi.c b/src/ftdi.c
index 2fff1ff..c26ab72 100644
--- a/src/ftdi.c
+++ b/src/ftdi.c
@@ -824,6 +824,53 @@ int ftdi_usb_open_desc_index(struct ftdi_context *ftdi,
int vendor, int product,
}
/**
+ Opens the device at a given USB bus and port.
+
+ \param ftdi pointer to ftdi_context
+ \param bus Bus number
+ \param port Port number
+
+ \retval 0: all fine
+ \retval -1: usb_find_busses() failed
+ \retval -2: usb_find_devices() failed
+ \retval -3: usb device not found
+ \retval -4: unable to open device
+ \retval -5: unable to claim device
+ \retval -6: reset failed
+ \retval -7: set baudrate failed
+ \retval -8: get product description failed
+ \retval -9: get serial number failed
+ \retval -10: unable to close device
+ \retval -11: ftdi context invalid
+*/
+int ftdi_usb_open_bus_port(struct ftdi_context *ftdi, uint8_t bus, uint8_t
port)
+{
+ libusb_device *dev;
+ libusb_device **devs;
+ int i = 0;
+
+ if (ftdi == NULL)
+ ftdi_error_return(-11, "ftdi context invalid");
+
+ if (libusb_get_device_list(ftdi->usb_ctx, &devs) < 0)
+ ftdi_error_return(-12, "libusb_get_device_list() failed");
+
+ while ((dev = devs[i++]) != NULL)
+ {
+ if (libusb_get_bus_number(dev) == bus && libusb_get_port_number(dev)
== port)
+ {
+ int res;
+ res = ftdi_usb_open_dev(ftdi, dev);
+ libusb_free_device_list(devs,1);
+ return res;
+ }
+ }
+
+ // device not found
+ ftdi_error_return_free_device_list(-3, "device not found", devs);
+}
+
+/**
Opens the ftdi-device described by a description-string.
Intended to be used for parsing a device-description given as commandline
argument.
diff --git a/src/ftdi.h b/src/ftdi.h
index ef174bf..5927c48 100644
--- a/src/ftdi.h
+++ b/src/ftdi.h
@@ -502,6 +502,7 @@ extern "C"
const char* description, const char* serial);
int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int
product,
const char* description, const char* serial,
unsigned int index);
+ int ftdi_usb_open_bus_port(struct ftdi_context *ftdi, uint8_t bus, uint8_t
port);
int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct libusb_device
*dev);
int ftdi_usb_open_string(struct ftdi_context *ftdi, const char*
description);
hooks/post-receive
--
A library to talk to FTDI chips
--
libftdi-git - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi-git+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
|