X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/0e74c023bd73e4516652f1656794a2edc2b12abc..e33b652c535be95344724728a0b9dd1f3cf87587:/client/graph.c diff --git a/client/graph.c b/client/graph.c index 18ff972a..a0e85ffd 100644 --- a/client/graph.c +++ b/client/graph.c @@ -12,6 +12,7 @@ #include #include "ui.h" #include "graph.h" +#include "lfdemod.h" int GraphBuffer[MAX_GRAPH_TRACE_LEN]; int GraphTraceLen; @@ -46,9 +47,9 @@ int ClearGraph(int redraw) /* * Detect clock rate */ - //decommissioned - has difficulty detecting rf/32 and only works if data is manchester encoded + //decommissioned - has difficulty detecting rf/32 /* -int DetectClock2(int peak) +int DetectClockOld(int peak) { int i; int clock = 0xFFFF; @@ -76,17 +77,21 @@ int DetectClock2(int peak) return clock; } */ +/* +NOW IN LFDEMOD.C // by marshmellow // not perfect especially with lower clocks or VERY good antennas (heavy wave clipping) // maybe somehow adjust peak trimming value based on samples to fix? -int DetectClock(int peak) +int DetectASKClock(int peak) { int i=0; int low=0; int clk[]={16,32,40,50,64,100,128,256}; + int loopCnt = 256; + if (GraphTraceLenpeak){ peak = GraphBuffer[i]; } @@ -97,15 +102,11 @@ int DetectClock(int peak) peak=(int)(peak*.75); low= (int)(low*.75); } - //int numbits; int ii; - int loopCnt = 256; - if (GraphTraceLen=peak) || (GraphBuffer[ii]<=low)){ - //numbits=0; - //good=1; - errCnt[clkCnt]=0; + errCnt[clkCnt]=0; for (i=0; i<((int)(GraphTraceLen/clk[clkCnt])-1); ++i){ if (GraphBuffer[ii+(i*clk[clkCnt])]>=peak || GraphBuffer[ii+(i*clk[clkCnt])]<=low){ - //numbits++; }else if(GraphBuffer[ii+(i*clk[clkCnt])-tol]>=peak || GraphBuffer[ii+(i*clk[clkCnt])-tol]<=low){ }else if(GraphBuffer[ii+(i*clk[clkCnt])+tol]>=peak || GraphBuffer[ii+(i*clk[clkCnt])+tol]<=low){ }else{ //error no peak detected - //numbits=0; - //good=0; errCnt[clkCnt]++; - //break; } } if(errCnt[clkCnt]==0) return clk[clkCnt]; if(errCnt[clkCnt]127) GraphBuffer[i]=127; //trim + if (GraphBuffer[i]<-127) GraphBuffer[i]=-127; //trim + buff[i]=(uint8_t)(GraphBuffer[i]+128); + } + return i; +} /* Get or auto-detect clock rate */ int GetClock(const char *str, int peak, int verbose) { @@ -160,7 +174,9 @@ int GetClock(const char *str, int peak, int verbose) /* Auto-detect clock */ if (!clock) { - clock = DetectClock(peak); + uint8_t grph[MAX_GRAPH_TRACE_LEN]={0}; + int size = getFromGraphBuf(grph); + clock = DetectASKClock(grph,size,0); //clock2 = DetectClock2(peak); /* Only print this message if we're not looping something */ if (!verbose){