diff --git a/examples/usbserial/main.c b/examples/usbserial/main.c index 3657fc9fe1b8180dafe11ec6846d3da2944d6468..e901938aa3c370bff4e41abfd6a359c45fbb002e 100644 --- a/examples/usbserial/main.c +++ b/examples/usbserial/main.c @@ -46,6 +46,20 @@ * Definitions ****************************************************************************/ +#ifdef CONFIG_CPP_HAVE_VARARGS +# ifdef CONFIG_DEBUG +# define message(...) lib_lowprintf(__VA_ARGS__) +# else +# define message(...) printf(__VA_ARGS__) +# endif +#else +# ifdef CONFIG_DEBUG +# define message lib_lowprintf +# else +# define message printf +# endif +#endif + /**************************************************************************** * Private Data ****************************************************************************/ @@ -78,26 +92,72 @@ int user_start(int argc, char *argv[]) /* Initialize the USB serial driver */ + message("user_start: Registering USB serial driver\n"); ret = usbdev_serialinitialize(0); if (ret < 0) { - printf("ERROR: Failed to create the USB serial device: %d\n", -ret); + message("user_start: ERROR: Failed to create the USB serial device: %d\n", -ret); return 1; } + message("user_start: Successfully registered the serial driver\n"); /* Open the USB serial device for output */ - stream = fopen("/dev/ttyUSB0", "w"); - if (!stream) + do + { + message("user_start: Opening USB serial driver\n"); + stream = fopen("/dev/ttyUSB0", "w"); + if (!stream) + { + int errcode = errno; + message("user_start: ERROR: Failed to open /dev/ttyUSB0: %d\n", errcode); + + /* ENOTCONN means that the USB device is not yet connected */ + + if (errcode = ENOTCONN) + { + message("user_start: Not connected. Wait and try again.\n"); + sleep(5); + } + else + { + /* Give up on other errors */ + + message("user_start: Aborting\n"); + return 2; + } + } + } + while (!stream); + message("user_start: Successfully opened the serial driver\n"); + + /* Then say hello -- forever */ + + for (;;) { - printf("ERROR: Failed to open /dev/ttyUSB0: %d\n", errno); - return 2; + message("user_start: Saying hello\n"); + ret = fprintf(stream, "Hello, World!!\n"); + if (ret < 0) + { + message("user_start: ERROR: fprintf failed: %d\n", errno); + fclose(stream); + return 3; + } + + ret = fflush(stream); + if (ret < 0) + { + message("user_start: ERROR: fflush failed: %d\n", errno); + fclose(stream); + return 4; + } + + message("user_start: Waiting\n"); + sleep(5); } - /* Then say hello */ + /* Won't get here, but if we did this what we would have to do */ - fprintf(stream, "Hello, World!!\n"); - fflush(stream); fclose(stream); return 0; }