From 49bbc60af37da26b73c71f4ff774841fc2290b72 Mon Sep 17 00:00:00 2001 From: marshmellow42 Date: Tue, 7 Apr 2015 00:53:06 -0400 Subject: [PATCH] lf cleaning++ data askedgedetect - removed unneeded code lf em em4x50read bug fix / error checking graph-save/restore auto repaint after restore. --- client/cmddata.c | 17 ++++------------- client/cmdlfem4x.c | 31 +++++++++++++++++++------------ client/graph.c | 3 ++- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/client/cmddata.c b/client/cmddata.c index 18b59f21..d838abd1 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -850,23 +850,14 @@ int CmdAskEdgeDetect(const char *Cmd) int thresLen = 25; sscanf(Cmd, "%i", &thresLen); int shift = 127; - int shiftedVal=0; + for(int i = 1; i=thresLen) //large jump up - shift=127; + GraphBuffer[i-1] = 127; else if(GraphBuffer[i]-GraphBuffer[i-1]<=-1*thresLen) //large jump down - shift=-127; - - shiftedVal=GraphBuffer[i]+shift; - - if (shiftedVal>127) - shiftedVal=127; - else if (shiftedVal<-127) - shiftedVal=-127; - GraphBuffer[i-1] = shiftedVal; + GraphBuffer[i-1] = -127; } RepaintGraphWindow(); - //CmdNorm(""); return 0; } @@ -2171,7 +2162,7 @@ int CmdZerocrossings(const char *Cmd) static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, - {"askedgedetect", CmdAskEdgeDetect, 1, "[threshold] Adjust Graph for manual ask demod using length of sample differences to detect the edge of a wave (default = 25)"}, + {"askedgedetect", CmdAskEdgeDetect, 1, "[threshold] Adjust Graph for manual ask demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)"}, {"askem410xdemod", CmdAskEM410xDemod, 1, "[clock] [invert<0|1>] [maxErr] -- Demodulate an EM410x tag from GraphBuffer (args optional)"}, {"askgproxiidemod", CmdG_Prox_II_Demod, 1, "Demodulate a G Prox II tag from GraphBuffer"}, {"autocorr", CmdAutoCorr, 1, "[window length] [g] -- Autocorrelation over window - g to save back to GraphBuffer (overwrite)"}, diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index e45c788a..909045d3 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -323,6 +323,7 @@ int EM4x50Read(const char *Cmd, bool verbose) uint32_t Code[6]; char tmp[6]; char tmp2[20]; + int phaseoff; high = low = 0; memset(tmpbuff, 0, MAX_GRAPH_TRACE_LEN / 64); @@ -396,9 +397,11 @@ int EM4x50Read(const char *Cmd, bool verbose) startblock = i + 4; // skip over the remainder of LW - skip += tmpbuff[i+1] + tmpbuff[i+2] + clk + clk/8; - int phaseoff = tmpbuff[i+3]-clk; - + skip += tmpbuff[i+1] + tmpbuff[i+2] + clk; + if (tmpbuff[i+3]>clk) + phaseoff = tmpbuff[i+3]-clk; + else + phaseoff = 0; // now do it again to find the end end = skip; for (i += 3; i < j - 4 ; ++i) { @@ -423,12 +426,6 @@ int EM4x50Read(const char *Cmd, bool verbose) PrintAndLog(" or after a 'data askedge' command to clean up the read"); return 0; } - if (!complete) - { - PrintAndLog("*** Warning!"); - PrintAndLog("Partial data - no end found!"); - PrintAndLog("Try again with more samples."); - } } else if (start < 0) return 0; start = skip; snprintf(tmp2, sizeof(tmp2),"%d %d 1000 %d", clk, invert, clk*47); @@ -451,8 +448,12 @@ int EM4x50Read(const char *Cmd, bool verbose) if (tmpbuff[i+1] >= clk-tol) break; } + if (i >= j-4) break; //next LW not found skip += clk; - phaseoff = tmpbuff[i+1]-clk; + if (tmpbuff[i+1]>clk) + phaseoff = tmpbuff[i+1]-clk; + else + phaseoff = 0; i += 2; if (ASKmanDemod(tmp2, false, false) < 1) { save_restoreGB(0); @@ -475,16 +476,22 @@ int EM4x50Read(const char *Cmd, bool verbose) } //print full code: if (verbose || g_debugMode || AllPTest){ + if (!complete) { + PrintAndLog("*** Warning!"); + PrintAndLog("Partial data - no end found!"); + PrintAndLog("Try again with more samples."); + } PrintAndLog("Found data at sample: %i - using clock: %i", start, clk); end = block; for (block=0; block < end; block++){ PrintAndLog("Block %d: %08x",block,Code[block]); } - if (AllPTest) + if (AllPTest) { PrintAndLog("Parities Passed"); - else + } else { PrintAndLog("Parities Failed"); PrintAndLog("Try cleaning the read samples with 'data askedge'"); + } } //restore GraphBuffer diff --git a/client/graph.c b/client/graph.c index 089119d9..3bea7881 100644 --- a/client/graph.c +++ b/client/graph.c @@ -56,9 +56,10 @@ void save_restoreGB(uint8_t saveOpt) memcpy(SavedGB, GraphBuffer, sizeof(GraphBuffer)); SavedGBlen = GraphTraceLen; GB_Saved=true; - } else if (GB_Saved){ + } else if (GB_Saved){ //restore memcpy(GraphBuffer, SavedGB, sizeof(GraphBuffer)); GraphTraceLen = SavedGBlen; + RepaintGraphWindow(); } return; } -- 2.39.2