More GoodFET/chipcon symbol goodness.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Tue, 7 Dec 2010 03:02:06 +0000 (03:02 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Tue, 7 Dec 2010 03:02:06 +0000 (03:02 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@766 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFET.py
client/GoodFETCC.py
client/goodfet.cc

index 53026df..62a0e44 100755 (executable)
@@ -372,7 +372,16 @@ class GoodFET:
     def eeprompeek(self,address):
         """Read a word of memory from the monitor."""
         return self.peekbyte(address)+(self.peekbyte(address+1)<<8);
-    
+    def peekbysym(self,name):
+        """Read a value by its symbol name."""
+        #TODO include memory in symbol.
+        reg=self.symbols.get(name);
+        return self.peek8(reg,"data");
+    def pokebysym(self,name,val):
+        """Write a value by its symbol name."""
+        #TODO include memory in symbol.
+        reg=self.symbols.get(name);
+        return self.poke8(reg,val,"data");
     def pokebyte(self,address,value):
         """Set a byte of memory by the monitor."""
         self.data=[address&0xff,address>>8,value];
index 688219d..6f85a0e 100644 (file)
@@ -95,23 +95,47 @@ class GoodFETCC(GoodFET):
         
         #return (2400+self.peek(0x05))*10**6
         #self.poke(0x05,chan);
-        freq2=self.CCpeekdatabyte(0xdf09);
-        freq1=self.CCpeekdatabyte(0xdf0a);
-        freq0=self.CCpeekdatabyte(0xdf0b);
-        freq=(freq2<<16)+(freq1<<8)+freq0;
+        
+        #freq2=self.CCpeekdatabyte(0xdf09);
+        #freq1=self.CCpeekdatabyte(0xdf0a);
+        #freq0=self.CCpeekdatabyte(0xdf0b);
+        freq=0;
+        try:
+            freq2=self.peekbysym("FREQ2");
+            freq1=self.peekbysym("FREQ1");
+            freq0=self.peekbysym("FREQ0");
+            freq=(freq2<<16)+(freq1<<8)+freq0;
+        except:
+            freq=0;
+            
         hz=freq*396.728515625;
         
         return hz;
     
     def RF_carrier(self):
         """Hold a carrier wave on the present frequency."""
-        # Set CONT_WAVE, PLL_LOCK, and 0dBm in RF_SETUP            
-        self.poke(0x06,8+10+4+2); 
-    
+        print "ERROR, this ain't working yet."
+
     def RF_getrssi(self):
-        """Returns the received signal strenght, from 0 to 1."""
-        rssireg=self.symbols.get("RSSI");
-        return self.CCpeekdatabyte(rssireg);
+        """Returns the received signal strenght, with a weird offset."""
+        try:
+            rssireg=self.symbols.get("RSSI");
+            return self.CCpeekdatabyte(rssireg);
+        except:
+            if self.verbose>0: print "RSSI reg doesn't exist.";
+        try:
+            #RSSI doesn't exist on 2.4GHz devices.  Maybe RSSIL and RSSIH?
+            rssilreg=self.symbols.get("RSSIL");
+            rssil=self.CCpeekdatabyte(rssilreg);
+            rssihreg=self.symbols.get("RSSIL");
+            rssih=self.CCpeekdatabyte(rssihreg);
+            return (rssih<<8)|rssil;
+        except:
+            if self.verbose>0: print "RSSIL/RSSIH regs don't exist.";
+        
+        return 0;
+            
+    
     def SRF_loadsymbols(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
index f5e46b5..2e94fff 100755 (executable)
@@ -98,7 +98,12 @@ if(sys.argv[1]=="status"):
     print "Status: %s" %client.status();
 if(sys.argv[1]=="info"):
     print "Ident   %s" % client.CCidentstr();
-    print "Freq    %10.3f MHz" % (client.RF_getfreq()/10**6);
+    
+    try:
+        print "Freq    %10.3f MHz" % (client.RF_getfreq()/10**6);
+        print "RSSI    %02x" % client.RF_getrssi();
+    except:
+        print "Freq, RSSI, etc unknown.  Install SmartRF7.";
     #print "Rate    %10i kbps" % (client.RF_getrate()/1000);
     #print "PacketLen %02i bytes" % client.RF_getpacketlen();
     #print "SMAC  0x%010x" % client.RF_getsmac();