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.c10
-rw-r--r--quantum/led_matrix/led_matrix.h5
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c90
3 files changed, 57 insertions, 48 deletions
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 828d61641a..1676a60aa3 100644
--- a/quantum/led_matrix/led_matrix.c
+++ b/quantum/led_matrix/led_matrix.c
@@ -20,8 +20,13 @@
#include "led_matrix.h"
#include "progmem.h"
#include "eeprom.h"
+#include "eeconfig.h"
+#include "keyboard.h"
+#include "sync_timer.h"
+#include "debug.h"
#include <string.h>
#include <math.h>
+#include <stdlib.h>
#include "led_tables.h"
#include <lib/lib8tion/lib8tion.h>
@@ -366,7 +371,10 @@ void led_matrix_task(void) {
case RENDERING:
led_task_render(effect);
if (effect) {
- led_matrix_indicators();
+ // Only run the basic indicators in the last render iteration (default there are 5 iterations)
+ if (led_effect_params.iter == LED_MATRIX_LED_PROCESS_MAX_ITERATIONS) {
+ led_matrix_indicators();
+ }
led_matrix_indicators_advanced(&led_effect_params);
}
break;
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index c7d360f366..c2533ca49c 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -23,7 +23,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "led_matrix_types.h"
-#include "quantum.h"
+#include "keyboard.h"
#ifdef IS31FL3731
# include "is31fl3731-simple.h"
@@ -42,8 +42,9 @@
#endif
#ifndef LED_MATRIX_LED_PROCESS_LIMIT
-# define LED_MATRIX_LED_PROCESS_LIMIT (LED_MATRIX_LED_COUNT + 4) / 5
+# 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)
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index 2c09ba82b1..13c8935d11 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -32,13 +32,13 @@ static void init(void) {
i2c_init();
# if defined(IS31FL3731)
- IS31FL3731_init(LED_DRIVER_ADDR_1);
+ is31fl3731_init(LED_DRIVER_ADDR_1);
# if defined(LED_DRIVER_ADDR_2)
- IS31FL3731_init(LED_DRIVER_ADDR_2);
+ is31fl3731_init(LED_DRIVER_ADDR_2);
# if defined(LED_DRIVER_ADDR_3)
- IS31FL3731_init(LED_DRIVER_ADDR_3);
+ is31fl3731_init(LED_DRIVER_ADDR_3);
# if defined(LED_DRIVER_ADDR_4)
- IS31FL3731_init(LED_DRIVER_ADDR_4);
+ is31fl3731_init(LED_DRIVER_ADDR_4);
# endif
# endif
# endif
@@ -47,22 +47,22 @@ static void init(void) {
# if !defined(LED_DRIVER_SYNC_1)
# define LED_DRIVER_SYNC_1 0
# endif
- IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1);
+ is31fl3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1);
# if defined(LED_DRIVER_ADDR_2)
# if !defined(LED_DRIVER_SYNC_2)
# define LED_DRIVER_SYNC_2 0
# endif
- IS31FL3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2);
+ is31fl3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2);
# if defined(LED_DRIVER_ADDR_3)
# if !defined(LED_DRIVER_SYNC_3)
# define LED_DRIVER_SYNC_3 0
# endif
- IS31FL3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3);
+ is31fl3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3);
# if defined(LED_DRIVER_ADDR_4)
# if !defined(LED_DRIVER_SYNC_4)
# define LED_DRIVER_SYNC_4 0
# endif
- IS31FL3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4);
+ is31fl3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4);
# endif
# endif
# endif
@@ -84,13 +84,13 @@ static void init(void) {
writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
# endif
- CKLED2001_init(DRIVER_ADDR_1);
+ ckled2001_init(DRIVER_ADDR_1);
# if defined(DRIVER_ADDR_2)
- CKLED2001_init(DRIVER_ADDR_2);
+ ckled2001_init(DRIVER_ADDR_2);
# if defined(DRIVER_ADDR_3)
- CKLED2001_init(DRIVER_ADDR_3);
+ ckled2001_init(DRIVER_ADDR_3);
# if defined(DRIVER_ADDR_4)
- CKLED2001_init(DRIVER_ADDR_4);
+ ckled2001_init(DRIVER_ADDR_4);
# endif
# endif
# endif
@@ -98,37 +98,37 @@ static void init(void) {
for (int index = 0; index < LED_MATRIX_LED_COUNT; index++) {
# if defined(IS31FL3731)
- IS31FL3731_set_led_control_register(index, true);
+ is31fl3731_set_led_control_register(index, true);
# elif defined(IS31FL3733)
- IS31FL3733_set_led_control_register(index, true);
+ is31fl3733_set_led_control_register(index, true);
# elif defined(IS31FLCOMMON)
IS31FL_simple_set_scaling_buffer(index, true);
# elif defined(CKLED2001)
- CKLED2001_set_led_control_register(index, true);
+ ckled2001_set_led_control_register(index, true);
# endif
}
// This actually updates the LED drivers
# if defined(IS31FL3731)
- IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
+ is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
# if defined(LED_DRIVER_ADDR_2)
- IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
+ is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
# if defined(LED_DRIVER_ADDR_3)
- IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
+ is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
# if defined(LED_DRIVER_ADDR_4)
- IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
+ is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
# endif
# endif
# endif
# elif defined(IS31FL3733)
- IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
+ is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
# if defined(LED_DRIVER_ADDR_2)
- IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
+ is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
# if defined(LED_DRIVER_ADDR_3)
- IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
+ is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
# if defined(LED_DRIVER_ADDR_4)
- IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
+ is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
# endif
# endif
# endif
@@ -148,13 +148,13 @@ static void init(void) {
# endif
# endif
# elif defined(CKLED2001)
- CKLED2001_update_led_control_registers(DRIVER_ADDR_1, 0);
+ ckled2001_update_led_control_registers(DRIVER_ADDR_1, 0);
# if defined(DRIVER_ADDR_2)
- CKLED2001_update_led_control_registers(DRIVER_ADDR_2, 1);
+ ckled2001_update_led_control_registers(DRIVER_ADDR_2, 1);
# if defined(DRIVER_ADDR_3)
- CKLED2001_update_led_control_registers(DRIVER_ADDR_3, 2);
+ ckled2001_update_led_control_registers(DRIVER_ADDR_3, 2);
# if defined(DRIVER_ADDR_4)
- CKLED2001_update_led_control_registers(DRIVER_ADDR_4, 3);
+ ckled2001_update_led_control_registers(DRIVER_ADDR_4, 3);
# endif
# endif
# endif
@@ -163,13 +163,13 @@ static void init(void) {
# if defined(IS31FL3731)
static void flush(void) {
- IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
+ is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
# if defined(LED_DRIVER_ADDR_2)
- IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
+ is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
# if defined(LED_DRIVER_ADDR_3)
- IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
+ is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
# if defined(LED_DRIVER_ADDR_4)
- IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
+ is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
# endif
# endif
# endif
@@ -178,19 +178,19 @@ static void flush(void) {
const led_matrix_driver_t led_matrix_driver = {
.init = init,
.flush = flush,
- .set_value = IS31FL3731_set_value,
- .set_value_all = IS31FL3731_set_value_all,
+ .set_value = is31fl3731_set_value,
+ .set_value_all = is31fl3731_set_value_all,
};
# elif defined(IS31FL3733)
static void flush(void) {
- IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
+ is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
# if defined(LED_DRIVER_ADDR_2)
- IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
+ is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
# if defined(LED_DRIVER_ADDR_3)
- IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
+ is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
# if defined(LED_DRIVER_ADDR_4)
- IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
+ is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
# endif
# endif
# endif
@@ -199,8 +199,8 @@ static void flush(void) {
const led_matrix_driver_t led_matrix_driver = {
.init = init,
.flush = flush,
- .set_value = IS31FL3733_set_value,
- .set_value_all = IS31FL3733_set_value_all,
+ .set_value = is31fl3733_set_value,
+ .set_value_all = is31fl3733_set_value_all,
};
# elif defined(IS31FLCOMMON)
@@ -225,13 +225,13 @@ const led_matrix_driver_t led_matrix_driver = {
};
# elif defined(CKLED2001)
static void flush(void) {
- CKLED2001_update_pwm_buffers(DRIVER_ADDR_1, 0);
+ ckled2001_update_pwm_buffers(DRIVER_ADDR_1, 0);
# if defined(DRIVER_ADDR_2)
- CKLED2001_update_pwm_buffers(DRIVER_ADDR_2, 1);
+ ckled2001_update_pwm_buffers(DRIVER_ADDR_2, 1);
# if defined(DRIVER_ADDR_3)
- CKLED2001_update_pwm_buffers(DRIVER_ADDR_3, 2);
+ ckled2001_update_pwm_buffers(DRIVER_ADDR_3, 2);
# if defined(DRIVER_ADDR_4)
- CKLED2001_update_pwm_buffers(DRIVER_ADDR_4, 3);
+ ckled2001_update_pwm_buffers(DRIVER_ADDR_4, 3);
# endif
# endif
# endif
@@ -240,8 +240,8 @@ static void flush(void) {
const led_matrix_driver_t led_matrix_driver = {
.init = init,
.flush = flush,
- .set_value = CKLED2001_set_value,
- .set_value_all = CKLED2001_set_value_all,
+ .set_value = ckled2001_set_value,
+ .set_value_all = ckled2001_set_value_all,
};
# endif
#endif