summaryrefslogtreecommitdiffstatshomepage
path: root/drivers/neopixel/neopixel.py
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2021-11-18 00:10:49 +1100
committerDamien George <damien@micropython.org>2021-11-19 15:37:06 +1100
commit841eeb158e1d43ba34e4ee629143e10a2c4505ff (patch)
treeabaa74dd349e46ee584206690983d03b91feb8f7 /drivers/neopixel/neopixel.py
parent172a031dff5b767be0accc9ae4810c1f897d3dde (diff)
downloadmicropython-841eeb158e1d43ba34e4ee629143e10a2c4505ff.tar.gz
micropython-841eeb158e1d43ba34e4ee629143e10a2c4505ff.zip
drivers/neopixel: Avoid heap alloc in fill().
Previously the use of `range(start,stop,step)` caused an allocation. Replace with while loop. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'drivers/neopixel/neopixel.py')
-rw-r--r--drivers/neopixel/neopixel.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/neopixel/neopixel.py b/drivers/neopixel/neopixel.py
index 0032d36183..caa12dc845 100644
--- a/drivers/neopixel/neopixel.py
+++ b/drivers/neopixel/neopixel.py
@@ -36,10 +36,14 @@ class NeoPixel:
def fill(self, v):
b = self.buf
- for i in range(self.bpp):
+ l = len(self.buf)
+ bpp = self.bpp
+ for i in range(bpp):
c = v[i]
- for j in range(self.ORDER[i], len(self.buf), self.bpp):
+ j = self.ORDER[i]
+ while j < l:
b[j] = c
+ j += bpp
def write(self):
# BITSTREAM_TYPE_HIGH_LOW = 0