From 8204cb08658d293e65a27af46c4d4596bdedaf91 Mon Sep 17 00:00:00 2001 From: FReenen Date: Sat, 10 Aug 2024 14:07:55 +0200 Subject: [PATCH] add option to disable the echo --- CLI/CLI.c | 48 +++++++++++++++++++++++++++++++++++++----------- CLI/CLI.h | 1 + 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/CLI/CLI.c b/CLI/CLI.c index 3b4161e..90b0d54 100644 --- a/CLI/CLI.c +++ b/CLI/CLI.c @@ -30,13 +30,14 @@ CLI_t CLI_init(CLI_charOutFn lineOut, CMDList_t* cmdList) cli.CLI_charOut = lineOut; cli.CMDList = cmdList; cli.CLI_State = CLI_State_Default; + cli.echo = true; cli.FIFO = FIFOBuffChar_create(); #ifdef HISTORY cli.History = History_init(); #endif - if (cli.CLI_charOut != NULL) + if (cli.CLI_charOut != NULL && cli.echo) { CLI_stringOut(&cli, (char*)"> "); } @@ -168,7 +169,10 @@ int tryExecute(CLI_t* cli, FIFOBuffChar_t* fifo) if (*line == '\0') { // empty line ret = 1; - CLI_stringOut(cli, (char*)"> "); + if (cli->echo) + { + CLI_stringOut(cli, (char*)"> "); + } } else { @@ -182,7 +186,7 @@ int tryExecute(CLI_t* cli, FIFOBuffChar_t* fifo) #endif int ret = (*(cmd->fn))(line, cli); - if (ret != INT_MIN) + if (ret != INT_MIN && cli->echo) { CLI_stringOut(cli, (char*)"> "); } @@ -191,8 +195,12 @@ int tryExecute(CLI_t* cli, FIFOBuffChar_t* fifo) else if (ret == 0) { char err[100]; - sprintf(&err[0], "command not found: %s\n> ", line); + sprintf(&err[0], "command not found: %s\n", line); CLI_stringOut(cli, &err[0]); + if (cli->echo) + { + CLI_stringOut(cli, (char*)"> "); + } ret = -1; #ifdef HISTORY @@ -222,7 +230,10 @@ bool CLI_charIn(CLI_t* cli, char c) if ((C >= ' ') && (C <= '~')) // see ascii table { FIFOBuffChar_put(cli->FIFO, C); // save char in buffer - CLI_charOut_save(cli, c); + if (cli->echo) + { + CLI_charOut_save(cli, c); + } } else { @@ -231,7 +242,10 @@ bool CLI_charIn(CLI_t* cli, char c) case '\n': case '\r': // echo to terminal - CLI_charOut_save(cli, c); + if (cli->echo) + { + CLI_charOut_save(cli, c); + } // copy buffer and create new buffer FIFOBuffChar_t* fifo = cli->FIFO; cli->FIFO = FIFOBuffChar_create(); @@ -245,7 +259,10 @@ bool CLI_charIn(CLI_t* cli, char c) case 127: // delete (backspace) if (FIFOBuffChar_pop(cli->FIFO)) { // pop something of the buffer - CLI_stringOut(cli, (char*)"\x1b[D \x1b[D"); // "" + if (cli->echo) + { + CLI_stringOut(cli, (char*)"\x1b[D \x1b[D"); // "" + } } break; @@ -254,8 +271,11 @@ bool CLI_charIn(CLI_t* cli, char c) break; default: - sprintf(&str[0], "\ninvlid char: '%c' - (%i)\n", c, c); - CLI_stringOut(cli, &str[0]); + if (cli->echo) + { + sprintf(&str[0], "\ninvlid char: '%c' - (%i)\n", c, c); + CLI_stringOut(cli, &str[0]); + } break; } } @@ -285,11 +305,17 @@ bool CLI_charIn(CLI_t* cli, char c) historyNext(cli); break; case 'C': // arrow right - CLI_stringOut(cli, (char*)"(key: arrow right)"); + if (cli->echo) + { + CLI_stringOut(cli, (char*)"(key: arrow right)"); + } cli->CLI_State = CLI_State_Default; break; case 'D': // arrow left - CLI_stringOut(cli, (char*)"(key: arrow left)"); + if (cli->echo) + { + CLI_stringOut(cli, (char*)"(key: arrow left)"); + } cli->CLI_State = CLI_State_Default; break; #endif diff --git a/CLI/CLI.h b/CLI/CLI.h index 11ee04b..3d899b7 100644 --- a/CLI/CLI.h +++ b/CLI/CLI.h @@ -26,6 +26,7 @@ typedef struct CLI { History_t* History; #endif CLI_State_t CLI_State; + bool echo; } CLI_t; // initilize and register the lineout print function