2003-03-23 Theodore A. Roth * ser_posix.c: Add verbose level > 3 output for send and recv functions. Index: ser_posix.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/ser_posix.c,v retrieving revision 1.3 diff -u -r1.3 ser_posix.c --- ser_posix.c 13 Mar 2003 19:25:21 -0000 1.3 +++ ser_posix.c 24 Mar 2003 01:54:54 -0000 @@ -34,6 +34,7 @@ #include extern char *progname; +extern int verbose; struct baud_mapping { long baud; @@ -156,13 +157,37 @@ int nfds; int rc; - if (!buflen) + char * p = buf; + size_t len = buflen; + + if (!len) return 0; + if (verbose > 3) + { + fprintf(stderr, "%s: Send: ", progname); + + while (buflen) { + char c = *buf; + if (isprint(c)) { + fprintf(stderr, "%c ", c); + } + else { + fprintf(stderr, ". "); + } + fprintf(stderr, "[%02x] ", (unsigned int)c); + + buf++; + buflen--; + } + + fprintf(stderr, "\n"); + } + timeout.tv_sec = 0; timeout.tv_usec = 500000; - while (buflen) { + while (len) { FD_ZERO(&wfds); FD_SET(fd, &wfds); @@ -185,14 +210,14 @@ } } - rc = write(fd, buf, 1); + rc = write(fd, p, 1); if (rc < 0) { fprintf(stderr, "%s: serial_send(): write error: %s\n", progname, strerror(errno)); exit(1); } - buf++; - buflen--; + p++; + len--; } return 0; @@ -206,10 +231,13 @@ int nfds; int rc; + char * p = buf; + size_t len = 0; + timeout.tv_sec = 5; timeout.tv_usec = 0; - while (buflen) { + while (len < buflen) { FD_ZERO(&rfds); FD_SET(fd, &rfds); @@ -232,14 +260,36 @@ } } - rc = read(fd, buf, 1); + rc = read(fd, p, 1); if (rc < 0) { fprintf(stderr, "%s: serial_recv(): read error: %s\n", progname, strerror(errno)); exit(1); } - buf++; - buflen--; + p++; + len++; + } + + p = buf; + + if (verbose > 3) + { + fprintf(stderr, "%s: Recv: ", progname); + + while (len) { + char c = *p; + if (isprint(c)) { + fprintf(stderr, "%c ", c); + } + else { + fprintf(stderr, ". "); + } + fprintf(stderr, "[%02x] ", ((unsigned int)c &0xff)); + + p++; + len--; + } + fprintf(stderr, "\n"); } return 0;