Parcourir la source

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>
Heinrich Schuchardt il y a 6 ans
Parent
commit
29cfc096a7
3 fichiers modifiés avec 58 ajouts et 0 suppressions
  1. 6 0
      cmd/Kconfig
  2. 1 0
      cmd/Makefile
  3. 51 0
      cmd/conitrace.c

+ 6 - 0
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

+ 1 - 0
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

+ 51 - 0
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 <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
+);