diff zb.py @ 13:729f2393f296

Auto increment frame ID when creating a TX packet.
author darius@Inchoate
date Sat, 17 Jan 2009 14:39:50 +1030
parents 75f785a09e2e
children c6ee9eae9e49
line wrap: on
line diff
--- a/zb.py	Tue Jan 13 12:17:02 2009 +1030
+++ b/zb.py	Sat Jan 17 14:39:50 2009 +1030
@@ -84,10 +84,21 @@
 class TXPkts(PktBase):
     """Base class for all packets that go to the module"""
 
+    frameidcounter = 0
+    
     def __init__(self):
-        # Frame ID of 0 will prevent TX status pakets being sent
-        self._frameid = 1
-        
+        self._frameid = self.getNextFrameId()
+
+    @classmethod
+    def getNextFrameId(clss):
+        """Generate the next frame ID, skip 0 as it will cause the module to not send a response back"""
+        clss.frameidcounter = (clss.frameidcounter + 1) % 255
+
+        if clss.frameidcounter == 0:
+            clss.frameidcounter = 1
+
+        return clss.frameidcounter
+
     def setframeid(self, value):
         if (value < 0 or value > 255):
             raise ValueError("FrameID must be 0-255")
@@ -269,8 +280,8 @@
             raise TypeError("incorrect number of arguments");
 
     def __str__(self):
-        return "TX_%d_Bit 0x%0*x <- %s" % (self.ADDR_SIZE * 8, self.ADDR_SIZE * 2, self.recipient,
-                                           self.payload)
+        return "TX_%d_Bit ID: %d 0x%0*x <- %s" % (self.ADDR_SIZE * 8, self._frameid, self.ADDR_SIZE * 2,
+                                                  self.recipient, self.payload)
     
     def setrecipient(self, value):
         if (value < 0 or value > 2 ** (self.ADDR_SIZE * 8)):