X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=drivers%2Favr%2Fws2812.c;h=7c3cb5174df0a86af17a4fb2a70b856c06bc344b;hb=8b58c67bbb2e7eddd679a7944effef7e91aa2347;hp=59e032bf71c96a4a653764d98d67acc954a5ded3;hpb=55ed97af1e2fb183d2b6c34bc8659a03cbda090c;p=qmk_firmware.git diff --git a/drivers/avr/ws2812.c b/drivers/avr/ws2812.c index 59e032bf7..7c3cb5174 100644 --- a/drivers/avr/ws2812.c +++ b/drivers/avr/ws2812.c @@ -27,6 +27,12 @@ #include #include "debug.h" +#if !defined(LED_ARRAY) && defined(RGB_MATRIX_ENABLE) +// LED color buffer +LED_TYPE led[DRIVER_LED_TOTAL]; + #define LED_ARRAY led +#endif + #ifdef RGBW_BB_TWI // Port for the I2C @@ -128,11 +134,11 @@ unsigned char I2C_Write(unsigned char c) c <<= 1; } - + I2C_WriteBit(0); _delay_us(I2C_DELAY); _delay_us(I2C_DELAY); - + // _delay_us(I2C_DELAY); //return I2C_ReadBit(); return 0; @@ -141,6 +147,25 @@ unsigned char I2C_Write(unsigned char c) #endif +#ifdef RGB_MATRIX_ENABLE +// Set an led in the buffer to a color +void inline ws2812_setled(int i, uint8_t r, uint8_t g, uint8_t b) +{ + led[i].r = r; + led[i].g = g; + led[i].b = b; +} + +void ws2812_setled_all (uint8_t r, uint8_t g, uint8_t b) +{ + for (int i = 0; i < sizeof(led)/sizeof(led[0]); i++) { + led[i].r = r; + led[i].g = g; + led[i].b = b; + } +} +#endif + // Setleds for standard RGB void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {