Extended configure bits for soft_power_mode.
[goodfet] / client / GoodFETCC.py
index bb96d30..d5208bd 100644 (file)
@@ -11,7 +11,6 @@ import binascii;
 from GoodFET import GoodFET;
 from intelhex import IntelHex;
 
-
 class GoodFETCC(GoodFET):
     """A GoodFET variant for use with Chipcon 8051 Zigbeema SoC."""
     def CChaltcpu(self):
@@ -65,12 +64,18 @@ class GoodFETCC(GoodFET):
     def CCwr_config(self,config):
         """Write the config register of a Chipcon."""
         self.writecmd(0x30,0x81,1,[config&0xFF]);
+    def CClockchip(self):
+        """Set the flash lock bit in info mem."""
+        self.writecmd(0x30, 0x9A, 0, None);
     
+
     CCversions={0x0100:"CC1110",
                 0x8500:"CC2430",
                 0x8900:"CC2431",
                 0x8100:"CC2510",
                 0x9100:"CC2511",
+                0xA500:"CC2530", #page 52 of SWRU191
+                0xB500:"CC2531",
                 0xFF00:"CCmissing"};
     def CCidentstr(self):
         ident=self.CCident();
@@ -113,14 +118,23 @@ class GoodFETCC(GoodFET):
         """Check the status."""
         self.writecmd(0x30,0x84,0,None);
         return ord(self.data[0])
-    CCstatusbits={0x80 : "erased",
+    #Same as CC2530
+    CCstatusbits={0x80 : "erase_busy",
                   0x40 : "pcon_idle",
-                  0x20 : "halted",
+                  0x20 : "cpu_halted",
                   0x10 : "pm0",
-                  0x08 : "halted",
+                  0x08 : "halt_status",
                   0x04 : "locked",
                   0x02 : "oscstable",
-                  0x01 : "overflow"};
+                  0x01 : "overflow"
+                  };
+    CCconfigbits={0x20 : "soft_power_mode",   #new for CC2530
+                  0x08 : "timers_off",
+                  0x04 : "dma_pause",
+                  0x02 : "timer_suspend",
+                  0x01 : "sel_flash_info_page" #stricken from CC2530
+                  };
+                  
     def CCstatusstr(self):
         """Check the status as a string."""
         status=self.CCstatus();
@@ -147,4 +161,14 @@ class GoodFETCC(GoodFET):
     def CCstep_instr(self):
         """Step one instruction."""
         self.writecmd(0x30,0x89,0,self.data);
-
+    def CCeraseflashbuffer(self):
+        """Erase the 2kB flash buffer"""
+        self.writecmd(0x30,0x99);
+    def CCflashpage(self,adr):
+        """Flash 2kB a page of flash from 0xF000 in XDATA"""
+        data=[adr&0xFF,
+              (adr>>8)&0xFF,
+              (adr>>16)&0xFF,
+              (adr>>24)&0xFF];
+        print "Flashing buffer to 0x%06x" % adr;
+        self.writecmd(0x30,0x95,4,data);