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 <xypron.glpk@gmx.de>
This commit is contained in:
Heinrich Schuchardt 2018-09-07 19:43:11 +02:00 committed by Tom Rini
parent 03190a7888
commit 29cfc096a7
3 changed files with 58 additions and 0 deletions

View File

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

View File

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

51
cmd/conitrace.c Normal file
View File

@ -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 <xypron.glpk@gmx.de>
*/
#include <common.h>
#include <command.h>
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
);