diff options
Diffstat (limited to 'quantum/led_matrix')
-rw-r--r-- | quantum/led_matrix/animations/breathing_anim.h | 15 | ||||
-rw-r--r-- | quantum/led_matrix/led_matrix.c | 17 | ||||
-rw-r--r-- | quantum/led_matrix/led_matrix.h | 2 |
3 files changed, 19 insertions, 15 deletions
diff --git a/quantum/led_matrix/animations/breathing_anim.h b/quantum/led_matrix/animations/breathing_anim.h index 0bd4cb0cc3..3d1b0d95d2 100644 --- a/quantum/led_matrix/animations/breathing_anim.h +++ b/quantum/led_matrix/animations/breathing_anim.h @@ -2,17 +2,12 @@ LED_MATRIX_EFFECT(BREATHING) # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS -bool BREATHING(effect_params_t* params) { - LED_MATRIX_USE_LIMITS(led_min, led_max); +static uint8_t BREATHING_math(uint8_t val, uint8_t i, uint8_t time) { + return scale8(abs8(sin8(time / 2) - 128) * 2, val); +} - uint8_t val = led_matrix_eeconfig.val; - uint16_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 8); - val = scale8(abs8(sin8(time) - 128) * 2, val); - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - led_matrix_set_value(i, val); - } - return led_matrix_check_finished_leds(led_max); +bool BREATHING(effect_params_t* params) { + return effect_runner_i(params, &BREATHING_math); } # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index 798ab9a120..58263c62e3 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -139,11 +139,20 @@ void led_matrix_update_pwm_buffers(void) { led_matrix_driver.flush(); } +__attribute__((weak)) int led_matrix_led_index(int index) { +#if defined(LED_MATRIX_SPLIT) + if (!is_keyboard_left() && index >= k_led_matrix_split[0]) { + return index - k_led_matrix_split[0]; + } +#endif + return index; +} + void led_matrix_set_value(int index, uint8_t value) { #ifdef USE_CIE1931_CURVE value = pgm_read_byte(&CIE1931_CURVE[value]); #endif - led_matrix_driver.set_value(index, value); + led_matrix_driver.set_value(led_matrix_led_index(index), value); } void led_matrix_set_value_all(uint8_t value) { @@ -387,7 +396,6 @@ struct led_matrix_limits_t led_matrix_get_limits(uint8_t iter) { limits.led_min_index = LED_MATRIX_LED_PROCESS_LIMIT * (iter); limits.led_max_index = limits.led_min_index + LED_MATRIX_LED_PROCESS_LIMIT; if (limits.led_max_index > LED_MATRIX_LED_COUNT) limits.led_max_index = LED_MATRIX_LED_COUNT; - uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; if (is_keyboard_left() && (limits.led_max_index > k_led_matrix_split[0])) limits.led_max_index = k_led_matrix_split[0]; if (!(is_keyboard_left()) && (limits.led_min_index < k_led_matrix_split[0])) limits.led_min_index = k_led_matrix_split[0]; # else @@ -397,9 +405,8 @@ struct led_matrix_limits_t led_matrix_get_limits(uint8_t iter) { # endif #else # if defined(LED_MATRIX_SPLIT) - limits.led_min_index = 0; - limits.led_max_index = LED_MATRIX_LED_COUNT; - const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; + limits.led_min_index = 0; + limits.led_max_index = LED_MATRIX_LED_COUNT; if (is_keyboard_left() && (limits.led_max_index > k_led_matrix_split[0])) limits.led_max_index = k_led_matrix_split[0]; if (!(is_keyboard_left()) && (limits.led_min_index < k_led_matrix_split[0])) limits.led_min_index = k_led_matrix_split[0]; # else diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index 9a13c3e52b..a3468a2003 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -121,6 +121,8 @@ void eeconfig_debug_led_matrix(void); uint8_t led_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i); uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *led_i); +int led_matrix_led_index(int index); + void led_matrix_set_value(int index, uint8_t value); void led_matrix_set_value_all(uint8_t value); |