]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
CHG: 'lf snoop' - now automatically downloads samples after finished. (annoying...
authoriceman1001 <iceman@iuse.se>
Tue, 31 Jan 2017 15:11:57 +0000 (16:11 +0100)
committericeman1001 <iceman@iuse.se>
Tue, 31 Jan 2017 15:11:57 +0000 (16:11 +0100)
FIX: 'lf snoop'      - now turns of LF antenna after snoop.
FIX: 'lf cotag read' - now waits until the ACK cmd arrives before downloading samples.

armsrc/lfops.c
armsrc/lfsampling.c
client/cmdlf.c
client/cmdlfcotag.c

index 28927c33b1357dedd62f88603550ed7b0b391c1e..0dc5bcf9cee1f95e34ece58662971fbca7b02942 100644 (file)
@@ -78,6 +78,8 @@ void ModThenAcquireRawAdcSamples125k(uint32_t delay_off, uint32_t periods, uint3
 
        // now do the read
        DoAcquisition_config(false);
+       
+       FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
 }
 
 /* blank r/w tag data stream
@@ -1740,12 +1742,12 @@ void EM4xWriteWord(uint32_t Data, uint8_t Address, uint32_t Pwd, uint8_t PwdMode
 
 void Cotag() {
 
+//#define WAIT2200     { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); WaitUS(2035); }
 #define WAIT2200       { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); WaitUS(2200); }
-
        LED_A_ON();
        
        //clear buffer now so it does not interfere with timing later
-       BigBuf_Clear_keep_EM();
+       BigBuf_Clear_ext(false);
 
        // Set up FPGA, 132kHz to power up the tag
        FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
@@ -1755,28 +1757,33 @@ void Cotag() {
        // Connect the A/D to the peak-detected low-frequency path.
        SetAdcMuxFor(GPIO_MUXSEL_LOPKD);
        
-       // 50ms for the resonant antenna to settle.
-       SpinDelay(50);
-       
        // Now set up the SSC to get the ADC samples that are now streaming at us.
        FpgaSetupSsc();
+
        // start a 1.5ticks is 1us
        StartTicks();
        
        //send start pulse
-       TurnReadLFOn(800);
-       WAIT2200
-       TurnReadLFOn(3600);
-       WAIT2200
-       TurnReadLFOn(800);
-       WAIT2200
+       TurnReadLFOn(800);      WAIT2200
+       TurnReadLFOn(3600);     WAIT2200
+       TurnReadLFOn(800);      WAIT2200
        TurnReadLFOn(3600);     
        
-       // Turn field on to read the response
-       TurnReadLFOn(READ_GAP);
+/*
+       TurnReadLFOn(740);      WAIT2200
+       TurnReadLFOn(3330);     WAIT2200
+       TurnReadLFOn(740);      WAIT2200
+       TurnReadLFOn(3330);     
+       
+
+burst 800 us,    gap   2.2 msecs
+burst 3.6 msecs  gap   2.2 msecs
+burst 800 us     gap   2.2 msecs
+pulse 3.6 msecs
+*/
        
        // Acquisition
-       doT55x7Acquisition(20000);
+       DoAcquisition_default(-1, true);
        
        // Turn the field off
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
index 02c0cd4a7708fbe60f1378fc0d308887812eb145..d726ba20c7c823fce1d25beb883cec7262cd308c 100644 (file)
@@ -110,7 +110,7 @@ void LFSetupFPGAForADC(int divisor, bool lf_field) {
  * @param silent - is true, now outputs are made. If false, dbprints the status
  * @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) {
+uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averaging, int trigger_threshold, bool silent) {
        //bigbuf, to hold the aquired raw data signal
        uint8_t *dest = BigBuf_get_addr();
     uint16_t bufsize = BigBuf_max_traceLen();
@@ -224,14 +224,20 @@ uint32_t ReadLF(bool activeField, bool silent) {
 * @return number of bits sampled
 **/
 uint32_t SampleLF(bool printCfg) {
-       return ReadLF(true, printCfg);
+       BigBuf_Clear_ext(false);
+       uint32_t ret = ReadLF(true, printCfg);
+       FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
+       return ret;     
 }
 /**
 * Initializes the FPGA for snoop-mode (field off), and acquires the samples.
 * @return number of bits sampled
 **/
 uint32_t SnoopLF() {
-       return ReadLF(false, true);
+       BigBuf_Clear_ext(false);
+       uint32_t ret = ReadLF(false, true);
+       FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
+       return ret;     
 }
 
 /**
index 2daa46abd7a3563fb46f0a84a67f55be1a1c6716..eb2f7cde15455992b455af8a75dc7079c4e6496f 100644 (file)
@@ -36,11 +36,10 @@ int usage_lf_read(void){
        return 0;
 }
 int usage_lf_snoop(void) {
-       PrintAndLog("Usage: lf snoop");
+       PrintAndLog("Snoop low frequence signal. Use 'lf config' to set parameters.");
+       PrintAndLog("Usage: lf snoop [h]");
        PrintAndLog("Options:");
-       PrintAndLog("       h            This help");
-       PrintAndLog("This function takes no arguments. ");
-       PrintAndLog("Use 'lf config' to set parameters.");
+       PrintAndLog("      h         This help");
        return 0;
 }
 int usage_lf_config(void) {
@@ -568,10 +567,11 @@ int CmdLFSnoop(const char *Cmd) {
        uint8_t cmdp = param_getchar(Cmd, 0);
        if(cmdp == 'h' || cmdp == 'H') return usage_lf_snoop();
        
-       UsbCommand c = {CMD_LF_SNOOP_RAW_ADC_SAMPLES};
+       UsbCommand c = {CMD_LF_SNOOP_RAW_ADC_SAMPLES,{0,0,0}};
        clearCommandBuffer();   
        SendCommand(&c);
        WaitForResponse(CMD_ACK,NULL);
+       getSamples("", false);
        return 0;
 }
 
@@ -1221,7 +1221,7 @@ static command_t CommandTable[] =
        {"simfsk",      CmdLFfskSim,        0, "[c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>] \n\t\t-- Simulate LF FSK tag from demodbuffer or input"},
        {"simpsk",      CmdLFpskSim,        0, "[1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>] \n\t\t-- Simulate LF PSK tag from demodbuffer or input"},
        {"simbidir",    CmdLFSimBidir,      0, "Simulate LF tag (with bidirectional data transmission between reader and tag)"},
-       {"snoop",       CmdLFSnoop,         0, "['l'|'h'|<divisor>] [trigger threshold]-- Snoop LF (l:125khz, h:134khz)"},
+       {"snoop",       CmdLFSnoop,         0, "Snoop LF"},
        {"vchdemod",    CmdVchDemod,        1, "['clone'] -- Demodulate samples for VeriChip"},
        {NULL, NULL, 0, NULL}
 };
index e200e834abe0e7117076e62417edc752813f1a48..11be2db8024e83d92f030406040b5a373d642f86 100644 (file)
@@ -18,9 +18,13 @@ int CmdCOTAGRead(const char *Cmd) {
        UsbCommand c = {CMD_COTAG, {0, 0, 0}};
        clearCommandBuffer();
        SendCommand(&c);
-
-       getSamples("20000", TRUE);
-       return CmdFSKdemodAWID(Cmd);
+       if ( !WaitForResponseTimeout(CMD_ACK, NULL, 2500) ) {
+               //PrintAndLog("command execution time out");
+               return 1;
+       }
+       getSamples("", true);
+       //return CmdFSKdemodAWID(Cmd);
+       return 0;
 }
 
 static command_t CommandTable[] = {
Impressum, Datenschutz