From 4d2d65a0c6d5a498dbf329287c5ce1e9453f5eef Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 22 Jan 2021 22:58:50 +0100 Subject: [PATCH] lf fdx reader - check both 125 / 134 freqs. --- client/src/cmdlffdxb.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/client/src/cmdlffdxb.c b/client/src/cmdlffdxb.c index 529f63019..fdead8ea9 100644 --- a/client/src/cmdlffdxb.c +++ b/client/src/cmdlffdxb.c @@ -653,16 +653,10 @@ static int CmdFdxBReader(const char *Cmd) { return res; } - int16_t tmp_div = config.divisor; - if (tmp_div != LF_DIVISOR_134) { - config.divisor = LF_DIVISOR_134; - config.verbose = false; - res = lf_config(&config); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "failed to change LF configuration"); - return res; - } - } + config.verbose = false; + + int16_t old_div = config.divisor; + int16_t curr_div = config.divisor; if (cm) { PrintAndLogEx(INFO, "Press " _GREEN_("") " to exit"); @@ -670,13 +664,32 @@ static int CmdFdxBReader(const char *Cmd) { int ret = PM3_SUCCESS; do { + + if (curr_div == LF_DIVISOR_125) { + config.divisor = LF_DIVISOR_134; + res = lf_config(&config); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "failed to change to 134 KHz LF configuration"); + return res; + } + } else { + config.divisor = LF_DIVISOR_125; + res = lf_config(&config); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "failed to change to 125 KHz LF configuration"); + return res; + } + } + curr_div = config.divisor; + lf_read(false, 10000); ret = demodFDXB(!cm); // be verbose only if not in continuous mode - //PrintAndLogEx(INPLACE, ""); + } while (cm && !kbd_enter_pressed()); - if (tmp_div != LF_DIVISOR_134) { - config.divisor = tmp_div; + + if (old_div != curr_div) { + config.divisor = old_div; res = lf_config(&config); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "failed to restore LF configuration");