summaryrefslogtreecommitdiff
path: root/esp8266/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'esp8266/scripts')
-rw-r--r--esp8266/scripts/apa102.py27
-rw-r--r--esp8266/scripts/neopixel.py27
-rw-r--r--esp8266/scripts/port_diag.py4
3 files changed, 24 insertions, 34 deletions
diff --git a/esp8266/scripts/apa102.py b/esp8266/scripts/apa102.py
index 126448cc2..41b7c0485 100644
--- a/esp8266/scripts/apa102.py
+++ b/esp8266/scripts/apa102.py
@@ -2,27 +2,16 @@
# MIT license; Copyright (c) 2016 Robert Foss, Daniel Busch
from esp import apa102_write
+from neopixel import NeoPixel
-class APA102:
- def __init__(self, clock_pin, data_pin, n):
- self.clock_pin = clock_pin
- self.data_pin = data_pin
- self.n = n
- self.buf = bytearray(n * 4)
-
- self.clock_pin.init(clock_pin.OUT)
- self.data_pin.init(data_pin.OUT)
- def __setitem__(self, index, val):
- r, g, b, brightness = val
- self.buf[index * 4] = r
- self.buf[index * 4 + 1] = g
- self.buf[index * 4 + 2] = b
- self.buf[index * 4 + 3] = brightness
+class APA102(NeoPixel):
+ ORDER = (0, 1, 2, 3)
- def __getitem__(self, index):
- i = index * 4
- return self.buf[i], self.buf[i + 1], self.buf[i + 2], self.buf[i + 3]
+ def __init__(self, clock_pin, data_pin, n, bpp=4):
+ super().__init__(data_pin, n, bpp)
+ self.clock_pin = clock_pin
+ self.clock_pin.init(clock_pin.OUT)
def write(self):
- apa102_write(self.clock_pin, self.data_pin, self.buf)
+ apa102_write(self.clock_pin, self.pin, self.buf)
diff --git a/esp8266/scripts/neopixel.py b/esp8266/scripts/neopixel.py
index 8aa034868..b13424d7d 100644
--- a/esp8266/scripts/neopixel.py
+++ b/esp8266/scripts/neopixel.py
@@ -3,29 +3,30 @@
from esp import neopixel_write
+
class NeoPixel:
- def __init__(self, pin, n):
+ ORDER = (1, 0, 2, 3)
+
+ def __init__(self, pin, n, bpp=3):
self.pin = pin
self.n = n
- self.buf = bytearray(n * 3)
+ self.bpp = bpp
+ self.buf = bytearray(n * bpp)
self.pin.init(pin.OUT)
def __setitem__(self, index, val):
- r, g, b = val
- self.buf[index * 3] = g
- self.buf[index * 3 + 1] = r
- self.buf[index * 3 + 2] = b
+ offset = index * self.bpp
+ for i in range(self.bpp):
+ self.buf[offset + self.ORDER[i]] = val[i]
def __getitem__(self, index):
- i = index * 3
- return self.buf[i + 1], self.buf[i], self.buf[i + 2]
+ offset = index * self.bpp
+ return tuple(self.buf[offset + self.ORDER[i]]
+ for i in range(self.bpp))
def fill(self, color):
- r, g, b = color
- for i in range(len(self.buf) / 3):
- self.buf[i * 3] = g
- self.buf[i * 3 + 1] = r
- self.buf[i * 3 + 2] = b
+ for i in range(self.n):
+ self[i] = color
def write(self):
neopixel_write(self.pin, self.buf, True)
diff --git a/esp8266/scripts/port_diag.py b/esp8266/scripts/port_diag.py
index f2abd8066..ef8800355 100644
--- a/esp8266/scripts/port_diag.py
+++ b/esp8266/scripts/port_diag.py
@@ -24,8 +24,8 @@ def main():
print("STA ifconfig:", network.WLAN(network.STA_IF).ifconfig())
print("AP ifconfig:", network.WLAN(network.AP_IF).ifconfig())
print("Free WiFi driver buffers of type:")
- for i in range(5):
- print("%d: %d" % (i, esp.esf_free_bufs(i)))
+ for i, comm in enumerate(("1,2 TX", "4 Mngmt TX(len: 0x41-0x100)", "5 Mngmt TX (len: 0-0x40)", "7", "8 RX")):
+ print("%d: %d (%s)" % (i, esp.esf_free_bufs(i), comm))
print("lwIP PCBs:")
lwip.print_pcbs()