From: marshmellow42 Date: Tue, 28 Feb 2017 21:35:01 +0000 (-0500) Subject: implement marking the second STT when detected X-Git-Tag: v3.0.0~62^2~2 X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/ab812dfae5f0b2ac3fbc127f293ff65d85922ed7 implement marking the second STT when detected on the graph window --- diff --git a/client/cmddata.c b/client/cmddata.c index cce39089..75ead7a6 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -341,11 +341,14 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType, askAmp(BitStream, BitLen); } bool st = false; - if (*stCheck) st = DetectST(BitStream, &BitLen, &foundclk); + size_t ststart = 0, stend = 0; + if (*stCheck) st = DetectST_ext(BitStream, &BitLen, &foundclk, &ststart, &stend); if (st) { *stCheck = st; clk = (clk == 0) ? foundclk : clk; - if (verbose || g_debugMode) PrintAndLog("\nFound Sequence Terminator"); + CursorCPos = ststart; + CursorDPos = stend; + if (verbose || g_debugMode) PrintAndLog("\nFound Sequence Terminator - Second one is shown by orange and blue graph markers"); } int errCnt = askdemod(BitStream, &BitLen, &clk, &invert, maxErr, askamp, askType); if (errCnt<0 || BitLen<16){ //if fatal error (or -1) diff --git a/common/lfdemod.c b/common/lfdemod.c index fee55c92..b067098d 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1596,9 +1596,14 @@ int pskRawDemod(uint8_t dest[], size_t *size, int *clock, int *invert) return errCnt; } +bool DetectST(uint8_t buffer[], size_t *size, int *foundclock) { + size_t ststart = 0, stend = 0; + return DetectST_ext(buffer, size, foundclock, &ststart, &stend); +} + //by marshmellow //attempt to identify a Sequence Terminator in ASK modulated raw wave -bool DetectST(uint8_t buffer[], size_t *size, int *foundclock) { +bool DetectST_ext(uint8_t buffer[], size_t *size, int *foundclock, size_t *ststart, size_t *stend) { size_t bufsize = *size; //need to loop through all samples and identify our clock, look for the ST pattern uint8_t fndClk[] = {8,16,32,40,50,64,128}; @@ -1751,7 +1756,7 @@ bool DetectST(uint8_t buffer[], size_t *size, int *foundclock) { size_t newloc = 0; i=0; if (g_debugMode==2) prnt("DEBUG STT: Starting STT trim - start: %d, datalen: %d ",dataloc, datalen); - + bool firstrun = true; // warning - overwriting buffer given with raw wave data with ST removed... while ( dataloc < bufsize-(clk/2) ) { //compensate for long high at end of ST not being high due to signal loss... (and we cut out the start of wave high part) @@ -1764,6 +1769,11 @@ bool DetectST(uint8_t buffer[], size_t *size, int *foundclock) { buffer[dataloc] = buffer[dataloc+2]; buffer[dataloc+1] = buffer[dataloc+2]; } + if (firstrun) { + *ststart = dataloc; + *stend = dataloc+(clk*4); + firstrun=false; + } for (i=0; i