X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETCCSPI.py;h=0e2d787b1a216477cebb9fe8036f4940724fb43e;hp=39fa181448259aee44a3a1009ef8693e707f5c65;hb=0fdb361ae1af20139c5751a1b6151e5e065a31b3;hpb=44e1187885bbf7caa7cafccf7cc41d0ec3963721 diff --git a/client/GoodFETCCSPI.py b/client/GoodFETCCSPI.py index 39fa181..0e2d787 100644 --- a/client/GoodFETCCSPI.py +++ b/client/GoodFETCCSPI.py @@ -5,7 +5,7 @@ # # This code is being rewritten and refactored. You've been warned! -import sys, time, string, cStringIO, struct, glob, serial, os; +import sys, time, string, cStringIO, struct, glob, os; from GoodFET import GoodFET; @@ -84,12 +84,13 @@ class GoodFETCCSPI(GoodFET): """Write a CCSPI Register.""" data=[reg,(val>>8)&0xFF,val&0xFF]; self.writecmd(self.CCSPIAPP,0x03,len(data),data); - if self.peek(reg,bytes)!=val: + if self.peek(reg,bytes)!=val and reg!=0x18: print "Warning, failed to set r%02x=0x%04x, got %02x." %( reg, val, self.peek(reg,bytes)); - return; + return False; + return True; def status(self): """Read the status byte.""" @@ -135,13 +136,15 @@ class GoodFETCCSPI(GoodFET): fsctrl=0x8000; #self.peek(0x18)&(~0x3FF); fsctrl=fsctrl+int(mhz-2048) self.poke(0x18,fsctrl); - self.strobe(0x02); + self.strobe(0x02);#SCAL + self.strobe(0x03);#SRXON def RF_getfreq(self): """Get the frequency in Hz.""" fsctrl=self.peek(0x18); mhz=2048+(fsctrl&0x3ff) return mhz*1000000; def RF_setchan(self,channel): + """Set the ZigBee/802.15.4 channel number.""" if channel < 11 or channel > 26: print "Only 802.15.4 channels 11 to 26 are currently supported."; else: @@ -186,6 +189,20 @@ class GoodFETCCSPI(GoodFET): #self.strobe(0x09); return; + def RF_reflexjam(self,duration=0): + """Place the device into reflexive jamming mode.""" + data = [duration&0xff, + (duration>>8)&0xff]; + self.writecmd(self.CCSPIAPP,0xA0,len(data),data); + return; + + def RF_reflexjam_autoack(self): + """Place the device into reflexive jamming mode + and that also sends a forged ACK if needed.""" + data = ""; + self.writecmd(self.CCSPIAPP,0xA1,len(data),data); + print "Got:", data, "and", self.data + return; def RF_modulated_spectrum(self): """Hold a carrier wave on the present frequency.""" @@ -264,6 +281,14 @@ class GoodFETCCSPI(GoodFET): mdmctrl0=mdmctrl0|0x0020; self.poke(0x11,mdmctrl0); return; + def RF_autoack(self,autoack=1): + mdmctrl0=self.peek(0x11); + if autoack==0: + mdmctrl0=mdmctrl0&(~0x0010); + else: + mdmctrl0=mdmctrl0|0x0010; + self.poke(0x11,mdmctrl0); + return; packetlen=16; def RF_setpacketlen(self,len=16): """Set the number of bytes in the expected payload."""