From: marshmellow42 <marshmellowrf@gmail.com>
Date: Mon, 9 Feb 2015 16:11:04 +0000 (-0500)
Subject: lf/data combined detectclock functions to one
X-Git-Tag: v2.0.0-rc1~26^2
X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/f3bf15e4844454338fe42d5e93b897c7a61824a6?ds=sidebyside

lf/data combined detectclock functions to one

cleaned up detect clock functions - now uses one main function that
takes a char argument to select which modulation to detect the clock for
REMOVED commands: pskdetectclock, nrzdetectclock, fskfcdetect.
renamed DetectClock function to DetectAskClock to be more descriptive.
---

diff --git a/client/cmddata.c b/client/cmddata.c
index e5463175..1bd3f6de 100644
--- a/client/cmddata.c
+++ b/client/cmddata.c
@@ -636,7 +636,7 @@ int CmdBitstream(const char *Cmd)
   }
 
   /* Get our clock */
-  clock = GetClock(Cmd, high, 1);
+  clock = GetAskClock(Cmd, high, 1);
   gtl = ClearGraph(0);
 
   bit = 0;
@@ -781,10 +781,33 @@ int CmdAskEdgeDetect(const char *Cmd)
 
 /* Print our clock rate */
 // uses data from graphbuffer
+// adjusted to take char parameter for type of modulation to find the clock - by marshmellow.
 int CmdDetectClockRate(const char *Cmd)
 {
-  int ans = GetClock("",0,0);
-  return ans;
+	char cmdp = param_getchar(Cmd, 0);
+	if (strlen(Cmd) > 3 || strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') {
+		PrintAndLog("Usage:  data detectclock [modulation]");
+		PrintAndLog("     [modulation as char], specify the modulation type you want to detect the clock of");
+		PrintAndLog("       'a' = ask, 'f' = fsk, 'n' = nrz/direct, 'p' = psk");
+		PrintAndLog("");
+		PrintAndLog("    sample: data detectclock a    = detect the clock of an ask modulated wave in the GraphBuffer");
+		PrintAndLog("            data detectclock f    = detect the clock of an fsk modulated wave in the GraphBuffer");
+		PrintAndLog("            data detectclock p    = detect the clock of an psk modulated wave in the GraphBuffer");
+		PrintAndLog("            data detectclock n    = detect the clock of an nrz/direct modulated wave in the GraphBuffer");
+	}
+	int ans=0;
+	if (cmdp == 'a'){
+		ans = GetAskClock("", true, false);
+	} else if (cmdp == 'f'){
+		ans = GetFskClock("", true, false);
+	} else if (cmdp == 'n'){
+		ans = GetNrzClock("", true, false);
+	} else if (cmdp == 'p'){
+		ans = GetPskClock("", true, false);
+	} else {
+		PrintAndLog ("Please specify a valid modulation to detect the clock of - see option h for help");
+	}
+	return ans;
 }
 
 //by marshmellow
@@ -995,7 +1018,6 @@ int CmdFSKdemodParadox(const char *Cmd)
   return 1;
 }
 
-
 //by marshmellow
 //IO-Prox demod - FSK RF/64 with preamble of 000000001
 //print ioprox ID and some format details
@@ -1075,7 +1097,6 @@ int CmdFSKdemodIO(const char *Cmd)
   return 1;
 }
 
-
 //by marshmellow
 //AWID Prox demod - FSK RF/50 with preamble of 00000001  (always a 96 bit data stream)
 //print full AWID Prox ID and some bit format details if found
@@ -1420,55 +1441,6 @@ int CmdFSKdemod(const char *Cmd) //old CmdFSKdemod needs updating
   return 0;
 }
 
