Added kconfig flag

This commit is contained in:
Nicolas Munnich 2024-08-02 09:54:17 +02:00
parent f92dce43e9
commit dd6d610df0
3 changed files with 28 additions and 3 deletions

View file

@ -163,8 +163,7 @@ config ZMK_BLE_EXPERIMENTAL_CONN
bool "Experimental BLE connection changes"
help
Enables a combination of settings that are planned to be default in future versions of ZMK
to improve connection stability. This includes changes to timing on BLE pairing initiation,
restores use of the updated/new LLCP implementation, and disables 2M PHY support.
to improve connection stability.
config ZMK_BLE_EXPERIMENTAL_SEC
bool "Experimental BLE security changes"
@ -430,6 +429,10 @@ config ZMK_EXT_POWER
bool "Enable support to control external power output"
default y
config ZMK_EXT_POWER_IDLE_OFF
bool "Turn off external power while idle"
depends on ZMK_EXT_POWER
config ZMK_PM
bool

View file

@ -19,6 +19,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
#include <zmk/events/sensor_event.h>
#include <zmk/pm.h>
#include <drivers/ext_power.h>
#include <zmk/activity.h>
@ -60,8 +61,19 @@ int set_state(enum zmk_activity_state state) {
enum zmk_activity_state zmk_activity_get_state(void) { return activity_state; }
int activity_event_listener(const zmk_event_t *eh) {
#if IS_ENABLED(CONFIG_ZMK_EXT_POWER_IDLE_OFF)
activity_last_uptime = k_uptime_get();
if (activity_state == ZMK_ACTIVITY_IDLE) {
const struct device *ext_power = device_get_binding("EXT_POWER");
if (ext_power == NULL) {
LOG_ERR("Unable to retrieve ext_power device on idle wake.");
} else {
ext_power_enable(ext_power);
}
}
#else
activity_last_uptime = k_uptime_get();
#endif /* IS_ENABLED(CONFIG_ZMK_EXT_POWER_IDLE_OFF) */
return set_state(ZMK_ACTIVITY_ACTIVE);
}
@ -83,6 +95,15 @@ void activity_work_handler(struct k_work *work) {
} else
#endif /* IS_ENABLED(CONFIG_ZMK_SLEEP) */
if (inactive_time > MAX_IDLE_MS) {
#if IS_ENABLED(CONFIG_ZMK_EXT_POWER_IDLE_OFF)
const struct device *ext_power = device_get_binding("EXT_POWER");
if (ext_power == NULL) {
LOG_ERR("Unable to retrieve ext_power device on entering idle.");
return;
}
ext_power_disable(ext_power);
#endif /* IS_ENABLED(CONFIG_ZMK_EXT_POWER_IDLE_OFF) */
set_state(ZMK_ACTIVITY_IDLE);
}
}

View file

@ -21,6 +21,7 @@ Definition file: [zmk/app/Kconfig](https://github.com/zmkfirmware/zmk/blob/main/
| Config | Type | Description | Default |
| ------------------------------- | ---- | ----------------------------------------------------- | ------- |
| `CONFIG_ZMK_IDLE_TIMEOUT` | int | Milliseconds of inactivity before entering idle state | 30000 |
| `CONFIG_ZMK_EXT_POWER_IDLE_OFF` | bool | Turn off external power while idle | n |
| `CONFIG_ZMK_SLEEP` | bool | Enable deep sleep support | n |
| `CONFIG_ZMK_IDLE_SLEEP_TIMEOUT` | int | Milliseconds of inactivity before entering deep sleep | 900000 |