Skip to content

Commit bd39bf3

Browse files
Check to see if neopixel is deinited before writing to it
1 parent eeeef38 commit bd39bf3

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

shared-bindings/neopixel_write/__init__.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,15 @@
2929
#include "py/mphal.h"
3030
#include "py/runtime.h"
3131
#include "shared-bindings/digitalio/DigitalInOut.h"
32+
#include "shared-bindings/util.h"
3233
#include "supervisor/shared/translate.h"
3334

35+
STATIC void check_for_deinit(digitalio_digitalinout_obj_t *self) {
36+
if (common_hal_digitalio_digitalinout_deinited(self)) {
37+
raise_deinited_error();
38+
}
39+
}
40+
3441
//| """Low-level neopixel implementation
3542
//|
3643
//| The `neopixel_write` module contains a helper method to write out bytes in
@@ -60,8 +67,13 @@ STATIC mp_obj_t neopixel_write_neopixel_write_(mp_obj_t digitalinout_obj, mp_obj
6067
if (!mp_obj_is_type(digitalinout_obj, &digitalio_digitalinout_type)) {
6168
mp_raise_TypeError_varg(translate("Expected a %q"), digitalio_digitalinout_type.name);
6269
}
70+
6371
// Convert parameters into expected types.
6472
const digitalio_digitalinout_obj_t *digitalinout = MP_OBJ_TO_PTR(digitalinout_obj);
73+
74+
// Check to see if the NeoPixel has been deinited before writing to it.
75+
check_for_deinit(digitalinout_obj);
76+
6577
mp_buffer_info_t bufinfo;
6678
mp_get_buffer_raise(buf, &bufinfo, MP_BUFFER_READ);
6779
// Call platform's neopixel write function with provided buffer and options.

0 commit comments

Comments
 (0)