diff options
author | Ryan <fauxpark@gmail.com> | 2023-03-30 12:21:02 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-30 12:21:02 +1100 |
commit | 647c2835e65995339fb9380830c53725a62f6299 (patch) | |
tree | 8e5b96ea65f2a4c5e0990ac09dfc7f019ac1b90e /keyboards/oddforge/vea/ws2812_custom.c | |
parent | 7e1e662dc704736b88cc4a7487457638b72f54e8 (diff) |
WS2812 driver improvements (#20262)
Diffstat (limited to 'keyboards/oddforge/vea/ws2812_custom.c')
-rw-r--r-- | keyboards/oddforge/vea/ws2812_custom.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/keyboards/oddforge/vea/ws2812_custom.c b/keyboards/oddforge/vea/ws2812_custom.c new file mode 100644 index 0000000000..0dc5a2d0f1 --- /dev/null +++ b/keyboards/oddforge/vea/ws2812_custom.c @@ -0,0 +1,34 @@ +#include "ws2812.h" +#include "i2c_master.h" + +#ifdef RGBW +# error "RGBW not supported" +#endif + +#ifndef WS2812_I2C_ADDRESS +# define WS2812_I2C_ADDRESS 0xB0 +#endif + +#ifndef WS2812_I2C_ADDRESS_RIGHT +# define WS2812_I2C_ADDRESS_RIGHT 0xB8 +#endif + +#ifndef WS2812_I2C_TIMEOUT +# define WS2812_I2C_TIMEOUT 100 +#endif + +void ws2812_init(void) { + i2c_init(); +} + +// Setleds for standard RGB +void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { + static bool s_init = false; + if (!s_init) { + ws2812_init(); + s_init = true; + } + + i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * (leds >> 1), WS2812_I2C_TIMEOUT); + i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(LED_TYPE) * (leds >> 1)), sizeof(LED_TYPE) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT); +} |