~ruther/qmk_firmware

7cc90c234f55364bb5ebf45f9bb4274fd9926b9d — Pete Neisen 1 year, 5 months ago cfbbb50
Converted RGB matrix to use last_input_activity_elapsed(). (#21687)

Co-authored-by: Nick Brassel <nick@tzarc.org>
2 files changed, 6 insertions(+), 36 deletions(-)

M quantum/led_matrix/led_matrix.c
M quantum/rgb_matrix/rgb_matrix.c
M quantum/led_matrix/led_matrix.c => quantum/led_matrix/led_matrix.c +3 -20
@@ 74,9 74,6 @@ 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_MATRIX_TIMEOUT > 0
static uint32_t led_anykey_timer;
#endif // LED_MATRIX_TIMEOUT > 0

// double buffers
static uint32_t led_timer_buffer;


@@ 156,9 153,6 @@ void process_led_matrix(uint8_t row, uint8_t col, bool pressed) {
#ifndef LED_MATRIX_SPLIT
    if (!is_keyboard_master()) return;
#endif
#if LED_MATRIX_TIMEOUT > 0
    led_anykey_timer = 0;
#endif // LED_MATRIX_TIMEOUT > 0

#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
    uint8_t led[LED_HITS_TO_REMEMBER];


@@ 208,22 202,11 @@ static bool led_matrix_none(effect_params_t *params) {
}

static void led_task_timers(void) {
#if defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_MATRIX_TIMEOUT > 0
#if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
    uint32_t deltaTime = sync_timer_elapsed32(led_timer_buffer);
#endif // defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_MATRIX_TIMEOUT > 0
#endif // defined(LED_MATRIX_KEYREACTIVE_ENABLED)
    led_timer_buffer = sync_timer_read32();

    // Update double buffer timers
#if LED_MATRIX_TIMEOUT > 0
    if (led_anykey_timer < UINT32_MAX) {
        if (UINT32_MAX - deltaTime < led_anykey_timer) {
            led_anykey_timer = UINT32_MAX;
        } else {
            led_anykey_timer += deltaTime;
        }
    }
#endif // LED_MATRIX_TIMEOUT > 0

    // Update double buffer last hit timers
#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
    uint8_t count = last_hit_buffer.count;


@@ 329,7 312,7 @@ void led_matrix_task(void) {
    // while suspended and just do a software shutdown. This is a cheap hack for now.
    bool suspend_backlight = suspend_state ||
#if LED_MATRIX_TIMEOUT > 0
                             (led_anykey_timer > (uint32_t)LED_MATRIX_TIMEOUT) ||
                             (last_input_activity_elapsed() > (uint32_t)LED_MATRIX_TIMEOUT) ||
#endif // LED_MATRIX_TIMEOUT > 0
                             false;


M quantum/rgb_matrix/rgb_matrix.c => quantum/rgb_matrix/rgb_matrix.c +3 -16
@@ 76,9 76,6 @@ static uint8_t         rgb_last_enable   = UINT8_MAX;
static uint8_t         rgb_last_effect   = UINT8_MAX;
static effect_params_t rgb_effect_params = {0, LED_FLAG_ALL, false};
static rgb_task_states rgb_task_state    = SYNCING;
#if RGB_MATRIX_TIMEOUT > 0
static uint32_t rgb_anykey_timer;
#endif // RGB_MATRIX_TIMEOUT > 0

// double buffers
static uint32_t rgb_timer_buffer;


@@ 163,9 160,6 @@ void process_rgb_matrix(uint8_t row, uint8_t col, bool pressed) {
#ifndef RGB_MATRIX_SPLIT
    if (!is_keyboard_master()) return;
#endif
#if RGB_MATRIX_TIMEOUT > 0
    rgb_anykey_timer = 0;
#endif // RGB_MATRIX_TIMEOUT > 0

#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
    uint8_t led[LED_HITS_TO_REMEMBER];


@@ 246,18 240,11 @@ static bool rgb_matrix_none(effect_params_t *params) {
}

static void rgb_task_timers(void) {
#if defined(RGB_MATRIX_KEYREACTIVE_ENABLED) || RGB_MATRIX_TIMEOUT > 0
#if defined(RGB_MATRIX_KEYREACTIVE_ENABLED)
    uint32_t deltaTime = sync_timer_elapsed32(rgb_timer_buffer);
#endif // defined(RGB_MATRIX_KEYREACTIVE_ENABLED) || RGB_MATRIX_TIMEOUT > 0
#endif // defined(RGB_MATRIX_KEYREACTIVE_ENABLED)
    rgb_timer_buffer = sync_timer_read32();

    // Update double buffer timers
#if RGB_MATRIX_TIMEOUT > 0
    if (rgb_anykey_timer + deltaTime <= UINT32_MAX) {
        rgb_anykey_timer += deltaTime;
    }
#endif // RGB_MATRIX_TIMEOUT > 0

    // Update double buffer last hit timers
#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
    uint8_t count = last_hit_buffer.count;


@@ 370,7 357,7 @@ void rgb_matrix_task(void) {
    // while suspended and just do a software shutdown. This is a cheap hack for now.
    bool suspend_backlight = suspend_state ||
#if RGB_MATRIX_TIMEOUT > 0
                             (rgb_anykey_timer > (uint32_t)RGB_MATRIX_TIMEOUT) ||
                             (last_input_activity_elapsed() > (uint32_t)RGB_MATRIX_TIMEOUT) ||
#endif // RGB_MATRIX_TIMEOUT > 0
                             false;


Do not follow this link