pull/12/merge
Sandro Bauer 8 months ago committed by GitHub
commit 8b7b7b2745
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 48
      lednamebadge.py

@ -292,7 +292,7 @@ class SimpleTextAndIcons:
0b10011001, # 0x99
0b01000010, # 0x42
0b00111100, # 0x3c
0b00000000 # 0x00
0b00000000, # 0x00
)), 1, '\x1d'),
'happy2': (array('B', (0x00, 0x08, 0x14, 0x08, 0x01, 0x00, 0x00, 0x61, 0x30, 0x1c, 0x07,
0x00, 0x20, 0x50, 0x20, 0x00, 0x80, 0x80, 0x86, 0x0c, 0x38, 0xe0)), 2, '\x1c'),
@ -401,7 +401,7 @@ class SimpleTextAndIcons:
if im.height != 11:
sys.exit("%s: image height must be 11px. Seen %d" % (file, im.height))
buf = array('B')
cols = int((im.width + 7) / 8)
cols = (im.width + 7) // 8
for col in range(cols):
for row in range(11): # [0..10]
byte_val = 0
@ -411,7 +411,7 @@ class SimpleTextAndIcons:
if x < im.width and row < im.height:
pixel_color = im.getpixel((x, row))
if isinstance(pixel_color, tuple):
monochrome_color = sum(pixel_color[:3]) / len(pixel_color[:3])
monochrome_color = sum(pixel_color[:3]) // len(pixel_color[:3])
elif isinstance(pixel_color, int):
monochrome_color = pixel_color
else:
@ -580,7 +580,8 @@ class WriteLibUsb(WriteMethod):
WriteMethod.__init__(self)
self.description = None
self.dev = None
self.endpoint = None
self.endpoint_out = None
self.endpoint_in = None
def get_name(self):
return 'libusb'
@ -591,7 +592,8 @@ class WriteLibUsb(WriteMethod):
def _open(self, device_id):
self.description = self.devices[device_id][0]
self.dev = self.devices[device_id][1]
self.endpoint = self.devices[device_id][2]
self.endpoint_out = self.devices[device_id][2]
self.endpoint_in = self.devices[device_id][3]
print("Libusb device initialized")
return True
@ -601,7 +603,8 @@ class WriteLibUsb(WriteMethod):
WriteLibUsb.usb.util.dispose_resources(self.dev)
self.description = None
self.dev = None
self.endpoint = None
self.endpoint_out = None
self.endpoint_in = None
def _get_available_devices(self):
devs = WriteLibUsb.usb.core.find(idVendor=0x0416, idProduct=0x5020, find_all=True)
@ -625,12 +628,20 @@ class WriteLibUsb(WriteMethod):
eps = WriteLibUsb.usb.util.find_descriptor(
cfg,
find_all=True,
custom_match=lambda e: WriteLibUsb.usb.util.endpoint_direction(e.bEndpointAddress) == WriteLibUsb.usb.util.ENDPOINT_OUT)
)
ep_in = None
ep_out = None
for ep in eps:
did = "%d:%d:%d" % (d.bus, d.address, ep.bEndpointAddress)
descr = ("%s - %s (bus=%d dev=%d endpoint=%d)" %
(d.manufacturer, d.product, d.bus, d.address, ep.bEndpointAddress))
devices[did] = (descr, d, ep)
if WriteLibUsb.usb.util.endpoint_direction(ep.bEndpointAddress) == WriteLibUsb.usb.util.ENDPOINT_OUT:
ep_out = ep
if WriteLibUsb.usb.util.endpoint_direction(ep.bEndpointAddress) == WriteLibUsb.usb.util.ENDPOINT_IN:
ep_in = ep
assert ep_in and ep_out
did = "%d:%d:%d:%d" % (d.bus, d.address, ep_out.bEndpointAddress, ep_in.bEndpointAddress)
descr = ("%s - %s (bus=%d dev=%d endpoint_out=%d endpoint_in=%d)" %
(d.manufacturer, d.product, d.bus, d.address, ep_out.bEndpointAddress, ep_in.bEndpointAddress))
devices[did] = (descr, d, ep_out, ep_in)
return devices
def is_ready(self):
@ -661,7 +672,8 @@ class WriteLibUsb(WriteMethod):
print("Write using %s via libusb" % (self.description,))
for i in range(int(len(buf) / 64)):
time.sleep(0.1)
self.endpoint.write(buf[i * 64:i * 64 + 64])
self.endpoint_out.write(buf[i * 64:i * 64 + 64])
self.endpoint_in.read(64)
class WriteUsbHidApi(WriteMethod):
@ -779,7 +791,7 @@ class WriteSerial(WriteMethod):
devices = {}
for port, desc, hwid in ports:
if desc == "n/a":
if desc == "n/a":
continue
devices[port] = (f"{desc} ({hwid})", port)
return devices
@ -1129,20 +1141,20 @@ def main():
parser.add_argument('message', metavar='MESSAGE', nargs='+',
help="Up to 8 message texts with embedded builtin icons or loaded images within colons(:) -- See -l for a list of builtins.")
parser.add_argument('--mode-help', action='version', help=argparse.SUPPRESS, version="""
-m 5 "Animation"
Animation frames are 6 character (or 48px) wide. Upload an animation of
N frames as one image N*48 pixels wide, 11 pixels high.
Frames run from left to right and repeat endless.
Speeds [1..8] result in ca. [1.2 1.3 2.0 2.4 2.8 4.5 7.5 15] fps.
Example of a slowly beating heart:
sudo %s -s1 -m5 " :heart2: :HEART2:"
-m 9 "Smooth"
-m 10 "Rotate"
These modes are mentioned in the BMP Badge software.
Text is shown static, or sometimes (longer texts?) not shown at all.
One significant difference is: The text of the first message stays visible after

Loading…
Cancel
Save