feat(shields): Make settings_reset shield reset all settings
Added a new CONFIG_ZMK_SETTINGS_RESET_ON_START option which enables init code to call zmk_settings_erase(), and changed the settings_reset shield to use it instead of CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START, so it now resets all settings instead of just clearing BLE bonds. CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START is left in place for now in case someone still needs it. It may be replaced in the future once we find a better way to repair a broken split connection.
This commit is contained in:
parent
610a806c84
commit
1dfcfc7d3f
5 changed files with 35 additions and 7 deletions
|
@ -565,6 +565,9 @@ endmenu
|
|||
|
||||
if SETTINGS
|
||||
|
||||
config ZMK_SETTINGS_RESET_ON_START
|
||||
bool "Delete all persistent settings when the keyboard boots"
|
||||
|
||||
config ZMK_SETTINGS_SAVE_DEBOUNCE
|
||||
int "Milliseconds to debounce settings saves"
|
||||
default 60000
|
||||
|
|
|
@ -1 +1,4 @@
|
|||
CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START=y
|
||||
CONFIG_SETTINGS=y
|
||||
CONFIG_ZMK_SETTINGS_RESET_ON_START=y
|
||||
# Disable BLE so splits don't try to re-pair until normal firmware is flashed.
|
||||
CONFIG_ZMK_BLE=n
|
||||
|
|
|
@ -5,3 +5,5 @@ target_sources_ifdef(CONFIG_SETTINGS_NONE app PRIVATE reset_settings_none.c)
|
|||
target_sources_ifdef(CONFIG_SETTINGS_FCB app PRIVATE reset_settings_fcb.c)
|
||||
target_sources_ifdef(CONFIG_SETTINGS_FILE app PRIVATE reset_settings_file.c)
|
||||
target_sources_ifdef(CONFIG_SETTINGS_NVS app PRIVATE reset_settings_nvs.c)
|
||||
|
||||
target_sources_ifdef(CONFIG_ZMK_SETTINGS_RESET_ON_START app PRIVATE reset_settings_on_start.c)
|
||||
|
|
19
app/src/settings/reset_settings_on_start.c
Normal file
19
app/src/settings/reset_settings_on_start.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (c) 2023 The ZMK Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include <zephyr/device.h>
|
||||
#include <zephyr/init.h>
|
||||
|
||||
#include <zmk/settings.h>
|
||||
|
||||
static int reset_settings_init(const struct device *dev) {
|
||||
ARG_UNUSED(dev);
|
||||
return zmk_settings_erase();
|
||||
}
|
||||
|
||||
// Reset after the kernel is initialized but before any application code to
|
||||
// ensure settings are cleared before anything tries to use them.
|
||||
SYS_INIT(reset_settings_init, POST_KERNEL, CONFIG_APPLICATION_INIT_PRIORITY);
|
|
@ -14,8 +14,9 @@ Definition file: [zmk/app/Kconfig](https://github.com/zmkfirmware/zmk/blob/main/
|
|||
### General
|
||||
|
||||
| Config | Type | Description | Default |
|
||||
| ----------------------------------- | ------ | ----------------------------------------------------------------------------- | ------- |
|
||||
| ------------------------------------ | ------ | ----------------------------------------------------------------------------- | ------- |
|
||||
| `CONFIG_ZMK_KEYBOARD_NAME` | string | The name of the keyboard (max 16 characters) | |
|
||||
| `CONFIG_ZMK_SETTINGS_RESET_ON_START` | bool | Clears all persistent settings from the keyboard at startup | n |
|
||||
| `CONFIG_ZMK_SETTINGS_SAVE_DEBOUNCE` | int | Milliseconds to wait after a setting change before writing it to flash memory | 60000 |
|
||||
| `CONFIG_ZMK_WPM` | bool | Enable calculating words per minute | n |
|
||||
| `CONFIG_HEAP_MEM_POOL_SIZE` | int | Size of the heap memory pool | 8192 |
|
||||
|
|
Loading…
Add table
Reference in a new issue