diff options
author | XScorpion2 <rcalt2vt@gmail.com> | 2019-05-10 18:55:02 -0500 |
---|---|---|
committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-05-10 16:55:02 -0700 |
commit | 62ba66d61821fec6a5ad3bdccdf738e15e082461 (patch) | |
tree | 4b0fb100299a7a7e9a51cbbe96da94df8a57483f /quantum/rgb_matrix.c | |
parent | febaf9dec42ce4d4ade316f811145a291137ee94 (diff) | |
download | qmk_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.c | 196 |
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 | ||
107 | bool g_suspend_state = false; | 89 | bool g_suspend_state = false; |
108 | 90 | ||
109 | extern led_config_t g_led_config; | ||
110 | rgb_config_t rgb_matrix_config; | 91 | rgb_config_t rgb_matrix_config; |
111 | 92 | ||
112 | rgb_counters_t g_rgb_counters; | 93 | rgb_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: { |