mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-14 02:26:59 -07:00
lf psk demods
clarify existing as psk1 added psk2 demod
This commit is contained in:
parent
9c0f13d5dd
commit
04d2721b3c
3 changed files with 63 additions and 23 deletions
|
@ -816,7 +816,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 +884,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 +961,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 +997,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<size; i++){
|
||||
if (lastBit!=BitStream[i]){
|
||||
lastBit=BitStream[i];
|
||||
BitStream[i]=1;
|
||||
} else {
|
||||
BitStream[i]=0;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//redesigned by marshmellow adjusted from existing decode functions
|
||||
//indala id decoding - only tested on 26 bit tags, but attempted to make it work for more
|
||||
// redesigned by marshmellow adjusted from existing decode functions
|
||||
// indala id decoding - only tested on 26 bit tags, but attempted to make it work for more
|
||||
int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert)
|
||||
{
|
||||
//26 bit 40134 format (don't know other formats)
|
||||
|
@ -1064,9 +1079,8 @@ int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert)
|
|||
return 1;
|
||||
}
|
||||
|
||||
|
||||
//by marshmellow - demodulate PSK1 wave or NRZ wave (both similar enough)
|
||||
//peaks switch bit (high=1 low=0) each clock cycle = 1 bit determined by last peak
|
||||
// by marshmellow - demodulate PSK1 wave or NRZ wave (both similar enough)
|
||||
// peaks invert bit (high=1 low=0) each clock cycle = 1 bit determined by last peak
|
||||
int pskNRZrawDemod(uint8_t *dest, size_t *size, int *clk, int *invert)
|
||||
{
|
||||
pskCleanWave(dest,*size);
|
||||
|
@ -1087,7 +1101,6 @@ int pskNRZrawDemod(uint8_t *dest, size_t *size, int *clk, int *invert)
|
|||
uint32_t bestStart = *size;
|
||||
uint32_t maxErr = (*size/1000);
|
||||
uint32_t bestErrCnt = maxErr;
|
||||
//uint8_t midBit=0;
|
||||
uint8_t curBit=0;
|
||||
uint8_t bitHigh=0;
|
||||
uint8_t ignorewin=*clk/8;
|
||||
|
@ -1198,7 +1211,6 @@ int pskNRZrawDemod(uint8_t *dest, size_t *size, int *clk, int *invert)
|
|||
return errCnt;
|
||||
}
|
||||
|
||||
|
||||
//by marshmellow
|
||||
//detects the bit clock for FSK given the high and low Field Clocks
|
||||
uint8_t detectFSKClk(uint8_t *BitStream, size_t size, uint8_t fcHigh, uint8_t fcLow)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue