Rework RGBLight driver system (#22529)
This commit is contained in:
		
							parent
							
								
									2acb426b8e
								
							
						
					
					
						commit
						17f36a21bf
					
				
					 35 changed files with 125 additions and 87 deletions
				
			
		| 
						 | 
				
			
			@ -20,6 +20,7 @@
 | 
			
		|||
#include "quantum.h"
 | 
			
		||||
#include "i2c_master.h"
 | 
			
		||||
#include "drivers/led/issi/is31fl3731.h"
 | 
			
		||||
#include "ws2812.h"
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    SELF_TESTING,
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +337,7 @@ void housekeeping_task_kb(void)
 | 
			
		|||
    housekeeping_task_user();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
			
		||||
void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
 | 
			
		||||
{
 | 
			
		||||
    if (rgb_state.state != NORMAL) return;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -353,6 +354,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
			
		|||
    ws2812_setleds(leds, 4);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const rgblight_driver_t rgblight_driver = {
 | 
			
		||||
    .setleds = setleds_custom,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool led_update_kb(led_t led_state)
 | 
			
		||||
{
 | 
			
		||||
    bool res = led_update_user(led_state);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@
 | 
			
		|||
        "saturation_steps": 8,
 | 
			
		||||
        "brightness_steps": 8,
 | 
			
		||||
        "led_count": 68,
 | 
			
		||||
        "driver": "custom",
 | 
			
		||||
        "animations": {
 | 
			
		||||
            "breathing": true,
 | 
			
		||||
            "rainbow_mood": true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,4 +12,5 @@ RGBLIGHT_ENABLE = yes		# Enable keyboard RGB underglow
 | 
			
		|||
NO_USB_STARTUP_CHECK = yes
 | 
			
		||||
 | 
			
		||||
QUANTUM_LIB_SRC += drivers/led/issi/is31fl3731.c
 | 
			
		||||
WS2812_DRIVER_REQUIRED = yes
 | 
			
		||||
I2C_DRIVER_REQUIRED = yes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
        "saturation_steps": 8,
 | 
			
		||||
        "brightness_steps": 8,
 | 
			
		||||
        "led_count": 65,
 | 
			
		||||
        "driver": "custom",
 | 
			
		||||
        "max_brightness": 192,
 | 
			
		||||
        "animations": {
 | 
			
		||||
            "breathing": true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@
 | 
			
		|||
#include "quantum.h"
 | 
			
		||||
#include "i2c_master.h"
 | 
			
		||||
#include "drivers/led/issi/is31fl3731.h"
 | 
			
		||||
#include "ws2812.h"
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    SELF_TESTING,
 | 
			
		||||
| 
						 | 
				
			
			@ -338,7 +339,7 @@ void housekeeping_task_kb(void)
 | 
			
		|||
    housekeeping_task_user();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
			
		||||
void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
 | 
			
		||||
{
 | 
			
		||||
    if (rgb_state.state != NORMAL) return;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -348,6 +349,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
			
		|||
    ws2812_setleds(start_led+IS31FL3731_LED_COUNT, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const rgblight_driver_t rgblight_driver = {
 | 
			
		||||
    .setleds = setleds_custom,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool led_update_kb(led_t led_state)
 | 
			
		||||
{
 | 
			
		||||
    bool res = led_update_user(led_state);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,4 +11,5 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 | 
			
		|||
RGBLIGHT_ENABLE = yes		# Enable keyboard RGB underglow
 | 
			
		||||
 | 
			
		||||
QUANTUM_LIB_SRC += drivers/led/issi/is31fl3731.c
 | 
			
		||||
WS2812_DRIVER_REQUIRED = yes
 | 
			
		||||
I2C_DRIVER_REQUIRED = yes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,8 @@
 | 
			
		|||
        "pin": "B0"
 | 
			
		||||
    },
 | 
			
		||||
    "rgblight": {
 | 
			
		||||
        "led_count": 5
 | 
			
		||||
        "led_count": 5,
 | 
			
		||||
        "driver": "custom"
 | 
			
		||||
    },
 | 
			
		||||
    "url": "",
 | 
			
		||||
    "usb": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
#include "ws2812.h"
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
static bool alert = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +67,7 @@ void housekeeping_task_kb(void)
 | 
			
		|||
    housekeeping_task_user();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
			
		||||
void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
 | 
			
		||||
{
 | 
			
		||||
    start_led[2].r = start_led[0].r;
 | 
			
		||||
    start_led[2].g = start_led[0].g;
 | 
			
		||||
| 
						 | 
				
			
			@ -82,4 +83,7 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
			
		|||
    ws2812_setleds(start_led, RGBLED_NUM);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const rgblight_driver_t rgblight_driver = {
 | 
			
		||||
    .setleds = setleds_custom,
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
# This file intentionally left blank
 | 
			
		||||
WS2812_DRIVER_REQUIRED = yes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue