From c007dc7d2497835bd592ca13692e2248bd19c901 Mon Sep 17 00:00:00 2001 From: MCUdude <hansibull@gmail.com> Date: Thu, 17 Feb 2022 11:55:05 +0100 Subject: [PATCH] Add support for writing single characters Now this is possible: write eeprom 0x00 a b c d e f 0x80 0x90 ! H E L L O --- src/term.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/term.c b/src/term.c index 295ae612..ce58c19c 100644 --- a/src/term.c +++ b/src/term.c @@ -399,21 +399,32 @@ static int cmd_write(PROGRAMMER * pgm, struct avrpart * p, if(write_mode == WRITE_MODE_STANDARD) { for (i=3; i<argc; i++) { - buf[i-3] = strtoul(argv[i], &e, 0); + unsigned char write_val = strtoul(argv[i], &e, 0); if (*e || (e == argv[i])) { - avrdude_message(MSG_INFO, "%s (write): can't parse byte \"%s\"\n", - progname, argv[i]); - free(buf); - return -1; + // If passed argument is a single character + if(argv[i][1] == '\0') { + write_val = argv[i][0]; + } else { + avrdude_message(MSG_INFO, "%s (write): can't parse byte \"%s\"\n", + progname, argv[i]); + free(buf); + return -1; + } } + buf[i-3] = write_val; } } else if(write_mode == WRITE_MODE_FILL) { unsigned char fill_val = strtoul(argv[4], &e, 0); if (*e || (e == argv[4])) { - avrdude_message(MSG_INFO, "%s (write ...): can't parse byte \"%s\"\n", + // If passed argument is a single character + if(argv[4][1] == '\0') { + fill_val = argv[4][0]; + } else { + avrdude_message(MSG_INFO, "%s (write ...): can't parse byte \"%s\"\n", progname, argv[4]); - free(buf); - return -1; + free(buf); + return -1; + } } for (i = 0; i < len; i++) { buf[i] = fill_val;