aboutsummaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorJames Young <18669334+noroadsleft@users.noreply.github.com>2020-05-30 13:14:59 -0700
committerGitHub <noreply@github.com>2020-05-30 13:14:59 -0700
commitfced377ac007d27f2650ccffbe0b18abcdcfe23d (patch)
treebd5b141987394a5a16cfc416bfe2b9efdb14d067 /quantum
parent7b8a013826ad90714a05ea522de53adf964ab3b9 (diff)
downloadqmk_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.h3
-rw-r--r--quantum/audio/audio_avr.c5
-rw-r--r--quantum/rgb_matrix.c106
-rw-r--r--quantum/rgb_matrix.h8
-rw-r--r--quantum/rgb_matrix_animations/breathing_anim.h2
-rw-r--r--quantum/rgb_matrix_animations/digital_rain_anim.h24
-rw-r--r--quantum/rgb_matrix_animations/jellybean_raindrops_anim.h2
-rw-r--r--quantum/rgb_matrix_animations/raindrops_anim.h2
-rw-r--r--quantum/rgb_matrix_animations/typing_heatmap_anim.h28
-rw-r--r--quantum/rgb_matrix_runners/effect_runner_dx_dy.h2
-rw-r--r--quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h2
-rw-r--r--quantum/rgb_matrix_runners/effect_runner_i.h2
-rw-r--r--quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h2
-rw-r--r--quantum/rgb_matrix_types.h7
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(&note_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(&note_array, NOTE_ARRAY_SIZE((note_array)), false) 102#define PLAY_SONG(note_array) play_notes(&note_array, NOTE_ARRAY_SIZE((note_array)), false)
106#define PLAY_LOOP(note_array) play_notes(&note_array, NOTE_ARRAY_SIZE((note_array)), true) 103#define PLAY_LOOP(note_array) play_notes(&note_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
115int voices = 0; 120int 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
114bool g_suspend_state = false; 118// globals
115 119bool g_suspend_state = false;
116rgb_config_t rgb_matrix_config; 120rgb_config_t rgb_matrix_config; // TODO: would like to prefix this with g_ for global consistancy, do this in another pr
117 121uint32_t g_rgb_timer;
118rgb_counters_t g_rgb_counters;
119static uint32_t rgb_counters_buffer;
120
121#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS 122#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
122uint8_t rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS] = {{0}}; 123uint8_t g_rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS] = {{0}};
123#endif 124#endif // RGB_MATRIX_FRAMEBUFFER_EFFECTS
125#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
126last_hit_t g_last_hit_tracker;
127#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
124 128
129// internals
130static uint8_t rgb_last_enable = UINT8_MAX;
131static uint8_t rgb_last_effect = UINT8_MAX;
132static effect_params_t rgb_effect_params = {0, 0xFF};
133static rgb_task_states rgb_task_state = SYNCING;
134#if RGB_DISABLE_TIMEOUT > 0
135static uint32_t rgb_anykey_timer;
136#endif // RGB_DISABLE_TIMEOUT > 0
137
138// double buffers
139static uint32_t rgb_timer_buffer;
125#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED 140#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
126last_hit_t g_last_hit_tracker;
127static last_hit_t last_hit_buffer; 141static 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) {
169void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { rgb_matrix_driver.set_color_all(red, green, blue); } 183void 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
171bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record) { 185bool 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
251static uint8_t rgb_last_enable = UINT8_MAX;
252static uint8_t rgb_last_effect = UINT8_MAX;
253static effect_params_t rgb_effect_params = {0, 0xFF};
254static rgb_task_states rgb_task_state = SYNCING;
255
256static void rgb_task_timers(void) { 265static 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
281static void rgb_task_sync(void) { 295static 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
286static void rgb_task_start(void) { 300static 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) {}
405void rgb_matrix_init(void) { 427void 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
179extern rgb_config_t rgb_matrix_config; 179extern rgb_config_t rgb_matrix_config;
180 180
181extern bool g_suspend_state; 181extern bool g_suspend_state;
182extern rgb_counters_t g_rgb_counters; 182extern uint32_t g_rgb_timer;
183extern led_config_t g_led_config; 183extern led_config_t g_led_config;
184#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED 184#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
185extern last_hit_t g_last_hit_tracker; 185extern last_hit_t g_last_hit_tracker;
186#endif 186#endif
187#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS 187#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
188extern uint8_t rgb_frame_buffer[MATRIX_ROWS][MATRIX_COLS]; 188extern 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) {
12bool JELLYBEAN_RAINDROPS(effect_params_t* params) { 12bool 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) {
22bool RAINDROPS(effect_params_t* params) { 22bool 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);
5bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { 5bool 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
5bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { 5bool 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);
5bool effect_runner_i(effect_params_t* params, i_f effect_func) { 5bool 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
5bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { 5bool 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
46typedef struct PACKED { 46typedef 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
53typedef struct PACKED {
54 uint8_t x; 47 uint8_t x;
55 uint8_t y; 48 uint8_t y;
56} point_t; 49} point_t;