]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - client/graph.c
f508fe8834434f095441c9693b7e6645342f1a36
   1 //----------------------------------------------------------------------------- 
   2 // Copyright (C) 2010 iZsh <izsh at fail0verflow.com> 
   4 // This code is licensed to you under the terms of the GNU GPL, version 2 or, 
   5 // at your option, any later version. See the LICENSE.txt file for the text of 
   7 //----------------------------------------------------------------------------- 
   9 //----------------------------------------------------------------------------- 
  18 int GraphBuffer
[MAX_GRAPH_TRACE_LEN
]; 
  21 /* write a bit to the graph */ 
  22 void AppendGraph(int redraw
, int clock
, int bit
) 
  26   for (i 
= 0; i 
< (int)(clock 
/ 2); ++i
) 
  27     GraphBuffer
[GraphTraceLen
++] = bit 
^ 1; 
  29   for (i 
= (int)(clock 
/ 2); i 
< clock
; ++i
) 
  30     GraphBuffer
[GraphTraceLen
++] = bit
; 
  36 // clear out our graph window 
  37 int ClearGraph(int redraw
) 
  39   int gtl 
= GraphTraceLen
; 
  40   memset(GraphBuffer
, 0x00, GraphTraceLen
); 
  50 // DETECT CLOCK NOW IN LFDEMOD.C 
  52 void setGraphBuf(uint8_t *buff
, size_t size
) 
  54         if ( buff 
== NULL 
) return; 
  57         if ( size 
> MAX_GRAPH_TRACE_LEN 
) 
  58                 size 
= MAX_GRAPH_TRACE_LEN
; 
  60         for (; i 
< size
; ++i
){ 
  61                 GraphBuffer
[i
]=buff
[i
]-128; 
  67 size_t getFromGraphBuf(uint8_t *buff
) 
  69         if (buff 
== NULL 
) return 0; 
  71         for (i
=0;i
<GraphTraceLen
;++i
){ 
  72                 if (GraphBuffer
[i
]>127) GraphBuffer
[i
]=127; //trim 
  73                 if (GraphBuffer
[i
]<-127) GraphBuffer
[i
]=-127; //trim 
  74                 buff
[i
]=(uint8_t)(GraphBuffer
[i
]+128); 
  80 // Get or auto-detect clock rate 
  81 int GetClock(const char *str
, int peak
, int verbose
) 
  84         sscanf(str
, "%i", &clock
); 
  91                 uint8_t grph
[MAX_GRAPH_TRACE_LEN
]={0}; 
  92                 size_t size 
= getFromGraphBuf(grph
); 
  94                         PrintAndLog("Failed to copy from graphbuffer"); 
  97                 DetectASKClock(grph
,size
,&clock
,20); 
  98                 // Only print this message if we're not looping something 
 100                         PrintAndLog("Auto-detected clock rate: %d", clock
); 
 106 // A simple test to see if there is any data inside Graphbuffer.  
 109         if ( GraphTraceLen 
<= 0) { 
 110                 PrintAndLog("No data available, try reading something first"); 
 116 // Detect high and lows in Grapbuffer. 
 117 // Only loops the first 256 values.  
 118 void DetectHighLowInGraph(int *high
, int *low
, bool addFuzz
) { 
 120         uint8_t loopMax 
= 255; 
 121         if ( loopMax 
> GraphTraceLen
) 
 122                 loopMax 
= GraphTraceLen
; 
 124         for (uint8_t i 
= 0; i 
< loopMax
; ++i
) { 
 125                 if (GraphBuffer
[i
] > *high
) 
 126                         *high 
= GraphBuffer
[i
]; 
 127                 else if (GraphBuffer
[i
] < *low
) 
 128                         *low 
= GraphBuffer
[i
]; 
 131         //12% fuzz in case highs and lows aren't clipped 
 133                 *high 
= (int)(*high 
* .88); 
 134                 *low  
= (int)(*low  
* .88); 
 138 int GetPskClock(const char *str
, int peak
, int verbose
) 
 141         sscanf(str
, "%i", &clock
); 
 142         if (!strcmp(str
, "")) 
 148                 uint8_t grph
[MAX_GRAPH_TRACE_LEN
]={0}; 
 149                 size_t size 
= getFromGraphBuf(grph
); 
 151                         PrintAndLog("Failed to copy from graphbuffer"); 
 154                 clock 
= DetectPSKClock(grph
,size
,0); 
 155                 // Only print this message if we're not looping something 
 157                         PrintAndLog("Auto-detected clock rate: %d", clock
); 
 163 int GetNrzClock(const char *str
, int peak
, int verbose
) 
 166         sscanf(str
, "%i", &clock
); 
 167         if (!strcmp(str
, "")) 
 173                 uint8_t grph
[MAX_GRAPH_TRACE_LEN
]={0}; 
 174                 size_t size 
= getFromGraphBuf(grph
); 
 176                         PrintAndLog("Failed to copy from graphbuffer"); 
 179                 clock 
= DetectNRZClock(grph
,size
,0); 
 180                 // Only print this message if we're not looping something 
 182                         PrintAndLog("Auto-detected clock rate: %d", clock
);