]>
git.zerfleddert.de Git - proxmark3-svn/blob - armsrc/hfsnoop.c
6a58b20b0e7f9fc6319abc7ea6869f5fa6e9cc60
6 static void RAMFUNC
optimizedSnoop(void);
8 static void RAMFUNC
optimizedSnoop(void)
10 int n
= BigBuf_max_traceLen() / sizeof(uint16_t); // take all memory
12 uint16_t *dest
= (uint16_t *)BigBuf_get_addr();
13 uint16_t *destend
= dest
+ n
;
15 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(16); // Setting Frame mode, 16 bits per word
17 while(dest
<= destend
)
19 if(AT91C_BASE_SSC
->SSC_SR
& AT91C_SSC_RXRDY
)
21 *dest
= (uint16_t)(AT91C_BASE_SSC
->SSC_RHR
);
25 //Resetting Frame mode (First set in fpgaloader.c)
26 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(8) | AT91C_SSC_MSBF
| SSC_FRAME_MODE_WORDS_PER_TRANSFER(0);
29 void HfSnoop(int samplesToSkip
, int triggersToSkip
)
31 BigBuf_free(); BigBuf_Clear();
33 Dbprintf("Skipping first %d sample pairs, Skipping %d triggers.\n", samplesToSkip
, triggersToSkip
);
36 // Select correct configs
37 FpgaDownloadAndGo(FPGA_BITSTREAM_HF
);
38 // Set up the synchronous serial port
40 // connect Demodulated Signal to ADC:
41 SetAdcMuxFor(GPIO_MUXSEL_HIPKD
);
42 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SNOOP
);
45 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(16); // Setting Frame Mode For better performance on high speed data transfer.
49 while(!BUTTON_PRESS() && !usb_poll_validate_length()) {
51 if(AT91C_BASE_SSC
->SSC_SR
& (AT91C_SSC_RXRDY
)) {
52 r
= (uint16_t)AT91C_BASE_SSC
->SSC_RHR
;
53 r
= MAX(r
& 0xff, r
>> 8);
55 if (++trigger_cnt
> triggersToSkip
)
62 int waitcount
= samplesToSkip
; // lets wait 40000 ticks of pck0
63 while(waitcount
!= 0) {
64 if(AT91C_BASE_SSC
->SSC_SR
& (AT91C_SSC_RXRDY
))
68 Dbprintf("Trigger kicked! Value: %d, Dumping Samples Hispeed now.", r
);
71 DbpString("HF Snoop end");
72 FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF
);