Better packet len, confirmed that odd frequencies fail.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Thu, 20 May 2010 07:33:57 +0000 (07:33 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Thu, 20 May 2010 07:33:57 +0000 (07:33 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@536 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFETNRF.py
client/goodfet.nrf

index 98b3a91..459b71f 100644 (file)
@@ -40,7 +40,7 @@ class GoodFETNRF(GoodFET):
         for i in range(0,bytes):
             data=data+[(val>>(8*i))&0xFF];
         self.writecmd(self.NRFAPP,0x03,len(data),data);
-        if self.peek(reg,bytes)!=val:
+        if self.peek(reg,bytes)!=val and reg!=0x07:
             print "Warning, failed to set register %02x." %reg;
         return;
     
@@ -95,3 +95,8 @@ class GoodFETNRF(GoodFET):
             self.writecmd(self.NRFAPP,0x82,0,None); #Flush
             self.poke(0x07,0x40);#clear bit.
         return None;
+    packetlen=16;
+    def RF_setpacketlen(self,len=16):
+        """Set the number of bytes in the expected payload."""
+        self.poke(0x11,len);
+        self.packetlen=len;
index 6cb92ae..65bface 100755 (executable)
@@ -11,6 +11,16 @@ import time;
 from GoodFETNRF import GoodFETNRF;
 from intelhex import IntelHex;
 
+def printpacket(packet):
+    s="";
+    i=0;
+    for foo in packet:
+        if i>client.packetlen: break;
+        i=i+1;
+        s="%s %02x" % (s,ord(foo));
+    print "Got %s" %s;
+        
+
 if(len(sys.argv)==1):
     print "Usage: %s verb [objects]\n" % sys.argv[0];
     print "%s info" % sys.argv[0];
@@ -55,6 +65,7 @@ if(sys.argv[1]=="sniffob"):
     client.poke(0x02,0x01); #Set RX Pipe 0
     client.poke(0x03,0x03); #SETUP_AW for 5-byte addresses.
     client.RF_freq(2481 * 10**6);
+    #client.RF_freq(2490 * 10**6);
     client.poke(0x06,0x09); #2MBps, -18dBm in RF_SETUP
     client.poke(0x07,0x78); #Reset status register
     
@@ -65,7 +76,8 @@ if(sys.argv[1]=="sniffob"):
     client.RF_settmac(0x424541434F);
     
     #Set packet length of 16.
-    client.poke(0x11,16);
+    #client.poke(0x11,16);
+    client.RF_setpacketlen(16);
     
     client.status();
     #Power radio, prime for RX, checksum.
@@ -79,9 +91,5 @@ if(sys.argv[1]=="sniffob"):
         packet=None;
         while packet==None:
             time.sleep(0.1);
-            client.status();
             packet=client.RF_rxpacket();
-        s="";
-        for foo in packet:
-            s="%s %02x" % (s,ord(foo));
-        print "Got %s" %s;
+        printpacket(packet);