X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/7d2692658b598c449320fbaef6ea9612e214c1fd..da952d12a61b7ec8f78bf7ff13ef0a37ac86591b:/common/lfdemod.c diff --git a/common/lfdemod.c b/common/lfdemod.c index 49c5877e..6f490106 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -7,22 +7,20 @@ //----------------------------------------------------------------------------- // Low frequency demod/decode commands //----------------------------------------------------------------------------- - -#include #include "lfdemod.h" -#include //un_comment to allow debug print calls when used not on device void dummy(char *fmt, ...){} + #ifndef ON_DEVICE -#include "ui.h" -#include "cmdparser.h" -#include "cmddata.h" -#define prnt PrintAndLog +# include "ui.h" +# include "cmdparser.h" +# include "cmddata.h" +# define prnt PrintAndLog #else uint8_t g_debugMode=0; -#define prnt dummy +# define prnt dummy #endif //test samples are not just noise @@ -278,6 +276,7 @@ int askdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert, int maxErr { if (*size==0) return -1; int start = DetectASKClock(BinStream, *size, clk, maxErr); //clock default + if (*clk==0 || start < 0) return -3; if (*invert != 1) *invert = 0; if (amp==1) askAmp(BinStream, *size); @@ -350,9 +349,9 @@ int askdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert, int maxErr //take 10 and 01 and manchester decode //run through 2 times and take least errCnt int manrawdecode(uint8_t * BitStream, size_t *size, uint8_t invert){ - uint16_t bitnum = 0, MaxBits = 512, errCnt = 0; + int errCnt = 0, bestErr = 1000; + uint16_t bitnum = 0, MaxBits = 512, bestRun = 0; size_t i, k; - uint16_t bestErr = 1000, bestRun = 0; if (*size < 16) return -1; //find correct start position [alignment] for (k=0; k < 2; ++k){ @@ -1449,10 +1448,10 @@ uint16_t countFC(uint8_t *BitStream, size_t size, uint8_t fskAdj) uint8_t fcLens[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uint16_t fcCnts[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uint8_t fcLensFnd = 0; - uint8_t lastFCcnt=0; + uint8_t lastFCcnt = 0; uint8_t fcCounter = 0; size_t i; - if (size == 0) return 0; + if (size < 180) return 0; // prime i to first up transition for (i = 160; i < size-20; i++)