]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
implement marking the second STT when detected
authormarshmellow42 <marshmellowrf@gmail.com>
Tue, 28 Feb 2017 21:35:01 +0000 (16:35 -0500)
committermarshmellow42 <marshmellowrf@gmail.com>
Tue, 28 Feb 2017 21:35:01 +0000 (16:35 -0500)
on the graph window

client/cmddata.c
common/lfdemod.c
common/lfdemod.h

index cce390890d98caf5174a8e3d4bbb07e215b627ea..75ead7a60b9a76a565956175482e9b7c7878791c 100644 (file)
@@ -341,11 +341,14 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType,
                askAmp(BitStream, BitLen); 
        }
        bool st = false;
                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 (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)
        }
        int errCnt = askdemod(BitStream, &BitLen, &clk, &invert, maxErr, askamp, askType);
        if (errCnt<0 || BitLen<16){  //if fatal error (or -1)
index fee55c926ed87c412fbb9b4e95abf084eeeb11e3..b067098d9044555fd511692cb1a44e37fd84ea6f 100644 (file)
@@ -1596,9 +1596,14 @@ int pskRawDemod(uint8_t dest[], size_t *size, int *clock, int *invert)
        return errCnt;
 }
 
        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
 //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};
        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);            
        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)
        // 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];
                }
                        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<datalen; ++i) {
                        if (i+newloc < bufsize) {
                                if (i+newloc < dataloc)
                for (i=0; i<datalen; ++i) {
                        if (i+newloc < bufsize) {
                                if (i+newloc < dataloc)
index a77eb604965fbd01e926b8cc9f3b72aaad3be386..3710955238cacfe60f028e2ac8bfd38766af520f 100644 (file)
@@ -31,6 +31,7 @@ int      DetectNRZClock(uint8_t dest[], size_t size, int clock);
 int      DetectPSKClock(uint8_t dest[], size_t size, int clock);
 int      DetectStrongAskClock(uint8_t dest[], size_t size, uint8_t high, uint8_t low);
 bool     DetectST(uint8_t buffer[], size_t *size, int *foundclock);
 int      DetectPSKClock(uint8_t dest[], size_t size, int clock);
 int      DetectStrongAskClock(uint8_t dest[], size_t size, uint8_t high, uint8_t low);
 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);
 int      fskdemod(uint8_t *dest, size_t size, uint8_t rfLen, uint8_t invert, uint8_t fchigh, uint8_t fclow);
 int      getHiLo(uint8_t *BitStream, size_t size, int *high, int *low, uint8_t fuzzHi, uint8_t fuzzLo);
 uint32_t manchesterEncode2Bytes(uint16_t datain);
 int      fskdemod(uint8_t *dest, size_t size, uint8_t rfLen, uint8_t invert, uint8_t fchigh, uint8_t fclow);
 int      getHiLo(uint8_t *BitStream, size_t size, int *high, int *low, uint8_t fuzzHi, uint8_t fuzzLo);
 uint32_t manchesterEncode2Bytes(uint16_t datain);
Impressum, Datenschutz