bin_PROGRAMS = simple \
bitbang \
bitbang2 \
- bitbang_ft2232
+ bitbang_ft2232 \
+ find_all
# Don't install the example files
AM_LDFLAGS = -no-install
bitbang_SOURCES = bitbang.c
bitbang2_SOURCES = bitbang2.c
bitbang_ft2232_SOURCES = bitbang_ft2232.c
+find_all_SOURCES = find_all.c
--- /dev/null
+/*
+ Example for ftdi_usb_find_all()
+*/
+
+#include <stdio.h>
+#include <ftdi.h>
+
+int main(int argc, char **argv)
+{
+ int ret, i;
+ struct ftdi_context ftdic;
+ struct ftdi_device_list *devlist, *curdev;
+ char manufacturer[128], description[128];
+
+ ftdi_init(&ftdic);
+
+ if((ret = ftdi_usb_find_all(&ftdic, &devlist, 0x0403, 0x6001)) < 0) {
+ fprintf(stderr, "ftdi_usb_find_all failed: %d (%s)\n", ret, ftdi_get_error_string(&ftdic));
+ return EXIT_FAILURE;
+ }
+
+ printf("Number of FTDI devices found: %d\n", ret);
+
+ i = 0;
+ for (curdev = devlist; curdev != NULL; i++) {
+ printf("Checking device: %d\n", i);
+ if((ret = ftdi_usb_get_strings(&ftdic, curdev->dev, &manufacturer, 128, description, 128, NULL, 0)) < 0) {
+ fprintf(stderr, "ftdi_usb_get_strings failed: %d (%s)\n", ret, ftdi_get_error_string(&ftdic));
+ return EXIT_FAILURE;
+ }
+ printf("Manufacturer: %s, Description: %s\n\n", manufacturer, description);
+ curdev = curdev->next;
+ }
+
+ ftdi_list_free(&devlist);
+ ftdi_deinit(&ftdic);
+
+ return EXIT_SUCCESS;
+}
ftdi_error_return(-2, "usb_find_devices() failed");
curdev = devlist;
+ *curdev = NULL;
for (bus = usb_busses; bus; bus = bus->next) {
for (dev = bus->devices; dev; dev = dev->next) {
if (dev->descriptor.idVendor == vendor
*/
void ftdi_list_free(struct ftdi_device_list **devlist)
{
- struct ftdi_device_list **curdev;
- for (; *devlist == NULL; devlist = curdev) {
- curdev = &(*devlist)->next;
- free(*devlist);
+ struct ftdi_device_list *curdev, *next;
+
+ for (curdev = *devlist; curdev != NULL;) {
+ next = curdev->next;
+ free(curdev);
+ curdev = next;
}
- devlist = NULL;
+ *devlist = NULL;
}
/**