X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETCCSPI.py;h=39fa181448259aee44a3a1009ef8693e707f5c65;hp=e20581159566e071e3b42e390ae9efac677a2d00;hb=44e1187885bbf7caa7cafccf7cc41d0ec3963721;hpb=2230a0e25c0ac42d71acbb3c6519e5124ee93867;ds=sidebyside diff --git a/client/GoodFETCCSPI.py b/client/GoodFETCCSPI.py index e205811..39fa181 100644 --- a/client/GoodFETCCSPI.py +++ b/client/GoodFETCCSPI.py @@ -24,6 +24,7 @@ class GoodFETCCSPI(GoodFET): self.poke(0x12, 0x0500); #MDMCTRL1 self.poke(0x1C, 0x007F); #IOCFG0 self.poke(0x19, 0x01C4); #SECCTRL0, disabling crypto + self.RF_setsync(); def ident(self): return self.peek(0x1E); #MANFIDL @@ -120,10 +121,18 @@ class GoodFETCCSPI(GoodFET): return 0; def RF_setrate(self,rate=0): return 0; + def RF_getsync(self): + return self.peek(0x14); + def RF_setsync(self,sync=0xa70F): + """Set the SYNC preamble. + Use 0xA70F for 0xA7.""" + self.poke(0x14,sync); + return; + def RF_setfreq(self,frequency): """Set the frequency in Hz.""" mhz=frequency/1000000; - fsctrl=self.peek(0x18)&~0x3FF; + fsctrl=0x8000; #self.peek(0x18)&(~0x3FF); fsctrl=fsctrl+int(mhz-2048) self.poke(0x18,fsctrl); self.strobe(0x02); @@ -247,7 +256,14 @@ class GoodFETCCSPI(GoodFET): mdmctrl0=mdmctrl0|0x800; self.poke(0x11,mdmctrl0); return; - + def RF_autocrc(self,autocrc=1): + mdmctrl0=self.peek(0x11); + if autocrc==0: + mdmctrl0=mdmctrl0&(~0x0020); + else: + mdmctrl0=mdmctrl0|0x0020; + self.poke(0x11,mdmctrl0); + return; packetlen=16; def RF_setpacketlen(self,len=16): """Set the number of bytes in the expected payload.""" @@ -278,6 +294,7 @@ class GoodFETCCSPI(GoodFET): for foo in packet: s="%s %02x" % (s,ord(foo)); print "#%s" % s; + def printdissect(self,packet): try: from scapy.all import Dot15d4