diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 6c820b4b3..a506f1419 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1229,23 +1229,30 @@ static void PacketReceived(PacketCommandNG *packet) { MeasureAntennaTuning(); break; - case CMD_MEASURE_ANTENNA_TUNING_HF_START: - // Let the FPGA drive the high-frequency antenna around 13.56 MHz. - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR); - reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF_START, PM3_SUCCESS, NULL, 0); - break; - - case CMD_MEASURE_ANTENNA_TUNING_HF_SAMPLE: - if (button_status == BUTTON_SINGLE_CLICK) - reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF_SAMPLE, PM3_EOPABORTED, NULL, 0); - uint16_t volt = MeasureAntennaTuningHfData(); - reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF_SAMPLE, PM3_SUCCESS, (uint8_t *)&volt, sizeof(volt)); - break; - - case CMD_MEASURE_ANTENNA_TUNING_HF_STOP: - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF_STOP, PM3_SUCCESS, NULL, 0); + case CMD_MEASURE_ANTENNA_TUNING_HF: + if (packet->length != 1) + reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_EINVARG, NULL, 0); + switch (packet->data.asBytes[0]) { + case 1: // MEASURE_ANTENNA_TUNING_HF_START + // Let the FPGA drive the high-frequency antenna around 13.56 MHz. + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR); + reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_SUCCESS, NULL, 0); + break; + case 2: + if (button_status == BUTTON_SINGLE_CLICK) + reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_EOPABORTED, NULL, 0); + uint16_t volt = MeasureAntennaTuningHfData(); + reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_SUCCESS, (uint8_t *)&volt, sizeof(volt)); + break; + case 3: + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_SUCCESS, NULL, 0); + break; + default: + reply_ng(CMD_MEASURE_ANTENNA_TUNING_HF, PM3_EINVARG, NULL, 0); + break; + } break; case CMD_LISTEN_READER_FIELD: diff --git a/client/cmdhf.c b/client/cmdhf.c index b1bb6fa25..bed207991 100644 --- a/client/cmdhf.c +++ b/client/cmdhf.c @@ -100,27 +100,32 @@ int CmdHFTune(const char *Cmd) { PacketResponseNG resp; PrintAndLogEx(SUCCESS, "Measuring HF antenna, click button to exit"); clearCommandBuffer(); - SendCommandNG(CMD_MEASURE_ANTENNA_TUNING_HF_START, NULL, 0); - if (!WaitForResponseTimeout(CMD_MEASURE_ANTENNA_TUNING_HF_START, &resp, 1000)) { - PrintAndLogEx(WARNING, "Timeout while waiting for Proxmark HF measure, aborting"); + uint8_t mode[] = {1}; + SendCommandNG(CMD_MEASURE_ANTENNA_TUNING_HF, mode, sizeof(mode)); + if (!WaitForResponseTimeout(CMD_MEASURE_ANTENNA_TUNING_HF, &resp, 1000)) { + PrintAndLogEx(WARNING, "Timeout while waiting for Proxmark HF initialization, aborting"); return PM3_ETIMEOUT; } - for (uint8_t i=0; iter == 0 || i< iter; i++) { // loop forever (till button pressed) if iter = 0 (default) - SendCommandNG(CMD_MEASURE_ANTENNA_TUNING_HF_SAMPLE, NULL, 0); - if (!WaitForResponseTimeout(CMD_MEASURE_ANTENNA_TUNING_HF_SAMPLE, &resp, 1000)) { + mode[0] = 2; + // loop forever (till button pressed) if iter = 0 (default) + for (uint8_t i=0; iter == 0 || i< iter; i++) { + SendCommandNG(CMD_MEASURE_ANTENNA_TUNING_HF, mode, sizeof(mode)); + if (!WaitForResponseTimeout(CMD_MEASURE_ANTENNA_TUNING_HF, &resp, 1000)) { PrintAndLogEx(WARNING, "Timeout while waiting for Proxmark HF measure, aborting"); return PM3_ETIMEOUT; } - if (resp.status == PM3_EOPABORTED) + if ((resp.status == PM3_EOPABORTED) || (resp.length != sizeof(uint16_t))) break; uint16_t volt = resp.data.asDwords[0]; PrintAndLogEx(INPLACE, "%u mV / %5u V", volt, (uint16_t)(volt / 1000)); } - SendCommandNG(CMD_MEASURE_ANTENNA_TUNING_HF_STOP, NULL, 0); - if (!WaitForResponseTimeout(CMD_MEASURE_ANTENNA_TUNING_HF_STOP, &resp, 1000)) { - PrintAndLogEx(WARNING, "Timeout while waiting for Proxmark HF measure, aborting"); + mode[0] = 3; + SendCommandNG(CMD_MEASURE_ANTENNA_TUNING_HF, mode, sizeof(mode)); + if (!WaitForResponseTimeout(CMD_MEASURE_ANTENNA_TUNING_HF, &resp, 1000)) { + PrintAndLogEx(WARNING, "Timeout while waiting for Proxmark HF shutdown, aborting"); return PM3_ETIMEOUT; } + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "Done."); return PM3_SUCCESS; } diff --git a/client/ui.c b/client/ui.c index 023f5b444..010ee8499 100644 --- a/client/ui.c +++ b/client/ui.c @@ -102,7 +102,7 @@ void PrintAndLogEx(logLevel_t level, const char *fmt, ...) { return; } if (level == INPLACE) { - printf("%s\r", buffer); + printf("\r%s", buffer); fflush(stdout); return; } diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index a725ccab9..de66f312f 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -335,9 +335,7 @@ typedef struct { // For measurements of the antenna tuning #define CMD_MEASURE_ANTENNA_TUNING 0x0400 -#define CMD_MEASURE_ANTENNA_TUNING_HF_START 0x0401 -#define CMD_MEASURE_ANTENNA_TUNING_HF_SAMPLE 0x0402 -#define CMD_MEASURE_ANTENNA_TUNING_HF_STOP 0x0403 +#define CMD_MEASURE_ANTENNA_TUNING_HF 0x0401 #define CMD_MEASURED_ANTENNA_TUNING 0x0410 #define CMD_LISTEN_READER_FIELD 0x0420