Prettified the python side of things a bit
This commit is contained in:
parent
582e6d7786
commit
75d4d0f3df
1 changed files with 25 additions and 18 deletions
43
fw/test.py
43
fw/test.py
|
|
@ -50,6 +50,28 @@ def unstuff(data):
|
|||
def receive_frame(ser):
|
||||
return unstuff(read_frame(ser))
|
||||
|
||||
def send_framebuffer(ser, mac, frame):
|
||||
formatted = format_packet(frame)
|
||||
mac_packet = struct.pack('<I', mac)
|
||||
framed = frame_packet(mac_packet) + frame_packet(formatted[:162]) + frame_packet(formatted[162:])
|
||||
ser.write(framed)
|
||||
|
||||
def discover_macs(ser, count=20):
|
||||
found_macs = []
|
||||
while True:
|
||||
ser.write(b'\0')
|
||||
frame = receive_frame(ser)
|
||||
if len(frame) == 4:
|
||||
mac, = struct.unpack('<I', frame)
|
||||
if mac not in found_macs:
|
||||
print('Discovered new MAC: {:2} {:08x}'.format(len(found_macs), mac))
|
||||
found_macs.append(mac)
|
||||
if len(found_macs) == count:
|
||||
return found_macs
|
||||
elif len(frame) != 0:
|
||||
print('Invalid frame of length {}:'.format(len(frame)), frame)
|
||||
time.sleep(0.05)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
import time
|
||||
|
|
@ -72,27 +94,12 @@ if __name__ == '__main__':
|
|||
|
||||
#frames = [red, black]*5
|
||||
#frames = [ x for l in [[([0]*i+[255]+[0]*(7-i))*32]*2 for i in range(8)] for x in l ]
|
||||
found_macs = set()
|
||||
while True:
|
||||
ser.write(b'\0')
|
||||
frame = receive_frame(ser)
|
||||
if len(frame) == 4:
|
||||
mac, = struct.unpack('<I', frame)
|
||||
if mac not in found_macs:
|
||||
found_macs.add(mac)
|
||||
print('Discovered new MAC: {:08x}'.format(mac))
|
||||
break
|
||||
elif len(frame) != 0:
|
||||
print('Invalid frame of length {}:'.format(len(frame)), frame)
|
||||
time.sleep(0.05)
|
||||
found_macs = discover_macs(ser, 1)
|
||||
|
||||
while True:
|
||||
for i, frame in enumerate(frames):
|
||||
formatted = format_packet(frame)
|
||||
mac, = found_macs
|
||||
mac_packet = struct.pack('<I', mac)
|
||||
framed = frame_packet(mac_packet) + frame_packet(formatted[:162]) + frame_packet(formatted[162:])
|
||||
print('sending', i, len(frame), len(formatted), len(framed))
|
||||
ser.write(framed)
|
||||
send_framebuffer(ser, mac, frame)
|
||||
print('sending', i, len(frame))
|
||||
time.sleep(0.02)
|
||||
# to produce framing errors: ser.write(b'\02a\0')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue