From f9c2f35c8bd8eef5dda8267213828a6e65d9b2b9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 3 Feb 2021 10:33:02 +0100 Subject: [PATCH] lf read - now uses cliparser --- client/src/cmdlf.c | 81 ++++++++++++++-------------------------------- 1 file changed, 25 insertions(+), 56 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 73b538ddb..5e0f8beec 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -93,26 +93,6 @@ static int usage_lf_cmdread(void) { PrintAndLogEx(NORMAL, " use " _YELLOW_("'lf config'")" to set parameters."); return PM3_SUCCESS; } -static int usage_lf_read(void) { - PrintAndLogEx(NORMAL, "Usage: lf read [h] [q] [s #samples] [@]"); - PrintAndLogEx(NORMAL, "Options:"); - PrintAndLogEx(NORMAL, " h This help"); - PrintAndLogEx(NORMAL, " q silent (optional)"); - PrintAndLogEx(NORMAL, " s #samples number of samples to collect (optional)"); - PrintAndLogEx(NORMAL, " @ run continuously until a key is pressed (optional)"); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf read"); - PrintAndLogEx(NORMAL, "- collecting quietly 12000 samples:"); - PrintAndLogEx(NORMAL, " lf read q s 12000 - "); - PrintAndLogEx(NORMAL, "- oscilloscope style:"); - PrintAndLogEx(NORMAL, " data plot"); - PrintAndLogEx(NORMAL, " lf read q s 3000 @"); - PrintAndLogEx(NORMAL, "Extras:"); - PrintAndLogEx(NORMAL, " use " _YELLOW_("'lf config'")" to set parameters."); - return PM3_SUCCESS; -} - static int usage_lf_config(void) { PrintAndLogEx(NORMAL, "Usage: lf config [h] [L | H | q | f ] [b ] [d ] [a 0|1]"); PrintAndLogEx(NORMAL, "Options:"); @@ -654,49 +634,38 @@ int lf_read(bool verbose, uint32_t samples) { } int CmdLFRead(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "lf read", + "Sniff low frequency signal.\n" + " - use " _YELLOW_("`lf config`") _CYAN_(" to set parameters.\n") + _CYAN_(" - use ") _YELLOW_("`data plot`") _CYAN_(" to look at it"), + "lf read -v -s 12000 --> collect 12000 samples\n" + "lf read -s 3000 -@ --> oscilloscope style \n" + ); - if (!session.pm3_present) return PM3_ENOTTY; + void *argtable[] = { + arg_param_begin, + arg_u64_0("s", "samples", "", "number of samples to collect"), + arg_lit0("v", "verbose", "verbose output"), + arg_lit0("@", NULL, "continuous reading mode"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + uint32_t samples = arg_get_u32_def(ctx, 1, 0); + bool verbose = arg_get_lit(ctx, 2); + bool cm = arg_get_lit(ctx, 3); + CLIParserFree(ctx); - bool errors = false; - bool verbose = true; - bool continuous = false; - uint32_t samples = 0; - uint8_t cmdp = 0; - while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { - switch (tolower(param_getchar(Cmd, cmdp))) { - case 'h': - return usage_lf_read(); - case 's': - samples = param_get32ex(Cmd, cmdp + 1, 0, 10); - cmdp += 2; - break; - case 'q': - verbose = false; - cmdp++; - break; - case '@': - continuous = true; - cmdp++; - break; - default: - PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp)); - errors = true; - break; - } - } + if (session.pm3_present == false) + return PM3_ENOTTY; - //Validations - if (errors) return usage_lf_read(); - if (continuous) { - PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); + if (cm) { + PrintAndLogEx(INFO, "Press " _GREEN_("") " to exit"); } int ret = PM3_SUCCESS; do { ret = lf_read(verbose, samples); - if (kbd_enter_pressed()) { - break; - } - } while (continuous); + } while (cm && !kbd_enter_pressed()); return ret; }