]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmddata.c
Merge pull request #38 from marshmellow42/master
[proxmark3-svn] / client / cmddata.c
index bce5d2ced073ae4904297a17e8112a17df2d9942..53a3ce5f410e1d17a5e3e2cbc51b06210e7e873d 100644 (file)
@@ -932,35 +932,6 @@ int CmdIndalaDecode(const char *Cmd)
        return 1;
 }
 
-/*
-//by marshmellow (attempt to get rid of high immediately after a low)
-void pskCleanWave2(uint8_t *bitStream, int bitLen)
-{
-       int i;
-       int low=128;
-       int gap = 4;
- // int loopMax = 2048;
-       int newLow=0;
-
-       for (i=0; i<bitLen; ++i)
-               if (bitStream[i]<low) low=bitStream[i];
-
-       low = (int)(((low-128)*.80)+128);
-       PrintAndLog("low: %d",low);
-       for (i=0; i<bitLen; ++i){
-               if (newLow==1){
-                       bitStream[i]=low+5;
-                       gap--;
-                       if (gap==0){
-                               newLow=0;
-                               gap=4;
-                       }
-               }
-               if (bitStream[i]<=low) newLow=1;
-       }
-       return;
-}
-*/
 int CmdPskClean(const char *Cmd)
 {
        uint8_t bitStream[MAX_GRAPH_TRACE_LEN]={0};
@@ -989,8 +960,6 @@ int CmdpskNRZrawDemod(const char *Cmd)
        return 1;
 }
 
