X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=quantum%2Frgb_matrix.h;h=749926822a8f528794abc19e19a8a00bda1604a4;hb=e2dfb787da2a2ba88e0e074b396a2b988e10eccf;hp=5fdc854f08c52d8287128e2a1dd560926f46d5f2;hpb=bb52119a6dfe9c6f0314d1bcd948efda59626a70;p=qmk_firmware.git diff --git a/quantum/rgb_matrix.h b/quantum/rgb_matrix.h index 5fdc854f0..749926822 100644 --- a/quantum/rgb_matrix.h +++ b/quantum/rgb_matrix.h @@ -54,102 +54,45 @@ uint8_t max = DRIVER_LED_TOTAL; #endif -extern const rgb_led g_rgb_leds[DRIVER_LED_TOTAL]; - -typedef struct -{ - HSV color; - uint8_t index; -} rgb_indicator; +#define RGB_MATRIX_TEST_LED_FLAGS() if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) continue enum rgb_matrix_effects { RGB_MATRIX_NONE = 0, - RGB_MATRIX_SOLID_COLOR = 1, -#ifndef DISABLE_RGB_MATRIX_ALPHAS_MODS - RGB_MATRIX_ALPHAS_MODS, -#endif // DISABLE_RGB_MATRIX_ALPHAS_MODS -#ifndef DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN - RGB_MATRIX_GRADIENT_UP_DOWN, -#endif // DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#ifndef DISABLE_RGB_MATRIX_BREATHING - RGB_MATRIX_BREATHING, -#endif // DISABLE_RGB_MATRIX_BREATHING -#ifndef DISABLE_RGB_MATRIX_CYCLE_ALL - RGB_MATRIX_CYCLE_ALL, -#endif // DISABLE_RGB_MATRIX_CYCLE_ALL -#ifndef DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT - RGB_MATRIX_CYCLE_LEFT_RIGHT, -#endif // DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#ifndef DISABLE_RGB_MATRIX_CYCLE_UP_DOWN - RGB_MATRIX_CYCLE_UP_DOWN, -#endif // DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#ifndef DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - RGB_MATRIX_RAINBOW_MOVING_CHEVRON, -#endif // DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#ifndef DISABLE_RGB_MATRIX_DUAL_BEACON - RGB_MATRIX_DUAL_BEACON, -#endif // DISABLE_RGB_MATRIX_DUAL_BEACON -#ifndef DISABLE_RGB_MATRIX_RAINBOW_BEACON - RGB_MATRIX_RAINBOW_BEACON, -#endif // DISABLE_RGB_MATRIX_RAINBOW_BEACON -#ifndef DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS - RGB_MATRIX_RAINBOW_PINWHEELS, -#endif // DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#ifndef DISABLE_RGB_MATRIX_RAINDROPS - RGB_MATRIX_RAINDROPS, -#endif // DISABLE_RGB_MATRIX_RAINDROPS -#ifndef DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - RGB_MATRIX_JELLYBEAN_RAINDROPS, -#endif // DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#ifndef DISABLE_RGB_MATRIX_DIGITAL_RAIN - RGB_MATRIX_DIGITAL_RAIN, -#endif // DISABLE_RGB_MATRIX_DIGITAL_RAIN -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - RGB_MATRIX_SOLID_REACTIVE_SIMPLE, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE - RGB_MATRIX_SOLID_REACTIVE, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - RGB_MATRIX_SOLID_REACTIVE_WIDE, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - RGB_MATRIX_SOLID_REACTIVE_CROSS, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - RGB_MATRIX_SOLID_REACTIVE_MULTICROSS, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - RGB_MATRIX_SOLID_REACTIVE_NEXUS, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS, -#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#ifndef DISABLE_RGB_MATRIX_SPLASH - RGB_MATRIX_SPLASH, -#endif // DISABLE_RGB_MATRIX_SPLASH -#ifndef DISABLE_RGB_MATRIX_MULTISPLASH - RGB_MATRIX_MULTISPLASH, -#endif // DISABLE_RGB_MATRIX_MULTISPLASH -#ifndef DISABLE_RGB_MATRIX_SOLID_SPLASH - RGB_MATRIX_SOLID_SPLASH, -#endif // DISABLE_RGB_MATRIX_SOLID_SPLASH -#ifndef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - RGB_MATRIX_SOLID_MULTISPLASH, -#endif // DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED + +// -------------------------------------- +// -----Begin rgb effect enum macros----- +#define RGB_MATRIX_EFFECT(name, ...) RGB_MATRIX_##name, +#include "rgb_matrix_animations/rgb_matrix_effects.inc" +#undef RGB_MATRIX_EFFECT + +#if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) + #define RGB_MATRIX_EFFECT(name, ...) RGB_MATRIX_CUSTOM_##name, + #ifdef RGB_MATRIX_CUSTOM_KB + #include "rgb_matrix_kb.inc" + #endif + #ifdef RGB_MATRIX_CUSTOM_USER + #include "rgb_matrix_user.inc" + #endif + #undef RGB_MATRIX_EFFECT +#endif +// -------------------------------------- +// -----End rgb effect enum macros------- + RGB_MATRIX_EFFECT_MAX }; +void eeconfig_update_rgb_matrix_default(void); + +uint8_t rgb_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i); uint8_t rgb_matrix_map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led_i); void rgb_matrix_set_color( int index, uint8_t red, uint8_t green, uint8_t blue ); void rgb_matrix_set_color_all( uint8_t red, uint8_t green, uint8_t blue ); +bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record); + +void rgb_matrix_task(void); + // This runs after another backlight effect and replaces // colors already set void rgb_matrix_indicators(void); @@ -157,37 +100,14 @@ void rgb_matrix_indicators_kb(void); void rgb_matrix_indicators_user(void); void rgb_matrix_init(void); -void rgb_matrix_setup_drivers(void); void rgb_matrix_set_suspend_state(bool state); -void rgb_matrix_set_indicator_state(uint8_t state); - - -void rgb_matrix_task(void); - -// This should not be called from an interrupt -// (eg. from a timer interrupt). -// Call this while idle (in between matrix scans). -// If the buffer is dirty, it will update the driver with the buffer. -void rgb_matrix_update_pwm_buffers(void); - -bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record); - -void rgb_matrix_increase(void); -void rgb_matrix_decrease(void); - -// void *backlight_get_key_color_eeprom_address(uint8_t led); -// void backlight_get_key_color( uint8_t led, HSV *hsv ); -// void backlight_set_key_color( uint8_t row, uint8_t column, HSV hsv ); - void rgb_matrix_toggle(void); void rgb_matrix_enable(void); void rgb_matrix_enable_noeeprom(void); void rgb_matrix_disable(void); void rgb_matrix_disable_noeeprom(void); void rgb_matrix_step(void); -void rgb_matrix_sethsv(uint16_t hue, uint8_t sat, uint8_t val); -void rgb_matrix_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val); void rgb_matrix_step_reverse(void); void rgb_matrix_increase_hue(void); void rgb_matrix_decrease_hue(void); @@ -197,9 +117,13 @@ void rgb_matrix_increase_val(void); void rgb_matrix_decrease_val(void); void rgb_matrix_increase_speed(void); void rgb_matrix_decrease_speed(void); +led_flags_t rgb_matrix_get_flags(void); +void rgb_matrix_set_flags(led_flags_t flags); void rgb_matrix_mode(uint8_t mode); void rgb_matrix_mode_noeeprom(uint8_t mode); uint8_t rgb_matrix_get_mode(void); +void rgb_matrix_sethsv(uint16_t hue, uint8_t sat, uint8_t val); +void rgb_matrix_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val); #ifndef RGBLIGHT_ENABLE #define rgblight_toggle() rgb_matrix_toggle() @@ -222,7 +146,6 @@ uint8_t rgb_matrix_get_mode(void); #define rgblight_mode(mode) rgb_matrix_mode(mode) #define rgblight_mode_noeeprom(mode) rgb_matrix_mode_noeeprom(mode) #define rgblight_get_mode() rgb_matrix_get_mode() - #endif typedef struct { @@ -238,4 +161,16 @@ typedef struct { extern const rgb_matrix_driver_t rgb_matrix_driver; +extern rgb_config_t rgb_matrix_config; + +extern bool g_suspend_state; +extern rgb_counters_t g_rgb_counters; +extern led_config_t g_led_config; +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +extern last_hit_t g_last_hit_tracker; +#endif +#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS +extern uint8_t rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS]; +#endif + #endif