-//by marshmellow
-//attempt to detect the field clock and bit clock for FSK
-int CmdFSKfcDetect(const char *Cmd)
-{
-  uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
-  size_t size = getFromGraphBuf(BitStream);
-  if (size==0) return 0;
-  uint8_t dummy = 0;
-  uint16_t ans = countFC(BitStream, size, &dummy); 
-  if (ans==0) {
-    if (g_debugMode) PrintAndLog("DEBUG: No data found");
-    return 0;
-  }
-  uint8_t fc1, fc2;
-  fc1 = (ans >> 8) & 0xFF;
-  fc2 = ans & 0xFF;
-
-  uint8_t rf1 = detectFSKClk(BitStream, size, fc1, fc2);
-  if (rf1==0) {
-    if (g_debugMode) PrintAndLog("DEBUG: Clock detect error");
-    return 0;
-  }
-  if ((fc1==10 && fc2==8) || (fc1==8 && fc2==5)){
-    PrintAndLog("Detected Field Clocks: FC/%d, FC/%d - Bit Clock: RF/%d", fc1, fc2, rf1);
-    return 1;
-  }
-  if (g_debugMode){
-    PrintAndLog("DEBUG: unknown fsk field clock detected");
-    PrintAndLog("Detected Field Clocks: FC/%d, FC/%d - Bit Clock: RF/%d", fc1, fc2, rf1);
-  }
-  return 0;
-}
-
-//by marshmellow
-//attempt to detect the bit clock for PSK modulations
-int CmdDetectPSKClockRate(const char *Cmd)
-{
-	GetPskClock("",0,0);
-	return 0;
-}
-
-//by marshmellow
-//attempt to detect the bit clock for NRZ modulations
-int CmdDetectNRZClockRate(const char *Cmd)
-{
-  GetNrzClock("",0,0);
-  return 0;
-}
-
 //by marshmellow
 //attempt to psk1 demod graph buffer
 int PSKDemod(const char *Cmd, uint8_t verbose)
@@ -1504,7 +1476,6 @@ int PSKDemod(const char *Cmd, uint8_t verbose)
   return errCnt;
 }
 
-
 // Indala 26 bit decode
 // by marshmellow
 // optional arguments - same as CmdpskNRZrawDemod (clock & invert)
@@ -1586,20 +1557,6 @@ int CmdIndalaDecode(const char *Cmd)
 	return 1;
 }
 
-/*
-//by marshmellow
-//attempt to clean psk wave noise after a peak 
-//NOTE RELIES ON PEAKS :(
-int CmdPskClean(const char *Cmd)
-{
-	uint8_t bitStream[MAX_GRAPH_TRACE_LEN]={0};
-	size_t bitLen = getFromGraphBuf(bitStream);
-	pskCleanWave(bitStream, bitLen);
-	setGraphBuf(bitStream, bitLen);
-	return 0;
-}
-*/
-
 // by marshmellow
 // takes 3 arguments - clock, invert, maxErr as integers
 // attempts to demodulate nrz only
@@ -2046,7 +2003,7 @@ int CmdManchesterDemod(const char *Cmd)
   }
 
   /* Get our clock */
-  clock = GetClock(Cmd, high, 1);
+  clock = GetAskClock(Cmd, high, 1);
 
   int tolerance = clock/4;
 
@@ -2206,7 +2163,7 @@ int CmdManchesterMod(const char *Cmd)
   int bit, lastbit, wave;
 
   /* Get our clock */
-  clock = GetClock(Cmd, 0, 1);
+  clock = GetAskClock(Cmd, 0, 1);
 
   wave = 0;
   lastbit = 1;
@@ -2385,10 +2342,10 @@ static command_t CommandTable[] =
   {"bitstream",     CmdBitstream,       1, "[clock rate] -- Convert waveform into a bitstream"},
   {"buffclear",     CmdBuffClear,       1, "Clear sample buffer and graph window"},
   {"dec",           CmdDec,             1, "Decimate samples"},
-  {"detectclock",   CmdDetectClockRate, 1, "Detect ASK clock rate"},
+  {"detectclock",   CmdDetectClockRate, 1, "[modulation] Detect clock rate (options: 'a','f','n','p' for ask, fsk, nrz, psk respectively)"},
   {"fskdemod",      CmdFSKdemod,        1, "Demodulate graph window as a HID FSK"},
   {"fskawiddemod",  CmdFSKdemodAWID,    1, "Demodulate graph window as an AWID FSK tag using raw"},
-  {"fskfcdetect",   CmdFSKfcDetect,     1, "Try to detect the Field Clock of an FSK wave"},
+  //{"fskfcdetect",   CmdFSKfcDetect,     1, "Try to detect the Field Clock of an FSK wave"},
   {"fskhiddemod",   CmdFSKdemodHID,     1, "Demodulate graph window as a HID FSK tag using raw"},
   {"fskiodemod",    CmdFSKdemodIO,      1, "Demodulate graph window as an IO Prox tag FSK using raw"},
   {"fskpyramiddemod",CmdFSKdemodPyramid,1, "Demodulate graph window as a Pyramid FSK tag using raw"},
@@ -2405,10 +2362,10 @@ static command_t CommandTable[] =
   {"manrawdecode",  Cmdmandecoderaw,    1, "Manchester decode binary stream already in graph buffer"},
   {"manmod",        CmdManchesterMod,   1, "[clock rate] -- Manchester modulate a binary stream"},
   {"norm",          CmdNorm,            1, "Normalize max/min to +/-128"},
-  {"nrzdetectclock",CmdDetectNRZClockRate, 1, "Detect ASK, PSK, or NRZ clock rate"},
+  //{"nrzdetectclock",CmdDetectNRZClockRate, 1, "Detect ASK, PSK, or NRZ clock rate"},
   {"nrzrawdemod",   CmdNRZrawDemod,     1, "[clock] [invert<0|1>] [maxErr] -- Attempt to demodulate nrz tags and output binary (args optional)"},
   {"plot",          CmdPlot,            1, "Show graph window (hit 'h' in window for keystroke help)"},
-  {"pskdetectclock",CmdDetectPSKClockRate, 1, "Detect ASK, PSK, or NRZ clock rate"},
+  //{"pskdetectclock",CmdDetectPSKClockRate, 1, "Detect ASK, PSK, or NRZ clock rate"},
   {"pskindalademod",CmdIndalaDecode,    1, "[clock] [invert<0|1>] -- Attempt to demodulate psk1 indala tags and output ID binary & hex (args optional)"},
   {"psk1rawdemod",  CmdPSK1rawDemod,    1, "[clock] [invert<0|1>] [maxErr] -- Attempt to demodulate psk1 tags and output binary (args optional)"},
   {"psk2rawdemod",  CmdPSK2rawDemod,    1, "[clock] [invert<0|1>] [maxErr] -- Attempt to demodulate psk2 tags and output binary (args optional)"},
diff --git a/client/cmddata.h b/client/cmddata.h
index 42954cbe..29b3bbc9 100644
--- a/client/cmddata.h
+++ b/client/cmddata.h
@@ -27,17 +27,13 @@ int CmdBitstream(const char *Cmd);
 int CmdBuffClear(const char *Cmd);
 int CmdDec(const char *Cmd);
 int CmdDetectClockRate(const char *Cmd);
-int CmdDetectNRZClockRate(const char *Cmd);
-int CmdDetectPSKClockRate(const char *Cmd);
 int CmdFSKdemodAWID(const char *Cmd);
 int CmdFSKdemod(const char *Cmd);
 int CmdFSKdemodHID(const char *Cmd);
 int CmdFSKdemodIO(const char *Cmd);
 int CmdFSKdemodParadox(const char *Cmd);
 int CmdFSKdemodPyramid(const char *Cmd);
-int CmdFSKfcDetect(const char *Cmd);
 int CmdFSKrawdemod(const char *Cmd);
-int CmdDetectPskClockRate(const char *Cmd);
 int CmdPSK1rawDemod(const char *Cmd);
 int CmdPSK2rawDemod(const char *Cmd);
 int CmdGrid(const char *Cmd);
