X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/21c589ac6db8fc9acd3f90aebfada5bd8956dcb7..6245fc91a42d1833ab9351e2764805cf09fe1b19:/src/adafruit_blinka/microcontroller/pico_u2if/pico_u2if.py diff --git a/src/adafruit_blinka/microcontroller/pico_u2if/pico_u2if.py b/src/adafruit_blinka/microcontroller/pico_u2if/pico_u2if.py index 95cd757..687bfc0 100644 --- a/src/adafruit_blinka/microcontroller/pico_u2if/pico_u2if.py +++ b/src/adafruit_blinka/microcontroller/pico_u2if/pico_u2if.py @@ -393,6 +393,8 @@ class Pico_u2if: raise RuntimeError("Neopixel init error") self._neopixel_initialized = True + self._serial.reset_output_buffer() + # write # command is done over HID remain_bytes = len(buf) @@ -407,14 +409,24 @@ class Pico_u2if: "Neopixel write error : too many pixel for the firmware." ) elif resp[2] == 0x02: + print(resp[0:10]) raise RuntimeError( "Neopixel write error : transfer already in progress." ) else: - raise RuntimeError("Neopixel write error") + raise RuntimeError("Neopixel write error.") # buffer is sent over serial self._serial.write(buf) + # hack (see u2if) + if len(buf) % 64 == 0: + self._serial.write([0]) self._serial.flush() + # polling loop to wait for write complete? + resp = self._hid.read(64) + while resp[0] != self.WS2812B_WRITE: + resp = self._hid.read(64) + if resp[1] != self.RESP_OK: + raise RuntimeError("Neopixel write (flush) error.") # ---------------------------------------------------------------- # PWM