]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
lf/data combined detectclock functions to one 59/head
authormarshmellow42 <marshmellowrf@gmail.com>
Mon, 9 Feb 2015 16:11:04 +0000 (11:11 -0500)
committermarshmellow42 <marshmellowrf@gmail.com>
Mon, 9 Feb 2015 16:11:04 +0000 (11:11 -0500)
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.

client/cmddata.c
client/cmddata.h
client/cmdlf.c
client/cmdlfem4x.c
client/graph.c
client/graph.h
common/lfdemod.c

index e54631751a3f7a8b9dd6ef4a40c36ebc45b534cf..1bd3f6de60a168fe09525d6d87755018be309c16 100644 (file)
@@ -636,7 +636,7 @@ int CmdBitstream(const char *Cmd)
   }
 
   /* Get our clock */
   }
 
   /* Get our clock */
-  clock = GetClock(Cmd, high, 1);
+  clock = GetAskClock(Cmd, high, 1);
   gtl = ClearGraph(0);
 
   bit = 0;
   gtl = ClearGraph(0);
 
   bit = 0;
@@ -781,10 +781,33 @@ int CmdAskEdgeDetect(const char *Cmd)
 
 /* Print our clock rate */
 // uses data from graphbuffer
 
 /* 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 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
 }
 
 //by marshmellow
@@ -995,7 +1018,6 @@ int CmdFSKdemodParadox(const char *Cmd)
   return 1;
 }
 
   return 1;
 }
 
-
 //by marshmellow
 //IO-Prox demod - FSK RF/64 with preamble of 000000001
 //print ioprox ID and some format details
 //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;
 }
 
   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
 //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;
 }
 
   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)
 //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;
 }
 
   return errCnt;
 }
 
-
 // Indala 26 bit decode
 // by marshmellow
 // optional arguments - same as CmdpskNRZrawDemod (clock & invert)
 // Indala 26 bit decode
 // by marshmellow
 // optional arguments - same as CmdpskNRZrawDemod (clock & invert)
@@ -1586,20 +1557,6 @@ int CmdIndalaDecode(const char *Cmd)
        return 1;
 }
 
        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
 // 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 */
   }
 
   /* Get our clock */
-  clock = GetClock(Cmd, high, 1);
+  clock = GetAskClock(Cmd, high, 1);
 
   int tolerance = clock/4;
 
 
   int tolerance = clock/4;
 
@@ -2206,7 +2163,7 @@ int CmdManchesterMod(const char *Cmd)
   int bit, lastbit, wave;
 
   /* Get our clock */
   int bit, lastbit, wave;
 
   /* Get our clock */
-  clock = GetClock(Cmd, 0, 1);
+  clock = GetAskClock(Cmd, 0, 1);
 
   wave = 0;
   lastbit = 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"},
   {"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"},
   {"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"},
   {"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"},
   {"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)"},
   {"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)"},
   {"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)"},
index 42954cbee0290fd66a47ce26903d998798545405..29b3bbc99a19433cd41e4c31aad161ae315f442e 100644 (file)
@@ -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 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 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 CmdFSKrawdemod(const char *Cmd);
-int CmdDetectPskClockRate(const char *Cmd);
 int CmdPSK1rawDemod(const char *Cmd);
 int CmdPSK2rawDemod(const char *Cmd);
 int CmdGrid(const char *Cmd);
 int CmdPSK1rawDemod(const char *Cmd);
 int CmdPSK2rawDemod(const char *Cmd);
 int CmdGrid(const char *Cmd);
index 27e764a2a35623fd365b7fe8ca1497cb2c54bccd..b7c1b13f75e8a61ee7766b75d8265bbb0cbbd7ee 100644 (file)
@@ -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");
   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!");
       ans=CmdFSKrawdemod("");
       if (ans>0) {
         PrintAndLog("\nUnknown FSK Modulated Tag Found!");
index 95b0342d4d5d3a0e204ad18c5d2169a22df3fc79..232d56357cfa4ffd99e9f0a3f048d9696778bc74 100644 (file)
@@ -61,7 +61,7 @@ int CmdEM410xRead(const char *Cmd)
   }
 
   /* get clock */
   }
 
   /* 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;
 
   /* parity for our 4 columns */
   parity[0] = parity[1] = parity[2] = parity[3] = 0;
index f508fe8834434f095441c9693b7e6645342f1a36..11dbc4d595294abaf178fa918b4411e58ac7243f 100644 (file)
@@ -76,33 +76,6 @@ size_t getFromGraphBuf(uint8_t *buff)
        return i;
 }
 
        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(){
 
 // 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;
 
 {
        int clock;
        sscanf(str, "%i", &clock);
        if (!strcmp(str, ""))
                clock = 0;
 
+       if (clock != 0) 
+               return clock;
        // Auto-detect 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");
                        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;
 }
 
        }
        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;
 
 {
        int clock;
        sscanf(str, "%i", &clock);
        if (!strcmp(str, ""))
                clock = 0;
 
+       if (clock!=0) 
+               return clock;
        // Auto-detect 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");
                        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;
 }
        }
        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;
+}
index 279b5f7b0b57b4ea83424e55dfc4e89293168fc1..e4872afc4a371ebee7e094e5b3904cf7847923e3 100644 (file)
@@ -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 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();
 void setGraphBuf(uint8_t *buff, size_t size);
 
 bool HasGraphData();
index 448195f2ad8787053392cad66cc46bd06bfb298c..47e63ef6ec64515b7ff190bbc9cce0a79c99f074 100644 (file)
@@ -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);
        }
        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);
 }
 
        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;
 {
        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
 }
 
 //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)
 {
 //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
 }
 
 //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];
        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
                }
                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)
 {
 // 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
        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...
   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
   
   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) {
         //  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]){
         }
         //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...
 {
   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
   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...
   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
   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){
                peakcnt++;
        } else {
                if (peakcnt>0 && maxPeak < peakcnt){
-                               maxPeak = peakcnt;
+                       maxPeak = peakcnt;
                }
                peakcnt=0;
        }
                }
                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--){
   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]);
        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;
   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;
 
   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;
         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
       //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;
   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++)
   
   // 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...
 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;
   if (*size<loopCnt) loopCnt = *size;
 
   uint8_t curPhase = *invert;
Impressum, Datenschutz