From 858139e782a5e15dd883e2e9efbaf823cd6f99b6 Mon Sep 17 00:00:00 2001 From: Manuel Domke Date: Tue, 29 Aug 2017 17:26:02 +0200 Subject: [PATCH] Improved error handling --- software/infnoise.c | 57 ++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/software/infnoise.c b/software/infnoise.c index 5aef101..2cc3cbc 100644 --- a/software/infnoise.c +++ b/software/infnoise.c @@ -147,7 +147,6 @@ static bool listUSBDevices(struct ftdi_context *ftdic) { { fprintf(stderr, "ftdi_usb_get_strings failed: %d (%s)\n", rc, ftdi_get_error_string(ftdic)); return false; - //goto done; } printf("Manufacturer: %s, Description: %s, Serial: %s\n\n", manufacturer, description, serial); curdev = curdev->next; @@ -156,7 +155,7 @@ static bool listUSBDevices(struct ftdi_context *ftdic) { } -// Initialize the Infinite Noise Multiplier USB ineterface. +// Initialize the Infinite Noise Multiplier USB interface. static bool initializeUSB(struct ftdi_context *ftdic, char **message, char *serial) { ftdi_init(ftdic); struct ftdi_device_list *devlist; @@ -164,39 +163,39 @@ static bool initializeUSB(struct ftdi_context *ftdic, char **message, char *seri // search devices int rc = 0; if ((rc = ftdi_usb_find_all(ftdic, &devlist, VENDOR_ID, PRODUCT_ID)) < 0) { - if(!isSuperUser()) { - *message = "Can't find Infinite Noise Multiplier. Try running as super user?\n"; - } else { - *message = "Can't find Infinite Noise Multiplier\n"; - } + *message = "Can't find Infinite Noise Multiplier\n"; + return false; } // only one found, or no serial given - if (rc == 1 || serial == NULL) { - if(ftdi_usb_open(ftdic, VENDOR_ID, PRODUCT_ID) < 0) { - if(!isSuperUser()) { - *message = "Can't find Infinite Noise Multiplier. Try running as super user?\n"; - } else { - *message = "Can't find Infinite Noise Multiplier\n"; + if (rc >= 0) { + // only one found, or no serial given + if (serial == NULL) { + if (rc >= 1) { + fprintf(stderr,"Multiple Infnoise TRNGs found. No serial specfified, so using the first one"); } - return false; - } - if (rc > 1) { - *message = "Multiple devices found. No +serial specified. Using the first one!"; - } - } - - // 1+ found and serial given - if (rc >= 1 && serial != NULL) { - rc = ftdi_usb_open_desc(ftdic, VENDOR_ID, PRODUCT_ID, "FT240X USB FIFO", serial); - if (rc < 0) { - if(!isSuperUser()) { - *message = "Can't find Infinite Noise Multiplier. Try running as super user?\n"; - } else { - *message = "Can't find Infinite Noise Multiplier\n"; + if (ftdi_usb_open(ftdic, VENDOR_ID, PRODUCT_ID) < 0) { + if(!isSuperUser()) { + *message = "Can't open Infinite Noise Multiplier. Try running as super user?\n"; + } else { + *message = "Can't open Infinite Noise Multiplier\n"; + } + return false; + } + // serial specified + } else { + rc = ftdi_usb_open_desc(ftdic, VENDOR_ID, PRODUCT_ID, "FT240X USB FIFO", serial); + if (rc < 0) { + if(!isSuperUser()) { + *message = "Can't find Infinite Noise Multiplier. Try running as super user?\n"; + } else { + *message = "Can't find Infinite Noise Multiplier with given serial\n"; +// strcat(*message, serial); +// strcat(*message, "\n"); + } + return false; } } -// printf("connected"); } // Set high baud rate