]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - armsrc/hfsnoop.c
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 Dbprintf("Skipping first %d sample pairs, Skipping %d triggers.\n", samplesToSkip
, triggersToSkip
);
34 // Select correct configs
35 FpgaDownloadAndGo(FPGA_BITSTREAM_HF
);
36 // Set up the synchronous serial port
38 // connect Demodulated Signal to ADC:
39 SetAdcMuxFor(GPIO_MUXSEL_HIPKD
);
40 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SNOOP
);
46 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(16); // Setting Frame Mode For better performance on high speed data transfer.
50 while(!BUTTON_PRESS() && !usb_poll_validate_length() ) {
52 if(AT91C_BASE_SSC
->SSC_SR
& (AT91C_SSC_RXRDY
)) {
53 r
= (uint16_t)AT91C_BASE_SSC
->SSC_RHR
;
54 r
= MAX(r
& 0xff, r
>> 8);
57 if (++trigger_cnt
> triggersToSkip
) {
65 int waitcount
= samplesToSkip
; // lets wait 40000 ticks of pck0
66 while(waitcount
!= 0) {
67 if(AT91C_BASE_SSC
->SSC_SR
& (AT91C_SSC_RXRDY
)) {
72 Dbprintf("Trigger kicked! Value: %d, Dumping Samples Hispeed now.", r
);
75 DbpString("HF Snoop end");
76 FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF
);