diff options
Diffstat (limited to 'quantum/led_matrix/led_matrix.h')
| -rw-r--r-- | quantum/led_matrix/led_matrix.h | 46 |
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 | ||
| 168 | static 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 | |||
| 150 | extern const led_matrix_driver_t led_matrix_driver; | 180 | extern const led_matrix_driver_t led_matrix_driver; |
| 151 | 181 | ||
| 152 | extern led_eeconfig_t led_matrix_eeconfig; | 182 | extern led_eeconfig_t led_matrix_eeconfig; |
