static int CmdHelp(const char *Cmd);
-
-
int CmdEMdemodASK(const char *Cmd)
{
- int findone=0;
- UsbCommand c={CMD_EM410X_DEMOD};
- if(Cmd[0]=='1') findone=1;
- c.arg[0]=findone;
- SendCommand(&c);
- return 0;
+ char cmdp = param_getchar(Cmd, 0);
+ int findone = (cmdp == '1') ? 1 : 0;
+ UsbCommand c = { CMD_EM410X_DEMOD };
+ c.arg[0] = findone;
+ SendCommand(&c);
+ return 0;
}
-
-
/* Read the ID of an EM410x tag.
* Format:
* 1111 1111 1 <-- standard non-repeatable header
{
int i, j, clock, header, rows, bit, hithigh, hitlow, first, bit2idx, high, low;
int parity[4];
- char id[11];
- char id2[11];
+ char id[11] = {0x00};
+ char id2[11] = {0x00};
int retested = 0;
uint8_t BitStream[MAX_GRAPH_TRACE_LEN];
high = low = 0;
- /* Detect high and lows and clock */
- for (i = 0; i < GraphTraceLen; i++)
- {
- if (GraphBuffer[i] > high)
- high = GraphBuffer[i];
- else if (GraphBuffer[i] < low)
- low = GraphBuffer[i];
- }
+ // get clock
+ clock = GetClock(Cmd, 0);
+
+ // Detect high and lows and clock
+ DetectHighLowInGraph( &high, &low, TRUE);
- /* get clock */
- clock = GetClock(Cmd, high, 0);
-
- /* parity for our 4 columns */
+ PrintAndLog("NUMNUM");
+
+ // parity for our 4 columns
parity[0] = parity[1] = parity[2] = parity[3] = 0;
header = rows = 0;
- /* manchester demodulate */
+ // manchester demodulate
bit = bit2idx = 0;
for (i = 0; i < (int)(GraphTraceLen / clock); i++)
{
/* Find out if we hit both high and low peaks */
for (j = 0; j < clock; j++)
{
- if (GraphBuffer[(i * clock) + j] == high)
+ if (GraphBuffer[(i * clock) + j] >= high)
hithigh = 1;
- else if (GraphBuffer[(i * clock) + j] == low)
+ else if (GraphBuffer[(i * clock) + j] <= low)
hitlow = 1;
/* it doesn't count if it's the first part of our read
BitStream[bit2idx++] = bit;
}
-
+
retest:
/* We go till 5 before the graph ends because we'll get that far below */
for (i = 0; i < bit2idx - 5; i++)
}
/* if we've already retested after flipping bits, return */
- if (retested++){
- return 0;
+ if (retested++){
+ PrintAndLog("Failed to decode");
+ return 0;
}
/* if this didn't work, try flipping bits */
- for (i = 0; i < bit2idx; i++)
- BitStream[i] ^= 1;
+ for (i = 0; i < bit2idx; i++)
+ BitStream[i] ^= 1;
goto retest;
}
*/
int CmdEM410xWatch(const char *Cmd)
{
- int read_h = (*Cmd == 'h');
+ char cmdp = param_getchar(Cmd, 0);
+ int read_h = (cmdp == 'h');
do
{
if (ukbhit()) {
uint8_t data[LF_TRACE_BUFF_SIZE] = {0x00};
- GetFromBigBuf(data,LF_TRACE_BUFF_SIZE,3560); //3560 -- should be offset..
+ GetFromBigBuf(data,LF_TRACE_BUFF_SIZE,0); //3560 -- should be offset..
WaitForResponseTimeout(CMD_ACK,NULL, 1500);
for (int j = 0; j < LF_TRACE_BUFF_SIZE; j++) {
uint8_t data[LF_TRACE_BUFF_SIZE] = {0x00};
- GetFromBigBuf(data,LF_TRACE_BUFF_SIZE,3560); //3560 -- should be offset..
+ GetFromBigBuf(data,LF_TRACE_BUFF_SIZE,0); //3560 -- should be offset..
WaitForResponseTimeout(CMD_ACK,NULL, 1500);
for (int j = 0; j < LF_TRACE_BUFF_SIZE; j++) {