+
+ def I2Csetup(self):
+ """Move the FET into the I2C application."""
+ self.writecmd(0x02,0x10,0,self.data); #SPI/SETUP
+ def I2Cstart(self):
+ """Start an I2C transaction."""
+ self.writecmd(0x02,0x20,0,self.data); #SPI/SETUP
+ def I2Cstop(self):
+ """Stop an I2C transaction."""
+ self.writecmd(0x02,0x21,0,self.data); #SPI/SETUP
+ def I2Cread(self,len=1):
+ """Read len bytes by I2C."""
+ self.writecmd(0x02,0x00,1,[len]); #SPI/SETUP
+ return self.data;
+ def I2Cwrite(self,bytes):
+ """Write bytes by I2C."""
+ self.writecmd(0x02,0x01,len(bytes),bytes); #SPI/SETUP
+ return ord(self.data[0]);
+ def CCsetup(self):
+ """Move the FET into the CC2430/CC2530 application."""
+ #print "Initializing Chipcon.";
+ self.writecmd(0x30,0x10,0,self.data);
+ def CCrd_config(self):
+ """Read the config register of a Chipcon."""
+ self.writecmd(0x30,0x82,0,self.data);
+ return ord(self.data[0]);
+ def CCwr_config(self,config):
+ """Write the config register of a Chipcon."""
+ self.writecmd(0x30,0x81,1,[config&0xFF]);
+
+ CCversions={0x0100:"CC1110",
+ 0x8500:"CC2430",
+ 0x8900:"CC2431",
+ 0x8100:"CC2510",
+ 0x9100:"CC2511",
+ 0xFF00:"CCmissing"};
+ def CCidentstr(self):
+ ident=self.CCident();
+ chip=self.CCversions.get(ident&0xFF00);
+ return "%s/r%02x" % (chip, ident&0xFF);
+ def CCident(self):
+ """Get a chipcon's ID."""
+ self.writecmd(0x30,0x8B,0,None);
+ chip=ord(self.data[0]);
+ rev=ord(self.data[1]);
+ return (chip<<8)+rev;
+ def CCgetPC(self):
+ """Get a chipcon's PC."""
+ self.writecmd(0x30,0x83,0,None);
+ hi=ord(self.data[0]);
+ lo=ord(self.data[1]);
+ return (hi<<8)+lo;
+ def CCdebuginstr(self,instr):
+ self.writecmd(0x30,0x88,len(instr),instr);
+ return ord(self.data[0]);