]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/appmain.c
fix windows compile error and remove linux compile warnings
[proxmark3-svn] / armsrc / appmain.c
index 01e3efc98274b5a73e80e68f97d84af0395bca60..27a7551d55d06b680b35999321f6b072b3d1a55a 100644 (file)
@@ -7,6 +7,7 @@
 
 
 #include <proxmark3.h>
+#include <stdlib.h>
 #include "apps.h"
 #ifdef WITH_LCD
 #include "fonts.h"
@@ -249,7 +250,7 @@ void SweepLFrange()
        for (i=255; i>19; i--) {
                FpgaSendCommand(FPGA_CMD_SET_DIVISOR, i);
                SpinDelay(20);
-               dest[i] = (137500 * AvgAdc(4)) >> 18;
+               dest[i] = (137500 * AvgAdc(ADC_CHAN_LF)) >> 18;
        }
 }
 
@@ -267,7 +268,7 @@ void MeasureAntennaTuning(void)
        FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz
        FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_READER | FPGA_LF_READER_USE_125_KHZ);
        SpinDelay(20);
-       vLf125 = AvgAdc(4);
+       vLf125 = AvgAdc(ADC_CHAN_LF);
        // Vref = 3.3V, and a 10000:240 voltage divider on the input
        // can measure voltages up to 137500 mV
        vLf125 = (137500 * vLf125) >> 10;
@@ -276,7 +277,7 @@ void MeasureAntennaTuning(void)
        FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 88); //134.8Khz
        FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_READER | FPGA_LF_READER_USE_134_KHZ);
        SpinDelay(20);
-       vLf134 = AvgAdc(4);
+       vLf134 = AvgAdc(ADC_CHAN_LF);
        // Vref = 3.3V, and a 10000:240 voltage divider on the input
        // can measure voltages up to 137500 mV
        vLf134 = (137500 * vLf134) >> 10;
@@ -284,7 +285,7 @@ void MeasureAntennaTuning(void)
        // Let the FPGA drive the high-frequency antenna around 13.56 MHz.
        FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR);
        SpinDelay(20);
-       vHf = AvgAdc(5);
+       vHf = AvgAdc(ADC_CHAN_HF);
        // Vref = 3300mV, and an 10:1 voltage divider on the input
        // can measure voltages up to 33000 mV
        vHf = (33000 * vHf) >> 10;
@@ -727,6 +728,10 @@ void UsbPacketReceived(BYTE *packet, int len)
                        MeasureAntennaTuning();
                        break;
 
+               case CMD_LISTEN_READER_FIELD:
+                       ListenReaderField(c->ext1);
+                       break;
+
                case CMD_HID_DEMOD_FSK:
                        CmdHIDdemodFSK();                               // Demodulate HID tag
                        break;
@@ -904,3 +909,85 @@ void SpinDelay(int ms)
                WDT_HIT();
        }
 }
+
+// listen for external reader 
+void ListenReaderField(int limit)
+{
+       int lf_av, lf_av_new, lf_baseline= -1, lf_count= 0;
+       int hf_av, hf_av_new,  hf_baseline= -1, hf_count= 0;
+
+#define LF_ONLY                1
+#define HF_ONLY                2
+
+       LED_A_OFF();
+       LED_B_OFF();
+       LED_C_OFF();
+       LED_D_OFF();
+
+       lf_av= ReadAdc(ADC_CHAN_LF);
+
+       if(limit != HF_ONLY && lf_baseline ==  -1) 
+               {
+               DbpString("LF 125/134 Baseline:");
+               DbpIntegers(lf_av,0,0);
+               lf_baseline= lf_av;
+               }
+
+       hf_av= ReadAdc(ADC_CHAN_HF);
+
+
+       if (limit != LF_ONLY && hf_baseline == -1) 
+               {
+               DbpString("HF 13.56 Baseline:");
+               DbpIntegers(hf_av,0,0);
+               hf_baseline= hf_av;
+               }
+
+       for(;;) 
+               {
+               if(BUTTON_PRESS()) 
+                       {
+                       LED_B_OFF();
+                       LED_D_OFF();
+                       return;
+                       }
+               WDT_HIT();
+
+
+               if (limit != HF_ONLY) 
+                       {
+                       if (abs(lf_av - lf_baseline) > 10)
+                               LED_D_ON();
+                       else
+                               LED_D_OFF();
+                       ++lf_count;
+                       lf_av_new= ReadAdc(ADC_CHAN_LF);
+                       // see if there's a significant change
+                       if(abs(lf_av - lf_av_new) > 10) 
+                               {
+                               DbpString("LF 125/134 Field Change:");
+                               DbpIntegers(lf_av,lf_av_new,lf_count);
+                               lf_av= lf_av_new;
+                               lf_count= 0;
+                               }
+                       }
+
+               if (limit != LF_ONLY) 
+                       {
+                       if (abs(hf_av - hf_baseline) > 10)
+                               LED_B_ON();
+                       else
+                               LED_B_OFF();
+                       ++hf_count;
+                       hf_av_new= ReadAdc(ADC_CHAN_HF);
+                       // see if there's a significant change
+                       if(abs(hf_av - hf_av_new) > 10) 
+                               {
+                               DbpString("HF 13.56 Field Change:");
+                               DbpIntegers(hf_av,hf_av_new,hf_count);
+                               hf_av= hf_av_new;
+                               hf_count= 0;
+                               }
+                       }
+               }
+}
Impressum, Datenschutz