summaryrefslogtreecommitdiff
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.h103
1 files changed, 66 insertions, 37 deletions
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index c2533ca49c..c903a230f4 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -25,16 +25,60 @@
#include "led_matrix_types.h"
#include "keyboard.h"
-#ifdef IS31FL3731
+#if defined(LED_MATRIX_IS31FL3218)
+# include "is31fl3218-simple.h"
+#elif defined(LED_MATRIX_IS31FL3731)
# include "is31fl3731-simple.h"
-#elif defined(IS31FLCOMMON)
-# include "is31flcommon.h"
#endif
-#ifdef IS31FL3733
+#ifdef LED_MATRIX_IS31FL3733
# include "is31fl3733-simple.h"
#endif
-#ifdef CKLED2001
-# include "ckled2001-simple.h"
+#ifdef LED_MATRIX_IS31FL3736
+# include "is31fl3736-simple.h"
+#endif
+#ifdef LED_MATRIX_IS31FL3737
+# include "is31fl3737-simple.h"
+#endif
+#ifdef LED_MATRIX_IS31FL3741
+# include "is31fl3741-simple.h"
+#endif
+#if defined(IS31FLCOMMON)
+# include "is31flcommon.h"
+#endif
+#ifdef LED_MATRIX_SNLED27351
+# include "snled27351-simple.h"
+#endif
+
+#ifndef LED_MATRIX_TIMEOUT
+# define LED_MATRIX_TIMEOUT 0
+#endif
+
+#ifndef LED_MATRIX_MAXIMUM_BRIGHTNESS
+# define LED_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX
+#endif
+
+#ifndef LED_MATRIX_VAL_STEP
+# define LED_MATRIX_VAL_STEP 8
+#endif
+
+#ifndef LED_MATRIX_SPD_STEP
+# define LED_MATRIX_SPD_STEP 16
+#endif
+
+#ifndef LED_MATRIX_DEFAULT_ON
+# define LED_MATRIX_DEFAULT_ON true
+#endif
+
+#ifndef LED_MATRIX_DEFAULT_MODE
+# define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID
+#endif
+
+#ifndef LED_MATRIX_DEFAULT_VAL
+# define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS
+#endif
+
+#ifndef LED_MATRIX_DEFAULT_SPD
+# define LED_MATRIX_DEFAULT_SPD UINT8_MAX / 2
#endif
#ifndef LED_MATRIX_LED_FLUSH_LIMIT
@@ -44,37 +88,22 @@
#ifndef LED_MATRIX_LED_PROCESS_LIMIT
# define LED_MATRIX_LED_PROCESS_LIMIT ((LED_MATRIX_LED_COUNT + 4) / 5)
#endif
-#define LED_MATRIX_LED_PROCESS_MAX_ITERATIONS ((LED_MATRIX_LED_COUNT + LED_MATRIX_LED_PROCESS_LIMIT - 1) / LED_MATRIX_LED_PROCESS_LIMIT)
-
-#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < LED_MATRIX_LED_COUNT
-# if defined(LED_MATRIX_SPLIT)
-# define LED_MATRIX_USE_LIMITS(min, max) \
- uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \
- uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \
- if (max > LED_MATRIX_LED_COUNT) max = LED_MATRIX_LED_COUNT; \
- uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \
- if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \
- if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0];
-# else
-# define LED_MATRIX_USE_LIMITS(min, max) \
- uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \
- uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \
- if (max > LED_MATRIX_LED_COUNT) max = LED_MATRIX_LED_COUNT;
-# endif
-#else
-# if defined(LED_MATRIX_SPLIT)
-# define LED_MATRIX_USE_LIMITS(min, max) \
- uint8_t min = 0; \
- uint8_t max = LED_MATRIX_LED_COUNT; \
- const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \
- if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \
- if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0];
-# else
-# define LED_MATRIX_USE_LIMITS(min, max) \
- uint8_t min = 0; \
- uint8_t max = LED_MATRIX_LED_COUNT;
-# endif
-#endif
+
+struct led_matrix_limits_t {
+ uint8_t led_min_index;
+ uint8_t led_max_index;
+};
+
+struct led_matrix_limits_t led_matrix_get_limits(uint8_t iter);
+
+#define LED_MATRIX_USE_LIMITS_ITER(min, max, iter) \
+ struct led_matrix_limits_t limits = led_matrix_get_limits(iter); \
+ uint8_t min = limits.led_min_index; \
+ uint8_t max = limits.led_max_index; \
+ (void)min; \
+ (void)max;
+
+#define LED_MATRIX_USE_LIMITS(min, max) LED_MATRIX_USE_LIMITS_ITER(min, max, params->iter)
#define LED_MATRIX_TEST_LED_FLAGS() \
if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) continue