Testing battery
This commit is contained in:
parent
8976b353ae
commit
d52d946910
2 changed files with 79 additions and 1 deletions
22
app/Kconfig
22
app/Kconfig
|
@ -236,7 +236,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
|
||||
|
@ -250,6 +250,26 @@ config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB
|
|||
bool "Turn off RGB underglow when USB is disconnected"
|
||||
depends on USB_DEVICE_STACK
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY
|
||||
bool "Shows battery status on a LED"
|
||||
default y
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY_N
|
||||
int "LED number to show the battery status"
|
||||
range 0 26
|
||||
default 0
|
||||
depends on ZMK_RGB_UNDERGLOW_STATUS_BATTERY
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_STATUS_LAYER
|
||||
bool "Shows layer status on a LED"
|
||||
default y
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_STATUS_LAYER_N
|
||||
int "LED number to show the layer status"
|
||||
range 0 26
|
||||
default 1
|
||||
depends on ZMK_RGB_UNDERGLOW_STATUS_LAYER
|
||||
|
||||
#ZMK_RGB_UNDERGLOW
|
||||
endif
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
#include <zmk/events/activity_state_changed.h>
|
||||
#include <zmk/events/usb_conn_state_changed.h>
|
||||
|
||||
#include <zmk/keymap.h>
|
||||
#include <zmk/battery.h>
|
||||
|
||||
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
||||
|
||||
#define STRIP_LABEL DT_LABEL(DT_CHOSEN(zmk_underglow))
|
||||
|
@ -42,6 +45,7 @@ enum rgb_underglow_effect {
|
|||
UNDERGLOW_EFFECT_BREATHE,
|
||||
UNDERGLOW_EFFECT_SPECTRUM,
|
||||
UNDERGLOW_EFFECT_SWIRL,
|
||||
UNDERGLOW_EFFECT_STATUS,
|
||||
UNDERGLOW_EFFECT_NUMBER // Used to track number of underglow effects
|
||||
};
|
||||
|
||||
|
@ -168,6 +172,37 @@ static void zmk_rgb_underglow_effect_swirl() {
|
|||
state.animation_step = state.animation_step % HUE_MAX;
|
||||
}
|
||||
|
||||
static void zmk_rgb_underglow_effect_status() {
|
||||
struct zmk_led_hsb hsb = state.color;
|
||||
hsb.b = 0;
|
||||
|
||||
// Turn off all LEDs
|
||||
for (int i = 0; i < STRIP_NUM_PIXELS; i++) {
|
||||
pixels[i] = hsb_to_rgb(hsb_scale_zero_max(hsb));
|
||||
}
|
||||
|
||||
// and turn on specific ones.
|
||||
|
||||
// ------- Turn on the layer status leds -------
|
||||
struct zmk_led_hsb layer_hsb = state.color;
|
||||
#if CONFIG_ZMK_SPLIT_ROLE_CENTRAL
|
||||
layer_hsb.h = zmk_keymap_highest_layer_active() * 20;
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_LAYER)
|
||||
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_LAYER_N] = hsb_to_rgb(hsb_scale_min_max(layer_hsb));
|
||||
#endif
|
||||
|
||||
// ------- Turn on the battery status led -------
|
||||
struct zmk_led_hsb battery_hsb = state.color;
|
||||
battery_hsb.h = zmk_battery_state_of_charge();
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY)
|
||||
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_N] = hsb_to_rgb(hsb_scale_min_max(battery_hsb));
|
||||
LOG_DBG("---------> Battery Level: %d", battery_hsb.h);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void zmk_rgb_underglow_tick(struct k_work *work) {
|
||||
switch (state.current_effect) {
|
||||
case UNDERGLOW_EFFECT_SOLID:
|
||||
|
@ -182,6 +217,9 @@ static void zmk_rgb_underglow_tick(struct k_work *work) {
|
|||
case UNDERGLOW_EFFECT_SWIRL:
|
||||
zmk_rgb_underglow_effect_swirl();
|
||||
break;
|
||||
case UNDERGLOW_EFFECT_STATUS:
|
||||
zmk_rgb_underglow_effect_status();
|
||||
break;
|
||||
}
|
||||
|
||||
led_strip_update_rgb(led_strip, pixels, STRIP_NUM_PIXELS);
|
||||
|
@ -505,4 +543,24 @@ ZMK_SUBSCRIPTION(rgb_underglow, zmk_activity_state_changed);
|
|||
ZMK_SUBSCRIPTION(rgb_underglow, zmk_usb_conn_state_changed);
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
#if IS_ENABLED(ZMK_RGB_UNDERGLOW_STATUS_BATTERY)
|
||||
static int rgb_status_battery_event_listener(const zmk_event_t *eh) {
|
||||
struct zmk_led_hsb hsb = state.color;
|
||||
//state.pressed = abs(state.pressed - 1);
|
||||
//hsb.h = abs(state.pressed - 1) * 20;
|
||||
//hsb.b
|
||||
hsb.h = zmk_battery_state_of_charge();
|
||||
|
||||
//pixels[i] = hsb_to_rgb(hsb_scale_zero_max(hsb));
|
||||
state.color = hsb;
|
||||
|
||||
}
|
||||
|
||||
ZMK_LISTENER(rgb_status_press, rgb_status_battery_event_listener);
|
||||
ZMK_SUBSCRIPTION(rgb_status_press, zmk_battery_state_changed);
|
||||
#endif // IS_ENABLED(ZMK_RGB_UNDERGLOW_STATUS_BATTERY)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
SYS_INIT(zmk_rgb_underglow_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);
|
||||
|
|
Loading…
Add table
Reference in a new issue