X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/a553f2674865fa544d04ca7b8194e30c008644ae..95e635947bc4628b713fa00d7a533a881bca7fc4:/client/graph.c diff --git a/client/graph.c b/client/graph.c index 541e68f3..7b45f3f2 100644 --- a/client/graph.c +++ b/client/graph.c @@ -9,6 +9,7 @@ //----------------------------------------------------------------------------- #include +#include #include #include "ui.h" #include "graph.h" @@ -20,11 +21,13 @@ int GraphTraceLen; void AppendGraph(int redraw, int clock, int bit) { int i; - - for (i = 0; i < (int)(clock / 2); ++i) - GraphBuffer[GraphTraceLen++] = bit ^ 1; + int half = (int)(clock/2); + int firstbit = bit ^ 1; + + for (i = 0; i < half; ++i) + GraphBuffer[GraphTraceLen++] = firstbit; - for (i = (int)(clock / 2); i < clock; ++i) + for (i = 0; i <= half; ++i) GraphBuffer[GraphTraceLen++] = bit; if (redraw) @@ -35,8 +38,10 @@ void AppendGraph(int redraw, int clock, int bit) int ClearGraph(int redraw) { int gtl = GraphTraceLen; - GraphTraceLen = 0; + memset(GraphBuffer, 0x00, GraphTraceLen); + GraphTraceLen = 0; + if (redraw) RepaintGraphWindow(); @@ -69,8 +74,26 @@ int DetectClock(int peak) lastpeak = i; } } - - return clock; + + int clockmod = clock%8; + if ( clockmod == 0) + return clock; + + // When detected clock is 31 or 33 then return 32 + + printf("Found clock at %d ", clock); + switch( clockmod ) + { + case 7: clock++; break; + case 6: clock += 2 ; break; + case 1: clock--; break; + case 2: clock -= 2; break; + } + if ( clock < 32) + clock = 32; + + printf("- adjusted it to %d \n", clock); + return clock; } /* Get or auto-detect clock rate */ @@ -93,3 +116,15 @@ int GetClock(const char *str, int peak, int verbose) return clock; } + + +/* A simple test to see if there is any data inside Graphbuffer. +*/ +bool HasGraphData(){ + + if ( GraphTraceLen <= 0) { + PrintAndLog("No data available, try reading something first"); + return false; + } + return true; +} \ No newline at end of file