X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/d0b0586411805d505047229e9bfd75fdc5c61559..refs/pull/227/head:/client/cmdlf.c?ds=inline

diff --git a/client/cmdlf.c b/client/cmdlf.c
index 8b6f32b6..dcc6cfae 100644
--- a/client/cmdlf.c
+++ b/client/cmdlf.c
@@ -35,7 +35,7 @@
 #include "cmdlfviking.h" // for viking menu
 #include "cmdlfcotag.h"  // for COTAG menu
 
-
+bool g_lf_threshold_set = false;
 static int CmdHelp(const char *Cmd);
 
 
@@ -63,7 +63,7 @@ int CmdLFCommandRead(const char *Cmd)
 {
 	static char dummy[3] = {0x20,0x00,0x00};
 	UsbCommand c = {CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K};
-	bool errors = FALSE;
+	bool errors = false;
 	//uint8_t divisor = 95; //125khz
 	uint8_t cmdp = 0;
 	while(param_getchar(Cmd, cmdp) != 0x00)
@@ -484,7 +484,7 @@ int CmdLFSetConfig(const char *Cmd)
 	uint8_t bps = 0; // Bits per sample
 	uint8_t decimation = 0; //How many to keep
 	bool averaging = 1; // Defaults to true
-	bool errors = FALSE;
+	bool errors = false;
 	int trigger_threshold =-1;//Means no change
 	uint8_t unsigned_trigg = 0;
 
@@ -510,7 +510,10 @@ int CmdLFSetConfig(const char *Cmd)
 		case 't':
 			errors |= param_getdec(Cmd,cmdp+1,&unsigned_trigg);
 			cmdp+=2;
-			if(!errors) trigger_threshold = unsigned_trigg;
+			if(!errors) {
+				trigger_threshold = unsigned_trigg;
+				if (trigger_threshold > 0) g_lf_threshold_set = true;
+			}
 			break;
 		case 'b':
 			errors |= param_getdec(Cmd,cmdp+1,&bps);
@@ -557,7 +560,7 @@ int CmdLFSetConfig(const char *Cmd)
 
 int CmdLFRead(const char *Cmd)
 {
-
+	if (offline) return 0;
 	uint8_t cmdp = 0;
 	bool arg1 = false;
 	if (param_getchar(Cmd, cmdp) == 'h')
@@ -569,12 +572,14 @@ int CmdLFRead(const char *Cmd)
 	UsbCommand c = {CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, {arg1,0,0}};
 	clearCommandBuffer();
 	SendCommand(&c);
-	//WaitForResponse(CMD_ACK,NULL);	
-	if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {
-		PrintAndLog("command execution time out");
-		return 1;
+	if (g_lf_threshold_set) {
+		WaitForResponse(CMD_ACK,NULL);
+	} else {
+		if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {
+			PrintAndLog("command execution time out");
+			return 1;
+		}
 	}
-
 	return 0;
 }
 
@@ -695,7 +700,7 @@ int CmdLFfskSim(const char *Cmd)
 	// otherwise will need FChigh, FClow, Clock, and bitstream
 	uint8_t fcHigh=0, fcLow=0, clk=0;
 	uint8_t invert=0;
-	bool errors = FALSE;
+	bool errors = false;
 	char hexData[32] = {0x00}; // store entered hex data
 	uint8_t data[255] = {0x00}; 
 	int dataLen = 0;
@@ -729,24 +734,24 @@ int CmdLFfskSim(const char *Cmd)
 		case 'd':
 			dataLen = param_getstr(Cmd, cmdp+1, hexData);
 			if (dataLen==0) {
-				errors=TRUE; 
+				errors=true; 
 			} else {
 				dataLen = hextobinarray((char *)data, hexData);
 			}   
-			if (dataLen==0) errors=TRUE; 
+			if (dataLen==0) errors=true; 
 			if (errors) PrintAndLog ("Error getting hex data");
 			cmdp+=2;
 			break;
 		default:
 			PrintAndLog("Unknown parameter '%c'", param_getchar(Cmd, cmdp));
-			errors = TRUE;
+			errors = true;
 			break;
 		}
 		if(errors) break;
 	}
 	if(cmdp == 0 && DemodBufferLen == 0)
 	{
-		errors = TRUE;// No args
+		errors = true;// No args
 	}
 
 	//Validations
@@ -797,7 +802,7 @@ int CmdLFaskSim(const char *Cmd)
 	// needs clock, invert, manchester/raw as m or r, separator as s, and bitstream
 	uint8_t encoding = 1, separator = 0;
 	uint8_t clk=0, invert=0;
-	bool errors = FALSE;
+	bool errors = false;
 	char hexData[32] = {0x00}; 
 	uint8_t data[255]= {0x00}; // store entered hex data
 	int dataLen = 0;
