From: rmspeers Date: Thu, 21 Apr 2011 00:20:21 +0000 (+0000) Subject: ccspi application reflexive jamming and reflexive jamming returning the jammed frame... X-Git-Url: http://git.rot13.org/?p=goodfet;a=commitdiff_plain;h=443bcd972725a80fd8d55014d4f1d84485ec53f0 ccspi application reflexive jamming and reflexive jamming returning the jammed frame's seqnums git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@1004 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- diff --git a/client/GoodFETCCSPI.py b/client/GoodFETCCSPI.py index 0283d87..78273ac 100644 --- a/client/GoodFETCCSPI.py +++ b/client/GoodFETCCSPI.py @@ -188,10 +188,23 @@ class GoodFETCCSPI(GoodFET): def RF_reflexjam(self): """Place the device into reflexive jamming mode.""" - data = "" + data = ""; self.writecmd(self.CCSPIAPP,0xA0,len(data),data); return; + def RF_reflexjam_seq(self): + """Place the device into reflexive jamming mode + and return the sequence number of the jammed packet.""" + #TODO make so that this function someone keeps receiving + # the sequence numbers from each jammed frame, or probably + # just make the firmware auto-ack if the frame requests + # an ACK instead of sending data back to client. + data = "\0"; + self.data = data; + self.writecmd(self.CCSPIAPP,0xA1,len(data),data); + buffer = self.data; + return ord(buffer[3]); + def RF_modulated_spectrum(self): """Hold a carrier wave on the present frequency.""" # print "Don't know how to hold a carrier."; diff --git a/client/goodfet.ccspi b/client/goodfet.ccspi index 74ec740..f681cad 100755 --- a/client/goodfet.ccspi +++ b/client/goodfet.ccspi @@ -57,6 +57,7 @@ if(sys.argv[1]=="modulated_spectrum"): time.sleep(1); if(sys.argv[1]=="reflexjam"): + #Setup the radio to listen promiscously on a frequency client.RF_promiscuity(1); client.RF_autocrc(0); if len(sys.argv)>2: @@ -66,8 +67,8 @@ if(sys.argv[1]=="reflexjam"): else: client.RF_setchan(freq); client.CC_RFST_RX(); - print "Listening as %010x on %i MHz" % (client.RF_getsmac(), - client.RF_getfreq()/10**6); + print "Reflexively jamming on %i MHz" % (client.RF_getfreq()/10**6); + #Now we let the firmware take over, watching for packets and jamming them. client.RF_reflexjam(); if(sys.argv[1]=="info"): diff --git a/firmware/apps/radios/ccspi.c b/firmware/apps/radios/ccspi.c index 83dfa37..c2eb70f 100644 --- a/firmware/apps/radios/ccspi.c +++ b/firmware/apps/radios/ccspi.c @@ -12,7 +12,7 @@ #include "platform.h" #include "command.h" - +#include //added for itoa #include #include #include @@ -188,10 +188,7 @@ void ccspi_handle_fn( uint8_t const app, break; case CCSPI_REFLEX: - debugstr("Beta implementation."); - cmddata[0] = 1; - txdata(app,verb,cmddata[0]+1); - + txdata(app,verb,1); //Just sending some response back to client while(1) { //Wait until a packet is received while(!SFD); @@ -199,40 +196,99 @@ void ccspi_handle_fn( uint8_t const app, PLED2DIR |= PLED2PIN; PLED2OUT &= ~PLED2PIN; - //Switch the radio to TX mode - CLRSS; //Drop !SS to begin transaction. + //Put radio in TX mode + CLRSS; ccspitrans8(0x04); - SETSS; //Raise !SS to end transaction. - //txdata(app,verb,len); + SETSS; - //Load the packet. + //Load the jamming packet. + //TODO try to preload this to get faster effects 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