RGB underglow: dim or disable when battery low
Disable underglow when battery below 10%, halve brightness when battery below 20%
This commit is contained in:
parent
dbdaf2f935
commit
ea8bf0b936
1 changed files with 32 additions and 0 deletions
|
@ -185,6 +185,7 @@ static void zmk_led_write_pixels() {
|
|||
static struct led_rgb led_buffer[STRIP_NUM_PIXELS];
|
||||
int bat0 = zmk_battery_state_of_charge();
|
||||
int blend = 0;
|
||||
int reset_ext_power = 0;
|
||||
if (state.status_active) {
|
||||
blend = zmk_led_generate_status();
|
||||
}
|
||||
|
@ -194,6 +195,18 @@ static void zmk_led_write_pixels() {
|
|||
led_strip_update_rgb(led_strip, pixels, STRIP_NUM_PIXELS);
|
||||
return;
|
||||
}
|
||||
// battery below minimum charge
|
||||
if (bat0 < 10) {
|
||||
memset(pixels, 0, sizeof(struct led_rgb) * STRIP_NUM_PIXELS);
|
||||
if (state.on) {
|
||||
int c_power = ext_power_get(ext_power);
|
||||
if (c_power && !state.status_active) {
|
||||
// power is on, RGB underglow is on, but battery is too low
|
||||
state.on = false;
|
||||
reset_ext_power = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (blend == 0) {
|
||||
for (int i = 0; i < STRIP_NUM_PIXELS; i++) {
|
||||
|
@ -216,7 +229,20 @@ static void zmk_led_write_pixels() {
|
|||
}
|
||||
}
|
||||
|
||||
// battery below 20%, reduce LED brightness
|
||||
if (bat0 < 20) {
|
||||
for (int i = 0; i < STRIP_NUM_PIXELS; i++) {
|
||||
led_buffer[i].r = led_buffer[i].r >> 1;
|
||||
led_buffer[i].g = led_buffer[i].g >> 1;
|
||||
led_buffer[i].b = led_buffer[i].b >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
led_strip_update_rgb(led_strip, led_buffer, STRIP_NUM_PIXELS);
|
||||
|
||||
if (reset_ext_power) {
|
||||
zmk_rgb_set_ext_power();
|
||||
}
|
||||
}
|
||||
|
||||
#define UNDERGLOW_INDICATORS DT_PATH(underglow_indicators)
|
||||
|
@ -485,6 +511,12 @@ int zmk_rgb_set_ext_power() {
|
|||
c_power = 0;
|
||||
}
|
||||
int desired_state = state.on || state.status_active;
|
||||
// force power off, when battery low (<10%)
|
||||
if (state.on && !state.status_active) {
|
||||
if (zmk_battery_state_of_charge() < 10) {
|
||||
desired_state = false;
|
||||
}
|
||||
}
|
||||
if (desired_state && !c_power) {
|
||||
int rc = ext_power_enable(ext_power);
|
||||
if (rc != 0) {
|
||||
|
|
Loading…
Add table
Reference in a new issue