]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/ui.c
Update README.md
[proxmark3-svn] / client / ui.c
index 9c24f17d1bdd2aa5155397dc54fb9fafcff646fc..87fede08d149b0f3afe30ead07d88b48d7ff4968 100644 (file)
@@ -25,7 +25,10 @@ void PrintAndLog(char *fmt, ...)
        va_list argptr, argptr2;
        static FILE *logfile = NULL;
        static int logging = 1;
-
+       // time_t current_time;
+       // struct tm* tm_info;
+       // char buffer[26] = {0};
+               
        // lock this section to avoid interlacing prints from different threats
        pthread_mutex_lock(&print_lock);
   
@@ -63,6 +66,16 @@ void PrintAndLog(char *fmt, ...)
        }
        
        if (logging && logfile) {
+
+               /*
+               // Obtain current time.
+               current_time = time(NULL);
+               // Convert to local time format.
+               tm_info = localtime(&current_time);             
+               strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info);
+               fprintf(logfile, "%s  ", buffer);
+               */
+               
                vfprintf(logfile, fmt, argptr2);
                fprintf(logfile,"\n");
                fflush(logfile);
@@ -77,7 +90,7 @@ void PrintAndLog(char *fmt, ...)
 }
 
 void SetLogFilename(char *fn) {
-  logfilename = fn;
+       logfilename = fn;
 }
  
 void iceIIR_Butterworth(int *data, const size_t len){
@@ -85,10 +98,14 @@ void iceIIR_Butterworth(int *data, const size_t len){
        int i,j;
        
        int * output =  (int* ) malloc(sizeof(int) * len);      
+       if ( !output ) return;
+       
+       // clear mem
        memset(output, 0x00, len);
-       float fc = 0.1125f;          // center frequency
-       size_t adjustedLen = len;
        
+       size_t adjustedLen = len;
+       float fc = 0.1125f;          // center frequency
+               
     // create very simple low-pass filter to remove images (2nd-order Butterworth)
     float complex iir_buf[3] = {0,0,0};
     float b[3] = {0.003621681514929,  0.007243363029857, 0.003621681514929};
@@ -98,7 +115,7 @@ void iceIIR_Butterworth(int *data, const size_t len){
     float complex x_prime  = 1.0f;   // save sample for estimating frequency
     float complex x;
                
-       for (i=0; i<adjustedLen; ++i) {
+       for (i = 0; i < adjustedLen; ++i) {
 
                sample = data[i];
                
@@ -118,16 +135,38 @@ void iceIIR_Butterworth(int *data, const size_t len){
         float freq = cargf(x*conjf(x_prime));
         x_prime = x;    // retain this sample for next iteration
 
-               output[i] =(freq > 0)? 10 : -10;
+               output[i] =(freq > 0) ? 127 : -127;
     } 
 
        // show data
+       //memcpy(data, output, adjustedLen);
        for (j=0; j<adjustedLen; ++j)
                data[j] = output[j];
-               
+       
        free(output);
 }
 
+void iceSimple_Filter(int *data, const size_t len, uint8_t k){
+// ref: http://www.edn.com/design/systems-design/4320010/A-simple-software-lowpass-filter-suits-embedded-system-applications
+// parameter K
+#define FILTER_SHIFT 4 
+
+       int32_t filter_reg = 0;
+       int16_t input, output;
+       int8_t shift = (k <=8 ) ? k : FILTER_SHIFT;
+
+       for (int i = 0; i < len; ++i){
+
+               input = data[i];
+               // Update filter with current sample
+               filter_reg = filter_reg - (filter_reg >> shift) + input;
+
+               // Scale output for unity gain
+               output = filter_reg >> shift;
+               data[i] = output;
+       }
+}
+
 float complex cexpf (float complex Z)
 {
   float complex  Res;
Impressum, Datenschutz