Merge https://gitlab.denx.de/u-boot/custodians/u-boot-sh
[platform/kernel/u-boot.git] / cmd / conitrace.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * The 'conitrace' command prints the codes received from the console input as
4  * hexadecimal numbers.
5  *
6  * Copyright (c) 2018, Heinrich Schuchardt <xypron.glpk@gmx.de>
7  */
8 #include <common.h>
9 #include <command.h>
10 #include <linux/delay.h>
11
12 static int do_conitrace(struct cmd_tbl *cmdtp, int flag, int argc,
13                         char *const argv[])
14 {
15         bool first = true;
16
17         printf("Waiting for your input\n");
18         printf("To terminate type 'x'\n");
19
20         /* Empty input buffer */
21         while (tstc())
22                 getc();
23
24         for (;;) {
25                 int c = getc();
26
27                 if (first && (c == 'x' || c == 'X'))
28                         break;
29
30                 printf("%02x ", c);
31                 first = false;
32
33                 /* 1 ms delay - serves to detect separate keystrokes */
34                 udelay(1000);
35                 if (!tstc()) {
36                         printf("\n");
37                         first = true;
38                 }
39         }
40
41         return CMD_RET_SUCCESS;
42 }
43
44 #ifdef CONFIG_SYS_LONGHELP
45 static char conitrace_help_text[] = "";
46 #endif
47
48 U_BOOT_CMD_COMPLETE(
49         conitrace, 2, 0, do_conitrace,
50         "trace console input",
51         conitrace_help_text, NULL
52 );