diff options
Diffstat (limited to 'users/drashna/rgb/rgb_stuff.c')
-rw-r--r-- | users/drashna/rgb/rgb_stuff.c | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/users/drashna/rgb/rgb_stuff.c b/users/drashna/rgb/rgb_stuff.c index e0422334a..09071f715 100644 --- a/users/drashna/rgb/rgb_stuff.c +++ b/users/drashna/rgb/rgb_stuff.c | |||
@@ -23,9 +23,29 @@ static bool is_enabled; | |||
23 | static bool is_rgblight_startup; | 23 | static bool is_rgblight_startup; |
24 | static HSV old_hsv; | 24 | static HSV old_hsv; |
25 | static uint8_t old_mode; | 25 | static uint8_t old_mode; |
26 | static uint16_t rgblight_startup_loop_timer; | 26 | deferred_token rgb_startup_token; |
27 | # endif | 27 | # endif |
28 | 28 | ||
29 | uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) { | ||
30 | if (is_rgblight_startup && is_keyboard_master()) { | ||
31 | static uint8_t counter = 0; | ||
32 | counter++; | ||
33 | rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255); | ||
34 | if (counter >= 255) { | ||
35 | is_rgblight_startup = false; | ||
36 | if (userspace_config.rgb_layer_change) { | ||
37 | layer_state_set_rgb_light(layer_state); | ||
38 | } else { | ||
39 | rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode); | ||
40 | } | ||
41 | if (!is_enabled) { | ||
42 | rgblight_disable_noeeprom(); | ||
43 | } | ||
44 | } | ||
45 | } | ||
46 | return is_rgblight_startup ? 10 : 0; | ||
47 | } | ||
48 | |||
29 | void keyboard_post_init_rgb_light(void) { | 49 | void keyboard_post_init_rgb_light(void) { |
30 | # if defined(RGBLIGHT_STARTUP_ANIMATION) | 50 | # if defined(RGBLIGHT_STARTUP_ANIMATION) |
31 | is_enabled = rgblight_is_enabled(); | 51 | is_enabled = rgblight_is_enabled(); |
@@ -40,30 +60,8 @@ void keyboard_post_init_rgb_light(void) { | |||
40 | if (userspace_config.rgb_layer_change) { | 60 | if (userspace_config.rgb_layer_change) { |
41 | layer_state_set_rgb_light(layer_state); | 61 | layer_state_set_rgb_light(layer_state); |
42 | } | 62 | } |
43 | } | 63 | rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL); |
44 | 64 | ||
45 | void matrix_scan_rgb_light(void) { | ||
46 | # if defined(RGBLIGHT_STARTUP_ANIMATION) | ||
47 | if (is_rgblight_startup && is_keyboard_master()) { | ||
48 | if (sync_timer_elapsed(rgblight_startup_loop_timer) > 10) { | ||
49 | static uint8_t counter; | ||
50 | counter++; | ||
51 | rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255); | ||
52 | rgblight_startup_loop_timer = sync_timer_read(); | ||
53 | if (counter == 255) { | ||
54 | is_rgblight_startup = false; | ||
55 | if (userspace_config.rgb_layer_change) { | ||
56 | layer_state_set_rgb_light(layer_state); | ||
57 | } else { | ||
58 | rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode); | ||
59 | } | ||
60 | if (!is_enabled) { | ||
61 | rgblight_disable_noeeprom(); | ||
62 | } | ||
63 | } | ||
64 | } | ||
65 | } | ||
66 | # endif | ||
67 | } | 65 | } |
68 | 66 | ||
69 | layer_state_t layer_state_set_rgb_light(layer_state_t state) { | 67 | layer_state_t layer_state_set_rgb_light(layer_state_t state) { |