CMake: bump the minimal required version to 3.5
[libftdi] / examples / eeprom.c
index e947c00..3d03ac3 100644 (file)
@@ -30,7 +30,8 @@ int read_decode_eeprom(struct ftdi_context *ftdi)
     ftdi_get_eeprom_value(ftdi, CHIP_SIZE, & value);
     if (value <0)
     {
-        fprintf(stderr, "No EEPROM found\n");
+        fprintf(stderr, "No EEPROM found or EEPROM empty\n");
+        fprintf(stderr, "On empty EEPROM, use -w option to write default values\n");
         return -1;
     }
     fprintf(stderr, "Chip type %d ftdi_eeprom_size: %d\n", ftdi->type, value);
@@ -89,6 +90,8 @@ int main(int argc, char **argv)
         return EXIT_FAILURE;
     }
 
+    ftdi->module_detach_mode = AUTO_DETACH_REATACH_SIO_MODULE;
+
     while ((i = getopt(argc, argv, "d::ev:p:l:P:S:w")) != -1)
     {
         switch (i)
@@ -150,14 +153,14 @@ int main(int argc, char **argv)
         if (res > 1)
         {
             int i = 1;
-            fprintf(stderr, "%d FTDI devices found: Only Readout on EEPROM done. ",res);
+            fprintf(stderr, "%d FTDI devices found: Only Readout on EEPROM done. \n",res);
             fprintf(stderr, "Use VID/PID/desc/serial to select device\n");
             for (curdev = devlist; curdev != NULL; curdev= curdev->next, i++)
             {
                 f = ftdi_usb_open_dev(ftdi,  curdev->dev);
                 if (f<0)
                 {
-                    fprintf(stderr, "Unable to open device %d: (%s)",
+                    fprintf(stderr, "Unable to open device %d: (%s)\n",
                             i, ftdi_get_error_string(ftdi));
                     continue;
                 }
@@ -169,7 +172,20 @@ int main(int argc, char **argv)
             retval = EXIT_SUCCESS;
             goto do_deinit;
         }
-        f = ftdi_usb_open_dev(ftdi,  devlist[0].dev);
+        else if (res == 1)
+        {
+            f = ftdi_usb_open_dev(ftdi,  devlist[0].dev);
+            if (f<0)
+            {
+                fprintf(stderr, "Unable to open device %d: (%s)\n",
+                        i, ftdi_get_error_string(ftdi));
+            }
+        }
+        else
+        {
+            fprintf(stderr, "No devices found\n");
+            f = 0;
+        }
         ftdi_list_free(&devlist);
     }
     else
@@ -186,7 +202,7 @@ int main(int argc, char **argv)
             fprintf(stderr, "\n");
             fprintf(stderr, "unable to open ftdi device: %d (%s)\n",
                     f, ftdi_get_error_string(ftdi));
-            
+
             retval = -1;
             goto done;
         }
@@ -196,7 +212,7 @@ int main(int argc, char **argv)
         f = ftdi_erase_eeprom(ftdi); /* needed to determine EEPROM chip type */
         if (f < 0)
         {
-            fprintf(stderr, "Erase failed: %s",
+            fprintf(stderr, "Erase failed: %s\n",
                     ftdi_get_error_string(ftdi));
             retval =  -2;
             goto done;
@@ -263,7 +279,7 @@ int main(int argc, char **argv)
         f=(ftdi_eeprom_build(ftdi));
         if (f < 0)
         {
-            fprintf(stderr, "Erase failed: %s",
+            fprintf(stderr, "Erase failed: %s\n",
                     ftdi_get_error_string(ftdi));
             retval = -2;
             goto done;