diff options
Diffstat (limited to 'quantum/rgb_matrix/rgb_matrix.h')
| -rw-r--r-- | quantum/rgb_matrix/rgb_matrix.h | 120 | 
1 files changed, 79 insertions, 41 deletions
| diff --git a/quantum/rgb_matrix/rgb_matrix.h b/quantum/rgb_matrix/rgb_matrix.h index 38040fb0cc..9a3ffb8ea3 100644 --- a/quantum/rgb_matrix/rgb_matrix.h +++ b/quantum/rgb_matrix/rgb_matrix.h @@ -24,26 +24,81 @@  #include "color.h"  #include "keyboard.h" -#ifdef IS31FL3731 +#if defined(RGB_MATRIX_IS31FL3218) +#    include "is31fl3218.h" +#elif defined(RGB_MATRIX_IS31FL3731)  #    include "is31fl3731.h" -#elif defined(IS31FL3733) +#elif defined(RGB_MATRIX_IS31FL3733)  #    include "is31fl3733.h" -#elif defined(IS31FL3736) +#elif defined(RGB_MATRIX_IS31FL3736)  #    include "is31fl3736.h" -#elif defined(IS31FL3737) +#elif defined(RGB_MATRIX_IS31FL3737)  #    include "is31fl3737.h" -#elif defined(IS31FL3741) +#elif defined(RGB_MATRIX_IS31FL3741)  #    include "is31fl3741.h"  #elif defined(IS31FLCOMMON)  #    include "is31flcommon.h" -#elif defined(CKLED2001) -#    include "ckled2001.h" -#elif defined(AW20216) -#    include "aw20216.h" -#elif defined(WS2812) +#elif defined(RGB_MATRIX_SNLED27351) +#    include "snled27351.h" +#elif defined(RGB_MATRIX_AW20216S) +#    include "aw20216s.h" +#elif defined(RGB_MATRIX_WS2812)  #    include "ws2812.h"  #endif +#ifndef RGB_MATRIX_TIMEOUT +#    define RGB_MATRIX_TIMEOUT 0 +#endif + +#ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS +#    define RGB_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX +#endif + +#ifndef RGB_MATRIX_HUE_STEP +#    define RGB_MATRIX_HUE_STEP 8 +#endif + +#ifndef RGB_MATRIX_SAT_STEP +#    define RGB_MATRIX_SAT_STEP 16 +#endif + +#ifndef RGB_MATRIX_VAL_STEP +#    define RGB_MATRIX_VAL_STEP 16 +#endif + +#ifndef RGB_MATRIX_SPD_STEP +#    define RGB_MATRIX_SPD_STEP 16 +#endif + +#ifndef RGB_MATRIX_DEFAULT_ON +#    define RGB_MATRIX_DEFAULT_ON true +#endif + +#ifndef RGB_MATRIX_DEFAULT_MODE +#    ifdef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#        define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT +#    else +// fallback to solid colors if RGB_MATRIX_CYCLE_LEFT_RIGHT is disabled in userspace +#        define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR +#    endif +#endif + +#ifndef RGB_MATRIX_DEFAULT_HUE +#    define RGB_MATRIX_DEFAULT_HUE 0 +#endif + +#ifndef RGB_MATRIX_DEFAULT_SAT +#    define RGB_MATRIX_DEFAULT_SAT UINT8_MAX +#endif + +#ifndef RGB_MATRIX_DEFAULT_VAL +#    define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#endif + +#ifndef RGB_MATRIX_DEFAULT_SPD +#    define RGB_MATRIX_DEFAULT_SPD UINT8_MAX / 2 +#endif +  #ifndef RGB_MATRIX_LED_FLUSH_LIMIT  #    define RGB_MATRIX_LED_FLUSH_LIMIT 16  #endif @@ -51,37 +106,20 @@  #ifndef RGB_MATRIX_LED_PROCESS_LIMIT  #    define RGB_MATRIX_LED_PROCESS_LIMIT ((RGB_MATRIX_LED_COUNT + 4) / 5)  #endif -#define RGB_MATRIX_LED_PROCESS_MAX_ITERATIONS ((RGB_MATRIX_LED_COUNT + RGB_MATRIX_LED_PROCESS_LIMIT - 1) / RGB_MATRIX_LED_PROCESS_LIMIT) - -#if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < RGB_MATRIX_LED_COUNT -#    if defined(RGB_MATRIX_SPLIT) -#        define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter)                                        \ -            uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * (iter);                                  \ -            uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT;                                     \ -            if (max > RGB_MATRIX_LED_COUNT) max = RGB_MATRIX_LED_COUNT;                           \ -            uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;                                     \ -            if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \ -            if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0]; -#    else -#        define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter)       \ -            uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * (iter); \ -            uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT;    \ -            if (max > RGB_MATRIX_LED_COUNT) max = RGB_MATRIX_LED_COUNT; -#    endif -#else -#    if defined(RGB_MATRIX_SPLIT) -#        define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter)                                        \ -            uint8_t       min                   = 0;                                              \ -            uint8_t       max                   = RGB_MATRIX_LED_COUNT;                           \ -            const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;                               \ -            if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \ -            if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0]; -#    else -#        define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter) \ -            uint8_t min = 0;                               \ -            uint8_t max = RGB_MATRIX_LED_COUNT; -#    endif -#endif + +struct rgb_matrix_limits_t { +    uint8_t led_min_index; +    uint8_t led_max_index; +}; + +struct rgb_matrix_limits_t rgb_matrix_get_limits(uint8_t iter); + +#define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter)                   \ +    struct rgb_matrix_limits_t limits = rgb_matrix_get_limits(iter); \ +    uint8_t                    min    = limits.led_min_index;        \ +    uint8_t                    max    = limits.led_max_index;        \ +    (void)min;                                                       \ +    (void)max;  #define RGB_MATRIX_USE_LIMITS(min, max) RGB_MATRIX_USE_LIMITS_ITER(min, max, params->iter) | 
