]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/rgb_matrix.h
Adding rgb matrix speed into eeprom storage. (#5965)
[qmk_firmware.git] / quantum / rgb_matrix.h
index 5fdc854f08c52d8287128e2a1dd560926f46d5f2..749926822a8f528794abc19e19a8a00bda1604a4 100644 (file)
   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