X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/fb0c84c3df8bb19bcefb5d2124d61ff2ac3d0af7..e396001c47364fd52177960ef3b9ca3bef7adc3f:/armsrc/lfops.c diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 780af199..e34eab35 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -394,8 +394,8 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol) AT91C_BASE_PIOA->PIO_OER = GPIO_SSC_DOUT; AT91C_BASE_PIOA->PIO_ODR = GPIO_SSC_CLK; - #define SHORT_COIL() LOW(GPIO_SSC_DOUT) - #define OPEN_COIL() HIGH(GPIO_SSC_DOUT) +#define SHORT_COIL() LOW(GPIO_SSC_DOUT) +#define OPEN_COIL() HIGH(GPIO_SSC_DOUT) i = 0; for(;;) { @@ -417,7 +417,7 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol) if (ledcontrol) LED_D_OFF(); - //wait for next sample time + while(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_CLK) { if(BUTTON_PRESS()) { DbpString("Stopped"); @@ -442,9 +442,8 @@ void SimulateTagLowFrequencyBidir(int divisor, int t0) { } -// compose fc/8 fc/10 waveform (FSK2) -static void fc(int c, int *n) -{ +// compose fc/8 fc/10 waveform +static void fc(int c, int *n) { uint8_t *dest = BigBuf_get_addr(); int idx; @@ -452,21 +451,20 @@ static void fc(int c, int *n) if(c==0) { dest[((*n)++)]=1; dest[((*n)++)]=1; - dest[((*n)++)]=1; - dest[((*n)++)]=1; + dest[((*n)++)]=0; + dest[((*n)++)]=0; dest[((*n)++)]=0; dest[((*n)++)]=0; dest[((*n)++)]=0; dest[((*n)++)]=0; } - // an fc/8 encoded bit is a bit pattern of 11000000 x6 = 48 samples if(c==8) { for (idx=0; idx<6; idx++) { dest[((*n)++)]=1; dest[((*n)++)]=1; - dest[((*n)++)]=1; - dest[((*n)++)]=1; + dest[((*n)++)]=0; + dest[((*n)++)]=0; dest[((*n)++)]=0; dest[((*n)++)]=0; dest[((*n)++)]=0; @@ -477,8 +475,6 @@ static void fc(int c, int *n) // an fc/10 encoded bit is a bit pattern of 1110000000 x5 = 50 samples if(c==10) { for (idx=0; idx<5; idx++) { - dest[((*n)++)]=1; - dest[((*n)++)]=1; dest[((*n)++)]=1; dest[((*n)++)]=1; dest[((*n)++)]=1; @@ -487,37 +483,8 @@ static void fc(int c, int *n) dest[((*n)++)]=0; dest[((*n)++)]=0; dest[((*n)++)]=0; - } - } -} -// compose fc/X fc/Y waveform (FSKx) -static void fcAll(uint8_t c, int *n, uint8_t clock) -{ - uint8_t *dest = BigBuf_get_addr(); - uint8_t idx; - uint8_t fcCnt; - // c = count of field clock for this bit - - int mod = clock % c; - // loop through clock - step field clock - for (idx=0; idx < (uint8_t) clock/c; idx++){ - // loop through field clock length - put 1/2 FC length 1's and 1/2 0's per field clock wave (to create the wave) - for (fcCnt=0; fcCnt < c; fcCnt++){ - if (fcCnt < c/2){ - dest[((*n)++)]=1; - } else { - dest[((*n)++)]=0; - } - } - } - Dbprintf("mod: %d",mod); - if (mod>0){ //for FC counts that don't add up to a full clock cycle padd with extra wave - for (idx=0; idx < mod; idx++){ - if (idx < mod/2) { - dest[((*n)++)]=1; - } else { - dest[((*n)++)]=0; - } + dest[((*n)++)]=0; + dest[((*n)++)]=0; } } } @@ -578,114 +545,6 @@ void CmdHIDsimTAG(int hi, int lo, int ledcontrol) LED_A_OFF(); } -// prepare a waveform pattern in the buffer based on the ID given then -// simulate a FSK tag until the button is pressed -// arg1 contains fcHigh and fcLow, arg2 contains invert and clock -void CmdFSKsimTAG(uint16_t arg1, uint16_t arg2, size_t size, uint8_t *BitStream) -{ - int ledcontrol=1; - int n=0, i=0; - uint8_t fcHigh = arg1 >> 8; - uint8_t fcLow = arg1 & 0xFF; - //spacer bit - uint8_t clk = arg2 & 0xFF; - uint8_t invert = (arg2 >> 8) & 1; - //fcAll(0, &n, clk); - - WDT_HIT(); - for (i=0; i> 8) & 0xFF; - uint8_t manchester = arg1 & 1; - uint8_t separator = arg2 & 1; - uint8_t invert = (arg2 >> 8) & 1; - WDT_HIT(); - for (i=0; i