Add quell command in terminal

Sets the quell_progress global variable that can be, and is, consulted by
programmers.

Setting quell_progress to a positive number also switches off progress
bars. It is currently not possible to switch on progress bars again: that
is enabled in main.c once at the start of AVRDUDE.

That code in main should move to avr.c to enable report_update() to consult
quell_progress directly. Will do at another time when touching main.c and
avr.c. smr
This commit is contained in:
Stefan Rueger 2022-07-12 13:11:10 +01:00
parent d9cb9772d7
commit 1e8b56751e
1 changed files with 38 additions and 0 deletions

View File

@ -91,6 +91,9 @@ static int cmd_pgm (PROGRAMMER * pgm, struct avrpart * p,
static int cmd_verbose (PROGRAMMER * pgm, struct avrpart * p,
int argc, char *argv[]);
static int cmd_quell (PROGRAMMER * pgm, struct avrpart * p,
int argc, char *argv[]);
struct command cmd[] = {
{ "dump", cmd_dump, "%s <memory> [<addr> <len> | <addr> ... | <addr> | ...]" },
{ "read", cmd_dump, "alias for dump" },
@ -107,6 +110,7 @@ struct command cmd[] = {
{ "spi", cmd_spi, "enter direct SPI mode" },
{ "pgm", cmd_pgm, "return to programming mode" },
{ "verbose", cmd_verbose, "change verbosity" },
{ "quell", cmd_quell, "set quell level for progress bars" },
{ "help", cmd_help, "help" },
{ "?", cmd_help, "help" },
{ "quit", cmd_quit, "quit" }
@ -1257,6 +1261,40 @@ static int cmd_verbose(PROGRAMMER * pgm, struct avrpart * p,
return 0;
}
static int cmd_quell(PROGRAMMER * pgm, struct avrpart * p,
int argc, char * argv[])
{
int nquell;
char *endp;
if (argc != 1 && argc != 2) {
avrdude_message(MSG_INFO, "Usage: quell [<value>]\n");
return -1;
}
if (argc == 1) {
avrdude_message(MSG_INFO, "Quell level: %d\n", quell_progress);
return 0;
}
nquell = strtol(argv[1], &endp, 0);
if (endp == argv[1] || *endp) {
avrdude_message(MSG_INFO, "%s (quell): can't parse quell level %s\n",
progname, argv[1]);
return -1;
}
if (nquell < 0) {
avrdude_message(MSG_INFO, "%s: quell level must not be negative: %d\n",
progname, nquell);
return -1;
}
quell_progress = nquell;
avrdude_message(MSG_INFO, "New quell level: %d\n", quell_progress);
if(quell_progress > 0)
update_progress = NULL;
return 0;
}
static int tokenize(char * s, char *** argv)
{
int i, n, l, k, nargs, offset;