diff options
| -rw-r--r-- | drivers/avr/ws2812.c | 33 | ||||
| -rw-r--r-- | drivers/avr/ws2812.h | 35 | ||||
| -rw-r--r-- | quantum/rgb_matrix_drivers.c | 22 | 
3 files changed, 29 insertions, 61 deletions
| diff --git a/drivers/avr/ws2812.c b/drivers/avr/ws2812.c index 0a02c6f7fd..5c733c4ab0 100644 --- a/drivers/avr/ws2812.c +++ b/drivers/avr/ws2812.c @@ -25,13 +25,17 @@  #include <avr/interrupt.h>  #include <avr/io.h>  #include <util/delay.h> -#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 +/* + * Forward declare internal functions + * + * The functions take a byte-array and send to the data output as WS2812 bitstream. + * The length is the number of bytes to send - three per LED. + */ + +void ws2812_sendarray(uint8_t *array, uint16_t length); +void ws2812_sendarray_mask(uint8_t *array, uint16_t length, uint8_t pinmask); +  #ifdef RGBW_BB_TWI @@ -135,23 +139,6 @@ 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) {      // ws2812_setleds_pin(ledarray,leds, _BV(ws2812_pin)); diff --git a/drivers/avr/ws2812.h b/drivers/avr/ws2812.h index a9dd897185..9652b94bbe 100644 --- a/drivers/avr/ws2812.h +++ b/drivers/avr/ws2812.h @@ -20,13 +20,7 @@   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */ -#ifndef LIGHT_WS2812_H_ -#define LIGHT_WS2812_H_ - -#include <avr/io.h> -#include <avr/interrupt.h> -//#include "ws2812_config.h" -//#include "i2cmaster.h" +#pragma once  #include "quantum/color.h" @@ -42,33 +36,6 @@   *         - Send out the LED data   *         - Wait 50�s to reset the LEDs   */ -#ifdef RGB_MATRIX_ENABLE -void ws2812_setled(int index, uint8_t r, uint8_t g, uint8_t b); -void ws2812_setled_all(uint8_t r, uint8_t g, uint8_t b); -#endif -  void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);  void ws2812_setleds_pin(LED_TYPE *ledarray, uint16_t number_of_leds, uint8_t pinmask);  void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds); - -/* - * Old interface / Internal functions - * - * The functions take a byte-array and send to the data output as WS2812 bitstream. - * The length is the number of bytes to send - three per LED. - */ - -void ws2812_sendarray(uint8_t *array, uint16_t length); -void ws2812_sendarray_mask(uint8_t *array, uint16_t length, uint8_t pinmask); - -/* - * Internal defines - */ -#ifndef CONCAT -#    define CONCAT(a, b) a##b -#endif -#ifndef CONCAT_EXP -#    define CONCAT_EXP(a, b) CONCAT(a, b) -#endif - -#endif /* LIGHT_WS2812_H_ */ diff --git a/quantum/rgb_matrix_drivers.c b/quantum/rgb_matrix_drivers.c index 5b54bd5956..503f97014f 100644 --- a/quantum/rgb_matrix_drivers.c +++ b/quantum/rgb_matrix_drivers.c @@ -97,19 +97,33 @@ const rgb_matrix_driver_t rgb_matrix_driver = {  #elif defined(WS2812) -extern LED_TYPE led[DRIVER_LED_TOTAL]; +// LED color buffer +LED_TYPE led[DRIVER_LED_TOTAL]; + +static void init(void) {}  static void flush(void) {      // Assumes use of RGB_DI_PIN      ws2812_setleds(led, DRIVER_LED_TOTAL);  } -static void init(void) {} +// Set an led in the buffer to a color +static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) { +    led[i].r = r; +    led[i].g = g; +    led[i].b = b; +} + +static void setled_all(uint8_t r, uint8_t g, uint8_t b) { +    for (int i = 0; i < sizeof(led) / sizeof(led[0]); i++) { +        setled(i, r, g, b); +    } +}  const rgb_matrix_driver_t rgb_matrix_driver = {      .init          = init,      .flush         = flush, -    .set_color     = ws2812_setled, -    .set_color_all = ws2812_setled_all, +    .set_color     = setled, +    .set_color_all = setled_all,  };  #endif | 
