diff options
Diffstat (limited to 'include/drv/ws2812b.h')
-rw-r--r-- | include/drv/ws2812b.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/drv/ws2812b.h b/include/drv/ws2812b.h index 39f2794..49337ed 100644 --- a/include/drv/ws2812b.h +++ b/include/drv/ws2812b.h @@ -13,7 +13,10 @@ typedef struct { } ws2812b_rgb_t; typedef struct { - uint8_t* buf_; /* Buffer to hold the value to spi. */ + /* Double-buffering strategy for speed-up. */ + uint8_t* buf_1; + uint8_t* buf_2; + uint8_t* buf_; /* Points to either buf_1 or buf_2 */ uint32_t n_rgb; /* Number of rgb values which exist. */ ws2812b_rgb_t rgb[]; /* Colors to write. */ @@ -24,9 +27,11 @@ typedef struct WS2812B ws2812b_t; ws2812b_buffer_t* ws2812b_new_buffer(uint32_t size); +esp_err_t ws2812b_wait(ws2812b_t* drv); + ws2812b_t* ws2812b_init(spi_device_handle_t spi); -esp_err_t ws2812b_write_sync(ws2812b_t* drv, ws2812b_buffer_t* buffer); +esp_err_t ws2812b_write(ws2812b_t* drv, ws2812b_buffer_t* buffer); static inline void ws2812b_buffer_set_rgb( ws2812b_buffer_t* buf, size_t idx, uint8_t r, uint8_t g, uint8_t b) |