aboutsummaryrefslogtreecommitdiff
path: root/quantum/rgb_matrix.c
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2019-05-10 18:55:02 -0500
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-05-10 16:55:02 -0700
commit62ba66d61821fec6a5ad3bdccdf738e15e082461 (patch)
tree4b0fb100299a7a7e9a51cbbe96da94df8a57483f /quantum/rgb_matrix.c
parentfebaf9dec42ce4d4ade316f811145a291137ee94 (diff)
downloadqmk_firmware-62ba66d61821fec6a5ad3bdccdf738e15e082461.tar.gz
qmk_firmware-62ba66d61821fec6a5ad3bdccdf738e15e082461.zip
Cleanup/rgb matrix (#5811)
* clean up rgb matrix extern usage Moved rgb matrix boiler plate into macros Rebased onto typing heatmap pr * Fixing the reversed frame buffer access in digital rain * Fixing digital rain & typing heatmap if keyreactive effects are not enabled * Apply suggestions from code review Co-Authored-By: Drashna Jaelre <drashna@live.com> * Adding parenthesizes to DRIVER_LED_TOTAL where necessary * Updated docs * added notes about parentheses
Diffstat (limited to 'quantum/rgb_matrix.c')
-rw-r--r--quantum/rgb_matrix.c196
1 files changed, 24 insertions, 172 deletions
diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c
index 92a94df80..9b9932df5 100644
--- a/quantum/rgb_matrix.c
+++ b/quantum/rgb_matrix.c
@@ -26,41 +26,23 @@
26 26
27#include "lib/lib8tion/lib8tion.h" 27#include "lib/lib8tion/lib8tion.h"
28 28
29#include "rgb_matrix_animations/solid_color_anim.h" 29// ------------------------------------------
30#include "rgb_matrix_animations/alpha_mods_anim.h" 30// -----Begin rgb effect includes macros-----
31#include "rgb_matrix_animations/dual_beacon_anim.h" 31#define RGB_MATRIX_EFFECT(name)
32#include "rgb_matrix_animations/gradient_up_down_anim.h" 32#define RGB_MATRIX_CUSTOM_EFFECT_IMPLS
33#include "rgb_matrix_animations/raindrops_anim.h"
34#include "rgb_matrix_animations/cycle_all_anim.h"
35#include "rgb_matrix_animations/cycle_left_right_anim.h"
36#include "rgb_matrix_animations/cycle_up_down_anim.h"
37#include "rgb_matrix_animations/rainbow_beacon_anim.h"
38#include "rgb_matrix_animations/rainbow_pinwheels_anim.h"
39#include "rgb_matrix_animations/rainbow_moving_chevron_anim.h"
40#include "rgb_matrix_animations/jellybean_raindrops_anim.h"
41#include "rgb_matrix_animations/typing_heatmap_anim.h"
42#include "rgb_matrix_animations/digital_rain_anim.h"
43#include "rgb_matrix_animations/solid_reactive_simple_anim.h"
44#include "rgb_matrix_animations/solid_reactive_anim.h"
45#include "rgb_matrix_animations/solid_reactive_wide.h"
46#include "rgb_matrix_animations/solid_reactive_cross.h"
47#include "rgb_matrix_animations/solid_reactive_nexus.h"
48#include "rgb_matrix_animations/splash_anim.h"
49#include "rgb_matrix_animations/solid_splash_anim.h"
50#include "rgb_matrix_animations/breathing_anim.h"
51 33
52#if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) 34#include "rgb_matrix_animations/rgb_matrix_effects.inc"
53 #define RGB_MATRIX_CUSTOM_EFFECT_IMPLS 35#ifdef RGB_MATRIX_CUSTOM_KB
54 #define RGB_MATRIX_EFFECT(name, ...) 36 #include "rgb_matrix_kb.inc"
55 #ifdef RGB_MATRIX_CUSTOM_KB
56 #include "rgb_matrix_kb.inc"
57 #endif
58 #ifdef RGB_MATRIX_CUSTOM_USER
59 #include "rgb_matrix_user.inc"
60 #endif
61 #undef RGB_MATRIX_EFFECT
62 #undef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
63#endif 37#endif
38#ifdef RGB_MATRIX_CUSTOM_USER
39 #include "rgb_matrix_user.inc"
40#endif
41
42#undef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
43#undef RGB_MATRIX_EFFECT
44// -----End rgb effect includes macros-------
45// ------------------------------------------
64 46
65#ifndef RGB_DISABLE_AFTER_TIMEOUT 47#ifndef RGB_DISABLE_AFTER_TIMEOUT
66 #define RGB_DISABLE_AFTER_TIMEOUT 0 48 #define RGB_DISABLE_AFTER_TIMEOUT 0
@@ -106,7 +88,6 @@
106 88
107bool g_suspend_state = false; 89bool g_suspend_state = false;
108 90
109extern led_config_t g_led_config;
110rgb_config_t rgb_matrix_config; 91rgb_config_t rgb_matrix_config;
111 92
112rgb_counters_t g_rgb_counters; 93rgb_counters_t g_rgb_counters;
@@ -319,145 +300,14 @@ static void rgb_task_render(uint8_t effect) {
319 rendering = rgb_matrix_none(&rgb_effect_params); 300 rendering = rgb_matrix_none(&rgb_effect_params);
320 break; 301 break;
321 302
322 case RGB_MATRIX_SOLID_COLOR: 303// ---------------------------------------------
323 rendering = rgb_matrix_solid_color(&rgb_effect_params); // Max 1ms Avg 0ms 304// -----Begin rgb effect switch case macros-----
324 break; 305#define RGB_MATRIX_EFFECT(name, ...) \
325#ifndef DISABLE_RGB_MATRIX_ALPHAS_MODS 306 case RGB_MATRIX_##name: \
326 case RGB_MATRIX_ALPHAS_MODS: 307 rendering = name(&rgb_effect_params); \
327 rendering = rgb_matrix_alphas_mods(&rgb_effect_params); // Max 2ms Avg 1ms
328 break;
329#endif // DISABLE_RGB_MATRIX_ALPHAS_MODS
330#ifndef DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
331 case RGB_MATRIX_GRADIENT_UP_DOWN:
332 rendering = rgb_matrix_gradient_up_down(&rgb_effect_params); // Max 4ms Avg 3ms
333 break;
334#endif // DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
335#ifndef DISABLE_RGB_MATRIX_BREATHING
336 case RGB_MATRIX_BREATHING:
337 rendering = rgb_matrix_breathing(&rgb_effect_params); // Max 1ms Avg 0ms
338 break;
339#endif // DISABLE_RGB_MATRIX_BREATHING
340#ifndef DISABLE_RGB_MATRIX_CYCLE_ALL
341 case RGB_MATRIX_CYCLE_ALL:
342 rendering = rgb_matrix_cycle_all(&rgb_effect_params); // Max 4ms Avg 3ms
343 break;
344#endif // DISABLE_RGB_MATRIX_CYCLE_ALL
345#ifndef DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
346 case RGB_MATRIX_CYCLE_LEFT_RIGHT:
347 rendering = rgb_matrix_cycle_left_right(&rgb_effect_params); // Max 4ms Avg 3ms
348 break;
349#endif // DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
350#ifndef DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
351 case RGB_MATRIX_CYCLE_UP_DOWN:
352 rendering = rgb_matrix_cycle_up_down(&rgb_effect_params); // Max 4ms Avg 3ms
353 break;
354#endif // DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
355#ifndef DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
356 case RGB_MATRIX_RAINBOW_MOVING_CHEVRON:
357 rendering = rgb_matrix_rainbow_moving_chevron(&rgb_effect_params); // Max 4ms Avg 3ms
358 break;
359#endif // DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
360#ifndef DISABLE_RGB_MATRIX_DUAL_BEACON
361 case RGB_MATRIX_DUAL_BEACON:
362 rendering = rgb_matrix_dual_beacon(&rgb_effect_params); // Max 4ms Avg 3ms
363 break;
364#endif // DISABLE_RGB_MATRIX_DUAL_BEACON
365#ifndef DISABLE_RGB_MATRIX_RAINBOW_BEACON
366 case RGB_MATRIX_RAINBOW_BEACON:
367 rendering = rgb_matrix_rainbow_beacon(&rgb_effect_params); // Max 4ms Avg 3ms
368 break;
369#endif // DISABLE_RGB_MATRIX_RAINBOW_BEACON
370#ifndef DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
371 case RGB_MATRIX_RAINBOW_PINWHEELS:
372 rendering = rgb_matrix_rainbow_pinwheels(&rgb_effect_params); // Max 4ms Avg 3ms
373 break;
374#endif // DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
375#ifndef DISABLE_RGB_MATRIX_RAINDROPS
376 case RGB_MATRIX_RAINDROPS:
377 rendering = rgb_matrix_raindrops(&rgb_effect_params); // Max 1ms Avg 0ms
378 break;
379#endif // DISABLE_RGB_MATRIX_RAINDROPS
380#ifndef DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
381 case RGB_MATRIX_JELLYBEAN_RAINDROPS:
382 rendering = rgb_matrix_jellybean_raindrops(&rgb_effect_params); // Max 1ms Avg 0ms
383 break;
384#endif // DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
385
386#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
387#ifndef DISABLE_RGB_MATRIX_TYPING_HEATMAP
388 case RGB_MATRIX_TYPING_HEATMAP:
389 rendering = rgb_matrix_typing_heatmap(&rgb_effect_params); // Max 4ms Avg 3ms
390 break;
391#endif // DISABLE_RGB_MATRIX_TYPING_HEATMAP
392#ifndef DISABLE_RGB_MATRIX_DIGITAL_RAIN
393 case RGB_MATRIX_DIGITAL_RAIN:
394 rendering = rgb_matrix_digital_rain(&rgb_effect_params); // Max 9ms Avg 8ms | this is expensive, fix it
395 break;
396#endif // DISABLE_RGB_MATRIX_DIGITAL_RAIN
397#endif // RGB_MATRIX_FRAMEBUFFER_EFFECTS
398
399#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
400#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
401 case RGB_MATRIX_SOLID_REACTIVE_SIMPLE:
402 rendering = rgb_matrix_solid_reactive_simple(&rgb_effect_params);// Max 4ms Avg 3ms
403 break;
404#endif
405#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE
406 case RGB_MATRIX_SOLID_REACTIVE:
407 rendering = rgb_matrix_solid_reactive(&rgb_effect_params); // Max 4ms Avg 3ms
408 break;
409#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE
410#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
411 case RGB_MATRIX_SOLID_REACTIVE_WIDE:
412 rendering = rgb_matrix_solid_reactive_wide(&rgb_effect_params); // Max ?? ms Avg ?? ms
413 break;
414#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
415#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
416 case RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE:
417 rendering = rgb_matrix_solid_reactive_multiwide(&rgb_effect_params); // Max ?? ms Avg ?? ms
418 break;
419#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
420#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
421 case RGB_MATRIX_SOLID_REACTIVE_CROSS:
422 rendering = rgb_matrix_solid_reactive_cross(&rgb_effect_params); // Max ?? ms Avg ?? ms
423 break;
424#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
425#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
426 case RGB_MATRIX_SOLID_REACTIVE_MULTICROSS:
427 rendering = rgb_matrix_solid_reactive_multicross(&rgb_effect_params); // Max ?? ms Avg ?? ms
428 break;
429#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
430#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
431 case RGB_MATRIX_SOLID_REACTIVE_NEXUS:
432 rendering = rgb_matrix_solid_reactive_nexus(&rgb_effect_params); // Max ?? ms Avg ?? ms
433 break;
434#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
435#ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
436 case RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS:
437 rendering = rgb_matrix_solid_reactive_multinexus(&rgb_effect_params); // Max ?? ms Avg ?? ms
438 break;
439#endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
440#ifndef DISABLE_RGB_MATRIX_SPLASH
441 case RGB_MATRIX_SPLASH:
442 rendering = rgb_matrix_splash(&rgb_effect_params); // Max 5ms Avg 3ms
443 break;
444#endif // DISABLE_RGB_MATRIX_SPLASH
445#ifndef DISABLE_RGB_MATRIX_MULTISPLASH
446 case RGB_MATRIX_MULTISPLASH:
447 rendering = rgb_matrix_multisplash(&rgb_effect_params); // Max 10ms Avg 5ms
448 break;
449#endif // DISABLE_RGB_MATRIX_MULTISPLASH
450#ifndef DISABLE_RGB_MATRIX_SOLID_SPLASH
451 case RGB_MATRIX_SOLID_SPLASH:
452 rendering = rgb_matrix_solid_splash(&rgb_effect_params); // Max 5ms Avg 3ms
453 break;
454#endif // DISABLE_RGB_MATRIX_SOLID_SPLASH
455#ifndef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
456 case RGB_MATRIX_SOLID_MULTISPLASH:
457 rendering = rgb_matrix_solid_multisplash(&rgb_effect_params); // Max 10ms Avg 5ms
458 break; 308 break;
459#endif // DISABLE_RGB_MATRIX_SOLID_MULTISPLASH 309#include "rgb_matrix_animations/rgb_matrix_effects.inc"
460#endif // RGB_MATRIX_KEYREACTIVE_ENABLED 310#undef RGB_MATRIX_EFFECT
461 311
462#if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) 312#if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER)
463 #define RGB_MATRIX_EFFECT(name, ...) \ 313 #define RGB_MATRIX_EFFECT(name, ...) \
@@ -472,6 +322,8 @@ static void rgb_task_render(uint8_t effect) {
472 #endif 322 #endif
473 #undef RGB_MATRIX_EFFECT 323 #undef RGB_MATRIX_EFFECT
474#endif 324#endif
325// -----End rgb effect switch case macros-------
326// ---------------------------------------------
475 327
476 // Factory default magic value 328 // Factory default magic value
477 case UINT8_MAX: { 329 case UINT8_MAX: {