forked from mirrors/qmk_userspace
		
	Clean up RGB LED type (#21859)
This commit is contained in:
		
					parent
					
						
							
								1e3095f9cc
							
						
					
				
			
			
				commit
				
					
						41bd4e35a0
					
				
			
		
					 63 changed files with 222 additions and 243 deletions
				
			
		| 
						 | 
					@ -370,9 +370,9 @@ If you need to change your RGB lighting in code, for example in a macro to chang
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example:
 | 
					Example:
 | 
				
			||||||
```c
 | 
					```c
 | 
				
			||||||
sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); // led 0
 | 
					sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); // led 0
 | 
				
			||||||
sethsv(HSV_RED,   (LED_TYPE *)&led[1]); // led 1
 | 
					sethsv(HSV_RED,   (rgb_led_t *)&led[1]); // led 1
 | 
				
			||||||
sethsv(HSV_GREEN, (LED_TYPE *)&led[2]); // led 2
 | 
					sethsv(HSV_GREEN, (rgb_led_t *)&led[2]); // led 2
 | 
				
			||||||
rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly.
 | 
					rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly.
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,18 +61,18 @@ void static apa102_end_frame(uint16_t num_leds);
 | 
				
			||||||
void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness);
 | 
					void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness);
 | 
				
			||||||
