diff options
author | Peter Johanson <peter@peterjohanson.com> | 2021-11-09 05:04:54 +0000 |
---|---|---|
committer | Nick Van Doorn <nick@nv.delivery> | 2021-11-26 09:59:03 -0800 |
commit | 54bfc6c970f562b3919d3f07a88f093505bad821 (patch) | |
tree | 4ab3c9e1d3c4d74fb193348e4e9ea17d39372c95 /app/src/rgb_underglow.c | |
parent | 8a04dcbdc7479c69df734a049ce55d9656cd9b99 (diff) |
fix(underglow): Handle cycling effects on splits.
* Convert relative effect cycling to absolute effect selection.
Diffstat (limited to 'app/src/rgb_underglow.c')
-rw-r--r-- | app/src/rgb_underglow.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 40d99c7..427552f 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -332,18 +332,28 @@ int zmk_rgb_underglow_off() { return zmk_rgb_underglow_save_state(); } -int zmk_rgb_underglow_cycle_effect(int direction) { +int zmk_rgb_underglow_calc_effect(int direction) { + return (state.current_effect + UNDERGLOW_EFFECT_NUMBER + direction) % UNDERGLOW_EFFECT_NUMBER; +} + +int zmk_rgb_underglow_select_effect(int effect) { if (!led_strip) return -ENODEV; - state.current_effect += UNDERGLOW_EFFECT_NUMBER + direction; - state.current_effect %= UNDERGLOW_EFFECT_NUMBER; + if (effect < 0 || effect >= UNDERGLOW_EFFECT_NUMBER) { + return -EINVAL; + } + state.current_effect = effect; state.animation_step = 0; return zmk_rgb_underglow_save_state(); } +int zmk_rgb_underglow_cycle_effect(int direction) { + return zmk_rgb_underglow_select_effect(zmk_rgb_underglow_calc_effect(direction)); +} + int zmk_rgb_underglow_toggle() { return state.on ? zmk_rgb_underglow_off() : zmk_rgb_underglow_on(); } |