aboutsummaryrefslogtreecommitdiff
path: root/quantum/led_matrix/led_matrix.h
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/led_matrix/led_matrix.h')
-rw-r--r--quantum/led_matrix/led_matrix.h45
1 files changed, 38 insertions, 7 deletions
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index a7a1c983f..f540be44c 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -38,14 +38,33 @@
38#endif 38#endif
39 39
40#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL 40#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL
41# define LED_MATRIX_USE_LIMITS(min, max) \ 41# if defined(LED_MATRIX_SPLIT)
42 uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ 42# define LED_MATRIX_USE_LIMITS(min, max)
43 uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ 43uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter;
44 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; 44uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT;
45if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL;
46uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT;
47if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0];
48if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0];
49# else
50# define LED_MATRIX_USE_LIMITS(min, max) \
51 uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \
52 uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \
53 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL;
54# endif
45#else 55#else
46# define LED_MATRIX_USE_LIMITS(min, max) \ 56# if defined(LED_MATRIX_SPLIT)
47 uint8_t min = 0; \ 57# define LED_MATRIX_USE_LIMITS(min, max) \
48 uint8_t max = DRIVER_LED_TOTAL; 58 uint8_t min = 0; \
59 uint8_t max = DRIVER_LED_TOTAL; \
60 const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \
61 if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \
62 if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0];
63# else
64# define LED_MATRIX_USE_LIMITS(min, max) \
65 uint8_t min = 0; \
66 uint8_t max = DRIVER_LED_TOTAL;
67# endif
49#endif 68#endif
50 69
51#define LED_MATRIX_TEST_LED_FLAGS() \ 70#define LED_MATRIX_TEST_LED_FLAGS() \
@@ -147,6 +166,18 @@ typedef struct {
147 void (*flush)(void); 166 void (*flush)(void);
148} led_matrix_driver_t; 167} led_matrix_driver_t;
149 168
169static inline bool led_matrix_check_finished_leds(uint8_t led_idx) {
170#if defined(LED_MATRIX_SPLIT)
171 if (is_keyboard_left()) {
172 uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT;
173 return led_idx < k_led_matrix_split[0];
174 } else
175 return led_idx < DRIVER_LED_TOTAL;
176#else
177 return led_idx < DRIVER_LED_TOTAL;
178#endif
179}
180
150extern const led_matrix_driver_t led_matrix_driver; 181extern const led_matrix_driver_t led_matrix_driver;
151 182
152extern led_eeconfig_t led_matrix_eeconfig; 183extern led_eeconfig_t led_matrix_eeconfig;