]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - armsrc/hfsnoop.c
945809cea0c4ce3e3888d3010cf368aa3fc17900
   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
); 
  37         // Select correct configs 
  38         FpgaDownloadAndGo(FPGA_BITSTREAM_HF
); 
  39         // Set up the synchronous serial port 
  41         // connect Demodulated Signal to ADC: 
  42         SetAdcMuxFor(GPIO_MUXSEL_HIPKD
); 
  43         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
);