From 390d0ab52527b0410b7b52afb81c44a360c420f4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 25 Oct 2019 00:53:56 +0200 Subject: [PATCH] lf tune: allow float, added parse_getfloat to utils --- client/cmdlf.c | 6 +++--- client/util.c | 8 ++++++++ client/util.h | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/client/cmdlf.c b/client/cmdlf.c index 8f5a88923..328af5e29 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -231,12 +231,12 @@ int CmdLFTune(const char *Cmd) { } break; case 'f': { - int freq = param_get32ex(Cmd, cmdp + 1, 125, 10); - divisor = LF_FREQ2DIV(freq); - if (divisor < 19) { + float freq = param_getfloat(Cmd, cmdp + 1, 125); + if ((freq < 47) || (freq > 600)) { PrintAndLogEx(ERR, "freq must be between 47 and 600"); return PM3_EINVARG; } + divisor = LF_FREQ2DIV(freq); cmdp += 2; break; } diff --git a/client/util.c b/client/util.c index da1b5d0e2..58dce8eca 100644 --- a/client/util.c +++ b/client/util.c @@ -551,6 +551,14 @@ uint64_t param_get64ex(const char *line, int paramnum, int deflt, int base) { return deflt; } +float param_getfloat(const char *line, int paramnum, float deflt) { + int bg, en; + if (!param_getptr(line, &bg, &en, paramnum)) + return strtof(&line[bg], NULL); + else + return deflt; +} + int param_gethex(const char *line, int paramnum, uint8_t *data, int hexcnt) { int bg, en, i; uint32_t temp; diff --git a/client/util.h b/client/util.h index 7d6c6460e..d549458c4 100644 --- a/client/util.h +++ b/client/util.h @@ -68,6 +68,7 @@ uint8_t param_get8(const char *line, int paramnum); uint8_t param_get8ex(const char *line, int paramnum, int deflt, int base); uint32_t param_get32ex(const char *line, int paramnum, int deflt, int base); uint64_t param_get64ex(const char *line, int paramnum, int deflt, int base); +float param_getfloat(const char *line, int paramnum, float deflt); uint8_t param_getdec(const char *line, int paramnum, uint8_t *destination); uint8_t param_isdec(const char *line, int paramnum); int param_gethex(const char *line, int paramnum, uint8_t *data, int hexcnt);