summaryrefslogtreecommitdiff
path: root/quantum/led_matrix
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/led_matrix')
-rw-r--r--quantum/led_matrix/led_matrix.c54
-rw-r--r--quantum/led_matrix/led_matrix.h24
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c2
-rw-r--r--quantum/led_matrix/led_matrix_types.h4
4 files changed, 44 insertions, 40 deletions
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 14dd0dd48a..e215c2c2c3 100644
--- a/quantum/led_matrix/led_matrix.c
+++ b/quantum/led_matrix/led_matrix.c
@@ -54,12 +54,8 @@ const led_point_t k_led_matrix_center = LED_MATRIX_CENTER;
// -----End led effect includes macros-------
// ------------------------------------------
-#if defined(LED_DISABLE_AFTER_TIMEOUT) && !defined(LED_DISABLE_TIMEOUT)
-# define LED_DISABLE_TIMEOUT (LED_DISABLE_AFTER_TIMEOUT * 1200UL)
-#endif
-
-#ifndef LED_DISABLE_TIMEOUT
-# define LED_DISABLE_TIMEOUT 0
+#ifndef LED_MATRIX_TIMEOUT
+# define LED_MATRIX_TIMEOUT 0
#endif
#if !defined(LED_MATRIX_MAXIMUM_BRIGHTNESS) || LED_MATRIX_MAXIMUM_BRIGHTNESS > UINT8_MAX
@@ -103,9 +99,9 @@ static uint8_t led_last_enable = UINT8_MAX;
static uint8_t led_last_effect = UINT8_MAX;
static effect_params_t led_effect_params = {0, LED_FLAG_ALL, false};
static led_task_states led_task_state = SYNCING;
-#if LED_DISABLE_TIMEOUT > 0
+#if LED_MATRIX_TIMEOUT > 0
static uint32_t led_anykey_timer;
-#endif // LED_DISABLE_TIMEOUT > 0
+#endif // LED_MATRIX_TIMEOUT > 0
// double buffers
static uint32_t led_timer_buffer;
@@ -170,7 +166,7 @@ void led_matrix_set_value(int index, uint8_t value) {
void led_matrix_set_value_all(uint8_t value) {
#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
- for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++)
+ for (uint8_t i = 0; i < LED_MATRIX_LED_COUNT; i++)
led_matrix_set_value(i, value);
#else
# ifdef USE_CIE1931_CURVE
@@ -185,9 +181,9 @@ void process_led_matrix(uint8_t row, uint8_t col, bool pressed) {
#ifndef LED_MATRIX_SPLIT
if (!is_keyboard_master()) return;
#endif
-#if LED_DISABLE_TIMEOUT > 0
+#if LED_MATRIX_TIMEOUT > 0
led_anykey_timer = 0;
-#endif // LED_DISABLE_TIMEOUT > 0
+#endif // LED_MATRIX_TIMEOUT > 0
#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
uint8_t led[LED_HITS_TO_REMEMBER];
@@ -237,13 +233,13 @@ static bool led_matrix_none(effect_params_t *params) {
}
static void led_task_timers(void) {
-#if defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_DISABLE_TIMEOUT > 0
+#if defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_MATRIX_TIMEOUT > 0
uint32_t deltaTime = sync_timer_elapsed32(led_timer_buffer);
-#endif // defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_DISABLE_TIMEOUT > 0
+#endif // defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_MATRIX_TIMEOUT > 0
led_timer_buffer = sync_timer_read32();
// Update double buffer timers
-#if LED_DISABLE_TIMEOUT > 0
+#if LED_MATRIX_TIMEOUT > 0
if (led_anykey_timer < UINT32_MAX) {
if (UINT32_MAX - deltaTime < led_anykey_timer) {
led_anykey_timer = UINT32_MAX;
@@ -251,7 +247,7 @@ static void led_task_timers(void) {
led_anykey_timer += deltaTime;
}
}
-#endif // LED_DISABLE_TIMEOUT > 0
+#endif // LED_MATRIX_TIMEOUT > 0
// Update double buffer last hit timers
#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
@@ -357,9 +353,9 @@ void led_matrix_task(void) {
// Ideally we would also stop sending zeros to the LED driver PWM buffers
// while suspended and just do a software shutdown. This is a cheap hack for now.
bool suspend_backlight = suspend_state ||
-#if LED_DISABLE_TIMEOUT > 0
- (led_anykey_timer > (uint32_t)LED_DISABLE_TIMEOUT) ||
-#endif // LED_DISABLE_TIMEOUT > 0
+#if LED_MATRIX_TIMEOUT > 0
+ (led_anykey_timer > (uint32_t)LED_MATRIX_TIMEOUT) ||
+#endif // LED_MATRIX_TIMEOUT > 0
false;
uint8_t effect = suspend_backlight || !led_matrix_eeconfig.enable ? 0 : led_matrix_eeconfig.mode;
@@ -389,9 +385,13 @@ void led_matrix_indicators(void) {
led_matrix_indicators_user();
}
-__attribute__((weak)) void led_matrix_indicators_kb(void) {}
+__attribute__((weak)) bool led_matrix_indicators_kb(void) {
+ return led_matrix_indicators_user();
+}
-__attribute__((weak)) void led_matrix_indicators_user(void) {}
+__attribute__((weak)) bool led_matrix_indicators_user(void) {
+ return true;
+}
void led_matrix_indicators_advanced(effect_params_t *params) {
/* special handling is needed for "params->iter", since it's already been incremented.
@@ -399,21 +399,25 @@ void led_matrix_indicators_advanced(effect_params_t *params) {
* and not sure which would be better. Otherwise, this should be called from
* led_task_render, right before the iter++ line.
*/
-#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL
+#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < LED_MATRIX_LED_COUNT
uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * (params->iter - 1);
uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT;
- if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL;
+ if (max > LED_MATRIX_LED_COUNT) max = LED_MATRIX_LED_COUNT;
#else
uint8_t min = 0;
- uint8_t max = DRIVER_LED_TOTAL;
+ uint8_t max = LED_MATRIX_LED_COUNT;
#endif
led_matrix_indicators_advanced_kb(min, max);
led_matrix_indicators_advanced_user(min, max);
}
-__attribute__((weak)) void led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {}
+__attribute__((weak)) bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ return led_matrix_indicators_advanced_user(led_min, led_max);
+}
-__attribute__((weak)) void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {}
+__attribute__((weak)) bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ return true;
+}
void led_matrix_init(void) {
led_matrix_driver.init();
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index 446f293c78..c7d360f366 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -42,15 +42,15 @@
#endif
#ifndef LED_MATRIX_LED_PROCESS_LIMIT
-# define LED_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5
+# define LED_MATRIX_LED_PROCESS_LIMIT (LED_MATRIX_LED_COUNT + 4) / 5
#endif
-#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL
+#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 > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; \
+ 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];
@@ -58,20 +58,20 @@
# 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 > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL;
+ 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 = DRIVER_LED_TOTAL; \
+ 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 = DRIVER_LED_TOTAL;
+ uint8_t max = LED_MATRIX_LED_COUNT;
# endif
#endif
@@ -120,12 +120,12 @@ void led_matrix_task(void);
// This runs after another backlight effect and replaces
// values already set
void led_matrix_indicators(void);
-void led_matrix_indicators_kb(void);
-void led_matrix_indicators_user(void);
+bool led_matrix_indicators_kb(void);
+bool led_matrix_indicators_user(void);
void led_matrix_indicators_advanced(effect_params_t *params);
-void led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max);
-void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max);
+bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max);
+bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max);
void led_matrix_init(void);
@@ -181,9 +181,9 @@ static inline bool led_matrix_check_finished_leds(uint8_t led_idx) {
uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT;
return led_idx < k_led_matrix_split[0];
} else
- return led_idx < DRIVER_LED_TOTAL;
+ return led_idx < LED_MATRIX_LED_COUNT;
#else
- return led_idx < DRIVER_LED_TOTAL;
+ return led_idx < LED_MATRIX_LED_COUNT;
#endif
}
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index f01b395c15..2c09ba82b1 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -96,7 +96,7 @@ static void init(void) {
# endif
# endif
- for (int index = 0; index < DRIVER_LED_TOTAL; index++) {
+ for (int index = 0; index < LED_MATRIX_LED_COUNT; index++) {
# if defined(IS31FL3731)
IS31FL3731_set_led_control_register(index, true);
# elif defined(IS31FL3733)
diff --git a/quantum/led_matrix/led_matrix_types.h b/quantum/led_matrix/led_matrix_types.h
index 3dc533100f..6d79a3592d 100644
--- a/quantum/led_matrix/led_matrix_types.h
+++ b/quantum/led_matrix/led_matrix_types.h
@@ -76,8 +76,8 @@ typedef struct PACKED {
typedef struct PACKED {
uint8_t matrix_co[MATRIX_ROWS][MATRIX_COLS];
- led_point_t point[DRIVER_LED_TOTAL];
- uint8_t flags[DRIVER_LED_TOTAL];
+ led_point_t point[LED_MATRIX_LED_COUNT];
+ uint8_t flags[LED_MATRIX_LED_COUNT];
} led_config_t;
typedef union {