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.h46
1 files changed, 38 insertions, 8 deletions
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index a7a1c983f..e42be6466 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -23,7 +23,6 @@
23#include <stdbool.h> 23#include <stdbool.h>
24#include "led_matrix_types.h" 24#include "led_matrix_types.h"
25#include "quantum.h" 25#include "quantum.h"
26#include "led_matrix_legacy_enables.h"
27 26
28#ifdef IS31FL3731 27#ifdef IS31FL3731
29# include "is31fl3731-simple.h" 28# include "is31fl3731-simple.h"
@@ -38,14 +37,33 @@
38#endif 37#endif
39 38
40#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL 39#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) \ 40# if defined(LED_MATRIX_SPLIT)
42 uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ 41# define LED_MATRIX_USE_LIMITS(min, max) \
43 uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ 42 uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \
44 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; 43 uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \
44 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; \
45 uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \
46 if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \
47 if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0];
48# else
49# define LED_MATRIX_USE_LIMITS(min, max) \
50 uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \
51 uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \
52 if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL;
53# endif
45#else 54#else
46# define LED_MATRIX_USE_LIMITS(min, max) \ 55# if defined(LED_MATRIX_SPLIT)
47 uint8_t min = 0; \ 56# define LED_MATRIX_USE_LIMITS(min, max) \
48 uint8_t max = DRIVER_LED_TOTAL; 57 uint8_t min = 0; \
58 uint8_t max = DRIVER_LED_TOTAL; \
59 const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \
60 if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \
61 if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0];
62# else
63# define LED_MATRIX_USE_LIMITS(min, max) \
64 uint8_t min = 0; \
65 uint8_t max = DRIVER_LED_TOTAL;
66# endif
49#endif 67#endif
50 68
51#define LED_MATRIX_TEST_LED_FLAGS() \ 69#define LED_MATRIX_TEST_LED_FLAGS() \
@@ -147,6 +165,18 @@ typedef struct {
147 void (*flush)(void); 165 void (*flush)(void);
148} led_matrix_driver_t; 166} led_matrix_driver_t;
149 167
168static inline bool led_matrix_check_finished_leds(uint8_t led_idx) {
169#if defined(LED_MATRIX_SPLIT)
170 if (is_keyboard_left()) {
171 uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT;
172 return led_idx < k_led_matrix_split[0];
173 } else
174 return led_idx < DRIVER_LED_TOTAL;
175#else
176 return led_idx < DRIVER_LED_TOTAL;
177#endif
178}
179
150extern const led_matrix_driver_t led_matrix_driver; 180extern const led_matrix_driver_t led_matrix_driver;
151 181
152extern led_eeconfig_t led_matrix_eeconfig; 182extern led_eeconfig_t led_matrix_eeconfig;