void static apa102_send_byte(uint8_t byte);
 | 
					void static apa102_send_byte(uint8_t byte);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) {
 | 
					void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
 | 
				
			||||||
    LED_TYPE *end = start_led + num_leds;
 | 
					    rgb_led_t *end = start_led + num_leds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    apa102_start_frame();
 | 
					    apa102_start_frame();
 | 
				
			||||||
    for (LED_TYPE *led = start_led; led < end; led++) {
 | 
					    for (rgb_led_t *led = start_led; led < end; led++) {
 | 
				
			||||||
        apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
 | 
					        apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    apa102_end_frame(num_leds);
 | 
					    apa102_end_frame(num_leds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Overwrite the default rgblight_call_driver to use apa102 driver
 | 
					// Overwrite the default rgblight_call_driver to use apa102 driver
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
 | 
				
			||||||
    apa102_setleds(start_led, num_leds);
 | 
					    apa102_setleds(start_led, num_leds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,5 +37,5 @@ extern uint8_t apa102_led_brightness;
 | 
				
			||||||
 *         - Set the data-out pin as output
 | 
					 *         - Set the data-out pin as output
 | 
				
			||||||
 *         - Send out the LED data
 | 
					 *         - Send out the LED data
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds);
 | 
					void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds);
 | 
				
			||||||
void apa102_set_brightness(uint8_t brightness);
 | 
					void apa102_set_brightness(uint8_t brightness);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,4 +73,4 @@
 | 
				
			||||||
 *         - Send out the LED data
 | 
					 *         - Send out the LED data
 | 
				
			||||||
 *         - Wait 50us to reset the LEDs
 | 
					 *         - Wait 50us to reset the LEDs
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
 | 
					void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
#include "color.h"
 | 
					#include "color.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void rgblite_setrgb(RGB rgb) {
 | 
					static inline void rgblite_setrgb(RGB rgb) {
 | 
				
			||||||
    LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
 | 
					    rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
 | 
				
			||||||
    ws2812_setleds(leds, RGBLED_NUM);
 | 
					    ws2812_setleds(leds, RGBLED_NUM);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
#include "color.h"
 | 
					#include "color.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void rgblite_setrgb(RGB rgb) {
 | 
					static inline void rgblite_setrgb(RGB rgb) {
 | 
				
			||||||
    LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
 | 
					    rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
 | 
				
			||||||
    ws2812_setleds(leds, RGBLED_NUM);
 | 
					    ws2812_setleds(leds, RGBLED_NUM);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -85,7 +85,7 @@ uint8_t remap[16] = {
 | 
				
			||||||
void refresh_leds(void) {
 | 
					void refresh_leds(void) {
 | 
				
			||||||
    for (uint8_t index = 0; index < 16; ++index) {
 | 
					    for (uint8_t index = 0; index < 16; ++index) {
 | 
				
			||||||
        uint8_t tile = tiles[index];
 | 
					        uint8_t tile = tiles[index];
 | 
				
			||||||
        setrgb(r[tile], g[tile], b[tile], (LED_TYPE *)&led[remap[index]]);
 | 
					        setrgb(r[tile], g[tile], b[tile], (rgb_led_t *)&led[remap[index]]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -341,10 +341,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
    //キー毎に時間差で色が変化していく
 | 
					    //キー毎に時間差で色が変化していく
 | 
				
			||||||
    if (aqours_next_color_timer_count % NEXT_CHANGE_TARGET_TIME == 0) {
 | 
					    if (aqours_next_color_timer_count % NEXT_CHANGE_TARGET_TIME == 0) {
 | 
				
			||||||
      if (target_col < MATRIX_COLS) {
 | 
					      if (target_col < MATRIX_COLS) {
 | 
				
			||||||
        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[target_col]);
 | 
					        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[target_col]);
 | 
				
			||||||
        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[11 - target_col]);
 | 
					        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[11 - target_col]);
 | 
				
			||||||
        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[12 + target_col]);
 | 
					        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[12 + target_col]);
 | 
				
			||||||
        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[23 - target_col]);
 | 
					        sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[23 - target_col]);
 | 
				
			||||||
        target_col++;
 | 
					        target_col++;
 | 
				
			||||||
        rgblight_set();
 | 
					        rgblight_set();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -172,7 +172,7 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val)
 | 
				
			||||||
  uint8_t sat = 255;
 | 
					  uint8_t sat = 255;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (uint8_t i = 0; i < RGBLED_NUM; i++) {
 | 
					  for (uint8_t i = 0; i < RGBLED_NUM; i++) {
 | 
				
			||||||
    sethsv(oct_hues[base_oct], sat, val, (LED_TYPE *)&led[i]);
 | 
					    sethsv(oct_hues[base_oct], sat, val, (rgb_led_t *)&led[i]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct;
 | 
					  uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct;
 | 
				
			||||||
| 
						 | 
					@ -183,11 +183,11 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (uint8_t i = 0; i < 3; i++) {
 | 
					  for (uint8_t i = 0; i < 3; i++) {
 | 
				
			||||||
    sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]);
 | 
					    sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (uint8_t i = 11; i < 14; i++) {
 | 
					  for (uint8_t i = 11; i < 14; i++) {
 | 
				
			||||||
    sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]);
 | 
					    sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rgblight_set();
 | 
					  rgblight_set();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,9 +70,9 @@ void keyboard_post_init_user(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern rgblight_config_t rgblight_config;
 | 
					extern rgblight_config_t rgblight_config;
 | 
				
			||||||
extern void              rgblight_layers_write(void);
 | 
					extern void              rgblight_layers_write(void);
 | 
				
			||||||
extern void              indicator_write(LED_TYPE *start_led, uint8_t num_leds);
 | 
					extern void              indicator_write(rgb_led_t *start_led, uint8_t num_leds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ws2812_setleds(start_led, RGBLED_NUM-RGB_INDICATOR_NUM);
 | 
					    ws2812_setleds(start_led, RGBLED_NUM-RGB_INDICATOR_NUM);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@
 | 
				
			||||||
#define ws2812_setleds_pin indicator_setleds_pin
 | 
					#define ws2812_setleds_pin indicator_setleds_pin
 | 
				
			||||||
#include "ws2812_bitbang.c"
 | 
					#include "ws2812_bitbang.c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void indicator_write(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void indicator_write(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    indicator_setleds(start_led, num_leds);
 | 
					    indicator_setleds(start_led, num_leds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    include "ergodox_ez.h"
 | 
					#    include "ergodox_ez.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) {
 | 
					void rgblight_call_driver(rgb_led_t *led, uint8_t led_num) {
 | 
				
			||||||
    i2c_init();
 | 
					    i2c_init();
 | 
				
			||||||
    i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
 | 
					    i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
 | 
				
			||||||
    int i = 0;
 | 
					    int i = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -154,15 +154,15 @@ int aqours_color_v[] = {255, 255, 255, 255, 255, 255, 200, 255, 255};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void LED_default_set(void) {
 | 
					void LED_default_set(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (LED_TYPE *)&led[0]);
 | 
					  sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (rgb_led_t *)&led[0]);
 | 
				
			||||||
  sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (LED_TYPE *)&led[1]);
 | 
					  sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (rgb_led_t *)&led[1]);
 | 
				
			||||||
  sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (LED_TYPE *)&led[2]);
 | 
					  sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (rgb_led_t *)&led[2]);
 | 
				
			||||||
  sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (LED_TYPE *)&led[3]);
 | 
					  sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (rgb_led_t *)&led[3]);
 | 
				
			||||||
  sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (LED_TYPE *)&led[4]);
 | 
					  sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (rgb_led_t *)&led[4]);
 | 
				
			||||||
  sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (LED_TYPE *)&led[5]);
 | 
					  sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (rgb_led_t *)&led[5]);
 | 
				
			||||||
  sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (LED_TYPE *)&led[6]);
 | 
					  sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (rgb_led_t *)&led[6]);
 | 
				
			||||||
  sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (LED_TYPE *)&led[7]);
 | 
					  sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (rgb_led_t *)&led[7]);
 | 
				
			||||||
  sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (LED_TYPE *)&led[8]);
 | 
					  sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (rgb_led_t *)&led[8]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rgblight_set();
 | 
					  rgblight_set();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -171,7 +171,7 @@ void LED_default_set(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void LED_layer_set(int aqours_index) {
 | 
					void LED_layer_set(int aqours_index) {
 | 
				
			||||||
  for (int c = 0; c < 9; c++) {
 | 
					  for (int c = 0; c < 9; c++) {
 | 
				
			||||||
    sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (LED_TYPE *)&led[c]);
 | 
					    sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (rgb_led_t *)&led[c]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  rgblight_set();
 | 
					  rgblight_set();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
#include "ws2812.h"
 | 
					#include "ws2812.h"
 | 
				
			||||||
#include "rgbsps.h"
 | 
					#include "rgbsps.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cRGB led[RGBSPS_NUM];
 | 
					rgb_led_t led[RGBSPS_NUM];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) {
 | 
					void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) {
 | 
				
			||||||
  led[index].r = r;
 | 
					  led[index].r = r;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,19 +49,19 @@ bool led_update_kb(led_t led_state) {
 | 
				
			||||||
    bool res = led_update_user(led_state);
 | 
					    bool res = led_update_user(led_state);
 | 
				
			||||||
    if (res) {
 | 
					    if (res) {
 | 
				
			||||||
        if (led_state.caps_lock) {
 | 
					        if (led_state.caps_lock) {
 | 
				
			||||||
            sethsv_raw(HSV_CAPS, (LED_TYPE *)&led[0]);
 | 
					            sethsv_raw(HSV_CAPS, (rgb_led_t *)&led[0]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            sethsv(HSV_BLACK, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_BLACK, (rgb_led_t *)&led[0]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (led_state.num_lock) {
 | 
					        if (led_state.num_lock) {
 | 
				
			||||||
            sethsv_raw(HSV_NLCK, (LED_TYPE *)&led[1]);
 | 
					            sethsv_raw(HSV_NLCK, (rgb_led_t *)&led[1]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            sethsv(HSV_BLACK, (LED_TYPE *)&led[1]);
 | 
					            sethsv(HSV_BLACK, (rgb_led_t *)&led[1]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (led_state.scroll_lock) {
 | 
					        if (led_state.scroll_lock) {
 | 
				
			||||||
            sethsv_raw(HSV_SCRL, (LED_TYPE *)&led[2]);
 | 
					            sethsv_raw(HSV_SCRL, (rgb_led_t *)&led[2]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            sethsv(HSV_BLACK, (LED_TYPE *)&led[2]);
 | 
					            sethsv(HSV_BLACK, (rgb_led_t *)&led[2]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        rgblight_set();
 | 
					        rgblight_set();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -83,7 +83,7 @@ void keyboard_post_init_user(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__ ((weak))
 | 
					__attribute__ ((weak))
 | 
				
			||||||
void hbcp_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) {
 | 
					void hbcp_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) {
 | 
				
			||||||
  LED_TYPE tmp_led;
 | 
					  rgb_led_t tmp_led;
 | 
				
			||||||
  sethsv_raw(hue, sat, val, &tmp_led);
 | 
					  sethsv_raw(hue, sat, val, &tmp_led);
 | 
				
			||||||
  for (uint8_t i = start; i < end; i++) {
 | 
					  for (uint8_t i = start; i < end; i++) {
 | 
				
			||||||
      led[i] = tmp_led;
 | 
					      led[i] = tmp_led;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,19 +79,19 @@ void matrix_scan_user(void) {
 | 
				
			||||||
// The first three LEDs are used as indicators for CAPS_LOCK, NUM_LOCK and SCROLL_LOCK.
 | 
					// The first three LEDs are used as indicators for CAPS_LOCK, NUM_LOCK and SCROLL_LOCK.
 | 
				
			||||||
bool led_update_user(led_t led_state) {
 | 
					bool led_update_user(led_t led_state) {
 | 
				
			||||||
    if (led_state.caps_lock) {
 | 
					    if (led_state.caps_lock) {
 | 
				
			||||||
        sethsv_raw(HSV_SOFT_RED, (LED_TYPE *)&led[0]);
 | 
					        sethsv_raw(HSV_SOFT_RED, (rgb_led_t *)&led[0]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        sethsv(HSV_BLACK, (LED_TYPE *)&led[0]);
 | 
					        sethsv(HSV_BLACK, (rgb_led_t *)&led[0]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (led_state.num_lock) {
 | 
					    if (led_state.num_lock) {
 | 
				
			||||||
        sethsv_raw(HSV_WARM_WHITE, (LED_TYPE *)&led[1]);
 | 
					        sethsv_raw(HSV_WARM_WHITE, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        sethsv(HSV_BLACK, (LED_TYPE *)&led[1]);
 | 
					        sethsv(HSV_BLACK, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (led_state.scroll_lock) {
 | 
					    if (led_state.scroll_lock) {
 | 
				
			||||||
        sethsv_raw(HSV_SOFT_BLUE, (LED_TYPE *)&led[2]);
 | 
					        sethsv_raw(HSV_SOFT_BLUE, (rgb_led_t *)&led[2]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        sethsv(HSV_BLACK, (LED_TYPE *)&led[2]);
 | 
					        sethsv(HSV_BLACK, (rgb_led_t *)&led[2]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,26 +39,26 @@ static uint8_t  isRecording = 0;
 | 
				
			||||||
#    if RGBLED_NUM < 3
 | 
					#    if RGBLED_NUM < 3
 | 
				
			||||||
#        error we need at least 3 RGB LEDs!
 | 
					#        error we need at least 3 RGB LEDs!
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
static cRGB led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
 | 
					static rgb_led_t led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    define BRIGHT 32
 | 
					#    define BRIGHT 32
 | 
				
			||||||
#    define DIM 6
 | 
					#    define DIM 6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const cRGB black = {.r = 0, .g = 0, .b = 0};
 | 
					static const rgb_led_t black = {.r = 0, .g = 0, .b = 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const __attribute__((unused)) cRGB green  = {.r = 0, .g = BRIGHT, .b = 0};
 | 
					static const __attribute__((unused)) rgb_led_t green  = {.r = 0, .g = BRIGHT, .b = 0};
 | 
				
			||||||
static const __attribute__((unused)) cRGB lgreen = {.r = 0, .g = DIM, .b = 0};
 | 
					static const __attribute__((unused)) rgb_led_t lgreen = {.r = 0, .g = DIM, .b = 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const __attribute__((unused)) cRGB red  = {.r = BRIGHT, .g = 0, .b = 0};
 | 
					static const __attribute__((unused)) rgb_led_t red  = {.r = BRIGHT, .g = 0, .b = 0};
 | 
				
			||||||
static const __attribute__((unused)) cRGB lred = {.r = DIM, .g = 0, .b = 0};
 | 
					static const __attribute__((unused)) rgb_led_t lred = {.r = DIM, .g = 0, .b = 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const __attribute__((unused)) cRGB blue  = {.r = 0, .g = 0, .b = BRIGHT};
 | 
					static const __attribute__((unused)) rgb_led_t blue  = {.r = 0, .g = 0, .b = BRIGHT};
 | 
				
			||||||
static const __attribute__((unused)) cRGB lblue = {.r = 0, .g = 0, .b = DIM};
 | 
					static const __attribute__((unused)) rgb_led_t lblue = {.r = 0, .g = 0, .b = DIM};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const __attribute__((unused)) cRGB turq  = {.r = 0, .g = BRIGHT, .b = BRIGHT};
 | 
					static const __attribute__((unused)) rgb_led_t turq  = {.r = 0, .g = BRIGHT, .b = BRIGHT};
 | 
				
			||||||
static const __attribute__((unused)) cRGB lturq = {.r = 0, .g = DIM, .b = DIM};
 | 
					static const __attribute__((unused)) rgb_led_t lturq = {.r = 0, .g = DIM, .b = DIM};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const __attribute__((unused)) cRGB white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT};
 | 
					static const __attribute__((unused)) rgb_led_t white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static led_t   led_state;
 | 
					static led_t   led_state;
 | 
				
			||||||
static uint8_t layer;
 | 
					static uint8_t layer;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Set just 4 LEDs closest to the user. Slightly less annoying to bystanders.*/
 | 
					/** Set just 4 LEDs closest to the user. Slightly less annoying to bystanders.*/
 | 
				
			||||||
void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) {
 | 
					void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) {
 | 
				
			||||||
  LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led;
 | 
					  rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led;
 | 
				
			||||||
  for (int i = 0; i < RGBLED_NUM; i++)  {
 | 
					  for (int i = 0; i < RGBLED_NUM; i++)  {
 | 
				
			||||||
    switch (i) {
 | 
					    switch (i) {
 | 
				
			||||||
    case 12: case 13:
 | 
					    case 12: case 13:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
#define C_ORG 0xFF, 0x93, 0x00
 | 
					#define C_ORG 0xFF, 0x93, 0x00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) {
 | 
					void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) {
 | 
				
			||||||
  LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led;
 | 
					  rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led;
 | 
				
			||||||
  for (int i = 0; i < RGBLED_NUM; i++)  {
 | 
					  for (int i = 0; i < RGBLED_NUM; i++)  {
 | 
				
			||||||
    switch (i) {
 | 
					    switch (i) {
 | 
				
			||||||
    case 10: case 11:
 | 
					    case 10: case 11:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ void keyboard_post_init_user(void) {
 | 
				
			||||||
        rgblight_sethsv_noeeprom(50, 255, 100);
 | 
					        rgblight_sethsv_noeeprom(50, 255, 100);
 | 
				
			||||||
        rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
					        rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
				
			||||||
// Init the second LED to a static color:
 | 
					// Init the second LED to a static color:
 | 
				
			||||||
        setrgb(225, 185, 0, (LED_TYPE *)&led[1]);
 | 
					        setrgb(225, 185, 0, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
  #endif // RGBLIGHT_ENABLE
 | 
					  #endif // RGBLIGHT_ENABLE
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -232,7 +232,7 @@ layer_state_t layer_state_set_user(layer_state_t state){
 | 
				
			||||||
            if (layer_state_cmp(state, 3)) {
 | 
					            if (layer_state_cmp(state, 3)) {
 | 
				
			||||||
                led1r = 200;
 | 
					                led1r = 200;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
 | 
					            setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]);
 | 
				
			||||||
        rgblight_set();
 | 
					        rgblight_set();
 | 
				
			||||||
    #endif //RGBLIGHT_ENABLE
 | 
					    #endif //RGBLIGHT_ENABLE
 | 
				
			||||||
  return state;
 | 
					  return state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ void keyboard_post_init_user(void) {
 | 
				
			||||||
        rgblight_sethsv_noeeprom(50, 255, 100);
 | 
					        rgblight_sethsv_noeeprom(50, 255, 100);
 | 
				
			||||||
        rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
					        rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
				
			||||||
// Init the second LED to a static color:
 | 
					// Init the second LED to a static color:
 | 
				
			||||||
        setrgb(225, 185, 0, (LED_TYPE *)&led[1]);
 | 
					        setrgb(225, 185, 0, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
  #endif // RGBLIGHT_ENABLE
 | 
					  #endif // RGBLIGHT_ENABLE
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -232,7 +232,7 @@ layer_state_t layer_state_set_user(layer_state_t state){
 | 
				
			||||||
            if (layer_state_cmp(state, 3)) {
 | 
					            if (layer_state_cmp(state, 3)) {
 | 
				
			||||||
                led1r = 200;
 | 
					                led1r = 200;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
 | 
					            setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]);
 | 
				
			||||||
        rgblight_set();
 | 
					        rgblight_set();
 | 
				
			||||||
    #endif //RGBLIGHT_ENABLE
 | 
					    #endif //RGBLIGHT_ENABLE
 | 
				
			||||||
  return state;
 | 
					  return state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,7 +148,7 @@ bool rgb_matrix_indicators_kb(void) {
 | 
				
			||||||
// ==========================================================================
 | 
					// ==========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    if WS2812_LED_TOTAL > 0
 | 
					#    if WS2812_LED_TOTAL > 0
 | 
				
			||||||
LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
					rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void rgb_matrix_driver_init(void) {
 | 
					static void rgb_matrix_driver_init(void) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,7 +148,7 @@ bool rgb_matrix_indicators_kb(void) {
 | 
				
			||||||
// ==========================================================================
 | 
					// ==========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    if WS2812_LED_TOTAL > 0
 | 
					#    if WS2812_LED_TOTAL > 0
 | 
				
			||||||
LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
					rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void rgb_matrix_driver_init(void) {
 | 
					static void rgb_matrix_driver_init(void) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -144,7 +144,7 @@ bool rgb_matrix_indicators_kb(void) {
 | 
				
			||||||
// ==========================================================================
 | 
					// ==========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    if WS2812_LED_TOTAL > 0
 | 
					#    if WS2812_LED_TOTAL > 0
 | 
				
			||||||
LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
					rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void rgb_matrix_driver_init(void) {
 | 
					static void rgb_matrix_driver_init(void) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
					layer_state_t layer_state_set_user(layer_state_t state) {
 | 
				
			||||||
    switch (get_highest_layer(state)) {
 | 
					    switch (get_highest_layer(state)) {
 | 
				
			||||||
        case 0:
 | 
					        case 0:
 | 
				
			||||||
            sethsv(HSV_WHITE, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_WHITE, (rgb_led_t *)&led[0]);
 | 
				
			||||||
            rgblight_set();
 | 
					            rgblight_set();
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 1:
 | 
					        case 1:
 | 
				
			||||||
            sethsv(HSV_GREEN, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_GREEN, (rgb_led_t *)&led[0]);
 | 
				
			||||||
            rgblight_set();
 | 
					            rgblight_set();
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 2:
 | 
					        case 2:
 | 
				
			||||||
            sethsv(HSV_BLUE, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_BLUE, (rgb_led_t *)&led[0]);
 | 
				
			||||||
            rgblight_set();
 | 
					            rgblight_set();
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
					layer_state_t layer_state_set_user(layer_state_t state) {
 | 
				
			||||||
    switch (get_highest_layer(state)) {
 | 
					    switch (get_highest_layer(state)) {
 | 
				
			||||||
        case 0:
 | 
					        case 0:
 | 
				
			||||||
            sethsv(HSV_WHITE, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_WHITE, (rgb_led_t *)&led[0]);
 | 
				
			||||||
            rgblight_set();
 | 
					            rgblight_set();
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 1:
 | 
					        case 1:
 | 
				
			||||||
            sethsv(HSV_GREEN, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_GREEN, (rgb_led_t *)&led[0]);
 | 
				
			||||||
            rgblight_set();
 | 
					            rgblight_set();
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 2:
 | 
					        case 2:
 | 
				
			||||||
            sethsv(HSV_BLUE, (LED_TYPE *)&led[0]);
 | 
					            sethsv(HSV_BLUE, (rgb_led_t *)&led[0]);
 | 
				
			||||||
            rgblight_set();
 | 
					            rgblight_set();
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,7 @@ const aw9523b_led g_aw9523b_leds[AW9523B_RGB_NUM] = {
 | 
				
			||||||
    {AW9523B_P07_PWM, AW9523B_P06_PWM, AW9523B_P05_PWM},
 | 
					    {AW9523B_P07_PWM, AW9523B_P06_PWM, AW9523B_P05_PWM},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    uint8_t num = num_leds < AW9523B_RGB_NUM ? num_leds : AW9523B_RGB_NUM;
 | 
					    uint8_t num = num_leds < AW9523B_RGB_NUM ? num_leds : AW9523B_RGB_NUM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -357,7 +357,7 @@ static void custom_effects(void)
 | 
				
			||||||
    effect_funcs[rgb_ring.effect]();
 | 
					    effect_funcs[rgb_ring.effect]();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (rgb_ring.state != RING_STATE_QMK) {
 | 
					    if (rgb_ring.state != RING_STATE_QMK) {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@ extern rgblight_config_t rgblight_config;
 | 
				
			||||||
#if RGBLED_NUM < 7
 | 
					#if RGBLED_NUM < 7
 | 
				
			||||||
#error "MUST set the RGBLED_NUM bigger than 7"
 | 
					#error "MUST set the RGBLED_NUM bigger than 7"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
LED_TYPE noah_leds[RGBLED_NUM];
 | 
					rgb_led_t noah_leds[RGBLED_NUM];
 | 
				
			||||||
static bool noah_led_mode = false;
 | 
					static bool noah_led_mode = false;
 | 
				
			||||||
void rgblight_set(void) {
 | 
					void rgblight_set(void) {
 | 
				
			||||||
    memset(&noah_leds[0], 0, sizeof(noah_leds));
 | 
					    memset(&noah_leds[0], 0, sizeof(noah_leds));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@
 | 
				
			||||||
// Variables for controlling front LED application
 | 
					// Variables for controlling front LED application
 | 
				
			||||||
uint8_t fled_mode;  // Mode for front LEDs
 | 
					uint8_t fled_mode;  // Mode for front LEDs
 | 
				
			||||||
uint8_t fled_val;   // Brightness for front leds (0 - 255)
 | 
					uint8_t fled_val;   // Brightness for front leds (0 - 255)
 | 
				
			||||||
LED_TYPE fleds[2];  // Front LED rgb values for indicator mode use
 | 
					rgb_led_t fleds[2];  // Front LED rgb values for indicator mode use
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Layer indicator colors
 | 
					// Layer indicator colors
 | 
				
			||||||
__attribute__ ((weak))
 | 
					__attribute__ ((weak))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,7 +98,7 @@ animation_status_t animation_status = {};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef LED_ARRAY
 | 
					#ifndef LED_ARRAY
 | 
				
			||||||
LED_TYPE led[RGBLED_NUM];
 | 
					rgb_led_t led[RGBLED_NUM];
 | 
				
			||||||
#    define LED_ARRAY led
 | 
					#    define LED_ARRAY led
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,10 +111,10 @@ rgblight_ranges_t rgblight_ranges = {0, RGBLED_NUM, 0, RGBLED_NUM, RGBLED_NUM};
 | 
				
			||||||
// MxSS custom
 | 
					// MxSS custom
 | 
				
			||||||
extern uint8_t fled_mode;
 | 
					extern uint8_t fled_mode;
 | 
				
			||||||
extern uint8_t fled_val;
 | 
					extern uint8_t fled_val;
 | 
				
			||||||
extern LED_TYPE fleds[2];
 | 
					extern rgb_led_t fleds[2];
 | 
				
			||||||
hs_set fled_hs[2];
 | 
					hs_set fled_hs[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void copyrgb(LED_TYPE *src, LED_TYPE *dst) {
 | 
					void copyrgb(rgb_led_t *src, rgb_led_t *dst) {
 | 
				
			||||||
  dst->r = src->r;
 | 
					  dst->r = src->r;
 | 
				
			||||||
  dst->g = src->g;
 | 
					  dst->g = src->g;
 | 
				
			||||||
  dst->b = src->b;
 | 
					  dst->b = src->b;
 | 
				
			||||||
| 
						 | 
					@ -135,7 +135,7 @@ void rgblight_set_effect_range(uint8_t start_pos, uint8_t num_leds) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((weak)) RGB rgblight_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); }
 | 
					__attribute__((weak)) RGB rgblight_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) {
 | 
					void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) {
 | 
				
			||||||
    HSV hsv = {hue, sat, val};
 | 
					    HSV hsv = {hue, sat, val};
 | 
				
			||||||
    // MxSS custom
 | 
					    // MxSS custom
 | 
				
			||||||
    // if led is front leds, cache the hue and sat values
 | 
					    // if led is front leds, cache the hue and sat values
 | 
				
			||||||
| 
						 | 
					@ -150,9 +150,9 @@ void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) {
 | 
				
			||||||
    setrgb(rgb.r, rgb.g, rgb.b, led1);
 | 
					    setrgb(rgb.r, rgb.g, rgb.b, led1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); }
 | 
					void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) {
 | 
					void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1) {
 | 
				
			||||||
    led1->r = r;
 | 
					    led1->r = r;
 | 
				
			||||||
    led1->g = g;
 | 
					    led1->g = g;
 | 
				
			||||||
    led1->b = b;
 | 
					    led1->b = b;
 | 
				
			||||||
| 
						 | 
					@ -454,7 +454,7 @@ void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) {
 | 
				
			||||||
        fled_hs[0].hue = fled_hs[1].hue = hue;
 | 
					        fled_hs[0].hue = fled_hs[1].hue = hue;
 | 
				
			||||||
        fled_hs[0].sat = fled_hs[1].sat = sat;
 | 
					        fled_hs[0].sat = fled_hs[1].sat = sat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LED_TYPE tmp_led;
 | 
					        rgb_led_t tmp_led;
 | 
				
			||||||
        sethsv(hue, sat, val, &tmp_led);
 | 
					        sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
        rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
 | 
					        rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -465,7 +465,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w
 | 
				
			||||||
        rgblight_status.base_mode = mode_base_table[rgblight_config.mode];
 | 
					        rgblight_status.base_mode = mode_base_table[rgblight_config.mode];
 | 
				
			||||||
        if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) {
 | 
					        if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) {
 | 
				
			||||||
            // same static color
 | 
					            // same static color
 | 
				
			||||||
            LED_TYPE tmp_led;
 | 
					            rgb_led_t tmp_led;
 | 
				
			||||||
            sethsv(hue, sat, val, &tmp_led);
 | 
					            sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // MxSS custom
 | 
					            // MxSS custom
 | 
				
			||||||
| 
						 | 
					@ -515,7 +515,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w
 | 
				
			||||||
                        _hue = hue - _hue;
 | 
					                        _hue = hue - _hue;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range);
 | 
					                    dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range);
 | 
				
			||||||
                    sethsv(_hue, sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
					                    sethsv(_hue, sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                rgblight_set();
 | 
					                rgblight_set();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -601,7 +601,7 @@ void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index) {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LED_TYPE tmp_led;
 | 
					    rgb_led_t tmp_led;
 | 
				
			||||||
    sethsv(hue, sat, val, &tmp_led);
 | 
					    sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
    rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
 | 
					    rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -640,7 +640,7 @@ void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start,
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LED_TYPE tmp_led;
 | 
					    rgb_led_t tmp_led;
 | 
				
			||||||
    sethsv(hue, sat, val, &tmp_led);
 | 
					    sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
    rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end);
 | 
					    rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -702,8 +702,8 @@ static void rgblight_layers_write(void) {
 | 
				
			||||||
                break;  // No more segments
 | 
					                break;  // No more segments
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // Write segment.count LEDs
 | 
					            // Write segment.count LEDs
 | 
				
			||||||
            LED_TYPE *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)];
 | 
					            rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)];
 | 
				
			||||||
            for (LED_TYPE *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) {
 | 
					            for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) {
 | 
				
			||||||
                sethsv(segment.hue, segment.sat, segment.val, led_ptr);
 | 
					                sethsv(segment.hue, segment.sat, segment.val, led_ptr);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            segment_ptr++;
 | 
					            segment_ptr++;
 | 
				
			||||||
| 
						 | 
					@ -737,11 +737,11 @@ void rgblight_unblink_layers(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((weak)) void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { ws2812_setleds(start_led, num_leds); }
 | 
					__attribute__((weak)) void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { ws2812_setleds(start_led, num_leds); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef RGBLIGHT_CUSTOM_DRIVER
 | 
					#ifndef RGBLIGHT_CUSTOM_DRIVER
 | 
				
			||||||
void rgblight_set(void) {
 | 
					void rgblight_set(void) {
 | 
				
			||||||
    LED_TYPE *start_led;
 | 
					    rgb_led_t *start_led;
 | 
				
			||||||
    uint8_t   num_leds = rgblight_ranges.clipping_num_leds;
 | 
					    uint8_t   num_leds = rgblight_ranges.clipping_num_leds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!rgblight_config.enable) {
 | 
					    if (!rgblight_config.enable) {
 | 
				
			||||||
| 
						 | 
					@ -769,7 +769,7 @@ void rgblight_set(void) {
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    ifdef RGBLIGHT_LED_MAP
 | 
					#    ifdef RGBLIGHT_LED_MAP
 | 
				
			||||||
    LED_TYPE led0[RGBLED_NUM];
 | 
					    rgb_led_t led0[RGBLED_NUM];
 | 
				
			||||||
    for (uint8_t i = 0; i < RGBLED_NUM; i++) {
 | 
					    for (uint8_t i = 0; i < RGBLED_NUM; i++) {
 | 
				
			||||||
        led0[i] = led[pgm_read_byte(&led_map[i])];
 | 
					        led0[i] = led[pgm_read_byte(&led_map[i])];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -1089,7 +1089,7 @@ void rgblight_effect_rainbow_swirl(animation_status_t *anim) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / rgblight_ranges.effect_num_leds * i + anim->current_hue);
 | 
					        hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / rgblight_ranges.effect_num_leds * i + anim->current_hue);
 | 
				
			||||||
        sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
					        sethsv(hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1130,7 +1130,7 @@ void rgblight_effect_snake(animation_status_t *anim) {
 | 
				
			||||||
    fled_hs[0].sat = fled_hs[1].sat = 0;
 | 
					    fled_hs[0].sat = fled_hs[1].sat = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
					        rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
        ledp->r        = 0;
 | 
					        ledp->r        = 0;
 | 
				
			||||||
        ledp->g        = 0;
 | 
					        ledp->g        = 0;
 | 
				
			||||||
        ledp->b        = 0;
 | 
					        ledp->b        = 0;
 | 
				
			||||||
| 
						 | 
					@ -1203,7 +1203,7 @@ void rgblight_effect_knight(animation_status_t *anim) {
 | 
				
			||||||
        cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % rgblight_ranges.effect_num_leds + rgblight_ranges.effect_start_pos;
 | 
					        cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % rgblight_ranges.effect_num_leds + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (i >= low_bound && i <= high_bound) {
 | 
					        if (i >= low_bound && i <= high_bound) {
 | 
				
			||||||
            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[cur]);
 | 
					            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[cur]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // MxSS custom code
 | 
					            // MxSS custom code
 | 
				
			||||||
            if (cur == RGBLIGHT_FLED1) {
 | 
					            if (cur == RGBLIGHT_FLED1) {
 | 
				
			||||||
| 
						 | 
					@ -1262,7 +1262,7 @@ void rgblight_effect_christmas(animation_status_t *anim) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        uint8_t local_hue = (i / RGBLIGHT_EFFECT_CHRISTMAS_STEP) % 2 ? hue : hue_green - hue;
 | 
					        uint8_t local_hue = (i / RGBLIGHT_EFFECT_CHRISTMAS_STEP) % 2 ? hue : hue_green - hue;
 | 
				
			||||||
        sethsv(local_hue, rgblight_config.sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
					        sethsv(local_hue, rgblight_config.sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1285,7 +1285,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) {
 | 
				
			||||||
    uint8_t        b;
 | 
					    uint8_t        b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (maxval == 0) {
 | 
					    if (maxval == 0) {
 | 
				
			||||||
        LED_TYPE tmp_led;
 | 
					        rgb_led_t tmp_led;
 | 
				
			||||||
        sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led);
 | 
					        sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led);
 | 
				
			||||||
        maxval = tmp_led.r;
 | 
					        maxval = tmp_led.r;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -1322,7 +1322,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) {
 | 
				
			||||||
#ifdef RGBLIGHT_EFFECT_ALTERNATING
 | 
					#ifdef RGBLIGHT_EFFECT_ALTERNATING
 | 
				
			||||||
void rgblight_effect_alternating(animation_status_t *anim) {
 | 
					void rgblight_effect_alternating(animation_status_t *anim) {
 | 
				
			||||||
    for (int i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (int i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
					        rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
        if (i < rgblight_ranges.effect_num_leds / 2 && anim->pos) {
 | 
					        if (i < rgblight_ranges.effect_num_leds / 2 && anim->pos) {
 | 
				
			||||||
            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp);
 | 
					            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp);
 | 
				
			||||||
        } else if (i >= rgblight_ranges.effect_num_leds / 2 && !anim->pos) {
 | 
					        } else if (i >= rgblight_ranges.effect_num_leds / 2 && !anim->pos) {
 | 
				
			||||||
| 
						 | 
					@ -1383,7 +1383,7 @@ void rgblight_effect_twinkle(animation_status_t *anim) {
 | 
				
			||||||
            // This LED is off, and was NOT selected to start brightening
 | 
					            // This LED is off, and was NOT selected to start brightening
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
					        rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
        sethsv(c->h, c->s, c->v, ledp);
 | 
					        sethsv(c->h, c->s, c->v, ledp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -322,7 +322,7 @@ void housekeeping_task_kb(void)
 | 
				
			||||||
    } else if (rgb_state.state == CAPS_ALERT) {
 | 
					    } else if (rgb_state.state == CAPS_ALERT) {
 | 
				
			||||||
        if (rgb_state.alert) {
 | 
					        if (rgb_state.alert) {
 | 
				
			||||||
            is31fl3731_set_color_all(ALERM_LED_R, ALERM_LED_G, ALERM_LED_B);
 | 
					            is31fl3731_set_color_all(ALERM_LED_R, ALERM_LED_G, ALERM_LED_B);
 | 
				
			||||||
            LED_TYPE leds[4];
 | 
					            rgb_led_t leds[4];
 | 
				
			||||||
            for (int i = 0; i < 4; i++) {
 | 
					            for (int i = 0; i < 4; i++) {
 | 
				
			||||||
                leds[i].r = ALERM_LED_G;
 | 
					                leds[i].r = ALERM_LED_G;
 | 
				
			||||||
                leds[i].g = ALERM_LED_R;
 | 
					                leds[i].g = ALERM_LED_R;
 | 
				
			||||||
| 
						 | 
					@ -331,7 +331,7 @@ void housekeeping_task_kb(void)
 | 
				
			||||||
            ws2812_setleds(leds, 4);
 | 
					            ws2812_setleds(leds, 4);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            is31fl3731_set_color_all(0, 0, 0);
 | 
					            is31fl3731_set_color_all(0, 0, 0);
 | 
				
			||||||
            LED_TYPE leds[4] = {0};
 | 
					            rgb_led_t leds[4] = {0};
 | 
				
			||||||
            ws2812_setleds(leds, 4);
 | 
					            ws2812_setleds(leds, 4);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -349,14 +349,14 @@ void housekeeping_task_kb(void)
 | 
				
			||||||
    housekeeping_task_user();
 | 
					    housekeeping_task_user();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (rgb_state.state != NORMAL) return;
 | 
					    if (rgb_state.state != NORMAL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
 | 
					    for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
 | 
				
			||||||
        is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
 | 
					        is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    LED_TYPE leds[4];
 | 
					    rgb_led_t leds[4];
 | 
				
			||||||
    for (int i = 0; i < 4; i++) {
 | 
					    for (int i = 0; i < 4; i++) {
 | 
				
			||||||
        leds[i].r = start_led[RGB_MATRIX_LED_COUNT+i].g;
 | 
					        leds[i].r = start_led[RGB_MATRIX_LED_COUNT+i].g;
 | 
				
			||||||
        leds[i].g = start_led[RGB_MATRIX_LED_COUNT+i].r;
 | 
					        leds[i].g = start_led[RGB_MATRIX_LED_COUNT+i].r;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -320,7 +320,7 @@ void housekeeping_task_kb(void)
 | 
				
			||||||
        self_testing();
 | 
					        self_testing();
 | 
				
			||||||
    } else if (rgb_state.state == CAPS_ALERT) {
 | 
					    } else if (rgb_state.state == CAPS_ALERT) {
 | 
				
			||||||
        //gold 0xFF, 0xD9, 0x00
 | 
					        //gold 0xFF, 0xD9, 0x00
 | 
				
			||||||
        LED_TYPE led = {
 | 
					        rgb_led_t led = {
 | 
				
			||||||
            .r = 0xFF,
 | 
					            .r = 0xFF,
 | 
				
			||||||
            //.g = 0xD9,
 | 
					            //.g = 0xD9,
 | 
				
			||||||
            .g = 0xA5,
 | 
					            .g = 0xA5,
 | 
				
			||||||
| 
						 | 
					@ -351,7 +351,7 @@ void housekeeping_task_kb(void)
 | 
				
			||||||
    housekeeping_task_user();
 | 
					    housekeeping_task_user();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (rgb_state.state != NORMAL) return;
 | 
					    if (rgb_state.state != NORMAL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool alert = false;
 | 
					static bool alert = false;
 | 
				
			||||||
static bool backup = false;
 | 
					static bool backup = false;
 | 
				
			||||||
static LED_TYPE caps_led;
 | 
					static rgb_led_t caps_led;
 | 
				
			||||||
static uint16_t last_ticks = 0;
 | 
					static uint16_t last_ticks = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ALERT_INTERVAL      500
 | 
					#define ALERT_INTERVAL      500
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,7 @@ void housekeeping_task_kb(void)
 | 
				
			||||||
    housekeeping_task_user();
 | 
					    housekeeping_task_user();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    start_led[2].r = start_led[0].r;
 | 
					    start_led[2].r = start_led[0].r;
 | 
				
			||||||
    start_led[2].g = start_led[0].g;
 | 
					    start_led[2].g = start_led[0].g;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,13 +22,13 @@ void ws2812_init(void) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Setleds for standard RGB
 | 
					// Setleds for standard RGB
 | 
				
			||||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
 | 
					void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) {
 | 
				
			||||||
    static bool s_init = false;
 | 
					    static bool s_init = false;
 | 
				
			||||||
    if (!s_init) {
 | 
					    if (!s_init) {
 | 
				
			||||||
        ws2812_init();
 | 
					        ws2812_init();
 | 
				
			||||||
        s_init = true;
 | 
					        s_init = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * (leds >> 1), WS2812_I2C_TIMEOUT);
 | 
					    i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * (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);
 | 
					    i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(rgb_led_t) * (leds >> 1)), sizeof(rgb_led_t) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@
 | 
				
			||||||
#        include "ws2812.h"
 | 
					#        include "ws2812.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LED color buffer
 | 
					// LED color buffer
 | 
				
			||||||
LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
 | 
					rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void init(void) {}
 | 
					static void init(void) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -94,40 +94,40 @@ void matrix_scan_user(void) {
 | 
				
			||||||
        uint16_t kc = keymap_key_to_keycode(layer, (keypos_t) {.row = 0, .col = i
 | 
					        uint16_t kc = keymap_key_to_keycode(layer, (keypos_t) {.row = 0, .col = i
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        if (kc == KC_TRNS) {
 | 
					        if (kc == KC_TRNS) {
 | 
				
			||||||
          setrgb(5, 5, 5, (LED_TYPE * ) & led[j]); /* TRNS color 0-255*/
 | 
					          setrgb(5, 5, 5, (rgb_led_t * ) & led[j]); /* TRNS color 0-255*/
 | 
				
			||||||
        } else if (kc == KC_NO) {
 | 
					        } else if (kc == KC_NO) {
 | 
				
			||||||
          setrgb(0, 0, 0, (LED_TYPE * ) & led[j]); /* NO color 0-255*/
 | 
					          setrgb(0, 0, 0, (rgb_led_t * ) & led[j]); /* NO color 0-255*/
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          if (layer == 1) {
 | 
					          if (layer == 1) {
 | 
				
			||||||
            setrgb(128, 64, 0, (LED_TYPE * ) & led[j]); /* 1 layer 0-255*/
 | 
					            setrgb(128, 64, 0, (rgb_led_t * ) & led[j]); /* 1 layer 0-255*/
 | 
				
			||||||
          } else if (layer == 2) {
 | 
					          } else if (layer == 2) {
 | 
				
			||||||
            setrgb(0, 64, 128, (LED_TYPE * ) & led[j]); /* 2*/
 | 
					            setrgb(0, 64, 128, (rgb_led_t * ) & led[j]); /* 2*/
 | 
				
			||||||
          } else if (layer == 3) {
 | 
					          } else if (layer == 3) {
 | 
				
			||||||
            setrgb(64, 128, 0, (LED_TYPE * ) & led[j]); /* 3*/
 | 
					            setrgb(64, 128, 0, (rgb_led_t * ) & led[j]); /* 3*/
 | 
				
			||||||
          } else if (layer == 4) {
 | 
					          } else if (layer == 4) {
 | 
				
			||||||
            setrgb(0, 128, 64, (LED_TYPE * ) & led[j]); /* 4*/
 | 
					            setrgb(0, 128, 64, (rgb_led_t * ) & led[j]); /* 4*/
 | 
				
			||||||
          } else if (layer == 5) {
 | 
					          } else if (layer == 5) {
 | 
				
			||||||
            setrgb(128, 0, 128, (LED_TYPE * ) & led[j]); /* 5*/
 | 
					            setrgb(128, 0, 128, (rgb_led_t * ) & led[j]); /* 5*/
 | 
				
			||||||
          } else if (layer == 6) {
 | 
					          } else if (layer == 6) {
 | 
				
			||||||
            setrgb(128, 0, 128, (LED_TYPE * ) & led[j]); /* 6*/
 | 
					            setrgb(128, 0, 128, (rgb_led_t * ) & led[j]); /* 6*/
 | 
				
			||||||
          } else if (layer == 7) {
 | 
					          } else if (layer == 7) {
 | 
				
			||||||
            setrgb(128, 128, 0, (LED_TYPE * ) & led[j]); /* 7*/
 | 
					            setrgb(128, 128, 0, (rgb_led_t * ) & led[j]); /* 7*/
 | 
				
			||||||
          } else if (layer == 8) {
 | 
					          } else if (layer == 8) {
 | 
				
			||||||
            setrgb(0, 128, 128, (LED_TYPE * ) & led[j]); /* 8*/
 | 
					            setrgb(0, 128, 128, (rgb_led_t * ) & led[j]); /* 8*/
 | 
				
			||||||
          } else if (layer == 9) {
 | 
					          } else if (layer == 9) {
 | 
				
			||||||
            setrgb(128, 192, 64, (LED_TYPE * ) & led[j]); /* 9*/
 | 
					            setrgb(128, 192, 64, (rgb_led_t * ) & led[j]); /* 9*/
 | 
				
			||||||
          } else if (layer == 10) {
 | 
					          } else if (layer == 10) {
 | 
				
			||||||
            setrgb(64, 192, 128, (LED_TYPE * ) & led[j]); /* 10*/
 | 
					            setrgb(64, 192, 128, (rgb_led_t * ) & led[j]); /* 10*/
 | 
				
			||||||
          } else if (layer == 11) {
 | 
					          } else if (layer == 11) {
 | 
				
			||||||
            setrgb(128, 64, 192, (LED_TYPE * ) & led[j]); /* 11*/
 | 
					            setrgb(128, 64, 192, (rgb_led_t * ) & led[j]); /* 11*/
 | 
				
			||||||
          } else if (layer == 12) {
 | 
					          } else if (layer == 12) {
 | 
				
			||||||
            setrgb(64, 128, 192, (LED_TYPE * ) & led[j]); /* 12*/
 | 
					            setrgb(64, 128, 192, (rgb_led_t * ) & led[j]); /* 12*/
 | 
				
			||||||
          } else if (layer == 13) {
 | 
					          } else if (layer == 13) {
 | 
				
			||||||
            setrgb(128, 192, 0, (LED_TYPE * ) & led[j]); /* 13*/
 | 
					            setrgb(128, 192, 0, (rgb_led_t * ) & led[j]); /* 13*/
 | 
				
			||||||
          } else if (layer == 14) {
 | 
					          } else if (layer == 14) {
 | 
				
			||||||
            setrgb(192, 0, 128, (LED_TYPE * ) & led[j]); /* 14*/
 | 
					            setrgb(192, 0, 128, (rgb_led_t * ) & led[j]); /* 14*/
 | 
				
			||||||
          } else if (layer == 15) {
 | 
					          } else if (layer == 15) {
 | 
				
			||||||
            setrgb(0, 192, 128, (LED_TYPE * ) & led[j]); /* 15*/
 | 
					            setrgb(0, 192, 128, (rgb_led_t * ) & led[j]); /* 15*/
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -180,8 +180,8 @@ void keyboard_post_init_user(void) {
 | 
				
			||||||
    rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
					    rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // set other led's to off
 | 
					    // set other led's to off
 | 
				
			||||||
    setrgb(0, 0, 0, (LED_TYPE *)&led[0]);
 | 
					    setrgb(0, 0, 0, (rgb_led_t *)&led[0]);
 | 
				
			||||||
    setrgb(0, 0, 0, (LED_TYPE *)&led[1]);
 | 
					    setrgb(0, 0, 0, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -190,23 +190,23 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 | 
				
			||||||
  state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
					  state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
				
			||||||
  #ifdef RGBLIGHT_ENABLE
 | 
					  #ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (layer_state_cmp(state, _ADJUST)) {
 | 
					    if (layer_state_cmp(state, _ADJUST)) {
 | 
				
			||||||
      setrgb(70, 255, 200, (LED_TYPE *)&led[0]);
 | 
					      setrgb(70, 255, 200, (rgb_led_t *)&led[0]);
 | 
				
			||||||
      setrgb(255, 70, 100, (LED_TYPE *)&led[1]);
 | 
					      setrgb(255, 70, 100, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    } else if (layer_state_cmp(state, _LOWER)) {
 | 
					    } else if (layer_state_cmp(state, _LOWER)) {
 | 
				
			||||||
      setrgb(70, 255, 200, (LED_TYPE *)&led[0]);
 | 
					      setrgb(70, 255, 200, (rgb_led_t *)&led[0]);
 | 
				
			||||||
      setrgb(0, 0, 0, (LED_TYPE *)&led[1]);
 | 
					      setrgb(0, 0, 0, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    } else if (layer_state_cmp(state, _RAISE)) {
 | 
					    } else if (layer_state_cmp(state, _RAISE)) {
 | 
				
			||||||
      setrgb(0, 0, 0, (LED_TYPE *)&led[0]);
 | 
					      setrgb(0, 0, 0, (rgb_led_t *)&led[0]);
 | 
				
			||||||
      setrgb(255, 70, 100, (LED_TYPE *)&led[1]);
 | 
					      setrgb(255, 70, 100, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    } else if (layer_state_cmp(state, _UTIL)) {
 | 
					    } else if (layer_state_cmp(state, _UTIL)) {
 | 
				
			||||||
      setrgb(200, 70, 225, (LED_TYPE *)&led[0]);
 | 
					      setrgb(200, 70, 225, (rgb_led_t *)&led[0]);
 | 
				
			||||||
      setrgb(200, 70, 225, (LED_TYPE *)&led[1]);
 | 
					      setrgb(200, 70, 225, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    } else if (layer_state_cmp(state, _MOUSE)) {
 | 
					    } else if (layer_state_cmp(state, _MOUSE)) {
 | 
				
			||||||
      setrgb(255, 145, 5, (LED_TYPE *)&led[0]);
 | 
					      setrgb(255, 145, 5, (rgb_led_t *)&led[0]);
 | 
				
			||||||
      setrgb(255, 145, 5, (LED_TYPE *)&led[1]);
 | 
					      setrgb(255, 145, 5, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      setrgb(0, 0, 0, (LED_TYPE *)&led[0]);
 | 
					      setrgb(0, 0, 0, (rgb_led_t *)&led[0]);
 | 
				
			||||||
      setrgb(0, 0, 0, (LED_TYPE *)&led[1]);
 | 
					      setrgb(0, 0, 0, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,8 +50,8 @@ void keyboard_post_init_user(void) {
 | 
				
			||||||
    rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
					    rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Init the first two LEDs to a static color
 | 
					    // Init the first two LEDs to a static color
 | 
				
			||||||
    setrgb(0, 0, 0, (LED_TYPE *)&led[0]);
 | 
					    setrgb(0, 0, 0, (rgb_led_t *)&led[0]);
 | 
				
			||||||
    setrgb(0, 0, 0, (LED_TYPE *)&led[1]);
 | 
					    setrgb(0, 0, 0, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
  #endif //RGBLIGHT_ENABLE
 | 
					  #endif //RGBLIGHT_ENABLE
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -75,8 +75,8 @@ layer_state_t layer_state_set_user(layer_state_t state){
 | 
				
			||||||
      led1r = 255;
 | 
					      led1r = 255;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]);
 | 
					    setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]);
 | 
				
			||||||
    setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
 | 
					    setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]);
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
  #endif //RGBLIGHT_ENABLE
 | 
					  #endif //RGBLIGHT_ENABLE
 | 
				
			||||||
  return state;
 | 
					  return state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -192,8 +192,8 @@ void keyboard_post_init_user (void) {
 | 
				
			||||||
    rgblight_mode_noeeprom (RGBLIGHT_EFFECT_BREATHING + 2);
 | 
					    rgblight_mode_noeeprom (RGBLIGHT_EFFECT_BREATHING + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Init the first and last LEDs to a static color.
 | 
					    // Init the first and last LEDs to a static color.
 | 
				
			||||||
    setrgb (0, 0, 0, (LED_TYPE *)&led[0]); // Led[0] is led 0
 | 
					    setrgb (0, 0, 0, (rgb_led_t *)&led[0]); // Led[0] is led 0
 | 
				
			||||||
    setrgb (0, 0, 0, (LED_TYPE *)&led[2]); // 2nd led
 | 
					    setrgb (0, 0, 0, (rgb_led_t *)&led[2]); // 2nd led
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The logic seems to be to establish the effect first, and then toggle it on/off.
 | 
					// The logic seems to be to establish the effect first, and then toggle it on/off.
 | 
				
			||||||
#     ifdef STARTUP_MID_LED_OFF
 | 
					#     ifdef STARTUP_MID_LED_OFF
 | 
				
			||||||
| 
						 | 
					@ -301,8 +301,8 @@ void isolate_rgblight_set (void) {
 | 
				
			||||||
        led2r = 0; 
 | 
					        led2r = 0; 
 | 
				
			||||||
        led2g = 0; 
 | 
					        led2g = 0; 
 | 
				
			||||||
        led2b = 0; 
 | 
					        led2b = 0; 
 | 
				
			||||||
        setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
 | 
					        setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0
 | 
				
			||||||
        setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
 | 
					        setrgb(led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set ();
 | 
					    rgblight_set ();
 | 
				
			||||||
# endif
 | 
					# endif
 | 
				
			||||||
| 
						 | 
					@ -326,8 +326,8 @@ void indicate_fun_stay (void) {
 | 
				
			||||||
        led0g = 50;  //   
 | 
					        led0g = 50;  //   
 | 
				
			||||||
        led2r = 255; // red
 | 
					        led2r = 255; // red
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
 | 
					    setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0
 | 
				
			||||||
    setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
 | 
					    setrgb(led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2
 | 
				
			||||||
    isolate_rgblight_set ();
 | 
					    isolate_rgblight_set ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# endif //RGBLIGHT_ENABLE
 | 
					# endif //RGBLIGHT_ENABLE
 | 
				
			||||||
| 
						 | 
					@ -369,8 +369,8 @@ void indicate_base (void) {
 | 
				
			||||||
        led2g = 255; 
 | 
					        led2g = 255; 
 | 
				
			||||||
        led2b = 255; 
 | 
					        led2b = 255; 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
 | 
					    setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0
 | 
				
			||||||
    setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
 | 
					    setrgb(led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2
 | 
				
			||||||
    isolate_rgblight_set ();
 | 
					    isolate_rgblight_set ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# endif //RGBLIGHT_ENABLE
 | 
					# endif //RGBLIGHT_ENABLE
 | 
				
			||||||
| 
						 | 
					@ -535,8 +535,8 @@ void set_led_colors_ (layer_state_t state) {
 | 
				
			||||||
    //---
 | 
					    //---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // pushes the configuration
 | 
					    // pushes the configuration
 | 
				
			||||||
    setrgb (led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
 | 
					    setrgb (led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0
 | 
				
			||||||
    setrgb (led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
 | 
					    setrgb (led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    isolate_rgblight_set (); // Activates the led color change, after on/off check.
 | 
					    isolate_rgblight_set (); // Activates the led color change, after on/off check.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,7 +97,7 @@ float rgb_brightness = 1.0;
 | 
				
			||||||
void rgbflag(uint8_t r, uint8_t g, uint8_t b) {
 | 
					void rgbflag(uint8_t r, uint8_t g, uint8_t b) {
 | 
				
			||||||
  float rgb_brightness = ((float)rgblight_get_val())/256;
 | 
					  float rgb_brightness = ((float)rgblight_get_val())/256;
 | 
				
			||||||
  if(rgb_brightness == 0) rgb_brightness = 0.05;
 | 
					  if(rgb_brightness == 0) rgb_brightness = 0.05;
 | 
				
			||||||
  LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led;
 | 
					  rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led;
 | 
				
			||||||
  target_led[0].r = (uint8_t)(r*rgb_brightness);
 | 
					  target_led[0].r = (uint8_t)(r*rgb_brightness);
 | 
				
			||||||
  target_led[0].g = (uint8_t)(g*rgb_brightness);
 | 
					  target_led[0].g = (uint8_t)(g*rgb_brightness);
 | 
				
			||||||
  target_led[0].b = (uint8_t)(b*rgb_brightness);
 | 
					  target_led[0].b = (uint8_t)(b*rgb_brightness);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(RGB_BACKLIGHT_DAWN60)
 | 
					#if defined(RGB_BACKLIGHT_DAWN60)
 | 
				
			||||||
#include "ws2812.h"
 | 
					#include "ws2812.h"
 | 
				
			||||||
LED_TYPE g_ws2812_leds[WS2812_LED_TOTAL];
 | 
					rgb_led_t g_ws2812_leds[WS2812_LED_TOTAL];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "progmem.h"
 | 
					#include "progmem.h"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "ws2812_bitbang.c"
 | 
					#include "ws2812_bitbang.c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
 | 
					void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
 | 
				
			||||||
    ws2812_setleds(start_led, num_leds);
 | 
					    ws2812_setleds(start_led, num_leds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
#include "ws2812.h"
 | 
					#include "ws2812.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGB_MATRIX_ENABLE
 | 
					#ifdef RGB_MATRIX_ENABLE
 | 
				
			||||||
LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
					rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
 | 
					const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
 | 
				
			||||||
/* Refer to IS31 manual for these locations
 | 
					/* Refer to IS31 manual for these locations
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,6 @@
 | 
				
			||||||
#include "color.h"
 | 
					#include "color.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) {
 | 
					static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) {
 | 
				
			||||||
    LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}};
 | 
					    rgb_led_t leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}};
 | 
				
			||||||
    ws2812_setleds(leds, RGBLED_NUM);
 | 
					    ws2812_setleds(leds, RGBLED_NUM);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
#include "color.h"
 | 
					#include "color.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) {
 | 
					static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) {
 | 
				
			||||||
    LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}};
 | 
					    rgb_led_t leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}};
 | 
				
			||||||
    ws2812_setleds(leds, RGBLED_NUM);
 | 
					    ws2812_setleds(leds, RGBLED_NUM);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ int speed = 300;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void set_colors(int r, int g, int b) {
 | 
					void set_colors(int r, int g, int b) {
 | 
				
			||||||
  for(int i = 0; i<6; i++) {
 | 
					  for(int i = 0; i<6; i++) {
 | 
				
			||||||
    sethsv(r, g, b, (LED_TYPE *)&led[i]);
 | 
					    sethsv(r, g, b, (rgb_led_t *)&led[i]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  rgblight_set();
 | 
					  rgblight_set();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -213,7 +213,7 @@ void matrix_scan_user(void) {
 | 
				
			||||||
    if (rc == 0) {
 | 
					    if (rc == 0) {
 | 
				
			||||||
      rc = speed;
 | 
					      rc = speed;
 | 
				
			||||||
      for(int i = 0; i<6; i++) {
 | 
					      for(int i = 0; i<6; i++) {
 | 
				
			||||||
        sethsv(42*((t+i)%6), 255, 255, (LED_TYPE *)&led[i]);
 | 
					        sethsv(42*((t+i)%6), 255, 255, (rgb_led_t *)&led[i]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      rgblight_set();
 | 
					      rgblight_set();
 | 
				
			||||||
      t++; t = t % 6;
 | 
					      t++; t = t % 6;
 | 
				
			||||||
| 
						 | 
					@ -224,9 +224,9 @@ void matrix_scan_user(void) {
 | 
				
			||||||
      col = (col + 1) % 36;
 | 
					      col = (col + 1) % 36;
 | 
				
			||||||
      for (int i = 0; i<6; i++) {
 | 
					      for (int i = 0; i<6; i++) {
 | 
				
			||||||
        if (i==t)
 | 
					        if (i==t)
 | 
				
			||||||
          sethsv(42*(((col-1)/6)%6), 255, 255, (LED_TYPE *)&led[(right ? t : 5-t)]);
 | 
					          sethsv(42*(((col-1)/6)%6), 255, 255, (rgb_led_t *)&led[(right ? t : 5-t)]);
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
          sethsv(0, 0, 0, (LED_TYPE *)&led[right ? i : 5-i]);
 | 
					          sethsv(0, 0, 0, (rgb_led_t *)&led[right ? i : 5-i]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      rgblight_set();
 | 
					      rgblight_set();
 | 
				
			||||||
      t++; t = t % 6;
 | 
					      t++; t = t % 6;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,7 +106,7 @@ bool rgb_matrix_indicators_user(void) {
 | 
				
			||||||
#if defined(RGB_MATRIX_ENABLE)
 | 
					#if defined(RGB_MATRIX_ENABLE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define INDICATOR_RGB_DIVISOR 4
 | 
					#define INDICATOR_RGB_DIVISOR 4
 | 
				
			||||||
extern LED_TYPE rgb_matrix_ws2812_array[DRIVER_LED_TOTAL];
 | 
					extern rgb_led_t rgb_matrix_ws2812_array[DRIVER_LED_TOTAL];
 | 
				
			||||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
 | 
					bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
 | 
				
			||||||
    for (uint8_t i = led_min; i < led_max; i++) {
 | 
					    for (uint8_t i = led_min; i < led_max; i++) {
 | 
				
			||||||
        if (g_led_config.flags[i] & LED_FLAG_INDICATOR) {
 | 
					        if (g_led_config.flags[i] & LED_FLAG_INDICATOR) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,13 +37,13 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi);
 | 
					static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
 | 
					void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds) {
 | 
				
			||||||
    DDRx_ADDRESS(WS2812_DI_PIN) |= pinmask(WS2812_DI_PIN);
 | 
					    DDRx_ADDRESS(WS2812_DI_PIN) |= pinmask(WS2812_DI_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uint8_t masklo = ~(pinmask(WS2812_DI_PIN)) & PORTx_ADDRESS(WS2812_DI_PIN);
 | 
					    uint8_t masklo = ~(pinmask(WS2812_DI_PIN)) & PORTx_ADDRESS(WS2812_DI_PIN);
 | 
				
			||||||
    uint8_t maskhi = pinmask(WS2812_DI_PIN) | PORTx_ADDRESS(WS2812_DI_PIN);
 | 
					    uint8_t maskhi = pinmask(WS2812_DI_PIN) | PORTx_ADDRESS(WS2812_DI_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(LED_TYPE), masklo, maskhi);
 | 
					    ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(rgb_led_t), masklo, maskhi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _delay_us(WS2812_TRST_US);
 | 
					    _delay_us(WS2812_TRST_US);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,12 +18,12 @@ void ws2812_init(void) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Setleds for standard RGB
 | 
					// Setleds for standard RGB
 | 
				
			||||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
 | 
					void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) {
 | 
				
			||||||
    static bool s_init = false;
 | 
					    static bool s_init = false;
 | 
				
			||||||
    if (!s_init) {
 | 
					    if (!s_init) {
 | 
				
			||||||
        ws2812_init();
 | 
					        ws2812_init();
 | 
				
			||||||
        s_init = true;
 | 
					        s_init = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * leds, WS2812_I2C_TIMEOUT);
 | 
					    i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * leds, WS2812_I2C_TIMEOUT);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -268,7 +268,7 @@ static inline void sync_ws2812_transfer(void) {
 | 
				
			||||||
    busy_wait_until(LAST_TRANSFER);
 | 
					    busy_wait_until(LAST_TRANSFER);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {
 | 
					void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) {
 | 
				
			||||||
    static bool is_initialized = false;
 | 
					    static bool is_initialized = false;
 | 
				
			||||||
    if (unlikely(!is_initialized)) {
 | 
					    if (unlikely(!is_initialized)) {
 | 
				
			||||||
        is_initialized = ws2812_init();
 | 
					        is_initialized = ws2812_init();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,7 +72,7 @@ void ws2812_init(void) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Setleds for standard RGB
 | 
					// Setleds for standard RGB
 | 
				
			||||||
void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
 | 
					void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) {
 | 
				
			||||||
    static bool s_init = false;
 | 
					    static bool s_init = false;
 | 
				
			||||||
    if (!s_init) {
 | 
					    if (!s_init) {
 | 
				
			||||||
        ws2812_init();
 | 
					        ws2812_init();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -379,7 +379,7 @@ void ws2812_write_led_rgbw(uint16_t led_number, uint8_t r, uint8_t g, uint8_t b,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Setleds for standard RGB
 | 
					// Setleds for standard RGB
 | 
				
			||||||
void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {
 | 
					void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) {
 | 
				
			||||||
    static bool s_init = false;
 | 
					    static bool s_init = false;
 | 
				
			||||||
    if (!s_init) {
 | 
					    if (!s_init) {
 | 
				
			||||||
        ws2812_init();
 | 
					        ws2812_init();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,7 +106,7 @@ static uint8_t get_protocol_eq(uint8_t data, int pos) {
 | 
				
			||||||
    return eq;
 | 
					    return eq;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void set_led_color_rgb(LED_TYPE color, int pos) {
 | 
					static void set_led_color_rgb(rgb_led_t color, int pos) {
 | 
				
			||||||
    uint8_t* tx_start = &txbuf[PREAMBLE_SIZE];
 | 
					    uint8_t* tx_start = &txbuf[PREAMBLE_SIZE];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
					#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
				
			||||||
| 
						 | 
					@ -187,7 +187,7 @@ void ws2812_init(void) {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {
 | 
					void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) {
 | 
				
			||||||
    static bool s_init = false;
 | 
					    static bool s_init = false;
 | 
				
			||||||
    if (!s_init) {
 | 
					    if (!s_init) {
 | 
				
			||||||
        ws2812_init();
 | 
					        ws2812_init();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -110,7 +110,7 @@ RGB hsv_to_rgb_nocie(HSV hsv) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBW
 | 
					#ifdef RGBW
 | 
				
			||||||
void convert_rgb_to_rgbw(LED_TYPE *led) {
 | 
					void convert_rgb_to_rgbw(rgb_led_t *led) {
 | 
				
			||||||
    // Determine lowest value in all three colors, put that into
 | 
					    // Determine lowest value in all three colors, put that into
 | 
				
			||||||
    // the white channel and then shift all colors by that amount
 | 
					    // the white channel and then shift all colors by that amount
 | 
				
			||||||
    led->w = MIN(led->r, MIN(led->g, led->b));
 | 
					    led->w = MIN(led->r, MIN(led->g, led->b));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -83,12 +83,6 @@
 | 
				
			||||||
#    pragma pack(push, 1)
 | 
					#    pragma pack(push, 1)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBW
 | 
					 | 
				
			||||||
#    define LED_TYPE cRGBW
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#    define LED_TYPE RGB
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define WS2812_BYTE_ORDER_RGB 0
 | 
					#define WS2812_BYTE_ORDER_RGB 0
 | 
				
			||||||
#define WS2812_BYTE_ORDER_GRB 1
 | 
					#define WS2812_BYTE_ORDER_GRB 1
 | 
				
			||||||
#define WS2812_BYTE_ORDER_BGR 2
 | 
					#define WS2812_BYTE_ORDER_BGR 2
 | 
				
			||||||
| 
						 | 
					@ -97,26 +91,7 @@
 | 
				
			||||||
#    define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB
 | 
					#    define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct PACKED {
 | 
					typedef struct PACKED rgb_led_t {
 | 
				
			||||||
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
					 | 
				
			||||||
    uint8_t g;
 | 
					 | 
				
			||||||
    uint8_t r;
 | 
					 | 
				
			||||||
    uint8_t b;
 | 
					 | 
				
			||||||
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
 | 
					 | 
				
			||||||
    uint8_t r;
 | 
					 | 
				
			||||||
    uint8_t g;
 | 
					 | 
				
			||||||
    uint8_t b;
 | 
					 | 
				
			||||||
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
 | 
					 | 
				
			||||||
    uint8_t b;
 | 
					 | 
				
			||||||
    uint8_t g;
 | 
					 | 
				
			||||||
    uint8_t r;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
} cRGB;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef cRGB RGB;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// WS2812 specific layout
 | 
					 | 
				
			||||||
typedef struct PACKED {
 | 
					 | 
				
			||||||
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
					#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
				
			||||||
    uint8_t g;
 | 
					    uint8_t g;
 | 
				
			||||||
    uint8_t r;
 | 
					    uint8_t r;
 | 
				
			||||||
| 
						 | 
					@ -130,10 +105,14 @@ typedef struct PACKED {
 | 
				
			||||||
    uint8_t g;
 | 
					    uint8_t g;
 | 
				
			||||||
    uint8_t r;
 | 
					    uint8_t r;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef RGBW
 | 
				
			||||||
    uint8_t w;
 | 
					    uint8_t w;
 | 
				
			||||||
} cRGBW;
 | 
					#endif
 | 
				
			||||||
 | 
					} rgb_led_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct PACKED {
 | 
					typedef rgb_led_t RGB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct PACKED HSV {
 | 
				
			||||||
    uint8_t h;
 | 
					    uint8_t h;
 | 
				
			||||||
    uint8_t s;
 | 
					    uint8_t s;
 | 
				
			||||||
    uint8_t v;
 | 
					    uint8_t v;
 | 
				
			||||||
| 
						 | 
					@ -146,5 +125,5 @@ typedef struct PACKED {
 | 
				
			||||||
RGB hsv_to_rgb(HSV hsv);
 | 
					RGB hsv_to_rgb(HSV hsv);
 | 
				
			||||||
RGB hsv_to_rgb_nocie(HSV hsv);
 | 
					RGB hsv_to_rgb_nocie(HSV hsv);
 | 
				
			||||||
#ifdef RGBW
 | 
					#ifdef RGBW
 | 
				
			||||||
void convert_rgb_to_rgbw(LED_TYPE *led);
 | 
					void convert_rgb_to_rgbw(rgb_led_t *led);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -426,7 +426,7 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LED color buffer
 | 
					// LED color buffer
 | 
				
			||||||
LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
 | 
					rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
 | 
				
			||||||
bool      ws2812_dirty = false;
 | 
					bool      ws2812_dirty = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void init(void) {
 | 
					static void init(void) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,7 +115,7 @@ animation_status_t animation_status = {};
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef LED_ARRAY
 | 
					#ifndef LED_ARRAY
 | 
				
			||||||
LED_TYPE led[RGBLED_NUM];
 | 
					rgb_led_t led[RGBLED_NUM];
 | 
				
			||||||
#    define LED_ARRAY led
 | 
					#    define LED_ARRAY led
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -144,17 +144,17 @@ __attribute__((weak)) RGB rgblight_hsv_to_rgb(HSV hsv) {
 | 
				
			||||||
    return hsv_to_rgb(hsv);
 | 
					    return hsv_to_rgb(hsv);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) {
 | 
					void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) {
 | 
				
			||||||
    HSV hsv = {hue, sat, val};
 | 
					    HSV hsv = {hue, sat, val};
 | 
				
			||||||
    RGB rgb = rgblight_hsv_to_rgb(hsv);
 | 
					    RGB rgb = rgblight_hsv_to_rgb(hsv);
 | 
				
			||||||
    setrgb(rgb.r, rgb.g, rgb.b, led1);
 | 
					    setrgb(rgb.r, rgb.g, rgb.b, led1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) {
 | 
					void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) {
 | 
				
			||||||
    sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1);
 | 
					    sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) {
 | 
					void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1) {
 | 
				
			||||||
    led1->r = r;
 | 
					    led1->r = r;
 | 
				
			||||||
    led1->g = g;
 | 
					    led1->g = g;
 | 
				
			||||||
    led1->b = b;
 | 
					    led1->b = b;
 | 
				
			||||||
| 
						 | 
					@ -516,7 +516,7 @@ void rgblight_decrease_speed_noeeprom(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) {
 | 
					void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) {
 | 
				
			||||||
    if (rgblight_config.enable) {
 | 
					    if (rgblight_config.enable) {
 | 
				
			||||||
        LED_TYPE tmp_led;
 | 
					        rgb_led_t tmp_led;
 | 
				
			||||||
        sethsv(hue, sat, val, &tmp_led);
 | 
					        sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
        rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
 | 
					        rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -532,7 +532,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w
 | 
				
			||||||
        rgblight_status.base_mode = mode_base_table[rgblight_config.mode];
 | 
					        rgblight_status.base_mode = mode_base_table[rgblight_config.mode];
 | 
				
			||||||
        if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) {
 | 
					        if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) {
 | 
				
			||||||
            // same static color
 | 
					            // same static color
 | 
				
			||||||
            LED_TYPE tmp_led;
 | 
					            rgb_led_t tmp_led;
 | 
				
			||||||
#ifdef RGBLIGHT_LAYERS_RETAIN_VAL
 | 
					#ifdef RGBLIGHT_LAYERS_RETAIN_VAL
 | 
				
			||||||
            // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val
 | 
					            // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val
 | 
				
			||||||
            rgblight_config.val = val;
 | 
					            rgblight_config.val = val;
 | 
				
			||||||
| 
						 | 
					@ -576,7 +576,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w
 | 
				
			||||||
                        _hue = hue - _hue;
 | 
					                        _hue = hue - _hue;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range);
 | 
					                    dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range);
 | 
				
			||||||
                    sethsv(_hue, sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
					                    sethsv(_hue, sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
#    ifdef RGBLIGHT_LAYERS_RETAIN_VAL
 | 
					#    ifdef RGBLIGHT_LAYERS_RETAIN_VAL
 | 
				
			||||||
                // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val
 | 
					                // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val
 | 
				
			||||||
| 
						 | 
					@ -679,7 +679,7 @@ void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index) {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LED_TYPE tmp_led;
 | 
					    rgb_led_t tmp_led;
 | 
				
			||||||
    sethsv(hue, sat, val, &tmp_led);
 | 
					    sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
    rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
 | 
					    rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -717,7 +717,7 @@ void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start,
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LED_TYPE tmp_led;
 | 
					    rgb_led_t tmp_led;
 | 
				
			||||||
    sethsv(hue, sat, val, &tmp_led);
 | 
					    sethsv(hue, sat, val, &tmp_led);
 | 
				
			||||||
    rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end);
 | 
					    rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -786,8 +786,8 @@ static void rgblight_layers_write(void) {
 | 
				
			||||||
                break; // No more segments
 | 
					                break; // No more segments
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // Write segment.count LEDs
 | 
					            // Write segment.count LEDs
 | 
				
			||||||
            LED_TYPE *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)];
 | 
					            rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)];
 | 
				
			||||||
            for (LED_TYPE *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) {
 | 
					            for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) {
 | 
				
			||||||
#    ifdef RGBLIGHT_LAYERS_RETAIN_VAL
 | 
					#    ifdef RGBLIGHT_LAYERS_RETAIN_VAL
 | 
				
			||||||
                sethsv(segment.hue, segment.sat, current_val, led_ptr);
 | 
					                sethsv(segment.hue, segment.sat, current_val, led_ptr);
 | 
				
			||||||
#    else
 | 
					#    else
 | 
				
			||||||
| 
						 | 
					@ -897,14 +897,14 @@ void rgblight_wakeup(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((weak)) void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
 | 
					__attribute__((weak)) void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
 | 
				
			||||||
    ws2812_setleds(start_led, num_leds);
 | 
					    ws2812_setleds(start_led, num_leds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef RGBLIGHT_CUSTOM_DRIVER
 | 
					#ifndef RGBLIGHT_CUSTOM_DRIVER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rgblight_set(void) {
 | 
					void rgblight_set(void) {
 | 
				
			||||||
    LED_TYPE *start_led;
 | 
					    rgb_led_t *start_led;
 | 
				
			||||||
    uint8_t    num_leds = rgblight_ranges.clipping_num_leds;
 | 
					    uint8_t    num_leds = rgblight_ranges.clipping_num_leds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!rgblight_config.enable) {
 | 
					    if (!rgblight_config.enable) {
 | 
				
			||||||
| 
						 | 
					@ -931,7 +931,7 @@ void rgblight_set(void) {
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    ifdef RGBLIGHT_LED_MAP
 | 
					#    ifdef RGBLIGHT_LED_MAP
 | 
				
			||||||
    LED_TYPE led0[RGBLED_NUM];
 | 
					    rgb_led_t led0[RGBLED_NUM];
 | 
				
			||||||
    for (uint8_t i = 0; i < RGBLED_NUM; i++) {
 | 
					    for (uint8_t i = 0; i < RGBLED_NUM; i++) {
 | 
				
			||||||
        led0[i] = led[pgm_read_byte(&led_map[i])];
 | 
					        led0[i] = led[pgm_read_byte(&led_map[i])];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -1230,7 +1230,7 @@ void rgblight_effect_rainbow_swirl(animation_status_t *anim) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / rgblight_ranges.effect_num_leds * i + anim->current_hue);
 | 
					        hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / rgblight_ranges.effect_num_leds * i + anim->current_hue);
 | 
				
			||||||
        sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
					        sethsv(hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1267,7 +1267,7 @@ void rgblight_effect_snake(animation_status_t *anim) {
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
					        rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
        ledp->r         = 0;
 | 
					        ledp->r         = 0;
 | 
				
			||||||
        ledp->g         = 0;
 | 
					        ledp->g         = 0;
 | 
				
			||||||
        ledp->b         = 0;
 | 
					        ledp->b         = 0;
 | 
				
			||||||
| 
						 | 
					@ -1340,7 +1340,7 @@ void rgblight_effect_knight(animation_status_t *anim) {
 | 
				
			||||||
        cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % rgblight_ranges.effect_num_leds + rgblight_ranges.effect_start_pos;
 | 
					        cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % rgblight_ranges.effect_num_leds + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (i >= low_bound && i <= high_bound) {
 | 
					        if (i >= low_bound && i <= high_bound) {
 | 
				
			||||||
            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[cur]);
 | 
					            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[cur]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            led[cur].r = 0;
 | 
					            led[cur].r = 0;
 | 
				
			||||||
            led[cur].g = 0;
 | 
					            led[cur].g = 0;
 | 
				
			||||||
| 
						 | 
					@ -1392,7 +1392,7 @@ void rgblight_effect_christmas(animation_status_t *anim) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        uint8_t local_hue = (i / RGBLIGHT_EFFECT_CHRISTMAS_STEP) % 2 ? hue : hue_green - hue;
 | 
					        uint8_t local_hue = (i / RGBLIGHT_EFFECT_CHRISTMAS_STEP) % 2 ? hue : hue_green - hue;
 | 
				
			||||||
        sethsv(local_hue, rgblight_config.sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
					        sethsv(local_hue, rgblight_config.sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rgblight_set();
 | 
					    rgblight_set();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1415,7 +1415,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) {
 | 
				
			||||||
    uint8_t        b;
 | 
					    uint8_t        b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (maxval == 0) {
 | 
					    if (maxval == 0) {
 | 
				
			||||||
        LED_TYPE tmp_led;
 | 
					        rgb_led_t tmp_led;
 | 
				
			||||||
        sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led);
 | 
					        sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led);
 | 
				
			||||||
        maxval = tmp_led.r;
 | 
					        maxval = tmp_led.r;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -1439,7 +1439,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) {
 | 
				
			||||||
#ifdef RGBLIGHT_EFFECT_ALTERNATING
 | 
					#ifdef RGBLIGHT_EFFECT_ALTERNATING
 | 
				
			||||||
void rgblight_effect_alternating(animation_status_t *anim) {
 | 
					void rgblight_effect_alternating(animation_status_t *anim) {
 | 
				
			||||||
    for (int i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
					    for (int i = 0; i < rgblight_ranges.effect_num_leds; i++) {
 | 
				
			||||||
        LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
					        rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
        if (i < rgblight_ranges.effect_num_leds / 2 && anim->pos) {
 | 
					        if (i < rgblight_ranges.effect_num_leds / 2 && anim->pos) {
 | 
				
			||||||
            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp);
 | 
					            sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp);
 | 
				
			||||||
        } else if (i >= rgblight_ranges.effect_num_leds / 2 && !anim->pos) {
 | 
					        } else if (i >= rgblight_ranges.effect_num_leds / 2 && !anim->pos) {
 | 
				
			||||||
| 
						 | 
					@ -1512,7 +1512,7 @@ void rgblight_effect_twinkle(animation_status_t *anim) {
 | 
				
			||||||
            // This LED is off, and was NOT selected to start brightening
 | 
					            // This LED is off, and was NOT selected to start brightening
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
					        rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos;
 | 
				
			||||||
        sethsv(c->h, c->s, c->v, ledp);
 | 
					        sethsv(c->h, c->s, c->v, ledp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -233,7 +233,7 @@ void rgblight_unblink_all_but_layer(uint8_t layer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern LED_TYPE led[RGBLED_NUM];
 | 
					extern rgb_led_t led[RGBLED_NUM];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern const uint8_t  RGBLED_BREATHING_INTERVALS[4] PROGMEM;
 | 
					extern const uint8_t  RGBLED_BREATHING_INTERVALS[4] PROGMEM;
 | 
				
			||||||
extern const uint8_t  RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM;
 | 
					extern const uint8_t  RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM;
 | 
				
			||||||
| 
						 | 
					@ -283,9 +283,9 @@ typedef struct _rgblight_ranges_t {
 | 
				
			||||||
extern rgblight_ranges_t rgblight_ranges;
 | 
					extern rgblight_ranges_t rgblight_ranges;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* === Utility Functions ===*/
 | 
					/* === Utility Functions ===*/
 | 
				
			||||||
void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1);
 | 
					void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1);
 | 
				
			||||||
void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1); // without RGBLIGHT_LIMIT_VAL check
 | 
					void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1); // without RGBLIGHT_LIMIT_VAL check
 | 
				
			||||||
void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1);
 | 
					void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* === Low level Functions === */
 | 
					/* === Low level Functions === */
 | 
				
			||||||
void rgblight_set(void);
 | 
					void rgblight_set(void);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -142,7 +142,7 @@ void scan_rgblight_fadeout(void) {  // Don't effing change this function .... rg
 | 
				
			||||||
            if (light->life) {
 | 
					            if (light->life) {
 | 
				
			||||||
                light->life -= 1;
 | 
					                light->life -= 1;
 | 
				
			||||||
                if (get_highest_layer(layer_state) == 0) {
 | 
					                if (get_highest_layer(layer_state) == 0) {
 | 
				
			||||||
                    sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
 | 
					                    sethsv(light->hue + rand() % 0xF, 255, light->life, (rgb_led_t *)&led[light_index]);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                light->timer = timer_read();
 | 
					                light->timer = timer_read();
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ void matrix_scan_keymap(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint16_t effect_start_timer = 0;
 | 
					uint16_t effect_start_timer = 0;
 | 
				
			||||||
uint8_t user_rgb_mode = 0;
 | 
					uint8_t user_rgb_mode = 0;
 | 
				
			||||||
LED_TYPE shadowed_led[RGBLED_NUM] = {{0}};
 | 
					rgb_led_t shadowed_led[RGBLED_NUM] = {{0}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void start_firey_return(void) {
 | 
					void start_firey_return(void) {
 | 
				
			||||||
  user_rgb_mode = BREATH_FIRE;
 | 
					  user_rgb_mode = BREATH_FIRE;
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,7 @@ void set_color_for_offsets(uint16_t time_offset, uint16_t space_offset, uint8_t
 | 
				
			||||||
  float alpha = (time_progress + 0.1) * 7.0 - space_progress;
 | 
					  float alpha = (time_progress + 0.1) * 7.0 - space_progress;
 | 
				
			||||||
  alpha = fmin(1.0, alpha*alpha);
 | 
					  alpha = fmin(1.0, alpha*alpha);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LED_TYPE px[1] = {{0}};
 | 
					  rgb_led_t px[1] = {{0}};
 | 
				
			||||||
  sethsv((uint16_t)(fmod(time_progress * 1.5 + space_progress,1.0)*360), 255, (uint8_t)(progress*255),&px[0]);
 | 
					  sethsv((uint16_t)(fmod(time_progress * 1.5 + space_progress,1.0)*360), 255, (uint8_t)(progress*255),&px[0]);
 | 
				
			||||||
  led[idx].r = alpha * px[0].r + ( 1.0 - alpha) * shadowed_led[idx].r;
 | 
					  led[idx].r = alpha * px[0].r + ( 1.0 - alpha) * shadowed_led[idx].r;
 | 
				
			||||||
  led[idx].g = alpha * px[0].g + ( 1.0 - alpha) * shadowed_led[idx].g;
 | 
					  led[idx].g = alpha * px[0].g + ( 1.0 - alpha) * shadowed_led[idx].g;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern uint8_t user_rgb_mode;
 | 
					extern uint8_t user_rgb_mode;
 | 
				
			||||||
extern LED_TYPE shadowed_led[];
 | 
					extern rgb_led_t shadowed_led[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //RGBLIGHT_ENABLE
 | 
					#endif //RGBLIGHT_ENABLE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@
 | 
				
			||||||
#define EECONFIG_LED_DIM_LVL (uint8_t *)15
 | 
					#define EECONFIG_LED_DIM_LVL (uint8_t *)15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SET_LED_RGB(r, g, b, led_dim, pos)                                     \
 | 
					#define SET_LED_RGB(r, g, b, led_dim, pos)                                     \
 | 
				
			||||||
  setrgb(r >> led_dim, g >> led_dim, b >> led_dim, (LED_TYPE *)&led[pos])
 | 
					  setrgb(r >> led_dim, g >> led_dim, b >> led_dim, (rgb_led_t *)&led[pos])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum {
 | 
					typedef enum {
 | 
				
			||||||
  DEFAULT,
 | 
					  DEFAULT,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue