From 178c922218b7c8aa3a50adf4e6010587e5ebb991 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 20 May 2019 10:48:51 -0400 Subject: [PATCH] chg: lf read - now uses NG --- armsrc/appmain.c | 10 ++++++++-- client/cmdlf.c | 28 ++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 484150293..6a9c8404a 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -751,8 +751,14 @@ static void PacketReceived(PacketCommandNG *packet) { setSamplingConfig((sample_config *) packet->data.asBytes); break; case CMD_ACQUIRE_RAW_ADC_SAMPLES_125K: { - uint32_t bits = SampleLF(packet->oldarg[0], packet->oldarg[1]); - reply_old(CMD_ACK, bits, 0, 0, 0, 0); + struct p { + uint8_t silent; + uint32_t samples; + } PACKED; + struct p *payload; + payload = (struct p*)packet->data.asBytes; + uint32_t bits = SampleLF(payload->silent, payload->samples); + reply_ng(CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); break; } case CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K: { diff --git a/client/cmdlf.c b/client/cmdlf.c index c7ee7de92..440560513 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -207,7 +207,7 @@ int CmdLFCommandRead(const char *Cmd) { return PM3_SUCCESS; } PrintAndLogEx(WARNING, "timeout while waiting for reply."); - return PM3_EOPABORTED; + return PM3_ETIMEOUT; } int CmdFlexdemod(const char *Cmd) { @@ -353,22 +353,34 @@ int CmdLFSetConfig(const char *Cmd) { bool lf_read(bool silent, uint32_t samples) { if (!session.pm3_present) return false; + + struct p { + uint8_t silent; + uint32_t samples; + } PACKED; + + struct p payload; + payload.silent = silent; + payload.samples = samples; + clearCommandBuffer(); - SendCommandMIX(CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, silent, samples, 0, NULL, 0); + SendCommandNG(CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; if (g_lf_threshold_set) { - WaitForResponse(CMD_ACK, &resp); + WaitForResponse(CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, &resp); } else { - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { + if (!WaitForResponseTimeout(CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, &resp, 2500)) { PrintAndLogEx(WARNING, "command execution time out"); - return false; + return PM3_ETIMEOUT; } } - // resp.oldarg[0] is bits read not bytes read. - getSamples(resp.oldarg[0] / 8, silent); - return true; + // resp.oldarg[0] is bits read not bytes read. + uint32_t bits = (resp.data.asDwords[0] / 8 ); + getSamples(bits, silent); + + return PM3_SUCCESS; } int CmdLFRead(const char *Cmd) {