getpc() method
[goodfet] / client / GoodFETCC.py
index 9468b42..f937ac9 100644 (file)
@@ -24,6 +24,18 @@ class GoodFETCC(GoodFET):
     def CMDrs(self,args=[]):
         """Chip command to grab the radio state."""
         self.SRF_radiostate();
+    def SRF_bitfieldstr(self,bf):
+        name="unused";
+        start=0;
+        stop=0;
+        access="";
+        reset="0x00";
+        description="";
+        for e in bf.childNodes:
+            if e.localName=="Name" and e.childNodes: name= e.childNodes[0].nodeValue;
+            elif e.localName=="Start": start=e.childNodes[0].nodeValue;
+            elif e.localName=="Stop": stop=e.childNodes[0].nodeValue;
+        return "   [%s:%s] %30s " % (start,stop,name);
     def SRF_radiostate(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
@@ -36,6 +48,7 @@ class GoodFETCC(GoodFET):
                     name="unknownreg";
                     address="0xdead";
                     description="";
+                    bitfields="";
                     for g in f.childNodes:
                         if g.localName=="Name":
                             name=g.childNodes[0].nodeValue;
@@ -44,12 +57,20 @@ class GoodFETCC(GoodFET):
                         elif g.localName=="Description":
                             if g.childNodes:
                                 description=g.childNodes[0].nodeValue;
+                        elif g.localName=="Bitfield":
+                            bitfields+="%17s/* %-50s */\n" % ("",self.SRF_bitfieldstr(g));
                     #print "SFRX(%10s, %s); /* %50s */" % (name,address, description);
                     print "%-10s=0x%02x; /* %-50s */" % (
                         name,self.CCpeekdatabyte(eval(address)), description);
+                    if bitfields!="": print bitfields.rstrip();
+    def halt(self):
+        """Halt the CPU."""
+        self.CChaltcpu();
     def CChaltcpu(self):
         """Halt the CPU."""
         self.writecmd(self.APP,0x86,0,self.data);
+    def resume(self):
+        self.CCreleasecpu();
     def CCreleasecpu(self):
         """Resume the CPU."""
         self.writecmd(self.APP,0x87,0,self.data);
@@ -150,6 +171,8 @@ class GoodFETCC(GoodFET):
             sys.exit(1);
             #return 2048;
         return size;
+    def getpc(self):
+        return self.CCgetPC();
     def CCgetPC(self):
         """Get a chipcon's PC."""
         self.writecmd(self.APP,0x83,0,None);