From 4eabb8ad382f87aaee497d35e88c169da96b8fda Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 28 Feb 2017 16:55:16 +0100 Subject: [PATCH] CHG: minor LF adjustments. CHG: `lf visa2000` - removed askedgedetect, it seemed it destroyed more than enhanced. --- client/cmddata.c | 7 ++++++- client/cmddata.h | 2 ++ client/cmdlfem4x.c | 2 +- client/cmdlfjablotron.c | 3 ++- client/cmdlfvisa2000.c | 7 ++++--- common/lfdemod.c | 24 +++++++++++++++--------- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/client/cmddata.c b/client/cmddata.c index 398d31fb..19e01d82 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -834,7 +834,7 @@ int CmdVikingDemod(const char *Cmd) return 0; } size_t size = DemodBufferLen; - //call lfdemod.c demod for Viking + int ans = VikingDemod_AM(DemodBuffer, &size); if (ans < 0) { if (g_debugMode) PrintAndLog("DEBUG: Error - Viking Demod %d %s", ans, (ans == -5)?"[chksum error]":""); @@ -2095,6 +2095,11 @@ int CmdGrid(const char *Cmd) RepaintGraphWindow(); return 0; } +void setGrid_Clock(uint8_t clock){ + PlotGridXdefault = clock; + RepaintGraphWindow(); +} + int CmdHexsamples(const char *Cmd) { diff --git a/client/cmddata.h b/client/cmddata.h index b0ff5bd0..4ea0b3b2 100644 --- a/client/cmddata.h +++ b/client/cmddata.h @@ -80,6 +80,8 @@ int NRZrawDemod(const char *Cmd, bool verbose); void printEM410x(uint32_t hi, uint64_t id); int getSamples(const char *Cmd, bool silent); +void setGrid_Clock(uint8_t clock); + int CmdDataIIR(const char *Cmd); extern uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index 7383756b..59a1eef3 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -443,7 +443,7 @@ int EM4x50Read(const char *Cmd, bool verbose) { } } if (!clk) { - PrintAndLog("ERROR: EM4x50 - didn't find a clock"); + if (verbose || g_debugMode) PrintAndLog("ERROR: EM4x50 - didn't find a clock"); return 0; } } else tol = clk/8; diff --git a/client/cmdlfjablotron.c b/client/cmdlfjablotron.c index dc5e10d7..473fbe28 100644 --- a/client/cmdlfjablotron.c +++ b/client/cmdlfjablotron.c @@ -97,6 +97,7 @@ int CmdJablotronDemod(const char *Cmd) { } setDemodBuf(DemodBuffer+ans, 64, 0); + setGrid_Clock(64); //got a good demod uint32_t raw1 = bytebits_to_byte(DemodBuffer, 32); @@ -125,7 +126,7 @@ int CmdJablotronDemod(const char *Cmd) { int CmdJablotronRead(const char *Cmd) { CmdLFRead("s"); - getSamples("12000", TRUE); + getSamples("10000", TRUE); return CmdJablotronDemod(Cmd); } diff --git a/client/cmdlfvisa2000.c b/client/cmdlfvisa2000.c index c0837108..5c030ec3 100644 --- a/client/cmdlfvisa2000.c +++ b/client/cmdlfvisa2000.c @@ -62,7 +62,7 @@ int CmdVisa2kDemod(const char *Cmd) { // save GraphBuffer - to restore it later save_restoreGB(1); - CmdAskEdgeDetect(""); + //sCmdAskEdgeDetect(""); //ASK / Manchester bool st = TRUE; @@ -88,7 +88,8 @@ int CmdVisa2kDemod(const char *Cmd) { return 0; } setDemodBuf(DemodBuffer, 96, ans); - + setGrid_Clock(64); + //got a good demod uint32_t raw1 = bytebits_to_byte(DemodBuffer, 32); uint32_t raw2 = bytebits_to_byte(DemodBuffer+32, 32); @@ -110,7 +111,7 @@ int CmdVisa2kDemod(const char *Cmd) { int CmdVisa2kRead(const char *Cmd) { CmdLFRead("s"); - getSamples("16000",TRUE); + getSamples("12000",TRUE); return CmdVisa2kDemod(Cmd); } diff --git a/common/lfdemod.c b/common/lfdemod.c index 439699c6..7f8333ac 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -243,6 +243,7 @@ int Em410xDecode(uint8_t *BitStream, size_t *size, size_t *startIdx, uint32_t *h //by marshmellow //demodulates strong heavily clipped samples +//RETURN: num of errors. if 0, is ok. int cleanAskRawDemod(uint8_t *BinStream, size_t *size, int clk, int invert, int high, int low) { size_t bitCnt=0, smplCnt=0, errCnt=0; @@ -386,25 +387,30 @@ int askdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert, int maxErr //by marshmellow //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){ +int manrawdecode(uint8_t *BitStream, size_t *size, uint8_t invert){ + + // sanity check + if (*size < 16) return -1; + int errCnt = 0, bestErr = 1000; uint16_t bitnum = 0, MaxBits = 512, bestRun = 0; size_t i, k; - if (*size < 16) return -1; + //find correct start position [alignment] - for (k=0; k < 2; ++k){ - for (i=k; i<*size-3; i += 2) + for (k = 0; k < 2; ++k){ + for (i = k; i < *size-3; i += 2) { if (BitStream[i] == BitStream[i+1]) errCnt++; - + } if (bestErr > errCnt){ bestErr = errCnt; bestRun = k; } - errCnt=0; + errCnt = 0; } + //decode - for (i=bestRun; i < *size-3; i += 2){ + for (i = bestRun; i < *size-3; i += 2){ if (BitStream[i] == 1 && (BitStream[i+1] == 0)){ BitStream[bitnum++] = invert; } else if ((BitStream[i] == 0) && BitStream[i+1] == 1){ @@ -412,9 +418,9 @@ int manrawdecode(uint8_t * BitStream, size_t *size, uint8_t invert){ } else { BitStream[bitnum++] = 7; } - if (bitnum>MaxBits) break; + if (bitnum > MaxBits) break; } - *size=bitnum; + *size = bitnum; return bestErr; } -- 2.39.2