diff options
| author | James Young <18669334+noroadsleft@users.noreply.github.com> | 2020-05-30 13:14:59 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-30 13:14:59 -0700 |
| commit | fced377ac007d27f2650ccffbe0b18abcdcfe23d (patch) | |
| tree | bd5b141987394a5a16cfc416bfe2b9efdb14d067 /quantum | |
| parent | 7b8a013826ad90714a05ea522de53adf964ab3b9 (diff) | |
| download | qmk_firmware-fced377ac007d27f2650ccffbe0b18abcdcfe23d.tar.gz qmk_firmware-fced377ac007d27f2650ccffbe0b18abcdcfe23d.zip | |
2020 May 30 Breaking Changes Update (#9215)
* Branch point for 2020 May 30 Breaking Change
* Migrate `ACTION_LAYER_TOGGLE` to `TG()` (#8954)
* Migrate `ACTION_MODS_ONESHOT` to `OSM()` (#8957)
* Migrate `ACTION_DEFAULT_LAYER_SET` to `DF()` (#8958)
* Migrate `ACTION_LAYER_MODS` to `LM()` (#8959)
* Migrate `ACTION_MODS_TAP_KEY` to `MT()` (#8968)
* Convert V-USB usbdrv to a submodule (#8321)
* Unify Tap Hold functions and documentation (#8348)
* Changing board names to prevent confusion (#8412)
* Move the Keyboardio Model01 to a keyboardio/ subdir (#8499)
* Move spaceman keyboards (#8830)
* Migrate miscellaneous `fn_actions` entries (#8977)
* Migrate `ACTION_MODS_KEY` to chained mod keycodes (#8979)
* Organizing my keyboards (plaid, tartan, ergoinu) (#8537)
* Refactor Lily58 to use split_common (#6260)
* Refactor zinc to use split_common (#7114)
* Add a message if bin/qmk doesn't work (#9000)
* Fix conflicting types for 'tfp_printf' (#8269)
* Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup (#6480)
* Refactor and updates to TKC1800 code (#8472)
* Switch to qmk forks for everything (#9019)
* audio refactor: replace deprecated PLAY_NOTE_ARRAY (#8484)
* Audio enable corrections (2/3) (#8903)
* Split HHKB to ANSI and JP layouts and Add VIA support for each (#8582)
* Audio enable corrections (Part 4) (#8974)
* Fix typo from PR7114 (#9171)
* Augment future branch Changelogs (#8978)
* Revert "Branch point for 2020 May 30 Breaking Change"
Diffstat (limited to 'quantum')
| -rw-r--r-- | quantum/audio/audio.h | 3 | ||||
| -rw-r--r-- | quantum/audio/audio_avr.c | 5 | ||||
| -rw-r--r-- | quantum/rgb_matrix.c | 106 | ||||
| -rw-r--r-- | quantum/rgb_matrix.h | 8 | ||||
| -rw-r--r-- | quantum/rgb_matrix_animations/breathing_anim.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_animations/digital_rain_anim.h | 24 | ||||
| -rw-r--r-- | quantum/rgb_matrix_animations/jellybean_raindrops_anim.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_animations/raindrops_anim.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_animations/typing_heatmap_anim.h | 28 | ||||
| -rw-r--r-- | quantum/rgb_matrix_runners/effect_runner_dx_dy.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_runners/effect_runner_i.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h | 2 | ||||
| -rw-r--r-- | quantum/rgb_matrix_types.h | 7 |
14 files changed, 105 insertions, 90 deletions
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 2bcc27b4a..805cb4f7a 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h | |||
| @@ -99,9 +99,6 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat); | |||
| 99 | // length. This works around the limitation of C's sizeof operation on pointers. | 99 | // length. This works around the limitation of C's sizeof operation on pointers. |
| 100 | // The global float array for the song must be used here. | 100 | // The global float array for the song must be used here. |
| 101 | #define NOTE_ARRAY_SIZE(x) ((int16_t)(sizeof(x) / (sizeof(x[0])))) | 101 | #define NOTE_ARRAY_SIZE(x) ((int16_t)(sizeof(x) / (sizeof(x[0])))) |
| 102 | #define PLAY_NOTE_ARRAY(note_array, note_repeat, deprecated_arg) \ | ||
| 103 | play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat)); \ | ||
| 104 | _Pragma("message \"'PLAY_NOTE_ARRAY' macro is deprecated\"") | ||
| 105 | #define PLAY_SONG(note_array) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), false) | 102 | #define PLAY_SONG(note_array) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), false) |
| 106 | #define PLAY_LOOP(note_array) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), true) | 103 | #define PLAY_LOOP(note_array) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), true) |
| 107 | 104 | ||
diff --git a/quantum/audio/audio_avr.c b/quantum/audio/audio_avr.c index 781378788..5a96bf643 100644 --- a/quantum/audio/audio_avr.c +++ b/quantum/audio/audio_avr.c | |||
| @@ -110,6 +110,11 @@ | |||
| 110 | # define TIMER_1_DUTY_CYCLE OCR1C | 110 | # define TIMER_1_DUTY_CYCLE OCR1C |
| 111 | # define TIMER1_AUDIO_vect TIMER1_COMPC_vect | 111 | # define TIMER1_AUDIO_vect TIMER1_COMPC_vect |
| 112 | #endif | 112 | #endif |
| 113 | |||
| 114 | #if !defined(BPIN_AUDIO) && !defined(CPIN_AUDIO) | ||
| 115 | # error "Audio feature enabled, but no suitable pin selected - see docs/feature_audio.md under the AVR settings for available options." | ||
| 116 | #endif | ||
| 117 | |||
| 113 | // ----------------------------------------------------------------------------- | 118 | // ----------------------------------------------------------------------------- |
| 114 | 119 | ||
| 115 | int voices = 0; | 120 | int voices = 0; |
diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c index 91032b656..f3da0ab0f 100644 --- a/quantum/rgb_matrix.c +++ b/quantum/rgb_matrix.c | |||
| @@ -57,8 +57,12 @@ const point_t k_rgb_matrix_center = RGB_MATRIX_CENTER; | |||
| 57 | // -----End rgb effect includes macros------- | 57 | // -----End rgb effect includes macros------- |
| 58 | // ------------------------------------------ | 58 | // ------------------------------------------ |
| 59 | 59 | ||
| 60 | #ifndef RGB_DISABLE_AFTER_TIMEOUT | 60 | #if defined(RGB_DISABLE_AFTER_TIMEOUT) && !defined(RGB_DISABLE_TIMEOUT) |
| 61 | # define RGB_DISABLE_AFTER_TIMEOUT 0 | 61 | # define RGB_DISABLE_TIMEOUT (RGB_DISABLE_AFTER_TIMEOUT * 1200) |
| 62 | #endif | ||
| 63 | |||
| 64 | #ifndef RGB_DISABLE_TIMEOUT | ||
| 65 | # define RGB_DISABLE_TIMEOUT 0 | ||
| 62 | #endif | 66 | #endif |
| 63 | 67 | ||
| 64 | #ifndef RGB_DISABLE_WHEN_USB_SUSPENDED | 68 | #ifndef RGB_DISABLE_WHEN_USB_SUSPENDED |
| @@ -111,19 +115,29 @@ const point_t k_rgb_matrix_center = RGB_MATRIX_CENTER; | |||
| 111 | # define RGB_MATRIX_STARTUP_SPD UINT8_MAX / 2 | 115 | # define RGB_MATRIX_STARTUP_SPD UINT8_MAX / 2 |
| 112 | #endif | 116 | #endif |
| 113 | 117 | ||
| 114 | bool g_suspend_state = false; | 118 | // globals |
| 115 | 119 | bool g_suspend_state = false; | |
| 116 | rgb_config_t rgb_matrix_config; | 120 | rgb_config_t rgb_matrix_config; // TODO: would like to prefix this with g_ for global consistancy, do this in another pr |
| 117 | 121 | uint32_t g_rgb_timer; | |
| 118 | rgb_counters_t g_rgb_counters; | ||
| 119 | static uint32_t rgb_counters_buffer; | ||
| 120 | |||
| 121 | #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS | 122 | #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS |
| 122 | uint8_t rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS] = {{0}}; | 123 | uint8_t g_rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS] = {{0}}; |
| 123 | #endif | 124 | #endif // RGB_MATRIX_FRAMEBUFFER_EFFECTS |
| 125 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | ||
| 126 | last_hit_t g_last_hit_tracker; | ||
| 127 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED | ||
| 124 | 128 | ||
| 129 | // internals | ||
| 130 | static uint8_t rgb_last_enable = UINT8_MAX; | ||
| 131 | static uint8_t rgb_last_effect = UINT8_MAX; | ||
| 132 | static effect_params_t rgb_effect_params = {0, 0xFF}; | ||
| 133 | static rgb_task_states rgb_task_state = SYNCING; | ||
| 134 | #if RGB_DISABLE_TIMEOUT > 0 | ||
| 135 | static uint32_t rgb_anykey_timer; | ||
| 136 | #endif // RGB_DISABLE_TIMEOUT > 0 | ||
| 137 | |||
| 138 | // double buffers | ||
| 139 | static uint32_t rgb_timer_buffer; | ||
| 125 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | 140 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED |
| 126 | last_hit_t g_last_hit_tracker; | ||
| 127 | static last_hit_t last_hit_buffer; | 141 | static last_hit_t last_hit_buffer; |
| 128 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED | 142 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED |
| 129 | 143 | ||
| @@ -169,21 +183,24 @@ void rgb_matrix_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | |||
| 169 | void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { rgb_matrix_driver.set_color_all(red, green, blue); } | 183 | void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { rgb_matrix_driver.set_color_all(red, green, blue); } |
| 170 | 184 | ||
| 171 | bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record) { | 185 | bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record) { |
| 186 | #if RGB_DISABLE_TIMEOUT > 0 | ||
| 187 | if (record->event.pressed) { | ||
| 188 | rgb_anykey_timer = 0; | ||
| 189 | } | ||
| 190 | #endif // RGB_DISABLE_TIMEOUT > 0 | ||
| 191 | |||
| 172 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | 192 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED |
| 173 | uint8_t led[LED_HITS_TO_REMEMBER]; | 193 | uint8_t led[LED_HITS_TO_REMEMBER]; |
| 174 | uint8_t led_count = 0; | 194 | uint8_t led_count = 0; |
| 175 | 195 | ||
| 176 | # if defined(RGB_MATRIX_KEYRELEASES) | 196 | # if defined(RGB_MATRIX_KEYRELEASES) |
| 177 | if (!record->event.pressed) { | 197 | if (!record->event.pressed) |
| 178 | led_count = rgb_matrix_map_row_column_to_led(record->event.key.row, record->event.key.col, led); | ||
| 179 | g_rgb_counters.any_key_hit = 0; | ||
| 180 | } | ||
| 181 | # elif defined(RGB_MATRIX_KEYPRESSES) | 198 | # elif defined(RGB_MATRIX_KEYPRESSES) |
| 182 | if (record->event.pressed) { | 199 | if (record->event.pressed) |
| 183 | led_count = rgb_matrix_map_row_column_to_led(record->event.key.row, record->event.key.col, led); | ||
| 184 | g_rgb_counters.any_key_hit = 0; | ||
| 185 | } | ||
| 186 | # endif // defined(RGB_MATRIX_KEYRELEASES) | 200 | # endif // defined(RGB_MATRIX_KEYRELEASES) |
| 201 | { | ||
| 202 | led_count = rgb_matrix_map_row_column_to_led(record->event.key.row, record->event.key.col, led); | ||
| 203 | } | ||
| 187 | 204 | ||
| 188 | if (last_hit_buffer.count + led_count > LED_HITS_TO_REMEMBER) { | 205 | if (last_hit_buffer.count + led_count > LED_HITS_TO_REMEMBER) { |
| 189 | memcpy(&last_hit_buffer.x[0], &last_hit_buffer.x[led_count], LED_HITS_TO_REMEMBER - led_count); | 206 | memcpy(&last_hit_buffer.x[0], &last_hit_buffer.x[led_count], LED_HITS_TO_REMEMBER - led_count); |
| @@ -216,7 +233,7 @@ void rgb_matrix_test(void) { | |||
| 216 | // Mask out bits 4 and 5 | 233 | // Mask out bits 4 and 5 |
| 217 | // Increase the factor to make the test animation slower (and reduce to make it faster) | 234 | // Increase the factor to make the test animation slower (and reduce to make it faster) |
| 218 | uint8_t factor = 10; | 235 | uint8_t factor = 10; |
| 219 | switch ((g_rgb_counters.tick & (0b11 << factor)) >> factor) { | 236 | switch ((g_rgb_timer & (0b11 << factor)) >> factor) { |
| 220 | case 0: { | 237 | case 0: { |
| 221 | rgb_matrix_set_color_all(20, 0, 0); | 238 | rgb_matrix_set_color_all(20, 0, 0); |
| 222 | break; | 239 | break; |
| @@ -241,29 +258,26 @@ static bool rgb_matrix_none(effect_params_t *params) { | |||
| 241 | return false; | 258 | return false; |
| 242 | } | 259 | } |
| 243 | 260 | ||
| 244 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | 261 | rgb_matrix_set_color_all(0, 0, 0); |
| 245 | for (uint8_t i = led_min; i < led_max; i++) { | 262 | return false; |
| 246 | rgb_matrix_set_color(i, 0, 0, 0); | ||
| 247 | } | ||
| 248 | return led_max < DRIVER_LED_TOTAL; | ||
| 249 | } | 263 | } |
| 250 | 264 | ||
| 251 | static uint8_t rgb_last_enable = UINT8_MAX; | ||
| 252 | static uint8_t rgb_last_effect = UINT8_MAX; | ||
| 253 | static effect_params_t rgb_effect_params = {0, 0xFF}; | ||
| 254 | static rgb_task_states rgb_task_state = SYNCING; | ||
| 255 | |||
| 256 | static void rgb_task_timers(void) { | 265 | static void rgb_task_timers(void) { |
| 266 | #if defined(RGB_MATRIX_KEYREACTIVE_ENABLED) || RGB_DISABLE_TIMEOUT > 0 | ||
| 267 | uint32_t deltaTime = timer_elapsed32(rgb_timer_buffer); | ||
| 268 | #endif // defined(RGB_MATRIX_KEYREACTIVE_ENABLED) || RGB_DISABLE_TIMEOUT > 0 | ||
| 269 | rgb_timer_buffer = timer_read32(); | ||
| 270 | |||
| 257 | // Update double buffer timers | 271 | // Update double buffer timers |
| 258 | uint16_t deltaTime = timer_elapsed32(rgb_counters_buffer); | 272 | #if RGB_DISABLE_TIMEOUT > 0 |
| 259 | rgb_counters_buffer = timer_read32(); | 273 | if (rgb_anykey_timer < UINT32_MAX) { |
| 260 | if (g_rgb_counters.any_key_hit < UINT32_MAX) { | 274 | if (UINT32_MAX - deltaTime < rgb_anykey_timer) { |
| 261 | if (UINT32_MAX - deltaTime < g_rgb_counters.any_key_hit) { | 275 | rgb_anykey_timer = UINT32_MAX; |
| 262 | g_rgb_counters.any_key_hit = UINT32_MAX; | ||
| 263 | } else { | 276 | } else { |
| 264 | g_rgb_counters.any_key_hit += deltaTime; | 277 | rgb_anykey_timer += deltaTime; |
| 265 | } | 278 | } |
| 266 | } | 279 | } |
| 280 | #endif // RGB_DISABLE_TIMEOUT > 0 | ||
| 267 | 281 | ||
| 268 | // Update double buffer last hit timers | 282 | // Update double buffer last hit timers |
| 269 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | 283 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED |
| @@ -280,7 +294,7 @@ static void rgb_task_timers(void) { | |||
| 280 | 294 | ||
| 281 | static void rgb_task_sync(void) { | 295 | static void rgb_task_sync(void) { |
| 282 | // next task | 296 | // next task |
| 283 | if (timer_elapsed32(g_rgb_counters.tick) >= RGB_MATRIX_LED_FLUSH_LIMIT) rgb_task_state = STARTING; | 297 | if (timer_elapsed32(g_rgb_timer) >= RGB_MATRIX_LED_FLUSH_LIMIT) rgb_task_state = STARTING; |
| 284 | } | 298 | } |
| 285 | 299 | ||
| 286 | static void rgb_task_start(void) { | 300 | static void rgb_task_start(void) { |
| @@ -288,7 +302,7 @@ static void rgb_task_start(void) { | |||
| 288 | rgb_effect_params.iter = 0; | 302 | rgb_effect_params.iter = 0; |
| 289 | 303 | ||
| 290 | // update double buffers | 304 | // update double buffers |
| 291 | g_rgb_counters.tick = rgb_counters_buffer; | 305 | g_rgb_timer = rgb_timer_buffer; |
| 292 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | 306 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED |
| 293 | g_last_hit_tracker = last_hit_buffer; | 307 | g_last_hit_tracker = last_hit_buffer; |
| 294 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED | 308 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED |
| @@ -370,8 +384,16 @@ void rgb_matrix_task(void) { | |||
| 370 | 384 | ||
| 371 | // Ideally we would also stop sending zeros to the LED driver PWM buffers | 385 | // Ideally we would also stop sending zeros to the LED driver PWM buffers |
| 372 | // while suspended and just do a software shutdown. This is a cheap hack for now. | 386 | // while suspended and just do a software shutdown. This is a cheap hack for now. |
| 373 | bool suspend_backlight = ((g_suspend_state && RGB_DISABLE_WHEN_USB_SUSPENDED) || (RGB_DISABLE_AFTER_TIMEOUT > 0 && g_rgb_counters.any_key_hit > RGB_DISABLE_AFTER_TIMEOUT * 60 * 20)); | 387 | bool suspend_backlight = |
| 374 | uint8_t effect = suspend_backlight || !rgb_matrix_config.enable ? 0 : rgb_matrix_config.mode; | 388 | #if RGB_DISABLE_WHEN_USB_SUSPENDED == true |
| 389 | g_suspend_state || | ||
| 390 | #endif // RGB_DISABLE_WHEN_USB_SUSPENDED == true | ||
| 391 | #if RGB_DISABLE_TIMEOUT > 0 | ||
| 392 | (rgb_anykey_timer > (uint32_t)RGB_DISABLE_TIMEOUT) || | ||
| 393 | #endif // RGB_DISABLE_TIMEOUT > 0 | ||
| 394 | false; | ||
| 395 | |||
| 396 | uint8_t effect = suspend_backlight || !rgb_matrix_config.enable ? 0 : rgb_matrix_config.mode; | ||
| 375 | 397 | ||
| 376 | switch (rgb_task_state) { | 398 | switch (rgb_task_state) { |
| 377 | case STARTING: | 399 | case STARTING: |
| @@ -405,8 +427,6 @@ __attribute__((weak)) void rgb_matrix_indicators_user(void) {} | |||
| 405 | void rgb_matrix_init(void) { | 427 | void rgb_matrix_init(void) { |
| 406 | rgb_matrix_driver.init(); | 428 | rgb_matrix_driver.init(); |
| 407 | 429 | ||
| 408 | // TODO: put the 1 second startup delay here? | ||
| 409 | |||
| 410 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | 430 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED |
| 411 | g_last_hit_tracker.count = 0; | 431 | g_last_hit_tracker.count = 0; |
| 412 | for (uint8_t i = 0; i < LED_HITS_TO_REMEMBER; ++i) { | 432 | for (uint8_t i = 0; i < LED_HITS_TO_REMEMBER; ++i) { |
diff --git a/quantum/rgb_matrix.h b/quantum/rgb_matrix.h index 7c37311b4..d9ce39106 100644 --- a/quantum/rgb_matrix.h +++ b/quantum/rgb_matrix.h | |||
| @@ -178,14 +178,14 @@ extern const rgb_matrix_driver_t rgb_matrix_driver; | |||
| 178 | 178 | ||
| 179 | extern rgb_config_t rgb_matrix_config; | 179 | extern rgb_config_t rgb_matrix_config; |
| 180 | 180 | ||
| 181 | extern bool g_suspend_state; | 181 | extern bool g_suspend_state; |
| 182 | extern rgb_counters_t g_rgb_counters; | 182 | extern uint32_t g_rgb_timer; |
| 183 | extern led_config_t g_led_config; | 183 | extern led_config_t g_led_config; |
| 184 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED | 184 | #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED |
| 185 | extern last_hit_t g_last_hit_tracker; | 185 | extern last_hit_t g_last_hit_tracker; |
| 186 | #endif | 186 | #endif |
| 187 | #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS | 187 | #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS |
| 188 | extern uint8_t rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS]; | 188 | extern uint8_t g_rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS]; |
| 189 | #endif | 189 | #endif |
| 190 | 190 | ||
| 191 | #endif | 191 | #endif |
diff --git a/quantum/rgb_matrix_animations/breathing_anim.h b/quantum/rgb_matrix_animations/breathing_anim.h index 92431555e..887425f9d 100644 --- a/quantum/rgb_matrix_animations/breathing_anim.h +++ b/quantum/rgb_matrix_animations/breathing_anim.h | |||
| @@ -6,7 +6,7 @@ bool BREATHING(effect_params_t* params) { | |||
| 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); |
| 7 | 7 | ||
| 8 | HSV hsv = rgb_matrix_config.hsv; | 8 | HSV hsv = rgb_matrix_config.hsv; |
| 9 | uint16_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 8); | 9 | uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); |
| 10 | hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | 10 | hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); |
| 11 | RGB rgb = hsv_to_rgb(hsv); | 11 | RGB rgb = hsv_to_rgb(hsv); |
| 12 | for (uint8_t i = led_min; i < led_max; i++) { | 12 | for (uint8_t i = led_min; i < led_max; i++) { |
diff --git a/quantum/rgb_matrix_animations/digital_rain_anim.h b/quantum/rgb_matrix_animations/digital_rain_anim.h index 7a4a52db1..1de45f8e8 100644 --- a/quantum/rgb_matrix_animations/digital_rain_anim.h +++ b/quantum/rgb_matrix_animations/digital_rain_anim.h | |||
| @@ -18,7 +18,7 @@ bool DIGITAL_RAIN(effect_params_t* params) { | |||
| 18 | 18 | ||
| 19 | if (params->init) { | 19 | if (params->init) { |
| 20 | rgb_matrix_set_color_all(0, 0, 0); | 20 | rgb_matrix_set_color_all(0, 0, 0); |
| 21 | memset(rgb_frame_buffer, 0, sizeof(rgb_frame_buffer)); | 21 | memset(g_rgb_frame_buffer, 0, sizeof(g_rgb_frame_buffer)); |
| 22 | drop = 0; | 22 | drop = 0; |
| 23 | } | 23 | } |
| 24 | 24 | ||
| @@ -27,10 +27,10 @@ bool DIGITAL_RAIN(effect_params_t* params) { | |||
| 27 | if (row == 0 && drop == 0 && rand() < RAND_MAX / RGB_DIGITAL_RAIN_DROPS) { | 27 | if (row == 0 && drop == 0 && rand() < RAND_MAX / RGB_DIGITAL_RAIN_DROPS) { |
| 28 | // top row, pixels have just fallen and we're | 28 | // top row, pixels have just fallen and we're |
| 29 | // making a new rain drop in this column | 29 | // making a new rain drop in this column |
| 30 | rgb_frame_buffer[row][col] = max_intensity; | 30 | g_rgb_frame_buffer[row][col] = max_intensity; |
| 31 | } else if (rgb_frame_buffer[row][col] > 0 && rgb_frame_buffer[row][col] < max_intensity) { | 31 | } else if (g_rgb_frame_buffer[row][col] > 0 && g_rgb_frame_buffer[row][col] < max_intensity) { |
| 32 | // neither fully bright nor dark, decay it | 32 | // neither fully bright nor dark, decay it |
| 33 | rgb_frame_buffer[row][col]--; | 33 | g_rgb_frame_buffer[row][col]--; |
| 34 | } | 34 | } |
| 35 | // set the pixel colour | 35 | // set the pixel colour |
| 36 | uint8_t led[LED_HITS_TO_REMEMBER]; | 36 | uint8_t led[LED_HITS_TO_REMEMBER]; |
| @@ -38,11 +38,11 @@ bool DIGITAL_RAIN(effect_params_t* params) { | |||
| 38 | 38 | ||
| 39 | // TODO: multiple leds are supported mapped to the same row/column | 39 | // TODO: multiple leds are supported mapped to the same row/column |
| 40 | if (led_count > 0) { | 40 | if (led_count > 0) { |
| 41 | if (rgb_frame_buffer[row][col] > pure_green_intensity) { | 41 | if (g_rgb_frame_buffer[row][col] > pure_green_intensity) { |
| 42 | const uint8_t boost = (uint8_t)((uint16_t)max_brightness_boost * (rgb_frame_buffer[row][col] - pure_green_intensity) / (max_intensity - pure_green_intensity)); | 42 | const uint8_t boost = (uint8_t)((uint16_t)max_brightness_boost * (g_rgb_frame_buffer[row][col] - pure_green_intensity) / (max_intensity - pure_green_intensity)); |
| 43 | rgb_matrix_set_color(led[0], boost, max_intensity, boost); | 43 | rgb_matrix_set_color(led[0], boost, max_intensity, boost); |
| 44 | } else { | 44 | } else { |
| 45 | const uint8_t green = (uint8_t)((uint16_t)max_intensity * rgb_frame_buffer[row][col] / pure_green_intensity); | 45 | const uint8_t green = (uint8_t)((uint16_t)max_intensity * g_rgb_frame_buffer[row][col] / pure_green_intensity); |
| 46 | rgb_matrix_set_color(led[0], 0, green, 0); | 46 | rgb_matrix_set_color(led[0], 0, green, 0); |
| 47 | } | 47 | } |
| 48 | } | 48 | } |
| @@ -55,15 +55,15 @@ bool DIGITAL_RAIN(effect_params_t* params) { | |||
| 55 | for (uint8_t row = MATRIX_ROWS - 1; row > 0; row--) { | 55 | for (uint8_t row = MATRIX_ROWS - 1; row > 0; row--) { |
| 56 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { | 56 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { |
| 57 | // if ths is on the bottom row and bright allow decay | 57 | // if ths is on the bottom row and bright allow decay |
| 58 | if (row == MATRIX_ROWS - 1 && rgb_frame_buffer[row][col] == max_intensity) { | 58 | if (row == MATRIX_ROWS - 1 && g_rgb_frame_buffer[row][col] == max_intensity) { |
| 59 | rgb_frame_buffer[row][col]--; | 59 | g_rgb_frame_buffer[row][col]--; |
| 60 | } | 60 | } |
| 61 | // check if the pixel above is bright | 61 | // check if the pixel above is bright |
| 62 | if (rgb_frame_buffer[row - 1][col] == max_intensity) { | 62 | if (g_rgb_frame_buffer[row - 1][col] == max_intensity) { |
| 63 | // allow old bright pixel to decay | 63 | // allow old bright pixel to decay |
| 64 | rgb_frame_buffer[row - 1][col]--; | 64 | g_rgb_frame_buffer[row - 1][col]--; |
| 65 | // make this pixel bright | 65 | // make this pixel bright |
| 66 | rgb_frame_buffer[row][col] = max_intensity; | 66 | g_rgb_frame_buffer[row][col] = max_intensity; |
| 67 | } | 67 | } |
| 68 | } | 68 | } |
| 69 | } | 69 | } |
diff --git a/quantum/rgb_matrix_animations/jellybean_raindrops_anim.h b/quantum/rgb_matrix_animations/jellybean_raindrops_anim.h index 5596146a3..ef2d1500b 100644 --- a/quantum/rgb_matrix_animations/jellybean_raindrops_anim.h +++ b/quantum/rgb_matrix_animations/jellybean_raindrops_anim.h | |||
| @@ -12,7 +12,7 @@ static void jellybean_raindrops_set_color(int i, effect_params_t* params) { | |||
| 12 | bool JELLYBEAN_RAINDROPS(effect_params_t* params) { | 12 | bool JELLYBEAN_RAINDROPS(effect_params_t* params) { |
| 13 | if (!params->init) { | 13 | if (!params->init) { |
| 14 | // Change one LED every tick, make sure speed is not 0 | 14 | // Change one LED every tick, make sure speed is not 0 |
| 15 | if (scale16by8(g_rgb_counters.tick, qadd8(rgb_matrix_config.speed, 16)) % 5 == 0) { | 15 | if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 5 == 0) { |
| 16 | jellybean_raindrops_set_color(rand() % DRIVER_LED_TOTAL, params); | 16 | jellybean_raindrops_set_color(rand() % DRIVER_LED_TOTAL, params); |
| 17 | } | 17 | } |
| 18 | return false; | 18 | return false; |
diff --git a/quantum/rgb_matrix_animations/raindrops_anim.h b/quantum/rgb_matrix_animations/raindrops_anim.h index 9f839a1bc..6e1b5acb0 100644 --- a/quantum/rgb_matrix_animations/raindrops_anim.h +++ b/quantum/rgb_matrix_animations/raindrops_anim.h | |||
| @@ -22,7 +22,7 @@ static void raindrops_set_color(int i, effect_params_t* params) { | |||
| 22 | bool RAINDROPS(effect_params_t* params) { | 22 | bool RAINDROPS(effect_params_t* params) { |
| 23 | if (!params->init) { | 23 | if (!params->init) { |
| 24 | // Change one LED every tick, make sure speed is not 0 | 24 | // Change one LED every tick, make sure speed is not 0 |
| 25 | if (scale16by8(g_rgb_counters.tick, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { | 25 | if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) { |
| 26 | raindrops_set_color(rand() % DRIVER_LED_TOTAL, params); | 26 | raindrops_set_color(rand() % DRIVER_LED_TOTAL, params); |
| 27 | } | 27 | } |
| 28 | return false; | 28 | return false; |
diff --git a/quantum/rgb_matrix_animations/typing_heatmap_anim.h b/quantum/rgb_matrix_animations/typing_heatmap_anim.h index dd313f16a..e82c1b49e 100644 --- a/quantum/rgb_matrix_animations/typing_heatmap_anim.h +++ b/quantum/rgb_matrix_animations/typing_heatmap_anim.h | |||
| @@ -10,20 +10,20 @@ void process_rgb_matrix_typing_heatmap(keyrecord_t* record) { | |||
| 10 | uint8_t m_col = col - 1; | 10 | uint8_t m_col = col - 1; |
| 11 | uint8_t p_col = col + 1; | 11 | uint8_t p_col = col + 1; |
| 12 | 12 | ||
| 13 | if (m_col < col) rgb_frame_buffer[row][m_col] = qadd8(rgb_frame_buffer[row][m_col], 16); | 13 | if (m_col < col) g_rgb_frame_buffer[row][m_col] = qadd8(g_rgb_frame_buffer[row][m_col], 16); |
| 14 | rgb_frame_buffer[row][col] = qadd8(rgb_frame_buffer[row][col], 32); | 14 | g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32); |
| 15 | if (p_col < MATRIX_COLS) rgb_frame_buffer[row][p_col] = qadd8(rgb_frame_buffer[row][p_col], 16); | 15 | if (p_col < MATRIX_COLS) g_rgb_frame_buffer[row][p_col] = qadd8(g_rgb_frame_buffer[row][p_col], 16); |
| 16 | 16 | ||
| 17 | if (p_row < MATRIX_ROWS) { | 17 | if (p_row < MATRIX_ROWS) { |
| 18 | if (m_col < col) rgb_frame_buffer[p_row][m_col] = qadd8(rgb_frame_buffer[p_row][m_col], 13); | 18 | if (m_col < col) g_rgb_frame_buffer[p_row][m_col] = qadd8(g_rgb_frame_buffer[p_row][m_col], 13); |
| 19 | rgb_frame_buffer[p_row][col] = qadd8(rgb_frame_buffer[p_row][col], 16); | 19 | g_rgb_frame_buffer[p_row][col] = qadd8(g_rgb_frame_buffer[p_row][col], 16); |
| 20 | if (p_col < MATRIX_COLS) rgb_frame_buffer[p_row][p_col] = qadd8(rgb_frame_buffer[p_row][p_col], 13); | 20 | if (p_col < MATRIX_COLS) g_rgb_frame_buffer[p_row][p_col] = qadd8(g_rgb_frame_buffer[p_row][p_col], 13); |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | if (m_row < row) { | 23 | if (m_row < row) { |
| 24 | if (m_col < col) rgb_frame_buffer[m_row][m_col] = qadd8(rgb_frame_buffer[m_row][m_col], 13); | 24 | if (m_col < col) g_rgb_frame_buffer[m_row][m_col] = qadd8(g_rgb_frame_buffer[m_row][m_col], 13); |
| 25 | rgb_frame_buffer[m_row][col] = qadd8(rgb_frame_buffer[m_row][col], 16); | 25 | g_rgb_frame_buffer[m_row][col] = qadd8(g_rgb_frame_buffer[m_row][col], 16); |
| 26 | if (p_col < MATRIX_COLS) rgb_frame_buffer[m_row][p_col] = qadd8(rgb_frame_buffer[m_row][p_col], 13); | 26 | if (p_col < MATRIX_COLS) g_rgb_frame_buffer[m_row][p_col] = qadd8(g_rgb_frame_buffer[m_row][p_col], 13); |
| 27 | } | 27 | } |
| 28 | } | 28 | } |
| 29 | 29 | ||
| @@ -31,18 +31,18 @@ bool TYPING_HEATMAP(effect_params_t* params) { | |||
| 31 | // Modified version of RGB_MATRIX_USE_LIMITS to work off of matrix row / col size | 31 | // Modified version of RGB_MATRIX_USE_LIMITS to work off of matrix row / col size |
| 32 | uint8_t led_min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; | 32 | uint8_t led_min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; |
| 33 | uint8_t led_max = led_min + RGB_MATRIX_LED_PROCESS_LIMIT; | 33 | uint8_t led_max = led_min + RGB_MATRIX_LED_PROCESS_LIMIT; |
| 34 | if (led_max > sizeof(rgb_frame_buffer)) led_max = sizeof(rgb_frame_buffer); | 34 | if (led_max > sizeof(g_rgb_frame_buffer)) led_max = sizeof(g_rgb_frame_buffer); |
| 35 | 35 | ||
| 36 | if (params->init) { | 36 | if (params->init) { |
| 37 | rgb_matrix_set_color_all(0, 0, 0); | 37 | rgb_matrix_set_color_all(0, 0, 0); |
| 38 | memset(rgb_frame_buffer, 0, sizeof rgb_frame_buffer); | 38 | memset(g_rgb_frame_buffer, 0, sizeof g_rgb_frame_buffer); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | // Render heatmap & decrease | 41 | // Render heatmap & decrease |
| 42 | for (int i = led_min; i < led_max; i++) { | 42 | for (int i = led_min; i < led_max; i++) { |
| 43 | uint8_t row = i % MATRIX_ROWS; | 43 | uint8_t row = i % MATRIX_ROWS; |
| 44 | uint8_t col = i / MATRIX_ROWS; | 44 | uint8_t col = i / MATRIX_ROWS; |
| 45 | uint8_t val = rgb_frame_buffer[row][col]; | 45 | uint8_t val = g_rgb_frame_buffer[row][col]; |
| 46 | 46 | ||
| 47 | // set the pixel colour | 47 | // set the pixel colour |
| 48 | uint8_t led[LED_HITS_TO_REMEMBER]; | 48 | uint8_t led[LED_HITS_TO_REMEMBER]; |
| @@ -55,10 +55,10 @@ bool TYPING_HEATMAP(effect_params_t* params) { | |||
| 55 | rgb_matrix_set_color(led[j], rgb.r, rgb.g, rgb.b); | 55 | rgb_matrix_set_color(led[j], rgb.r, rgb.g, rgb.b); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | rgb_frame_buffer[row][col] = qsub8(val, 1); | 58 | g_rgb_frame_buffer[row][col] = qsub8(val, 1); |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | return led_max < sizeof(rgb_frame_buffer); | 61 | return led_max < sizeof(g_rgb_frame_buffer); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS | 64 | # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS |
diff --git a/quantum/rgb_matrix_runners/effect_runner_dx_dy.h b/quantum/rgb_matrix_runners/effect_runner_dx_dy.h index 3d312190a..9d0c9fab1 100644 --- a/quantum/rgb_matrix_runners/effect_runner_dx_dy.h +++ b/quantum/rgb_matrix_runners/effect_runner_dx_dy.h | |||
| @@ -5,7 +5,7 @@ typedef HSV (*dx_dy_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t time); | |||
| 5 | bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { | 5 | bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { |
| 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); |
| 7 | 7 | ||
| 8 | uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 2); | 8 | uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); |
| 9 | for (uint8_t i = led_min; i < led_max; i++) { | 9 | for (uint8_t i = led_min; i < led_max; i++) { |
| 10 | RGB_MATRIX_TEST_LED_FLAGS(); | 10 | RGB_MATRIX_TEST_LED_FLAGS(); |
| 11 | int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; | 11 | int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; |
diff --git a/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h b/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h index 1f4767e32..2824c8252 100644 --- a/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h +++ b/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h | |||
| @@ -5,7 +5,7 @@ typedef HSV (*dx_dy_dist_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8 | |||
| 5 | bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { | 5 | bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { |
| 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); |
| 7 | 7 | ||
| 8 | uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 2); | 8 | uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); |
| 9 | for (uint8_t i = led_min; i < led_max; i++) { | 9 | for (uint8_t i = led_min; i < led_max; i++) { |
| 10 | RGB_MATRIX_TEST_LED_FLAGS(); | 10 | RGB_MATRIX_TEST_LED_FLAGS(); |
| 11 | int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; | 11 | int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; |
diff --git a/quantum/rgb_matrix_runners/effect_runner_i.h b/quantum/rgb_matrix_runners/effect_runner_i.h index eebfb78c0..5e6bf5daa 100644 --- a/quantum/rgb_matrix_runners/effect_runner_i.h +++ b/quantum/rgb_matrix_runners/effect_runner_i.h | |||
| @@ -5,7 +5,7 @@ typedef HSV (*i_f)(HSV hsv, uint8_t i, uint8_t time); | |||
| 5 | bool effect_runner_i(effect_params_t* params, i_f effect_func) { | 5 | bool effect_runner_i(effect_params_t* params, i_f effect_func) { |
| 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); |
| 7 | 7 | ||
| 8 | uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 4); | 8 | uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); |
| 9 | for (uint8_t i = led_min; i < led_max; i++) { | 9 | for (uint8_t i = led_min; i < led_max; i++) { |
| 10 | RGB_MATRIX_TEST_LED_FLAGS(); | 10 | RGB_MATRIX_TEST_LED_FLAGS(); |
| 11 | RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); | 11 | RGB rgb = hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); |
diff --git a/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h b/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h index c02352b86..3fb7d4805 100644 --- a/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h +++ b/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h | |||
| @@ -5,7 +5,7 @@ typedef HSV (*sin_cos_i_f)(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t t | |||
| 5 | bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { | 5 | bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { |
| 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | 6 | RGB_MATRIX_USE_LIMITS(led_min, led_max); |
| 7 | 7 | ||
| 8 | uint16_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 4); | 8 | uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); |
| 9 | int8_t cos_value = cos8(time) - 128; | 9 | int8_t cos_value = cos8(time) - 128; |
| 10 | int8_t sin_value = sin8(time) - 128; | 10 | int8_t sin_value = sin8(time) - 128; |
| 11 | for (uint8_t i = led_min; i < led_max; i++) { | 11 | for (uint8_t i = led_min; i < led_max; i++) { |
diff --git a/quantum/rgb_matrix_types.h b/quantum/rgb_matrix_types.h index fc23f55d0..f447ac9c5 100644 --- a/quantum/rgb_matrix_types.h +++ b/quantum/rgb_matrix_types.h | |||
| @@ -44,13 +44,6 @@ typedef struct PACKED { | |||
| 44 | } effect_params_t; | 44 | } effect_params_t; |
| 45 | 45 | ||
| 46 | typedef struct PACKED { | 46 | typedef struct PACKED { |
| 47 | // Global tick at 20 Hz | ||
| 48 | uint32_t tick; | ||
| 49 | // Ticks since this key was last hit. | ||
| 50 | uint32_t any_key_hit; | ||
| 51 | } rgb_counters_t; | ||
| 52 | |||
| 53 | typedef struct PACKED { | ||
| 54 | uint8_t x; | 47 | uint8_t x; |
| 55 | uint8_t y; | 48 | uint8_t y; |
| 56 | } point_t; | 49 | } point_t; |
