logging can be either raw data or hex table
author"Darron Broad" <darron@kewl.org>
Thu, 16 Mar 2017 08:21:32 +0000
changeset 241 73b26549b460
parent 240 665cdd889577
child 242 710e4a2e5b53
logging can be either raw data or hex table
easy-loader.c
easy-loader.h
--- a/easy-loader.c	Sun Mar 12 06:29:43 2017 +0000
+++ b/easy-loader.c	Thu Mar 16 08:21:32 2017 +0000
@@ -53,25 +53,25 @@
 		fprintf(stderr, "%s\n\n", msg);
 
 	fprintf(stderr, "Options:\n"
-		" -a   arduino (DTR + CAP) reset\n"
-		" -b N use TTY baud rate N\n"
-		" -d   hang up DTR after serial port open\n"
-		" -e   read EEPROM\n"
-		" -f   read flash\n"
-		" -h   HELLO only\n"
-		" -i N use CAN bus message id N\n"
-		" -k N send BRK for N ms after serial port open\n"
-		" -l   log serial input to stdout when done\n"
-		" -n   do not run firmware on exit\n"
-		" -p   run pickle pctrl to reset device\n"
-		" -q   quiet erase/write\n"
-		" -r   hang up RTS after serial port open\n"
-		" -s   simulate erase/write\n"
-		" -t   time to wait in ms after serial port open\n"
-		" -v   verify\n"
-		" -w N winklepicker mode N (1 or 2) reset\n"
-		" -x   drain serial output after each transmitted byte\n"
-		" -z A erase page at address A\n"
+		" -a     arduino (DTR + CAP) reset\n"
+		" -b N   use TTY baud rate N\n"
+		" -d     hang up DTR after serial port open\n"
+		" -e     read EEPROM\n"
+		" -f     read flash\n"
+		" -h     HELLO only\n"
+		" -i N   use CAN bus message id N\n"
+		" -k N   send BRK for N ms after serial port open\n"
+		" -l H|R log serial input when done (H = hex, R = raw)\n"
+		" -n     do not run firmware on exit\n"
+		" -p     run pickle pctrl to reset device\n"
+		" -q     quiet erase/write\n"
+		" -r     hang up RTS after serial port open\n"
+		" -s     simulate erase/write\n"
+		" -t     time to wait in ms after serial port open\n"
+		" -v     verify\n"
+		" -w N   winklepicker mode N (1 or 2) reset\n"
+		" -x     drain serial output after each transmitted byte\n"
+		" -z A   erase page at address A\n"
 		"\n");
 
 	fprintf(stderr, "Version: %d\n", VERSION);
@@ -85,7 +85,7 @@
  *
  ******************************************************************************/
 static void
-console(void)
+hexconsole(void)
 {
 	char s[WIDTH + 1] = {0};
 	int i = 0;
@@ -107,6 +107,15 @@
 	}
 }
 
+static void
+rawconsole(void)
+{
+	while (fdio(1, 1) == 1) {
+		putc(easy.buffer[0], stdout);
+		fflush(stdout);
+	}
+}
+
 /*******************************************************************************
  *
  * Take it easy.
@@ -124,7 +133,7 @@
 	easy.baudrate = 115200;
 
 	opterr = 0;
-	while ((opt = getopt(argc, argv, "ab:defhi:k:lnrpqst:vw:xz:")) != -1) {
+	while ((opt = getopt(argc, argv, "ab:defhi:k:l:nrpqst:vw:xz:")) != -1) {
 		switch (opt) {
 		case 'a':
 			easy.wiener = 10000;
@@ -154,7 +163,10 @@
 			easy.brk = strtoul(optarg, NULL, 0) * 1000;
 			break;
 		case 'l':
-			log = 1;
+			log = tolower(optarg[0]);
+			if (log != 'h' && log != 'r')
+				usage("Invalid arg.", EX_USAGE);
+			break;
 		case 'n':
 			easy.autorun = 0;
 			break;
@@ -255,8 +267,10 @@
 		exit(EX_SOFTWARE);
 	}
 
-	if (log)
-		console();
+	if (log == 'h')
+		hexconsole();
+	else
+		rawconsole();
 
 	fdclosedev();
 	exit(EX_OK);
--- a/easy-loader.h	Sun Mar 12 06:29:43 2017 +0000
+++ b/easy-loader.h	Thu Mar 16 08:21:32 2017 +0000
@@ -42,6 +42,7 @@
 #include <unistd.h>
 #include <termios.h>
 #include <assert.h>
+#include <ctype.h>
 #include <sysexits.h>
 #include <sys/select.h>
 #include <sys/types.h>