aboutsummaryrefslogtreecommitdiff
path: root/quantum/rgb_matrix/rgb_matrix.h
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/rgb_matrix/rgb_matrix.h')
-rw-r--r--quantum/rgb_matrix/rgb_matrix.h47
1 files changed, 40 insertions, 7 deletions
diff --git a/quantum/rgb_matrix/rgb_matrix.h b/quantum/rgb_matrix/rgb_matrix.h
index f53e011c1..af5ca9e79 100644
--- a/quantum/rgb_matrix/rgb_matrix.h
+++ b/quantum/rgb_matrix/rgb_matrix.h
@@ -33,6 +33,8 @@
33# include "is31fl3737.h" 33# include "is31fl3737.h"
34#elif defined(IS31FL3741) 34#elif defined(IS31FL3741)
35# include "is31fl3741.h" 35# include "is31fl3741.h"
36#elif defined(CKLED2001)
37# include "ckled2001.h"
36#elif defined(AW20216) 38#elif defined(AW20216)
37# include "aw20216.h" 39# include "aw20216.h"
38#elif defined(WS2812) 40#elif defined(WS2812)
@@ -48,14 +50,33 @@
48#endif 50#endif
49 51
50#if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL 52#if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL
51# define RGB_MATRIX_USE_LIMITS(min, max) \ 53# if defined(RGB_MATRIX_SPLIT)
52 uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \ 54# define RGB_MATRIX_USE_LIMITS(min, max) \
53 uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \ 55 uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \
54 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; 56 uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \
57 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; \
58 uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; \
59 if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \
60 if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0];
61# else
62# define RGB_MATRIX_USE_LIMITS(min, max) \
63 uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \
64 uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \
65 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL;
66# endif
55#else 67#else
56# define RGB_MATRIX_USE_LIMITS(min, max) \ 68# if defined(RGB_MATRIX_SPLIT)
57 uint8_t min = 0; \ 69# define RGB_MATRIX_USE_LIMITS(min, max) \
58 uint8_t max = DRIVER_LED_TOTAL; 70 uint8_t min = 0; \
71 uint8_t max = DRIVER_LED_TOTAL; \
72 const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; \
73 if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \
74 if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0];
75# else
76# define RGB_MATRIX_USE_LIMITS(min, max) \
77 uint8_t min = 0; \
78 uint8_t max = DRIVER_LED_TOTAL;
79# endif
59#endif 80#endif
60 81
61#define RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b) \ 82#define RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b) \
@@ -214,6 +235,18 @@ typedef struct {
214 void (*flush)(void); 235 void (*flush)(void);
215} rgb_matrix_driver_t; 236} rgb_matrix_driver_t;
216 237
238static inline bool rgb_matrix_check_finished_leds(uint8_t led_idx) {
239#if defined(RGB_MATRIX_SPLIT)
240 if (is_keyboard_left()) {
241 uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;
242 return led_idx < k_rgb_matrix_split[0];
243 } else
244 return led_idx < DRIVER_LED_TOTAL;
245#else
246 return led_idx < DRIVER_LED_TOTAL;
247#endif
248}
249
217extern const rgb_matrix_driver_t rgb_matrix_driver; 250extern const rgb_matrix_driver_t rgb_matrix_driver;
218 251
219extern rgb_config_t rgb_matrix_config; 252extern rgb_config_t rgb_matrix_config;