Show a good example: Always check the return value of ftdi_init
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Tue, 17 Mar 2009 21:12:21 +0000 (22:12 +0100)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Tue, 17 Mar 2009 21:12:21 +0000 (22:12 +0100)
examples/bitbang.c
examples/bitbang2.c
examples/bitbang_cbus.c
examples/bitbang_ft2232.c
examples/find_all.c
examples/simple.c
libftdi.lnt

index c2d67b9..4a3a823 100644 (file)
@@ -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);
 
index 7cbe2e7..81b3963 100644 (file)
@@ -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");
index e3f2a41..1ec574b 100644 (file)
 #include <stdlib.h>
 #include <ftdi.h>
 
-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)
index cc6b405..cb09f0d 100644 (file)
@@ -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)
index 9c7a356..bcb2290 100644 (file)
@@ -8,14 +8,18 @@
 #include <stdio.h>
 #include <ftdi.h>
 
-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)
     {
index dfe4c33..8abd7b3 100644 (file)
@@ -8,11 +8,15 @@
 #include <stdio.h>
 #include <ftdi.h>
 
-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;
index 68008bc..d792a5e 100644 (file)
@@ -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