// 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> | |
#include <linux/delay.h> | |
static int do_conitrace(struct cmd_tbl *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()) | |
getchar(); | |
for (;;) { | |
int c = getchar(); | |
if (first && (c == 'x' || c == 'X')) | |
break; | |
printf("%02x ", c); | |
first = false; | |
/* 10 ms delay - serves to detect separate keystrokes */ | |
udelay(10000); | |
if (!tstc()) { | |
printf("\n"); | |
first = true; | |
} | |
} | |
return CMD_RET_SUCCESS; | |
} | |
U_BOOT_LONGHELP(conitrace, ""); | |
U_BOOT_CMD_COMPLETE( | |
conitrace, 2, 0, do_conitrace, | |
"trace console input", | |
conitrace_help_text, NULL | |
); |