From: Heinrich Schuchardt Date: Fri, 7 Sep 2018 17:43:11 +0000 (+0200) Subject: cmd: add conitrace command X-Git-Tag: v2025.01-rc5-pxa1908~3528 X-Git-Url: http://git.dujemihanovic.xyz/img/static/git-logo.png?a=commitdiff_plain;h=29cfc096a7d3aeefdabbe4487097857ea821a553;p=u-boot.git cmd: add conitrace command The 'conitrace' command prints the codes received from the console input as hexadecimal numbers. This developer utility is useful for testing the handling of special keys by keyboard drivers. Signed-off-by: Heinrich Schuchardt --- diff --git a/cmd/Kconfig b/cmd/Kconfig index 13d4c991bf..cf97a0f2be 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1338,6 +1338,12 @@ config CMD_CACHE help Enable the "icache" and "dcache" commands +config CMD_CONITRACE + bool "conitrace - trace console input codes" + help + Enable the 'conitrace' command which displays the codes received + from the console input as hexadecimal numbers. + config CMD_DISPLAY bool "Enable the 'display' command, for character displays" help diff --git a/cmd/Makefile b/cmd/Makefile index a61fab6583..d3815abf26 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -34,6 +34,7 @@ obj-$(CONFIG_CMD_CACHE) += cache.o obj-$(CONFIG_CMD_CBFS) += cbfs.o obj-$(CONFIG_CMD_CLK) += clk.o obj-$(CONFIG_CMD_CONFIG) += config.o +obj-$(CONFIG_CMD_CONITRACE) += conitrace.o obj-$(CONFIG_CMD_CONSOLE) += console.o obj-$(CONFIG_CMD_CPU) += cpu.o obj-$(CONFIG_DATAFLASH_MMC_SELECT) += dataflash_mmc_mux.o diff --git a/cmd/conitrace.c b/cmd/conitrace.c new file mode 100644 index 0000000000..85c5422b7e --- /dev/null +++ b/cmd/conitrace.c @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * The 'conitrace' command prints the codes received from the console input as + * hexadecimal numbers. + * + * Copyright (c) 2018, Heinrich Schuchardt + */ +#include +#include + +static int do_conitrace(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + bool first = true; + + printf("Waiting for your input\n"); + printf("To terminate type 'x'\n"); + + /* Empty input buffer */ + while (tstc()) + getc(); + + for (;;) { + int c = getc(); + + if (first && (c == 'x' || c == 'X')) + break; + + printf("%02x ", c); + first = false; + + /* 1 ms delay - serves to detect separate keystrokes */ + udelay(1000); + if (!tstc()) { + printf("\n"); + first = true; + } + } + + return CMD_RET_SUCCESS; +} + +#ifdef CONFIG_SYS_LONGHELP +static char conitrace_help_text[] = ""; +#endif + +U_BOOT_CMD_COMPLETE( + conitrace, 2, 0, do_conitrace, + "trace console input", + conitrace_help_text, NULL +);