]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
more graceful exit to lf search if no signal found
[proxmark3-svn] / client / cmdlf.c
index ef9c3cbbf9353cb60b626165a9925a6da9586813..51e89581b74c7c906f7fc118a9c28b59e821b17d 100644 (file)
@@ -54,26 +54,24 @@ static int CmdHelp(const char *Cmd);
 
 int usage_lf_cmdread(void)
 {
-       PrintAndLog("Usage: lf cmdread d <delay period> z <zero period> o <one period> c <cmdbytes> [H] ");
+       PrintAndLog("Usage: lf cmdread d <delay period> z <zero period> o <one period> c <cmdbytes> ");
        PrintAndLog("Options:        ");
        PrintAndLog("       h             This help");
-       PrintAndLog("       L             Low frequency (125 KHz)");
-       PrintAndLog("       H             High frequency (134 KHz)");
-       PrintAndLog("       d <delay>     delay OFF period");
-       PrintAndLog("       z <zero>      time period ZERO");
-       PrintAndLog("       o <one>       time period ONE");
+       PrintAndLog("       d <delay>     delay OFF period between bits (0 for bitbang mode)");
+       PrintAndLog("       z <zero>      time period ZERO (antenna off in bitbang mode)");
+       PrintAndLog("       o <one>       time period ONE (antenna on in bitbang mode)");
        PrintAndLog("       c <cmd>       Command bytes");
        PrintAndLog("       ************* All periods in microseconds");
+       PrintAndLog("       ************* Use lf config to configure options.");
        PrintAndLog("Examples:");
        PrintAndLog("      lf cmdread d 80 z 100 o 200 c 11000");
-       PrintAndLog("      lf cmdread d 80 z 100 o 100 c 11000 H");
+       PrintAndLog("      lf cmdread d 80 z 100 o 100 c 11000");
        return 0;
 }
 
 /* send a command before reading */
 int CmdLFCommandRead(const char *Cmd)
 {
-       static char dummy[3] = {0x20,0x00,0x00};
        UsbCommand c = {CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K};
        bool errors = false;
        //uint8_t divisor = 95; //125khz
@@ -84,14 +82,6 @@ int CmdLFCommandRead(const char *Cmd)
                {
                case 'h':
                        return usage_lf_cmdread();
-               case 'H':
-                       //divisor = 88;
-                       dummy[1]='h';
-                       cmdp++;
-                       break;
-               case 'L':
-                       cmdp++;
-                       break;
                case 'c':
                        param_getstr(Cmd, cmdp+1, (char *)&c.d.asBytes, sizeof(c.d.asBytes));
                        cmdp+=2;
@@ -121,11 +111,13 @@ int CmdLFCommandRead(const char *Cmd)
        //Validations
        if(errors) return usage_lf_cmdread();
        
-       // in case they specified 'H'
-       strcpy((char *)&c.d.asBytes + strlen((char *)c.d.asBytes), dummy);
-
        clearCommandBuffer();
        SendCommand(&c);
+
+       WaitForResponse(CMD_ACK,NULL);
+       getSamples(0, true);
+
+
        return 0;
 }
 
@@ -335,7 +327,7 @@ int CmdLFSetConfig(const char *Cmd)
 }
 
 bool lf_read(bool silent, uint32_t samples) {
-       if (offline) return false;
+       if (IsOffline()) return false;
        UsbCommand c = {CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, {silent,samples,0}};
        clearCommandBuffer();
        //And ship it to device
@@ -878,7 +870,7 @@ int CmdVchDemod(const char *Cmd)
 int CheckChipType(char cmdp) {
        uint32_t wordData = 0;
 
-       if (offline || cmdp == '1') return 0;
+       if (IsOffline() || cmdp == '1') return 0;
 
        save_restoreGB(GRAPH_SAVE);
        save_restoreDB(GRAPH_SAVE);
@@ -923,7 +915,7 @@ int CmdLFfind(const char *Cmd)
                return 0;
        }
 
-       if (!offline && (cmdp != '1')) {
+       if (!IsOffline() && (cmdp != '1')) {
                lf_read(true, 30000);
        } else if (GraphTraceLen < minLength) {
                PrintAndLog("Data in Graphbuffer was too small.");
@@ -939,7 +931,7 @@ int CmdLFfind(const char *Cmd)
        // only run if graphbuffer is just noise as it should be for hitag/cotag
        if (graphJustNoise(GraphBuffer, testLen)) {
                // only run these tests if we are in online mode 
-               if (!offline && (cmdp != '1')) {
+               if (!IsOffline() && (cmdp != '1')) {
                        // test for em4x05 in reader talk first mode.
                        if (EM4x05Block0Test(&wordData)) {
                                PrintAndLog("\nValid EM4x05/EM4x69 Chip Found\nUse lf em 4x05readword/dump commands to read\n");
@@ -955,6 +947,7 @@ int CmdLFfind(const char *Cmd)
                                return 1;
                        }
                }
+               PrintAndLog("\nNo Data Found! - maybe not an LF tag?\n");
                return 0;
        }
 
Impressum, Datenschutz