-bool tryDemod(uint8_t bits[], size_t bitlen) {\r
- \r
- int invert = 0;\r
- int clk = 0;\r
- int errCnt, size;\r
- int maxErr = 100;\r
- uint8_t rflen, fchigh, fclow, dummy = 0;\r
- uint16_t fcs=0;\r
-\r
- // ASK - manchester demod\r
- errCnt = askmandemod(bits, &bitlen, &clk, &invert, maxErr);\r
- if ( analyseDemod(errCnt, bitlen, clk, invert) ) \r
- return true;\r
-\r
- // FSK demod\r
- fcs = countFC(bits, bitlen, &dummy);\r
- if (fcs == 0){\r
- fchigh = 10;\r
- fclow = 8;\r
- }else{\r
- fchigh = (fcs >> 8) & 0xFF;\r
- fclow = fcs & 0xFF;\r
- }\r
- //get bit clock length\r
- rflen = detectFSKClk(bits, bitlen, fchigh, fclow);\r
- rflen = (rflen == 0) ? 50 : rflen;\r
-\r
- size = fskdemod(bits, bitlen, rflen, invert, fchigh, fclow);\r
- if ( analyseDemod(size, bitlen, clk, invert) ) \r
- return true; \r
- \r
- // PSK demod\r
- return false;\r
-}\r
-\r
-bool analyseDemod( int errCnt, size_t bitlen, uint8_t clock, uint8_t invert){\r
- if (g_debugMode) \r
- PrintAndLog("ErrorCount: %d, Bits Found: %d, Clock: %d, invert: %d", errCnt, bitlen, clock, invert);\r
- //PrintAndLog("Args invert: %d - Clock:%d - fchigh:%d - fclow: %d",invert,rfLen,fchigh, fclow);\r
- \r
- //throw away static - allow 1 and -1 (in case of threshold command first)\r
- if ( errCnt == -1 || bitlen < 32 ){ \r
- PrintAndLog("no success demod");\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r