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: { |
