aboutsummaryrefslogtreecommitdiff
path: root/util/PacketComposition.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/PacketComposition.py')
-rw-r--r--util/PacketComposition.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/util/PacketComposition.py b/util/PacketComposition.py
index c4fcdc3..75ef917 100644
--- a/util/PacketComposition.py
+++ b/util/PacketComposition.py
@@ -5,7 +5,8 @@ PORTOUT = 0x0108
UNI = 0
import pdb
import util.TimeOps as timeops
-argDict = {'flags': 0, 'startcode': 0, 'pad':0}
+argDict = {'flags': 0, 'startcode': 0x0fff, 'pad':0}
+
def composePixelStripData(pixelStrip,currentTime=timeops.time()):
packet = bytearray()
for light in pixelStrip:
@@ -19,6 +20,7 @@ def composePixelStripData(pixelStrip,currentTime=timeops.time()):
#color = pixelStrip.pixels[i].state()
#packet[i:i+2] = color
# return bytearray(packet)
+
cache = {}
def memoize(f):
def helper(x):
@@ -26,20 +28,23 @@ def memoize(f):
cache[x] = f(x)
return cache[x]
return helper
+
@memoize
def cachePacketHeader(port):
packet = bytearray()
subDict = dict(argDict)
- subDict['len'] = 38500 #I have no idea why this works.
+ subDict['len'] = 150 #I have no idea why this works.
subDict['port'] = port
packet.extend(portOutPacket(subDict))
- packet.append(0x0)
+# packet.append(0x0)
return packet
+
def composePixelStripPacket(pixelStrip,port, currentTime):
packet = bytearray(cachePacketHeader(port))
data = composePixelStripData(pixelStrip, currentTime)
packet.extend(data)
return packet
+
def packheader():
header = bytearray()
header.extend(struct.pack('L', MAGIC))
@@ -47,18 +52,29 @@ def packheader():
header.extend(struct.pack('H', PORTOUT))
header.extend(struct.pack('L', 0))
return header
+
def portOut():
header = packheader()
header.extend(struct.pack('L', UNI))
return header
+
def portOutPayload(argDict):
payload = bytearray()
payload.extend(struct.pack('B', argDict['port']))
+ payload.extend(struct.pack('B',0))
payload.extend(struct.pack('H', argDict['flags']))
- #payload.append(0x00) #somepadding? lolwtf.
payload.extend(struct.pack('H', argDict['len']))
payload.extend(struct.pack('H', argDict['startcode']))
return payload
+def composeSynchPacket():
+ header = bytearray()
+ header.extend(struct.pack('L', MAGIC))
+ header.extend(struct.pack('H', VERSION))
+ header.extend(struct.pack('H', 0x0109))
+ header.extend(struct.pack('L', 0))
+ header.extend(struct.pack('L', 0))
+ return header
+
def portOutPacket(payloadArgs):
packet = bytearray()
packet.extend(portOut())