X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/4ecde0e1ff60d5e3d217dc1e5ca12c78864804cc..3ac59c7fed24cc69e2c9f626e5e4392769779e13:/armsrc/lfops.c diff --git a/armsrc/lfops.c b/armsrc/lfops.c index bbefba03..16e46c8b 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -72,8 +72,6 @@ void ModThenAcquireRawAdcSamples125k(int delay_off, int period_0, int period_1, DoAcquisition_config(false); } - - /* blank r/w tag data stream ...0000000000000000 01111111 1010101010101010101010101010101010101010101010101010101010101010 @@ -885,12 +883,13 @@ void T55xxWriteBlock(uint32_t Data, uint32_t Block, uint32_t Pwd, uint8_t PwdMod // Read one card block in page 0 void T55xxReadBlock(uint32_t Block, uint32_t Pwd, uint8_t PwdMode) { - uint8_t *dest = BigBuf_get_addr(); - //uint16_t bufferlength = BigBuf_max_traceLen(); - uint16_t bufferlength = T55xx_SAMPLES_SIZE; uint32_t i = 0; - // Clear destination buffer before sending the command 0x80 = average. - memset(dest, 0x80, bufferlength); + uint8_t *dest = BigBuf_get_addr(); + uint16_t bufferlength = BigBuf_max_traceLen(); + if ( bufferlength > T55xx_SAMPLES_SIZE ) + bufferlength = T55xx_SAMPLES_SIZE; + + memset(dest, 0x80, bufferlength); // Set up FPGA, 125kHz // Wait for config.. (192+8190xPOW)x8 == 67ms @@ -920,7 +919,6 @@ void T55xxReadBlock(uint32_t Block, uint32_t Pwd, uint8_t PwdMode) for(;;) { if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY) { AT91C_BASE_SSC->SSC_THR = 0x43; - //AT91C_BASE_SSC->SSC_THR = 0xff; LED_D_ON(); } if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { @@ -938,12 +936,13 @@ void T55xxReadBlock(uint32_t Block, uint32_t Pwd, uint8_t PwdMode) // Read card traceability data (page 1) void T55xxReadTrace(void){ - uint8_t *dest = BigBuf_get_addr(); - //uint16_t bufferlength = BigBuf_max_traceLen(); - uint16_t bufferlength = T55xx_SAMPLES_SIZE; + uint32_t i = 0; + uint8_t *dest = BigBuf_get_addr(); + uint16_t bufferlength = BigBuf_max_traceLen(); + if ( bufferlength > T55xx_SAMPLES_SIZE ) + bufferlength = T55xx_SAMPLES_SIZE; - // Clear destination buffer before sending the command 0x80 = average memset(dest, 0x80, bufferlength); LFSetupFPGAForADC(0, true); @@ -978,11 +977,11 @@ void T55xxReadTrace(void){ } void TurnReadLFOn(){ - FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz + //FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_ADC | FPGA_LF_ADC_READER_FIELD); // Give it a bit of time for the resonant antenna to settle. //SpinDelay(30); - SpinDelayUs(8*150); + SpinDelayUs(9*150); } /*-------------- Cloning routines -----------*/ @@ -1287,9 +1286,10 @@ void CopyIndala224toT55x7(int uid1, int uid2, int uid3, int uid4, int uid5, int #define max(x,y) ( x GraphBuffer[0]) { + if(dest[1] > dest[0]) { while(i < GraphTraceLen) { - if( !(GraphBuffer[i] > GraphBuffer[i-1]) && GraphBuffer[i] > lmax) + if( !(dest[i] > dest[i-1]) && dest[i] > lmax) break; i++; } @@ -1320,7 +1319,7 @@ int DemodPCF7931(uint8_t **outBlocks) { } else { while(i < GraphTraceLen) { - if( !(GraphBuffer[i] < GraphBuffer[i-1]) && GraphBuffer[i] < lmin) + if( !(dest[i] < dest[i-1]) && v[i] < lmin) break; i++; } @@ -1334,7 +1333,7 @@ int DemodPCF7931(uint8_t **outBlocks) { for (bitidx = 0; i < GraphTraceLen; i++) { - if ( (GraphBuffer[i-1] > GraphBuffer[i] && dir == 1 && GraphBuffer[i] > lmax) || (GraphBuffer[i-1] < GraphBuffer[i] && dir == 0 && GraphBuffer[i] < lmin)) + if ( (dest[i-1] > dest[i] && dir == 1 && dest[i] > lmax) || (dest[i-1] < dest[i] && dir == 0 && dest[i] < lmin)) { lc = i - lastval; lastval = i; @@ -1401,7 +1400,7 @@ int DemodPCF7931(uint8_t **outBlocks) { } if(i < GraphTraceLen) { - if (GraphBuffer[i-1] > GraphBuffer[i]) dir=0; + if (dest[i-1] > dest[i]) dir=0; else dir = 1; } }