@@ -835,24 +840,24 @@ int CmdLFaskSim(const char *Cmd)
 		case 'd':
 			dataLen = param_getstr(Cmd, cmdp+1, hexData);
 			if (dataLen==0) {
-				errors=TRUE; 
+				errors=true; 
 			} else {
 				dataLen = hextobinarray((char *)data, hexData);
 			}
-			if (dataLen==0) errors=TRUE; 
+			if (dataLen==0) errors=true; 
 			if (errors) PrintAndLog ("Error getting hex data, datalen: %d",dataLen);
 				cmdp+=2;
 			break;
 		default:
 			PrintAndLog("Unknown parameter '%c'", param_getchar(Cmd, cmdp));
-			errors = TRUE;
+			errors = true;
 			break;
 		}
 		if(errors) break;
 	}
 	if(cmdp == 0 && DemodBufferLen == 0)
 	{
-		errors = TRUE;// No args
+		errors = true;// No args
 	}
 
 	//Validations
@@ -891,7 +896,7 @@ int CmdLFpskSim(const char *Cmd)
 	//will need carrier, Clock, and bitstream
 	uint8_t carrier=0, clk=0;
 	uint8_t invert=0;
-	bool errors = FALSE;
+	bool errors = false;
 	char hexData[32] = {0x00}; // store entered hex data
 	uint8_t data[255] = {0x00}; 
 	int dataLen = 0;
@@ -930,24 +935,24 @@ int CmdLFpskSim(const char *Cmd)
 		case 'd':
 			dataLen = param_getstr(Cmd, cmdp+1, hexData);
 			if (dataLen==0) {
-				errors=TRUE; 
+				errors=true; 
 			} else {
 				dataLen = hextobinarray((char *)data, hexData);
 			}    
-			if (dataLen==0) errors=TRUE; 
+			if (dataLen==0) errors=true; 
 			if (errors) PrintAndLog ("Error getting hex data");
 			cmdp+=2;
 			break;
 		default:
 			PrintAndLog("Unknown parameter '%c'", param_getchar(Cmd, cmdp));
-			errors = TRUE;
+			errors = true;
 			break;
 		}
 		if (errors) break;
 	}
 	if (cmdp == 0 && DemodBufferLen == 0)
 	{
-		errors = TRUE;// No args
+		errors = true;// No args
 	}
 
 	//Validations
@@ -957,9 +962,9 @@ int CmdLFpskSim(const char *Cmd)
 	}
 	if (dataLen == 0){ //using DemodBuffer
 		PrintAndLog("Getting Clocks");
-		if (clk==0) clk = GetPskClock("", FALSE, FALSE);
+		if (clk==0) clk = GetPskClock("", false, false);
 		PrintAndLog("clk: %d",clk);
-		if (!carrier) carrier = GetPskCarrier("", FALSE, FALSE); 
+		if (!carrier) carrier = GetPskCarrier("", false, false); 
 		PrintAndLog("carrier: %d", carrier);
 	} else {
 		setDemodBuf(data, dataLen, 0);
@@ -1231,18 +1236,18 @@ int CmdLFfind(const char *Cmd)
 		ans=CheckChipType(cmdp);
 		//test unknown tag formats (raw mode)0
 		PrintAndLog("\nChecking for Unknown tags:\n");
-		ans=AutoCorrelate(4000, FALSE, FALSE);
+		ans=AutoCorrelate(4000, false, false);
 		if (ans > 0) PrintAndLog("Possible Auto Correlation of %d repeating samples",ans);
-		ans=GetFskClock("",FALSE,FALSE); 
+		ans=GetFskClock("",false,false); 
 		if (ans != 0){ //fsk
-			ans=FSKrawDemod("",TRUE);
+			ans=FSKrawDemod("",true);
 			if (ans>0) {
 				PrintAndLog("\nUnknown FSK Modulated Tag Found!");
 				return 1;
 			}
 		}
-		bool st = TRUE;
-		ans=ASKDemod_ext("0 0 0",TRUE,FALSE,1,&st);
+		bool st = true;
+		ans=ASKDemod_ext("0 0 0",true,false,1,&st);
 		if (ans>0) {
 			PrintAndLog("\nUnknown ASK Modulated and Manchester encoded Tag Found!");
 			PrintAndLog("\nif it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab'");
@@ -1265,7 +1270,7 @@ static command_t CommandTable[] =
 	{"help",        CmdHelp,            1, "This help"},
 	{"awid",        CmdLFAWID,          1, "{ AWID RFIDs...    }"},
 	{"cotag",       CmdLFCOTAG,         1, "{ COTAG RFIDs...   }"},
-	{"em4x",        CmdLFEM4X,          1, "{ EM4X RFIDs...    }"},
+	{"em",          CmdLFEM4X,          1, "{ EM4X RFIDs...    }"},
 	{"hid",         CmdLFHID,           1, "{ HID RFIDs...     }"},
 	{"hitag",       CmdLFHitag,         1, "{ Hitag tags and transponders... }"},
 	{"io",          CmdLFIO,            1, "{ ioProx tags...   }"},