+
+
+class RawPacket(GenericPacket):
+ def __init__(self, ts = None, data = None, crc = None):
+ GenericPacket.__init__(self,
+ [('ts' , 'int', 4),
+ ('crc', 'int', 1),
+ ('data', 'blob', None)],
+ None)
+ self.ts = ts;
+ self.data = data
+ self.crc = crc
+
+
+class AckFrame(GenericPacket):
+ def __init__(self, payload = None):
+ GenericPacket.__init__(self,
+ [('protocol', 'int', 1),
+ ('seqno', 'int', 1)],
+ payload)
+
+class DataFrame(GenericPacket):
+ def __init__(self, payload = None):
+ if payload != None and type(payload) != type([]):
+ # Assume is a GenericPacket
+ payload = payload.payload()
+ GenericPacket.__init__(self,
+ [('protocol', 'int', 1),
+ ('seqno', 'int', 1),
+ ('dispatch', 'int', 1),
+ ('data', 'blob', None)],
+ payload)
+
+class NoAckDataFrame(GenericPacket):
+ def __init__(self, payload = None):
+ if payload != None and type(payload) != type([]):
+ # Assume is a GenericPacket
+ payload = payload.payload()
+ GenericPacket.__init__(self,
+ [('protocol', 'int', 1),
+ ('dispatch', 'int', 1),
+ ('data', 'blob', None)],
+ payload)
+
+class ActiveMessage(GenericPacket):
+ def __init__(self, gpacket = None, am_id = 0x00, dest = 0xFFFF):
+ if type(gpacket) == type([]):
+ payload = gpacket
+ else:
+ # Assume this will be derived from GenericPacket
+ payload = None
+ GenericPacket.__init__(self,
+ [('destination', 'int', 2),
+ ('source', 'int', 2),
+ ('length', 'int', 1),
+ ('group', 'int', 1),
+ ('type', 'int', 1),
+ ('data', 'blob', None)],
+ payload)
+ if payload == None:
+ self.destination = dest
+ self.source = 0x0000
+ self.group = 0x00
+ self.type = am_id
+ self.data = gpacket.payload()
+ self.length = len(self.data)
+