updated features for two different types of sniffing. fixed and scrolling. This can...
[goodfet] / client / GoodFETEM260.py
index 205f0b3..ef2bf0c 100644 (file)
@@ -16,7 +16,7 @@
 
 # The delay is mandatory.
 
-import sys, time, string, cStringIO, struct, glob, serial, os;
+import sys, time, string, cStringIO, struct, glob, os;
 
 from GoodFETSPI import GoodFETSPI;
 
@@ -64,8 +64,8 @@ class GoodFETEM260(GoodFETSPI):
         if ord(data[0])!=0xFE:
             print "EZSP error: 0x%02x" % ord(data[0]);
         if ord(data[4])==0x58:
-            print "EZSP Invalid Command";
-            return None;
+            print "EZSP Invalid Command because 0x%02x" % ord(data[5]);
+            return data;
         if frame[0]!=ord(data[4]):
             print "EZSP warning: Command 0x%02x returned type 0x%02x." % (
                 frame[0],ord(data[4]));
@@ -99,6 +99,7 @@ class GoodFETEM260(GoodFETSPI):
         print "Version: %i" % (version); 
         print "Status:  %s" % (["dead","alive"][status]);
         print ""
+        self.setVersion();
         print "Node ID: %04x" % (self.getNodeID());
         print "Connected to %2i neighbors." % self.neighborCount();
     def EM260spiversion(self):
@@ -146,5 +147,17 @@ class GoodFETEM260(GoodFETSPI):
         
         data=self.EZSPtrans([0x9A, channel&xFF]);
         return ord(data[5]);
-    
-    
+    def setVersion(self,version=2):
+        """Set the requested EZSP protocol version."""
+        
+        data=self.EZSPtrans([0x00, version]);
+        newversion=ord(data[5]);
+        if version==newversion:
+            print "Version set."
+            print "Protocol %i, stack type %i, Stack Version 0x%02x%02x." % (
+                newversion,
+                ord(data[6]),
+                ord(data[8]),
+                ord(data[7]));
+        else:
+            self.setVersion(newversion);