-
-
 int CmdGrid(const char *Cmd)
 {
        sscanf(Cmd, "%i %i", &PlotGridX, &PlotGridY);
@@ -1066,22 +1035,21 @@ int CmdHpf(const char *Cmd)
 
 int CmdSamples(const char *Cmd)
 {
-       int cnt = 0;
-       int n;
        uint8_t got[40000];
 
-       n = strtol(Cmd, NULL, 0);
-       if (n == 0) n = 6000;
-       if (n > sizeof(got)) n = sizeof(got);
+       int n = strtol(Cmd, NULL, 0);
+       if (n == 0)
+               n = 20000;
 
-       PrintAndLog("Reading %d samples\n", n);
+       if (n > sizeof(got))
+               n = sizeof(got);
+
+       PrintAndLog("Reading %d samples from device memory\n", n);
        GetFromBigBuf(got,n,0);
        WaitForResponse(CMD_ACK,NULL);
        for (int j = 0; j < n; j++) {
-               GraphBuffer[cnt++] = ((int)got[j]) - 128;
+               GraphBuffer[j] = ((int)got[j]) - 128;
        }
-
-       PrintAndLog("Done!\n");
        GraphTraceLen = n;
        RepaintGraphWindow();
        return 0;
@@ -1089,24 +1057,56 @@ int CmdSamples(const char *Cmd)
 
 int CmdTuneSamples(const char *Cmd)
 {
-       int cnt = 0;
-       int n = 255;
-       uint8_t got[255];
+       int timeout = 0;
+       printf("\nMeasuring antenna characteristics, please wait...");
 
-       PrintAndLog("Reading %d samples\n", n);
-       GetFromBigBuf(got,n,7256); // armsrc/apps.h: #define FREE_BUFFER_OFFSET 7256
-       WaitForResponse(CMD_ACK,NULL);
-       for (int j = 0; j < n; j++) {
-               GraphBuffer[cnt++] = ((int)got[j]) - 128;
+       UsbCommand c = {CMD_MEASURE_ANTENNA_TUNING};
+       SendCommand(&c);
+
+       UsbCommand resp;
+       while(!WaitForResponseTimeout(CMD_MEASURED_ANTENNA_TUNING,&resp,1000)) {
+               timeout++;
+               printf(".");
+               if (timeout > 7) {
+                       PrintAndLog("\nNo response from Proxmark. Aborting...");
+                       return 1;
+               }
+       }
+
+       int peakv, peakf;
+       int vLf125, vLf134, vHf;
+       vLf125 = resp.arg[0] & 0xffff;
+       vLf134 = resp.arg[0] >> 16;
+       vHf = resp.arg[1] & 0xffff;;
+       peakf = resp.arg[2] & 0xffff;
+       peakv = resp.arg[2] >> 16;
+       PrintAndLog("");
+       PrintAndLog("# LF antenna: %5.2f V @   125.00 kHz", vLf125/1000.0);
+       PrintAndLog("# LF antenna: %5.2f V @   134.00 kHz", vLf134/1000.0);
+       PrintAndLog("# LF optimal: %5.2f V @%9.2f kHz", peakv/1000.0, 12000.0/(peakf+1));
+       PrintAndLog("# HF antenna: %5.2f V @    13.56 MHz", vHf/1000.0);
+       if (peakv<2000)
+               PrintAndLog("# Your LF antenna is unusable.");
+       else if (peakv<10000)
+               PrintAndLog("# Your LF antenna is marginal.");
+       if (vHf<2000)
+               PrintAndLog("# Your HF antenna is unusable.");
+       else if (vHf<5000)
+               PrintAndLog("# Your HF antenna is marginal.");
+
+       for (int i = 0; i < 256; i++) {
+               GraphBuffer[i] = resp.d.asBytes[i] - 128;
        }
 
        PrintAndLog("Done! Divisor 89 is 134khz, 95 is 125khz.\n");
        PrintAndLog("\n");
-       GraphTraceLen = n;
-       RepaintGraphWindow();
-       return 0;
+       GraphTraceLen = 256;
+       ShowGraphWindow();
+
+  return 0;
 }
 
+
 int CmdLoad(const char *Cmd)
 {
        FILE *f = fopen(Cmd, "r");
@@ -1526,8 +1526,8 @@ static command_t CommandTable[] =
        {"help",          CmdHelp,            1, "This help"},
        {"amp",           CmdAmp,             1, "Amplify peaks"},
        {"askdemod",      Cmdaskdemod,        1, "<0 or 1> -- Attempt to demodulate simple ASK tags"},
-       {"askmandemod",   Cmdaskmandemod,     1, "[clock] [invert<0 or 1>] -- Attempt to demodulate ASK/Manchester tags and output binary (args optional[clock will try Auto-detect])"},
-       {"askrawdemod",   Cmdaskrawdemod,     1, "[clock] [invert<0 or 1>] -- Attempt to demodulate ASK tags and output binary (args optional[clock will try Auto-detect])"},
+       {"askmandemod",   Cmdaskmandemod,     1, "[clock] [invert<0|1>] -- Attempt to demodulate ASK/Manchester tags and output binary (args optional[clock will try Auto-detect])"},
+       {"askrawdemod",   Cmdaskrawdemod,     1, "[clock] [invert<0|1>] -- Attempt to demodulate ASK tags and output binary (args optional[clock will try Auto-detect])"},
        {"autocorr",      CmdAutoCorr,        1, "<window length> -- Autocorrelation over window"},
        {"biphaserawdecode",CmdBiphaseDecodeRaw,1,"[offset] Biphase decode binary stream already in graph buffer (offset = bit to start decode from)"},
        {"bitsamples",    CmdBitsamples,      0, "Get raw samples as bitstring"},
@@ -1538,7 +1538,7 @@ static command_t CommandTable[] =
        {"fskdemod",      CmdFSKdemod,        1, "Demodulate graph window as a HID FSK"},
        {"fskhiddemod",   CmdFSKdemodHID,     1, "Demodulate graph window as a HID FSK using raw"},
        {"fskiodemod",    CmdFSKdemodIO,      1, "Demodulate graph window as an IO Prox FSK using raw"},
-       {"fskrawdemod",   CmdFSKrawdemod,     1, "[clock rate] [invert] [rchigh] [rclow] Demodulate graph window from FSK to binary (clock = 50)(invert = 1 or 0)(rchigh = 10)(rclow=8)"},
+       {"fskrawdemod",   CmdFSKrawdemod,     1, "[clock rate] [invert] [rchigh] [rclow] Demodulate graph window from FSK to binary (clock = 50)(invert = 1|0)(rchigh = 10)(rclow=8)"},
        {"grid",          CmdGrid,            1, "<x> <y> -- overlay grid on graph window, use zero value to turn off either"},
        {"hexsamples",    CmdHexsamples,      0, "<bytes> [<offset>] -- Dump big buffer as hex bytes"},
        {"hide",          CmdHide,            1, "Hide graph window"},
@@ -1553,8 +1553,8 @@ static command_t CommandTable[] =
        {"plot",          CmdPlot,            1, "Show graph window (hit 'h' in window for keystroke help)"},
        {"pskclean",      CmdPskClean,        1, "Attempt to clean psk wave"},
        {"pskdetectclock",CmdDetectNRZpskClockRate, 1, "Detect ASK, PSK, or NRZ clock rate"},
-       {"pskindalademod",CmdIndalaDecode,    1, "[clock] [invert<0 or 1>] -- Attempt to demodulate psk indala tags and output ID binary & hex (args optional[clock will try Auto-detect])"},
-       {"psknrzrawdemod",CmdpskNRZrawDemod,  1, "[clock] [invert<0 or 1>] -- Attempt to demodulate psk or nrz tags and output binary (args optional[clock will try Auto-detect])"},
+       {"pskindalademod",CmdIndalaDecode,    1, "[clock] [invert<0|1>] -- Attempt to demodulate psk indala tags and output ID binary & hex (args optional[clock will try Auto-detect])"},
+       {"psknrzrawdemod",CmdpskNRZrawDemod,  1, "[clock] [invert<0|1>] -- Attempt to demodulate psk or nrz tags and output binary (args optional[clock will try Auto-detect])"},
        {"samples",       CmdSamples,         0, "[512 - 40000] -- Get raw samples for graph window"},
        {"save",          CmdSave,            1, "<filename> -- Save trace (from graph window)"},
        {"scale",         CmdScale,           1, "<int> -- Set cursor display scale"},
Impressum, Datenschutz