]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
unify/refactor hw tune and data tune
authorpwpiwi <pwpiwi@users.noreply.github.com>
Wed, 17 Dec 2014 16:38:13 +0000 (17:38 +0100)
committerpwpiwi <pwpiwi@users.noreply.github.com>
Wed, 17 Dec 2014 19:57:26 +0000 (20:57 +0100)
- unified hw tune and Enio's great data tune
- don't use BigBuf (and hardcoded Offset)
- removed special handling of CMD_MEASURED_ANTENNA_TUNING
  in UsbCommandReceived()

armsrc/appmain.c
client/cmddata.c
client/cmdhw.c
client/cmdmain.c

index 05e688682b6b8fadf7a4bf504cc43bb0a407de8b..143b175e5433a9d1e7841c6b42d6548091944f01 100644 (file)
@@ -196,15 +196,11 @@ int AvgAdc(int ch) // was static - merlok
 
 void MeasureAntennaTuning(void)
 {
-       uint8_t *dest = (uint8_t *)BigBuf+FREE_BUFFER_OFFSET;
+       uint8_t LF_Results[256];
        int i, adcval = 0, peak = 0, peakv = 0, peakf = 0; //ptr = 0 
        int vLf125 = 0, vLf134 = 0, vHf = 0;    // in mV
 
-//     UsbCommand c;
-
-  LED_B_ON();
-       DbpString("Measuring antenna characteristics, please wait...");
-       memset(dest,0,FREE_BUFFER_SIZE);
+       LED_B_ON();
 
 /*
  * Sweeps the useful LF range of the proxmark from
@@ -217,7 +213,7 @@ void MeasureAntennaTuning(void)
   
        FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
        FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_ADC | FPGA_LF_ADC_READER_FIELD);
-       for (i=255; i>19; i--) {
+       for (i=255; i>=19; i--) {
     WDT_HIT();
                FpgaSendCommand(FPGA_CMD_SET_DIVISOR, i);
                SpinDelay(20);
@@ -227,16 +223,18 @@ void MeasureAntennaTuning(void)
                if (i==95)      vLf125 = adcval; // voltage at 125Khz
                if (i==89)      vLf134 = adcval; // voltage at 134Khz
 
-               dest[i] = adcval>>8; // scale int to fit in byte for graphing purposes
-               if(dest[i] > peak) {
+               LF_Results[i] = adcval>>8; // scale int to fit in byte for graphing purposes
+               if(LF_Results[i] > peak) {
                        peakv = adcval;
-                       peak = dest[i];
+                       peak = LF_Results[i];
                        peakf = i;
                        //ptr = i;
                }
        }
 
-  LED_A_ON();
+       for (i=18; i >= 0; i--) LF_Results[i] = 0;
+       
+       LED_A_ON();
        // Let the FPGA drive the high-frequency antenna around 13.56 MHz.
        FpgaDownloadAndGo(FPGA_BITSTREAM_HF);
        FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR);
@@ -245,18 +243,11 @@ void MeasureAntennaTuning(void)
        // can measure voltages up to 33000 mV
        vHf = (33000 * AvgAdc(ADC_CHAN_HF)) >> 10;
 
-//     c.cmd = CMD_MEASURED_ANTENNA_TUNING;
-//     c.arg[0] = (vLf125 << 0) | (vLf134 << 16);
-//     c.arg[1] = vHf;
-//     c.arg[2] = peakf | (peakv << 16);
-
-  DbpString("Measuring complete, sending report back to host");
-  cmd_send(CMD_MEASURED_ANTENNA_TUNING,vLf125|(vLf134<<16),vHf,peakf|(peakv<<16),0,0);
-//     UsbSendPacket((uint8_t *)&c, sizeof(c));
+       cmd_send(CMD_MEASURED_ANTENNA_TUNING,vLf125|(vLf134<<16),vHf,peakf|(peakv<<16),LF_Results,256);
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
-  LED_A_OFF();
-  LED_B_OFF();
-  return;
+       LED_A_OFF();
+       LED_B_OFF();
+       return;
 }
 
 void MeasureAntennaTuningHf(void)
index b34ed8e017e3b294a01b5b71267b5085e390420c..2307c8af78d70e34e06750f7e089abf6a65d9a1f 100644 (file)
@@ -481,24 +481,56 @@ int CmdSamples(const char *Cmd)
 
 int CmdTuneSamples(const char *Cmd)
 {
-  int cnt = 0;
-  int n = 255;
-  uint8_t got[255];
-
-  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;
-  }
+       int timeout = 0;
+       printf("\nMeasuring antenna characteristics, please wait...");
+
+       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;
+       PrintAndLog("Done! Divisor 89 is 134khz, 95 is 125khz.\n");
+       PrintAndLog("\n");
+       GraphTraceLen = 256;
+       ShowGraphWindow();
+
+       return 0;
 }
 
+
 int CmdLoad(const char *Cmd)
 {
   FILE *f = fopen(Cmd, "r");
index 4f0f3e38a9a6ddd2f109c0c995d30334af4bfbd2..443973b839f197c255afa19360aba0d2ccb4443c 100644 (file)
@@ -18,6 +18,7 @@
 #include "cmdparser.h"
 #include "cmdhw.h"
 #include "cmdmain.h"
+#include "cmddata.h"
 
 /* low-level hardware control */
 
@@ -391,9 +392,7 @@ int CmdSetMux(const char *Cmd)
 
 int CmdTune(const char *Cmd)
 {
-  UsbCommand c = {CMD_MEASURE_ANTENNA_TUNING};
-  SendCommand(&c);
-  return 0;
+    return CmdTuneSamples(Cmd);
 }
 
 int CmdVersion(const char *Cmd)
index 77f1c373ece5bb884b0f9b3ea78c8af1dcbe2440..b2723490535c46040a22b05cdb91febd69079806 100644 (file)
@@ -206,28 +206,28 @@ void UsbCommandReceived(UsbCommand *UC)
       return;
     } break;
 
-    case CMD_MEASURED_ANTENNA_TUNING: {
-      int peakv, peakf;
-      int vLf125, vLf134, vHf;
-      vLf125 = UC->arg[0] & 0xffff;
-      vLf134 = UC->arg[0] >> 16;
-      vHf = UC->arg[1] & 0xffff;;
-      peakf = UC->arg[2] & 0xffff;
-      peakv = UC->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.");
-    } break;
+    // case CMD_MEASURED_ANTENNA_TUNING: {
+      // int peakv, peakf;
+      // int vLf125, vLf134, vHf;
+      // vLf125 = UC->arg[0] & 0xffff;
+      // vLf134 = UC->arg[0] >> 16;
+      // vHf = UC->arg[1] & 0xffff;;
+      // peakf = UC->arg[2] & 0xffff;
+      // peakv = UC->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.");
+    // } break;
       
     case CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K: {
 //      printf("received samples: ");
Impressum, Datenschutz