From: travisutk Date: Tue, 7 Dec 2010 03:02:06 +0000 (+0000) Subject: More GoodFET/chipcon symbol goodness. X-Git-Url: http://git.rot13.org/?p=goodfet;a=commitdiff_plain;h=4e19996ffadaba56b6cca3cae9d732e6fba5c45e More GoodFET/chipcon symbol goodness. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@766 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- diff --git a/client/GoodFET.py b/client/GoodFET.py index 53026df..62a0e44 100755 --- a/client/GoodFET.py +++ b/client/GoodFET.py @@ -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]; diff --git a/client/GoodFETCC.py b/client/GoodFETCC.py index 688219d..6f85a0e 100644 --- a/client/GoodFETCC.py +++ b/client/GoodFETCC.py @@ -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); diff --git a/client/goodfet.cc b/client/goodfet.cc index f5e46b5..2e94fff 100755 --- a/client/goodfet.cc +++ b/client/goodfet.cc @@ -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();