]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
USB comms: part 3 towards @micolous PR#463
[proxmark3-svn] / client / cmdlf.c
index 501bfaed6206129933e31afa8a965e6facda30a0..63dd737e68a11fdcdaeab971a6cadc8b32b89ed9 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,16 +82,8 @@ 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);
+                       param_getstr(Cmd, cmdp+1, (char *)&c.d.asBytes, sizeof(c.d.asBytes));
                        cmdp+=2;
                        break;
                case 'd':
@@ -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;
 }
 
@@ -491,7 +483,7 @@ int CmdLFfskSim(const char *Cmd)
        uint8_t fcHigh=0, fcLow=0, clk=0;
        uint8_t invert=0;
        bool errors = false;
-       char hexData[32] = {0x00}; // store entered hex data
+       char hexData[64] = {0x00}; // store entered hex data
        uint8_t data[255] = {0x00}; 
        int dataLen = 0;
        uint8_t cmdp = 0;
@@ -522,7 +514,7 @@ int CmdLFfskSim(const char *Cmd)
                //  cmdp++;
                //  break;
                case 'd':
-                       dataLen = param_getstr(Cmd, cmdp+1, hexData);
+                       dataLen = param_getstr(Cmd, cmdp+1, hexData, sizeof(hexData));
                        if (dataLen==0) {
                                errors=true; 
                        } else {
@@ -593,7 +585,7 @@ int CmdLFaskSim(const char *Cmd)
        uint8_t encoding = 1, separator = 0;
        uint8_t clk=0, invert=0;
        bool errors = false;
-       char hexData[32] = {0x00}; 
+       char hexData[64] = {0x00}; 
        uint8_t data[255]= {0x00}; // store entered hex data
        int dataLen = 0;
        uint8_t cmdp = 0;
@@ -628,7 +620,7 @@ int CmdLFaskSim(const char *Cmd)
                        cmdp++;
                        break;
                case 'd':
-                       dataLen = param_getstr(Cmd, cmdp+1, hexData);
+                       dataLen = param_getstr(Cmd, cmdp+1, hexData, sizeof(hexData));
                        if (dataLen==0) {
                                errors=true; 
                        } else {
@@ -687,7 +679,7 @@ int CmdLFpskSim(const char *Cmd)
        uint8_t carrier=0, clk=0;
        uint8_t invert=0;
        bool errors = false;
-       char hexData[32] = {0x00}; // store entered hex data
+       char hexData[64] = {0x00}; // store entered hex data
        uint8_t data[255] = {0x00}; 
        int dataLen = 0;
        uint8_t cmdp = 0;
@@ -723,7 +715,7 @@ int CmdLFpskSim(const char *Cmd)
                        cmdp++;
                        break;
                case 'd':
-                       dataLen = param_getstr(Cmd, cmdp+1, hexData);
+                       dataLen = param_getstr(Cmd, cmdp+1, hexData, sizeof(hexData));
                        if (dataLen==0) {
                                errors=true; 
                        } else {
@@ -945,7 +937,7 @@ int CmdLFfind(const char *Cmd)
                                PrintAndLog("\nValid EM4x05/EM4x69 Chip Found\nUse lf em 4x05readword/dump commands to read\n");
                                return 1;
                        }
-                       ans=CmdLFHitagReader("26");
+                       ans=CmdLFHitagReader("26"); // 26 = RHT2F_UID_ONLY
                        if (ans==0) {
                                return 1;
                        }
Impressum, Datenschutz