From d182c091fc45551217e3cac4248c9094c07fb69f Mon Sep 17 00:00:00 2001 From: ReFil <31960031+ReFil@users.noreply.github.com> Date: Tue, 13 Sep 2022 15:43:10 +0100 Subject: [PATCH 1/2] feat(Underglow): Battery state of charge effect --- app/Kconfig | 2 +- app/src/rgb_underglow.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/Kconfig b/app/Kconfig index 5aedd9d9..81f264fc 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -318,7 +318,7 @@ config ZMK_RGB_UNDERGLOW_SPD_START config ZMK_RGB_UNDERGLOW_EFF_START int "RGB underglow start effect int value related to the effect enum list" - range 0 3 + range 0 4 default 0 config ZMK_RGB_UNDERGLOW_ON_START diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 5bf1ef25..9b833597 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -49,6 +50,7 @@ enum rgb_underglow_effect { UNDERGLOW_EFFECT_BREATHE, UNDERGLOW_EFFECT_SPECTRUM, UNDERGLOW_EFFECT_SWIRL, + UNDERGLOW_EFFECT_BATTERY, UNDERGLOW_EFFECT_NUMBER // Used to track number of underglow effects }; @@ -175,6 +177,22 @@ static void zmk_rgb_underglow_effect_swirl(void) { state.animation_step = state.animation_step % HUE_MAX; } +static void zmk_rgb_underglow_effect_battery() { + struct zmk_led_hsb hsb = state.color; + + // Only set lights if battery information available, otherwise set to blue + if (DT_HAS_CHOSEN(zmk_battery)) { + uint8_t soc = zmk_battery_state_of_charge(); + hsb.h = (soc * 1.2); + } else { + hsb.h = 240; + } + hsb.s = SAT_MAX; + for (int i = 0; i < STRIP_NUM_PIXELS; i++) { + pixels[i] = hsb_to_rgb(hsb_scale_min_max(hsb)); + } +} + static void zmk_rgb_underglow_tick(struct k_work *work) { switch (state.current_effect) { case UNDERGLOW_EFFECT_SOLID: @@ -189,6 +207,9 @@ static void zmk_rgb_underglow_tick(struct k_work *work) { case UNDERGLOW_EFFECT_SWIRL: zmk_rgb_underglow_effect_swirl(); break; + case UNDERGLOW_EFFECT_BATTERY: + zmk_rgb_underglow_effect_battery(); + break; } int err = led_strip_update_rgb(led_strip, pixels, STRIP_NUM_PIXELS); From 74ec39c92b13aad5e3813080e09c7cf0743962fc Mon Sep 17 00:00:00 2001 From: ReFil <31960031+ReFil@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:13:47 +0000 Subject: [PATCH 2/2] fix(rgb): Give battery effect void arg --- app/src/rgb_underglow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 9b833597..45e05911 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -177,7 +177,7 @@ static void zmk_rgb_underglow_effect_swirl(void) { state.animation_step = state.animation_step % HUE_MAX; } -static void zmk_rgb_underglow_effect_battery() { +static void zmk_rgb_underglow_effect_battery(void) { struct zmk_led_hsb hsb = state.color; // Only set lights if battery information available, otherwise set to blue