mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
FIX: added @marshmellow42 's fix for #514 (offical repo) lf search hang with no tag on antenna.
This commit is contained in:
parent
14a6c8e879
commit
535c92fee5
3 changed files with 23 additions and 15 deletions
|
@ -1291,7 +1291,7 @@ void T55xxResetRead(void) {
|
||||||
TurnReadLFOn(READ_GAP);
|
TurnReadLFOn(READ_GAP);
|
||||||
|
|
||||||
// Acquisition
|
// Acquisition
|
||||||
DoPartialAcquisition(0, true, BigBuf_max_traceLen());
|
DoPartialAcquisition(0, true, BigBuf_max_traceLen(), 0);
|
||||||
|
|
||||||
// Turn the field off
|
// Turn the field off
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
|
||||||
|
@ -1424,7 +1424,7 @@ void T55xxReadBlock(uint16_t arg0, uint8_t Block, uint32_t Pwd) {
|
||||||
|
|
||||||
// Acquisition
|
// Acquisition
|
||||||
// Now do the acquisition
|
// Now do the acquisition
|
||||||
DoPartialAcquisition(0, true, 12000);
|
DoPartialAcquisition(0, true, 12000, 0);
|
||||||
|
|
||||||
// Turn the field off
|
// Turn the field off
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
|
||||||
|
@ -1823,7 +1823,7 @@ void EM4xReadWord(uint8_t addr, uint32_t pwd, uint8_t usepwd) {
|
||||||
|
|
||||||
WaitUS(400);
|
WaitUS(400);
|
||||||
|
|
||||||
DoPartialAcquisition(20, true, 6000);
|
DoPartialAcquisition(20, true, 6000, 1000);
|
||||||
|
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
cmd_send(CMD_ACK,0,0,0,0,0);
|
cmd_send(CMD_ACK,0,0,0,0,0);
|
||||||
|
@ -1860,7 +1860,7 @@ void EM4xWriteWord(uint32_t flag, uint32_t data, uint32_t pwd) {
|
||||||
WaitMS(7);
|
WaitMS(7);
|
||||||
|
|
||||||
//Capture response if one exists
|
//Capture response if one exists
|
||||||
DoPartialAcquisition(20, true, 6000);
|
DoPartialAcquisition(20, true, 6000, 1000);
|
||||||
|
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
cmd_send(CMD_ACK,0,0,0,0,0);
|
cmd_send(CMD_ACK,0,0,0,0,0);
|
||||||
|
|
|
@ -116,7 +116,7 @@ void LFSetupFPGAForADC(int divisor, bool lf_field) {
|
||||||
* @param silent - is true, now outputs are made. If false, dbprints the status
|
* @param silent - is true, now outputs are made. If false, dbprints the status
|
||||||
* @return the number of bits occupied by the samples.
|
* @return the number of bits occupied by the samples.
|
||||||
*/
|
*/
|
||||||
uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averaging, int trigger_threshold, bool silent, int bufsize) {
|
uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averaging, int trigger_threshold, bool silent, int bufsize, uint32_t cancel_after) {
|
||||||
//bigbuf, to hold the aquired raw data signal
|
//bigbuf, to hold the aquired raw data signal
|
||||||
uint8_t *dest = BigBuf_get_addr();
|
uint8_t *dest = BigBuf_get_addr();
|
||||||
bufsize = (bufsize > 0 && bufsize < BigBuf_max_traceLen()) ? bufsize : BigBuf_max_traceLen();
|
bufsize = (bufsize > 0 && bufsize < BigBuf_max_traceLen()) ? bufsize : BigBuf_max_traceLen();
|
||||||
|
@ -135,6 +135,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averag
|
||||||
uint32_t sample_sum =0 ;
|
uint32_t sample_sum =0 ;
|
||||||
uint32_t sample_total_numbers = 0;
|
uint32_t sample_total_numbers = 0;
|
||||||
uint32_t sample_total_saved = 0;
|
uint32_t sample_total_saved = 0;
|
||||||
|
uint32_t cancel_counter = 0;
|
||||||
|
|
||||||
while (!BUTTON_PRESS() && !usb_poll_validate_length() ) {
|
while (!BUTTON_PRESS() && !usb_poll_validate_length() ) {
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
|
@ -146,8 +147,14 @@ uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averag
|
||||||
sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR;
|
sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR;
|
||||||
LED_D_OFF();
|
LED_D_OFF();
|
||||||
// threshold either high or low values 128 = center 0. if trigger = 178
|
// threshold either high or low values 128 = center 0. if trigger = 178
|
||||||
if ((trigger_threshold > 0) && (sample < (trigger_threshold+128)) && (sample > (128-trigger_threshold))) //
|
if ((trigger_threshold > 0) && (sample < (trigger_threshold + 128)) && (sample > (128 - trigger_threshold))) {
|
||||||
|
if (cancel_after > 0) {
|
||||||
|
cancel_counter++;
|
||||||
|
if (cancel_after == cancel_counter)
|
||||||
|
break;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
trigger_threshold = 0;
|
trigger_threshold = 0;
|
||||||
sample_total_numbers++;
|
sample_total_numbers++;
|
||||||
|
@ -206,7 +213,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averag
|
||||||
* @return number of bits sampled
|
* @return number of bits sampled
|
||||||
*/
|
*/
|
||||||
uint32_t DoAcquisition_default(int trigger_threshold, bool silent) {
|
uint32_t DoAcquisition_default(int trigger_threshold, bool silent) {
|
||||||
return DoAcquisition(1, 8, 0,trigger_threshold, silent, 0);
|
return DoAcquisition(1, 8, 0,trigger_threshold, silent, 0, 0);
|
||||||
}
|
}
|
||||||
uint32_t DoAcquisition_config( bool silent, int sample_size) {
|
uint32_t DoAcquisition_config( bool silent, int sample_size) {
|
||||||
return DoAcquisition(config.decimation
|
return DoAcquisition(config.decimation
|
||||||
|
@ -214,11 +221,12 @@ uint32_t DoAcquisition_config( bool silent, int sample_size) {
|
||||||
,config.averaging
|
,config.averaging
|
||||||
,config.trigger_threshold
|
,config.trigger_threshold
|
||||||
,silent
|
,silent
|
||||||
,sample_size);
|
,sample_size
|
||||||
|
,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t DoPartialAcquisition(int trigger_threshold, bool silent, int sample_size) {
|
uint32_t DoPartialAcquisition(int trigger_threshold, bool silent, int sample_size, uint32_t cancel_after) {
|
||||||
return DoAcquisition(1, 8, 0, trigger_threshold, silent, sample_size);
|
return DoAcquisition(1, 8, 0, trigger_threshold, silent, sample_size, cancel_after);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t ReadLF(bool activeField, bool silent, int sample_size) {
|
uint32_t ReadLF(bool activeField, bool silent, int sample_size) {
|
||||||
|
|
|
@ -36,7 +36,7 @@ uint32_t SampleLF(bool silent, int sample_size);
|
||||||
uint32_t SnoopLF();
|
uint32_t SnoopLF();
|
||||||
|
|
||||||
// adds sample size to default options
|
// adds sample size to default options
|
||||||
uint32_t DoPartialAcquisition(int trigger_threshold, bool silent, int sample_size);
|
uint32_t DoPartialAcquisition(int trigger_threshold, bool silent, int sample_size, uint32_t cancel_after);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Does sample acquisition, ignoring the config values set in the sample_config.
|
* @brief Does sample acquisition, ignoring the config values set in the sample_config.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue