void ccspireflexjam(u16 delay){
unsigned long i;
#if defined(FIFOP) && defined(SFD) && defined(FIFO) && defined(PLED2DIR) && defined(PLED2PIN) && defined(PLED2OUT)
- debugstr("Reflex jamming until reset.");
- txdata(CCSPI,CCSPI_REFLEX,1); //Let the client continue its business.
- while(1) {
- //Wait until a packet is received
- while(!SFD){
- //Has there been an overflow in the RX buffer?
- if((!FIFO)&&FIFOP){
- debugstr("Clearing RX overflow");
- CLRSS;
- ccspitrans8(0x08); //SFLUSHRX
- SETSS;
- }
+
+ prep_timer();
+ debugstr("Reflex jamming until reset.");
+ debughex(delay);
+ txdata(CCSPI,CCSPI_REFLEX,1); //Let the client continue its business.
+ while(1) {
+ //Wait until a packet is received
+ while(!SFD){
+ //Has there been an overflow in the RX buffer?
+ if((!FIFO)&&FIFOP){
+ debugstr("Clearing RX overflow");
+ CLRSS;
+ ccspitrans8(0x08); //SFLUSHRX
+ SETSS;
}
- //Turn on LED 2 (green) as signal
- PLED2DIR |= PLED2PIN;
- PLED2OUT &= ~PLED2PIN;
-
- //Put radio in TX mode
- CLRSS;
- ccspitrans8(0x04);
- SETSS;
-
- //Load the jamming packet.
- //Note: attempts to preload this actually slowed the jam time down from 7 to 9 bytes.
- CLRSS;
- ccspitrans8(CCSPI_TXFIFO);
- char pkt[15] = {0x0f, 0x01, 0x08, 0x82, 0xff, 0xff, 0xff, 0xff, 0xde, 0xad, 0xbe, 0xef, 0xba, 0xbe, 0xc0};
- //char pkt[12] = {0x0c, 0x01, 0x08, 0x82, 0xff, 0xff, 0xff, 0xff, 0xde, 0xad, 0xbe, 0xef};
- for(i=0;i<pkt[0];i++)
- ccspitrans8(pkt[i]);
- SETSS;
+ }
+ //Turn on LED 2 (green) as signal
+ PLED2DIR |= PLED2PIN;
+ PLED2OUT &= ~PLED2PIN;
+
+
+
+ //Wait a few us to send it.
+ delay_us(delay);
- //Transmit the packet.
- CLRSS;
- ccspitrans8(0x04); //STXON
- SETSS;
- msdelay(100+delay); //Instead of waiting for pulse on SFD
- //Flush TX buffer.
- CLRSS;
- ccspitrans8(0x09); //SFLUSHTX
- SETSS;
+ //Put radio in TX mode
+ CLRSS;
+ ccspitrans8(0x04);
+ SETSS;
+
+
+ //Load the jamming packet.
+ //Note: attempts to preload this actually slowed the jam time down from 7 to 9 bytes.
+ CLRSS;
+ ccspitrans8(CCSPI_TXFIFO);
+ char pkt[15] = {0x0f, 0x01, 0x08, 0x82, 0xff, 0xff, 0xff, 0xff, 0xde, 0xad, 0xbe, 0xef, 0xba, 0xbe, 0xc0};
+ //char pkt[12] = {0x0c, 0x01, 0x08, 0x82, 0xff, 0xff, 0xff, 0xff, 0xde, 0xad, 0xbe, 0xef};
+ for(i=0;i<pkt[0];i++)
+ ccspitrans8(pkt[i]);
+ SETSS;
+
+
+ //Transmit the packet.
+ CLRSS;
+ ccspitrans8(0x04); //STXON
+ SETSS;
+
+ //msdelay(100+delay); //Instead of waiting for pulse on SFD
+ delay_ms(1);
+ //Flush TX buffer.
+ CLRSS;
+ ccspitrans8(0x09); //SFLUSHTX
+ SETSS;
- //Turn off LED 2 (green) as signal
- PLED2DIR |= PLED2PIN;
- PLED2OUT |= PLED2PIN;
- }
+ //Turn off LED 2 (green) as signal
+ PLED2DIR |= PLED2PIN;
+ PLED2OUT |= PLED2PIN;
+ }
#else
- debugstr("Can't reflexively jam without SFD, FIFO, FIFOP, and P2LEDx definitions - try using telosb platform.");
- txdata(app,NOK,0);
+ debugstr("Can't reflexively jam without SFD, FIFO, FIFOP, and P2LEDx definitions - try using telosb platform.");
+ txdata(app,NOK,0);
#endif
}
break;
case CCSPI_REFLEX:
- ccspireflexjam(0);
+ ccspireflexjam(len?cmddataword[0]:0);
break;
case CCSPI_REFLEX_AUTOACK: