goodfet.ccspi - interprets frequency input below 100 to be a channel, and a value...
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Wed, 23 Feb 2011 23:34:28 +0000 (23:34 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Wed, 23 Feb 2011 23:34:28 +0000 (23:34 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@947 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFETCCSPI.py
client/goodfet.ccspi

index 31aaae0..82de15d 100644 (file)
@@ -132,6 +132,11 @@ class GoodFETCCSPI(GoodFET):
         fsctrl=self.peek(0x18);
         mhz=2048+(fsctrl&0x3ff)
         return mhz*1000000;
+    def RF_setchan(self,channel):
+        if channel < 11 and channel > 26:
+            print "Only 802.15.4 channels 11 to 26 are currently supported.";
+        else:
+            self.RF_setfreq( ( (channel-11)*5 + 2405 ) * 1000000 );
     def RF_getsmac(self):
         """Return the source MAC address."""
         return 0xdeadbeef;
index 9d1cb87..c3b7ce2 100755 (executable)
@@ -22,7 +22,7 @@ if(len(sys.argv)==1):
     print "%s txtest" % sys.argv[0];
     
     print "\n%s rssi" % sys.argv[0];
-    print "%s sniff" % sys.argv[0];
+    print "%s sniff [chan]" % sys.argv[0];
     print "%s sniffdissect" % sys.argv[0];
     
     sys.exit();
@@ -68,7 +68,11 @@ if(sys.argv[1]=="test"):
     print "%02x %02x" % (ord(data[1]), ord(data[2]));
 if(sys.argv[1]=="rssi"):
     if len(sys.argv)>2:
-        client.RF_setfreq(eval(sys.argv[2]));
+        freq=eval(sys.argv[2]);
+        if freq>100:
+            client.RF_setfreq(freq);
+        else:
+            client.RF_setchan(freq);
     print "Listening on %f MHz." % (client.RF_getfreq()/10.0**6);
         
     client.strobe(0x02); #Calibrate
@@ -93,7 +97,7 @@ if(sys.argv[1]=="sniff" or sys.argv[1]=="sniffdissect"):
         if freq>100:
             client.RF_setfreq(freq);
         else:
-            print "Channels not yet supported."
+            client.RF_setchan(freq);
     client.CC_RFST_RX();
     print "Listening as %010x on %i MHz" % (client.RF_getsmac(),
                                             client.RF_getfreq()/10**6);
@@ -113,7 +117,7 @@ if(sys.argv[1]=="txtest"):
         if freq>100:
             client.RF_setfreq(freq);
         else:
-            print "Channels not yet supported."
+            client.RF_setchan(freq);
     print "Transmitting DEADBEEF as %010x on %i MHz" % (
         client.RF_getsmac(),
         client.RF_getfreq()/10**6);