diff options
Diffstat (limited to 'drivers/avr/ws2812.c')
-rw-r--r-- | drivers/avr/ws2812.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/avr/ws2812.c b/drivers/avr/ws2812.c index 5bd837ec7..b3ed4fd0b 100644 --- a/drivers/avr/ws2812.c +++ b/drivers/avr/ws2812.c | |||
@@ -27,6 +27,12 @@ | |||
27 | #include <util/delay.h> | 27 | #include <util/delay.h> |
28 | #include "debug.h" | 28 | #include "debug.h" |
29 | 29 | ||
30 | #if !defined(LED_ARRAY) && defined(RGB_MATRIX_ENABLE) | ||
31 | // LED color buffer | ||
32 | LED_TYPE led[DRIVER_LED_TOTAL]; | ||
33 | #define LED_ARRAY led | ||
34 | #endif | ||
35 | |||
30 | #ifdef RGBW_BB_TWI | 36 | #ifdef RGBW_BB_TWI |
31 | 37 | ||
32 | // Port for the I2C | 38 | // Port for the I2C |
@@ -141,6 +147,25 @@ unsigned char I2C_Write(unsigned char c) | |||
141 | 147 | ||
142 | #endif | 148 | #endif |
143 | 149 | ||
150 | #ifdef RGB_MATRIX_ENABLE | ||
151 | // Set an led in the buffer to a color | ||
152 | void inline ws2812_setled(int i, uint8_t r, uint8_t g, uint8_t b) | ||
153 | { | ||
154 | led[i].r = r; | ||
155 | led[i].g = g; | ||
156 | led[i].b = b; | ||
157 | } | ||
158 | |||
159 | void ws2812_setled_all (uint8_t r, uint8_t g, uint8_t b) | ||
160 | { | ||
161 | for (int i = 0; i < RGBLED_NUM; i++) { | ||
162 | led[i].r = r; | ||
163 | led[i].g = g; | ||
164 | led[i].b = b; | ||
165 | } | ||
166 | } | ||
167 | #endif | ||
168 | |||
144 | // Setleds for standard RGB | 169 | // Setleds for standard RGB |
145 | void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) | 170 | void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) |
146 | { | 171 | { |