diff --git a/client/cmdlf.c b/client/cmdlf.c
index 27e764a2..b7c1b13f 100644
--- a/client/cmdlf.c
+++ b/client/cmdlf.c
@@ -728,8 +728,8 @@ int CmdLFfind(const char *Cmd)
   if (testRaw=='u' || testRaw=='U'){
     //test unknown tag formats (raw mode)
     PrintAndLog("\nChecking for Unknown tags:\n");
-    ans=CmdFSKfcDetect("");
-    if (ans == 1){ //fsk
+    ans=CmdDetectClockRate("f");
+    if (ans != 0){ //fsk
       ans=CmdFSKrawdemod("");
       if (ans>0) {
         PrintAndLog("\nUnknown FSK Modulated Tag Found!");
diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c
index 95b0342d..232d5635 100644
--- a/client/cmdlfem4x.c
+++ b/client/cmdlfem4x.c
@@ -61,7 +61,7 @@ int CmdEM410xRead(const char *Cmd)
   }
 
   /* get clock */
-  clock = GetClock(Cmd, high, 0);
+  clock = GetAskClock(Cmd, false, false);
 
   /* parity for our 4 columns */
   parity[0] = parity[1] = parity[2] = parity[3] = 0;
diff --git a/client/graph.c b/client/graph.c
index f508fe88..11dbc4d5 100644
--- a/client/graph.c
+++ b/client/graph.c
@@ -76,33 +76,6 @@ size_t getFromGraphBuf(uint8_t *buff)
 	return i;
 }
 
-
-// Get or auto-detect clock rate
-int GetClock(const char *str, int peak, int verbose)
-{
-	int clock;
-	sscanf(str, "%i", &clock);
-	if (!strcmp(str, ""))
-		clock = 0;
-
-	// Auto-detect clock
-	if (!clock)
-	{
-		uint8_t grph[MAX_GRAPH_TRACE_LEN]={0};
-		size_t size = getFromGraphBuf(grph);
-		if ( size == 0 ) {
-			PrintAndLog("Failed to copy from graphbuffer");
-			return -1;
-		}
-		DetectASKClock(grph,size,&clock,20);
-		// Only print this message if we're not looping something
-		if (!verbose){
-			PrintAndLog("Auto-detected clock rate: %d", clock);
-		}
-	}
-	return clock;
-}
-
 // A simple test to see if there is any data inside Graphbuffer. 
 bool HasGraphData(){
 
@@ -135,52 +108,116 @@ void DetectHighLowInGraph(int *high, int *low, bool addFuzz) {
 	}
 }
 
-int GetPskClock(const char *str, int peak, int verbose)
+// Get or auto-detect ask clock rate
+int GetAskClock(const char str[], bool printAns, bool verbose)
 {
 	int clock;
 	sscanf(str, "%i", &clock);
 	if (!strcmp(str, ""))
 		clock = 0;
 
+	if (clock != 0) 
+		return clock;
 	// Auto-detect clock
-	if (!clock)
-	{
-		uint8_t grph[MAX_GRAPH_TRACE_LEN]={0};
-		size_t size = getFromGraphBuf(grph);
-		if ( size == 0 ) {
+	uint8_t grph[MAX_GRAPH_TRACE_LEN]={0};
+	size_t size = getFromGraphBuf(grph);
+	if (size == 0) {
+		if (verbose)
 			PrintAndLog("Failed to copy from graphbuffer");
-			return -1;
-		}
-		clock = DetectPSKClock(grph,size,0);
-		// Only print this message if we're not looping something
-		if (!verbose){
-			PrintAndLog("Auto-detected clock rate: %d", clock);
-		}
+		return -1;
+	}
+	DetectASKClock(grph, size, &clock, 20);
+	// Only print this message if we're not looping something
+	if (printAns){
+		PrintAndLog("Auto-detected clock rate: %d", clock);
 	}
 	return clock;
 }
 
-int GetNrzClock(const char *str, int peak, int verbose)
+int GetPskClock(const char str[], bool printAns, bool verbose)
+{
+	int clock;
+	sscanf(str, "%i", &clock);
+	if (!strcmp(str, "")) 
+		clock = 0;
+
+	if (clock!=0) 
+		return clock;
+	// Auto-detect clock
+	uint8_t grph[MAX_GRAPH_TRACE_LEN]={0};
+	size_t size = getFromGraphBuf(grph);
+	if ( size == 0 ) {
+		if (verbose) 
+			PrintAndLog("Failed to copy from graphbuffer");
+		return -1;
+	}
+	clock = DetectPSKClock(grph,size,0);
+	// Only print this message if we're not looping something
+	if (printAns){
+		PrintAndLog("Auto-detected clock rate: %d", clock);
+	}
+	return clock;
+}
+
+uint8_t GetNrzClock(const char str[], bool printAns, bool verbose)
 {
 	int clock;
 	sscanf(str, "%i", &clock);
 	if (!strcmp(str, ""))
 		clock = 0;
 
+	if (clock!=0) 
+		return clock;
 	// Auto-detect clock
-	if (!clock)
-	{
-		uint8_t grph[MAX_GRAPH_TRACE_LEN]={0};
-		size_t size = getFromGraphBuf(grph);
-		if ( size == 0 ) {
+	uint8_t grph[MAX_GRAPH_TRACE_LEN]={0};
+	size_t size = getFromGraphBuf(grph);
+	if ( size == 0 ) {
+		if (verbose) 
 			PrintAndLog("Failed to copy from graphbuffer");
-			return -1;
-		}
-		clock = DetectNRZClock(grph,size,0);
-		// Only print this message if we're not looping something
-		if (!verbose){
-			PrintAndLog("Auto-detected clock rate: %d", clock);
-		}
+		return -1;
+	}
+	clock = DetectNRZClock(grph, size, 0);
+	// Only print this message if we're not looping something
+	if (printAns){
+		PrintAndLog("Auto-detected clock rate: %d", clock);
 	}
 	return clock;
 }
+//by marshmellow
+//attempt to detect the field clock and bit clock for FSK
+uint8_t GetFskClock(const char str[], bool printAns, bool verbose)
+{
+	int clock;
+	sscanf(str, "%i", &clock);
+	if (!strcmp(str, ""))
+		clock = 0;
+	if (clock != 0) return (uint8_t)clock;
+
+	uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
+	size_t size = getFromGraphBuf(BitStream);
+	if (size==0) return 0;
+	uint8_t dummy = 0;
+	uint16_t ans = countFC(BitStream, size, &dummy); 
+	if (ans==0) {
+		if (verbose) PrintAndLog("DEBUG: No data found");
+		return 0;
+	}
+	uint8_t fc1, fc2;
+	fc1 = (ans >> 8) & 0xFF;
+	fc2 = ans & 0xFF;
+
+	uint8_t rf1 = detectFSKClk(BitStream, size, fc1, fc2);
+	if (rf1==0) {
+		if (verbose) PrintAndLog("DEBUG: Clock detect error");
+		return 0;
+	}
+	if ((fc1==10 && fc2==8) || (fc1==8 && fc2==5)){
+		if (printAns) PrintAndLog("Detected Field Clocks: FC/%d, FC/%d - Bit Clock: RF/%d", fc1, fc2, rf1);
+		return rf1;
+	}
+	if (verbose){
+		PrintAndLog("DEBUG: unknown fsk field clock detected");
+		PrintAndLog("Detected Field Clocks: FC/%d, FC/%d - Bit Clock: RF/%d", fc1, fc2, rf1);
+	}
+	return 0;
+}
diff --git a/client/graph.h b/client/graph.h
index 279b5f7b..e4872afc 100644
--- a/client/graph.h
+++ b/client/graph.h
@@ -16,9 +16,10 @@ void AppendGraph(int redraw, int clock, int bit);
 int ClearGraph(int redraw);
 //int DetectClock(int peak);
 size_t getFromGraphBuf(uint8_t *buff);
-int GetClock(const char *str, int peak, int verbose);
-int GetPskClock(const char *str, int peak, int verbose);
-int GetNrzClock(const char *str, int peak, int verbose);
+int GetAskClock(const char str[], bool printAns, bool verbose);
+int GetPskClock(const char str[], bool printAns, bool verbose);
+uint8_t GetNrzClock(const char str[], bool printAns, bool verbose);
+uint8_t GetFskClock(const char str[], bool printAns, bool verbose);
 void setGraphBuf(uint8_t *buff, size_t size);
 
 bool HasGraphData();
diff --git a/common/lfdemod.c b/common/lfdemod.c
index 448195f2..47e63ef6 100644
--- a/common/lfdemod.c
+++ b/common/lfdemod.c
@@ -50,7 +50,7 @@ uint8_t parityTest(uint32_t bits, uint8_t bitLen, uint8_t pType)
 	for (uint8_t i = 0; i < bitLen; i++){
 		ans ^= ((bits >> i) & 1);
 	}
-  //PrintAndLog("DEBUG: ans: %d, ptype: %d",ans,pType);
+	//PrintAndLog("DEBUG: ans: %d, ptype: %d",ans,pType);
 	return (ans == pType);
 }
 
@@ -244,14 +244,14 @@ int ManchesterEncode(uint8_t *BitStream, size_t size)
 {
 	size_t modIdx=20000, i=0;
 	if (size>modIdx) return -1;
-  for (size_t idx=0; idx < size; idx++){
-  	BitStream[idx+modIdx++] = BitStream[idx];
-  	BitStream[idx+modIdx++] = BitStream[idx]^1;
-  }
-  for (; i<(size*2); i++){
-  	BitStream[i] = BitStream[i+20000];
-  }
-  return i;
+	for (size_t idx=0; idx < size; idx++){
+		BitStream[idx+modIdx++] = BitStream[idx];
+		BitStream[idx+modIdx++] = BitStream[idx]^1;
+	}
+	for (; i<(size*2); i++){
+		BitStream[i] = BitStream[i+20000];
+	}
+	return i;
 }
 
 //by marshmellow
@@ -331,23 +331,23 @@ int BiphaseRawDecode(uint8_t *BitStream, size_t *size, int offset, int invert)
 //by marshmellow
 void askAmp(uint8_t *BitStream, size_t size)
 {
-  int shift = 127;
-  int shiftedVal=0;
-  for(int i = 1; i<size; i++){
-    if (BitStream[i]-BitStream[i-1]>=30) //large jump up
-      shift=127;
-    else if(BitStream[i]-BitStream[i-1]<=-20) //large jump down
-      shift=-127;
-
-    shiftedVal=BitStream[i]+shift;
-
-    if (shiftedVal>255) 
-      shiftedVal=255;
-    else if (shiftedVal<0) 
-      shiftedVal=0;
-    BitStream[i-1] = shiftedVal;
-  }
-  return;
+	int shift = 127;
+	int shiftedVal=0;
+	for(int i = 1; i<size; i++){
+		if (BitStream[i]-BitStream[i-1]>=30) //large jump up
+			shift=127;
+		else if(BitStream[i]-BitStream[i-1]<=-20) //large jump down
+			shift=-127;
+
+		shiftedVal=BitStream[i]+shift;
+
+		if (shiftedVal>255) 
+			shiftedVal=255;
+		else if (shiftedVal<0) 
+			shiftedVal=0;
+		BitStream[i-1] = shiftedVal;
+	}
+	return;
 }
 
 //by marshmellow
@@ -712,7 +712,7 @@ size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t p
 	for (int word = 0; word < (bLen); word+=pLen){
 		for (int bit=0; bit < pLen; bit++){
 			parityWd = (parityWd << 1) | BitStream[startIdx+word+bit];
-      BitStream[j++] = (BitStream[startIdx+word+bit]);
+			BitStream[j++] = (BitStream[startIdx+word+bit]);
 		}
 		j--;
 		// if parity fails then return 0
@@ -750,17 +750,17 @@ int AWIDdemodFSK(uint8_t *dest, size_t *size)
 // FSK Demod then try to locate an Farpointe Data (pyramid) ID
 int PyramiddemodFSK(uint8_t *dest, size_t *size)
 {
-  //make sure buffer has data
-  if (*size < 128*50) return -5;
+	//make sure buffer has data
+	if (*size < 128*50) return -5;
 
-  //test samples are not just noise
-  if (justNoise(dest, *size)) return -1;
+	//test samples are not just noise
+	if (justNoise(dest, *size)) return -1;
 
-  // FSK demodulator
-  *size = fskdemod(dest, *size, 50, 1, 10, 8);  // fsk2a RF/50 
-  if (*size < 128) return -2;  //did we get a good demod?
+	// FSK demodulator
+	*size = fskdemod(dest, *size, 50, 1, 10, 8);  // fsk2a RF/50 
+	if (*size < 128) return -2;  //did we get a good demod?
 
-  uint8_t preamble[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};
+	uint8_t preamble[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};
 	size_t startIdx = 0;
 	uint8_t errChk = preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx);
 	if (errChk == 0) return -4; //preamble not found
@@ -794,7 +794,7 @@ int DetectASKClock(uint8_t dest[], size_t size, int *clock, int maxErr)
   int i=0;
   int clk[]={8,16,32,40,50,64,100,128,256};
   int loopCnt = 256;  //don't need to loop through entire array...
-	if (size == 0) return -1;
+  if (size == 0) return -1;
   if (size<loopCnt) loopCnt = size;
   //if we already have a valid clock quit
   
@@ -856,13 +856,13 @@ int DetectASKClock(uint8_t dest[], size_t size, int *clock, int maxErr)
         //  this is correct one - return this clock
             //PrintAndLog("DEBUG: clk %d, err %d, ii %d, i %d",clk[clkCnt],errCnt,ii,i);
         if(errCnt==0 && clkCnt<6) {
-        	*clock = clk[clkCnt];
-        	return ii;
+          *clock = clk[clkCnt];
+          return ii;
         }
         //if we found errors see if it is lowest so far and save it as best run
         if(errCnt<bestErr[clkCnt]){
-					bestErr[clkCnt]=errCnt;
-					bestStart[clkCnt]=ii;
+          bestErr[clkCnt]=errCnt;
+          bestStart[clkCnt]=ii;
         }
       }
     }
@@ -890,7 +890,7 @@ int DetectPSKClock(uint8_t dest[], size_t size, int clock)
 {
   uint8_t clk[]={255,16,32,40,50,64,100,128,255}; //255 is not a valid clock
   uint16_t loopCnt = 4096;  //don't need to loop through entire array...
-	if (size == 0) return 0;
+  if (size == 0) return 0;
   if (size<loopCnt) loopCnt = size;
 
   //if we already have a valid clock quit
@@ -987,7 +987,7 @@ int DetectNRZClock(uint8_t dest[], size_t size, int clock)
   int i=0;
   int clk[]={8,16,32,40,50,64,100,128,256};
   int loopCnt = 4096;  //don't need to loop through entire array...
-	if (size == 0) return 0;
+  if (size == 0) return 0;
   if (size<loopCnt) loopCnt = size;
 
   //if we already have a valid clock quit
@@ -1011,7 +1011,7 @@ int DetectNRZClock(uint8_t dest[], size_t size, int clock)
   		peakcnt++;
   	} else {
   		if (peakcnt>0 && maxPeak < peakcnt){
-				maxPeak = peakcnt;
+  			maxPeak = peakcnt;
   		}
   		peakcnt=0;
   	}
@@ -1041,7 +1041,7 @@ int DetectNRZClock(uint8_t dest[], size_t size, int clock)
   int iii=7;
   int best=0;
   for (iii=7; iii > 0; iii--){
-   if (peaksdet[iii] > peaksdet[best]){
+    if (peaksdet[iii] > peaksdet[best]){
     	best = iii;
     }
     //PrintAndLog("DEBUG: Clk: %d, peaks: %d, errs: %d, bestClk: %d",clk[iii],peaksdet[iii],bestErr[iii],clk[best]);
@@ -1306,7 +1306,7 @@ uint8_t detectFSKClk(uint8_t *BitStream, size_t size, uint8_t fcHigh, uint8_t fc
   uint16_t rfCounter = 0;
   uint8_t firstBitFnd = 0;
   size_t i;
-	if (size == 0) return 0;
+  if (size == 0) return 0;
 
   uint8_t fcTol = (uint8_t)(0.5+(float)(fcHigh-fcLow)/2);
   rfLensFnd=0;
@@ -1329,7 +1329,7 @@ uint8_t detectFSKClk(uint8_t *BitStream, size_t size, uint8_t fcHigh, uint8_t fc
         fcCounter = fcLow;
       else //set it to the large fc
         fcCounter = fcHigh;
-     
+
       //look for bit clock  (rf/xx)
       if ((fcCounter<lastFCcnt || fcCounter>lastFCcnt)){
         //not the same size as the last wave - start of new bit sequence
@@ -1496,7 +1496,7 @@ uint8_t countPSK_FC(uint8_t *BitStream, size_t size)
   uint8_t fcLensFnd = 0;
   uint32_t fcCounter = 0;
   size_t i;
-	if (size == 0) return 0;
+  if (size == 0) return 0;
   
   // prime i to first up transition
   for (i = 1; i < size-1; i++)
@@ -1548,7 +1548,7 @@ uint8_t countPSK_FC(uint8_t *BitStream, size_t size)
 int pskRawDemod(uint8_t dest[], size_t *size, int *clock, int *invert)
 {
   uint16_t loopCnt = 4096;  //don't need to loop through entire array...
-	if (size == 0) return -1;
+  if (size == 0) return -1;
   if (*size<loopCnt) loopCnt = *size;
 
   uint8_t curPhase = *invert;