--- 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>