From 6ac169eafa5ac3e12d901cf8d1737d28176a3001 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Tue, 17 Mar 2009 22:12:21 +0100 Subject: [PATCH] Show a good example: Always check the return value of ftdi_init --- examples/bitbang.c | 6 +++++- examples/bitbang2.c | 6 +++++- examples/bitbang_cbus.c | 10 +++++++--- examples/bitbang_ft2232.c | 13 +++++++++++-- examples/find_all.c | 8 ++++++-- examples/simple.c | 15 ++++++++++++--- libftdi.lnt | 2 ++ 7 files changed, 48 insertions(+), 12 deletions(-) diff --git a/examples/bitbang.c b/examples/bitbang.c index c2d67b9..4a3a823 100644 --- a/examples/bitbang.c +++ b/examples/bitbang.c @@ -10,7 +10,11 @@ int main(int argc, char **argv) int f,i; char buf[1]; - ftdi_init(&ftdic); + if (ftdi_init(&ftdic) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } f = ftdi_usb_open(&ftdic, 0x0403, 0x6001); diff --git a/examples/bitbang2.c b/examples/bitbang2.c index 7cbe2e7..81b3963 100644 --- a/examples/bitbang2.c +++ b/examples/bitbang2.c @@ -57,7 +57,11 @@ int main(int argc, char **argv) } } - ftdi_init(&ftdic); + if (ftdi_init(&ftdic) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } if (ftdi_usb_open(&ftdic, 0x0403, 0x6001) < 0) ftdi_fatal (&ftdic, "Can't open ftdi device"); diff --git a/examples/bitbang_cbus.c b/examples/bitbang_cbus.c index e3f2a41..1ec574b 100644 --- a/examples/bitbang_cbus.c +++ b/examples/bitbang_cbus.c @@ -34,15 +34,19 @@ #include #include -int main(int argc, char **argv) +int main(void) { struct ftdi_context ftdic; - int f,i; + int f; unsigned char buf[1]; unsigned char bitmask; unsigned char input[10]; - ftdi_init(&ftdic); + if (ftdi_init(&ftdic) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } f = ftdi_usb_open(&ftdic, 0x0403, 0x6001); if (f < 0 && f != -5) diff --git a/examples/bitbang_ft2232.c b/examples/bitbang_ft2232.c index cc6b405..cb09f0d 100644 --- a/examples/bitbang_ft2232.c +++ b/examples/bitbang_ft2232.c @@ -19,7 +19,12 @@ int main(int argc, char **argv) int f,i; // Init 1. channel - ftdi_init(&ftdic); + if (ftdi_init(&ftdic) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } + ftdi_set_interface(&ftdic, INTERFACE_A); f = ftdi_usb_open(&ftdic, 0x0403, 0x6001); if (f < 0 && f != -5) @@ -33,7 +38,11 @@ int main(int argc, char **argv) ftdi_enable_bitbang(&ftdic, 0xFF); // Init 2. channel - ftdi_init(&ftdic2); + if (ftdi_init(&ftdic2) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } ftdi_set_interface(&ftdic2, INTERFACE_B); f = ftdi_usb_open(&ftdic2, 0x0403, 0x6001); if (f < 0 && f != -5) diff --git a/examples/find_all.c b/examples/find_all.c index 9c7a356..bcb2290 100644 --- a/examples/find_all.c +++ b/examples/find_all.c @@ -8,14 +8,18 @@ #include #include -int main(int argc, char **argv) +int main(void) { int ret, i; struct ftdi_context ftdic; struct ftdi_device_list *devlist, *curdev; char manufacturer[128], description[128]; - ftdi_init(&ftdic); + if (ftdi_init(&ftdic) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } if ((ret = ftdi_usb_find_all(&ftdic, &devlist, 0x0403, 0x6001)) < 0) { diff --git a/examples/simple.c b/examples/simple.c index dfe4c33..8abd7b3 100644 --- a/examples/simple.c +++ b/examples/simple.c @@ -8,11 +8,15 @@ #include #include -int main(int argc, char **argv) +int main(void) { int ret; struct ftdi_context ftdic; - ftdi_init(&ftdic); + if (ftdi_init(&ftdic) < 0) + { + fprintf(stderr, "ftdi_init failed\n"); + return EXIT_FAILURE; + } if ((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0) { @@ -28,7 +32,12 @@ int main(int argc, char **argv) printf("FTDI chipid: %X\n", chipid); } - ftdi_usb_close(&ftdic); + if ((ret = ftdi_usb_close(&ftdic)) < 0) + { + fprintf(stderr, "unable to close ftdi device: %d (%s)\n", ret, ftdi_get_error_string(&ftdic)); + return EXIT_FAILURE; + } + ftdi_deinit(&ftdic); return EXIT_SUCCESS; diff --git a/libftdi.lnt b/libftdi.lnt index 68008bc..d792a5e 100644 --- a/libftdi.lnt +++ b/libftdi.lnt @@ -8,3 +8,5 @@ +fie // Allow enum to int conversion -dLIBFTDI_LINUX_ASYNC_MODE=1 // also lint async code + +-ecall(534, usb_close) // silence ignored return value from usb_close -- 1.7.1