From: iceman1001 Date: Mon, 29 Aug 2016 18:29:31 +0000 (+0200) Subject: ADD: added a simple averging filter function. input parameter K, can be 1 to 8 X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/4c543dbd3fbaf27f47b59f214fc8c96816a8769a ADD: added a simple averging filter function. input parameter K, can be 1 to 8 ref: http://www.edn.com/design/systems-design/4320010/A-simple-software-lowpass-filter-suits-embedded-system-applications --- diff --git a/client/cmddata.c b/client/cmddata.c index 4279e9b6..f9aaa8db 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -2417,7 +2417,10 @@ int Cmdhex2bin(const char *Cmd) } int CmdDataIIR(const char *Cmd){ - iceIIR_Butterworth(GraphBuffer, GraphTraceLen); + + uint8_t k = param_get8(Cmd,0); + //iceIIR_Butterworth(GraphBuffer, GraphTraceLen); + iceSimple_Filter(GraphBuffer, GraphTraceLen, k); RepaintGraphWindow(); return 0; } diff --git a/client/ui.c b/client/ui.c index 9c24f17d..cfaec6a5 100644 --- a/client/ui.c +++ b/client/ui.c @@ -85,10 +85,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 +102,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 0)? 10 : -10; + output[i] =(freq > 0) ? 127 : -127; } // show data + //memcpy(data, output, adjustedLen); for (j=0; j> shift) + input; + + // Scale output for unity gain + output = filter_reg >> shift; + data[i] = output; + } +} + float complex cexpf (float complex Z) { float complex Res; diff --git a/client/ui.h b/client/ui.h index 3417f362..8d6c21b5 100644 --- a/client/ui.h +++ b/client/ui.h @@ -42,4 +42,5 @@ extern int offline; extern int flushAfterWrite; //buzzy void iceIIR_Butterworth(int * data, const size_t len); +void iceSimple_Filter(int *data, const size_t len, uint8_t k); #endif