X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/03e6bb4aed0ffd8e19897062071e18945c703d9d..8c65b650e877a493ed17cc895d4b0be5d2fa977a:/common/lfdemod.c diff --git a/common/lfdemod.c b/common/lfdemod.c index 34194394..1b499158 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -336,30 +336,20 @@ int askrawdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert) for (i = iii; i < *size; ++i) { if ((BinStream[i] >= high) && ((i-lastBit)>(*clk-tol))){ lastBit+=*clk; - //BitStream[bitnum] = *invert; - //bitnum++; midBit=0; } else if ((BinStream[i] <= low) && ((i-lastBit)>(*clk-tol))){ //low found and we are expecting a bar lastBit+=*clk; - //BitStream[bitnum] = 1- *invert; - //bitnum++; midBit=0; } else if ((BinStream[i]<=low) && (midBit==0) && ((i-lastBit)>((*clk/2)-tol))){ //mid bar? midBit=1; - //BitStream[bitnum]= 1- *invert; - //bitnum++; } else if ((BinStream[i]>=high) && (midBit==0) && ((i-lastBit)>((*clk/2)-tol))){ //mid bar? midBit=1; - //BitStream[bitnum]= *invert; - //bitnum++; } else if ((i-lastBit)>((*clk/2)+tol) && (midBit==0)){ //no mid bar found midBit=1; - //BitStream[bitnum]= BitStream[bitnum-1]; - //bitnum++; } else { //mid value found or no bar supposed to be here @@ -367,16 +357,11 @@ int askrawdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert) //should have hit a high or low based on clock!! //debug //PrintAndLog("DEBUG - no wave in expected area - location: %d, expected: %d-%d, lastBit: %d - resetting search",i,(lastBit+(clk-((int)(tol)))),(lastBit+(clk+((int)(tol)))),lastBit); - //if (bitnum > 0){ - // BitStream[bitnum]=77; - // bitnum++; - //} errCnt++; lastBit+=*clk;//skip over until hit too many errors if (errCnt > ((*size/1000))){ //allow 1 error for every 1000 samples else start over errCnt=0; - // bitnum=0;//start over break; } } @@ -816,7 +801,6 @@ int PyramiddemodFSK(uint8_t *dest, size_t size) return -4; } - // 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? @@ -885,7 +869,6 @@ int DetectASKClock(uint8_t dest[], size_t size, int clock) return clk[best]; } - //by marshmellow //detect psk clock by reading #peaks vs no peaks(or errors) int DetectpskNRZClock(uint8_t dest[], size_t size, int clock) @@ -963,7 +946,7 @@ int DetectpskNRZClock(uint8_t dest[], size_t size, int clock) return clk[best]; } -//by marshmellow (attempt to get rid of high immediately after a low) +// by marshmellow (attempt to get rid of high immediately after a low) void pskCleanWave(uint8_t *BitStream, size_t size) { int i; @@ -999,9 +982,26 @@ void pskCleanWave(uint8_t *BitStream, size_t size) return; } +// by marshmellow +// convert psk1 demod to psk2 demod +// only transition waves are 1s +void psk1TOpsk2(uint8_t *BitStream, size_t size) +{ + size_t i=1; + uint8_t lastBit=BitStream[0]; + for (; i