X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/1ee79256095a770dd406a9cbd48f2a04c2d1499a..f3ffd5a24f6e4488505ff1c98bc6512dff5a69ed:/client/cmdlfindala.c

diff --git a/client/cmdlfindala.c b/client/cmdlfindala.c
index 1a1d2a06..0a4f7834 100644
--- a/client/cmdlfindala.c
+++ b/client/cmdlfindala.c
@@ -5,6 +5,7 @@
 // the license.
 //-----------------------------------------------------------------------------
 // Low frequency Indala commands
+// PSK1, rf/32, 64 or 224 bits (known)
 //-----------------------------------------------------------------------------
 
 #include <stdio.h>
@@ -34,19 +35,24 @@ int CmdIndalaDecode(const char *Cmd) {
 	}
 
 	if (!ans) {
-	if (g_debugMode) 
-		PrintAndLog("Error1: %i",ans);
+		if (g_debugMode) PrintAndLog("Error1: %i",ans);
 		return 0;
 	}
 	uint8_t invert=0;
 	size_t size = DemodBufferLen;
-	int startIdx = indala26decode(DemodBuffer, &size, &invert);
-	if (startIdx < 0 || size > 224) {
-		if (g_debugMode)
-		PrintAndLog("Error2: %i",startIdx);
-		return -1;
+	int startIdx = indala64decode(DemodBuffer, &size, &invert);
+	if (startIdx < 0 || size != 64) {
+		// try 224 indala
+		invert = 0;
+		size = DemodBufferLen;
+		startIdx = indala224decode(DemodBuffer, &size, &invert);
+		if (startIdx < 0 || size != 224) {
+			if (g_debugMode) PrintAndLog("Error2: %i",startIdx);
+			return -1;
+		}
 	}
 	setDemodBuf(DemodBuffer, size, (size_t)startIdx);
+	setClockGrid(g_DemodClock, g_DemodStartIdx + (startIdx*g_DemodClock));
 	if (invert)
 		if (g_debugMode)
 			PrintAndLog("Had to invert bits");
@@ -75,8 +81,7 @@ int CmdIndalaDecode(const char *Cmd) {
 }
 
 int CmdIndalaRead(const char *Cmd) {
-	CmdLFRead("s");
-	getSamples("30000",false);
+	lf_read(true, 30000);
 	return CmdIndalaDecode("");
 }
 
@@ -97,8 +102,12 @@ int CmdIndalaDemod(const char *Cmd) {
 	uint8_t rawbits[4096];
 	int rawbit = 0;
 	int worst = 0, worstPos = 0;
-	// PrintAndLog("Expecting a bit less than %d raw bits", GraphTraceLen / 32);
+
+	//clear clock grid and demod plot
+	setClockGrid(0, 0);
+	DemodBufferLen = 0;
 	
+	// PrintAndLog("Expecting a bit less than %d raw bits", GraphTraceLen / 32);
 	// loop through raw signal - since we know it is psk1 rf/32 fc/2 skip every other value (+=2)
 	for (i = 0; i < GraphTraceLen-1; i += 2) {
 		count += 1;