]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmddata.c
Bugfixes for LF FDX
[proxmark3-svn] / client / cmddata.c
index 9bfe58f9652fe3ca41a2ceed16e3645aeb95d58a..8f93ba1753ea42e780f4f6b28835be5c6d6537ac 100644 (file)
@@ -8,15 +8,15 @@
 // Data and Graph commands
 //-----------------------------------------------------------------------------
 
+#include "cmddata.h"
+
 #include <stdio.h>    // also included in util.h
 #include <string.h>   // also included in util.h
 #include <inttypes.h>
 #include <limits.h>   // for CmdNorm INT_MIN && INT_MAX
-#include "data.h"     // also included in util.h
-#include "cmddata.h"
 #include "util.h"
 #include "cmdmain.h"
-#include "proxmark3.h"
+#include "comms.h"
 #include "ui.h"       // for show graph controls
 #include "graph.h"    // for graph data
 #include "cmdparser.h"// already included in cmdmain.h
@@ -367,18 +367,20 @@ int Cmdmandecoderaw(const char *Cmd)
        return 1;
 }
 
-//by marshmellow
-//biphase decode
-//take 01 or 10 = 0 and 11 or 00 = 1
-//takes 2 arguments "offset" default = 0 if 1 it will shift the decode by one bit
-// and "invert" default = 0 if 1 it will invert output
-//  the argument offset allows us to manually shift if the output is incorrect - [EDIT: now auto detects]
+/** 
+ * @author marshmellow
+ * biphase decode
+ * decdoes  01 or 10 to 0 and 11 or 00 to 1
+ * param offset adjust start position
+ * param invert invert output
+ * param maxErr maximum tolerated errors 
+ */
 int CmdBiphaseDecodeRaw(const char *Cmd)
 {
        size_t size=0;
        int offset=0, invert=0, maxErr=20, errCnt=0;
        char cmdp = param_getchar(Cmd, 0);
-       if (strlen(Cmd) > 3 || cmdp == 'h' || cmdp == 'H') {
+       if (strlen(Cmd) > 7 || cmdp == 'h' || cmdp == 'H') {
                PrintAndLog("Usage:  data biphaserawdecode [offset] [invert] [maxErr]");
                PrintAndLog("     Converts 10 or 01 to 1 and 11 or 00 to 0");
                PrintAndLog("     --must have binary sequence in demodbuffer (run data askrawdemod first)");
@@ -427,7 +429,7 @@ int CmdBiphaseDecodeRaw(const char *Cmd)
 int ASKbiphaseDemod(const char *Cmd, bool verbose)
 {
        //ask raw demod GraphBuffer first
-       int offset=0, clk=0, invert=0, maxErr=0;
+       int offset=0, clk=0, invert=0, maxErr=100;
        sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
 
        uint8_t BitStream[MAX_GRAPH_TRACE_LEN];   
@@ -591,8 +593,7 @@ int CmdBitsamples(const char *Cmd)
        int cnt = 0;
        uint8_t got[12288];
 
-       GetFromBigBuf(got,sizeof(got),0);
-       WaitForResponse(CMD_ACK,NULL);
+       GetFromBigBuf(got, sizeof(got), 0 , NULL, -1, false);
 
                for (int j = 0; j < sizeof(got); j++) {
                        for (int k = 0; k < 8; k++) {
@@ -1131,8 +1132,7 @@ int CmdHexsamples(const char *Cmd)
                return 0;
        }
 
-       GetFromBigBuf(got,requested,offset);
-       WaitForResponse(CMD_ACK,NULL);
+       GetFromBigBuf(got, requested, offset, NULL, -1, false);
 
        i = 0;
        for (j = 0; j < requested; j++) {
@@ -1200,10 +1200,9 @@ int getSamples(int n, bool silent)
                n = sizeof(got);
 
        if (!silent) PrintAndLog("Reading %d bytes from device memory\n", n);
-       GetFromBigBuf(got,n,0);
-       if (!silent) PrintAndLog("Data fetched");
        UsbCommand response;
-       WaitForResponse(CMD_ACK, &response);
+       GetFromBigBuf(got, n, 0, &response, -1, false);
+       if (!silent) PrintAndLog("Data fetched");
        uint8_t bits_per_sample = 8;
 
        //Old devices without this feature would send 0 at arg[0]
Impressum, Datenschutz