forked from kofal.net/zmk
fix: Improve startup time with proper settings loading.
* Avoid doing duplicate calls to setings_load_subtree, which iterates NVS fully each time under the hood, and instead use on settings_load later in the lifecycle.
This commit is contained in:
committed by
Pete Johanson
parent
f18974e8c4
commit
80173f8ea3
@@ -445,7 +445,11 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c
|
||||
return 0;
|
||||
};
|
||||
|
||||
struct settings_handler profiles_handler = {.name = "ble", .h_set = ble_profiles_handle_set};
|
||||
static int zmk_ble_complete_startup(void);
|
||||
|
||||
static struct settings_handler profiles_handler = {
|
||||
.name = "ble", .h_set = ble_profiles_handle_set, .h_commit = zmk_ble_complete_startup};
|
||||
|
||||
#endif /* IS_ENABLED(CONFIG_SETTINGS) */
|
||||
|
||||
static bool is_conn_active_profile(const struct bt_conn *conn) {
|
||||
@@ -644,29 +648,7 @@ static void zmk_ble_ready(int err) {
|
||||
update_advertising();
|
||||
}
|
||||
|
||||
static int zmk_ble_init(void) {
|
||||
int err = bt_enable(NULL);
|
||||
|
||||
if (err) {
|
||||
LOG_ERR("BLUETOOTH FAILED (%d)", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_SETTINGS)
|
||||
settings_subsys_init();
|
||||
|
||||
err = settings_register(&profiles_handler);
|
||||
if (err) {
|
||||
LOG_ERR("Failed to setup the profile settings handler (err %d)", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
k_work_init_delayable(&ble_save_work, ble_save_profile_work);
|
||||
|
||||
settings_load_subtree("ble");
|
||||
settings_load_subtree("bt");
|
||||
|
||||
#endif
|
||||
static int zmk_ble_complete_startup(void) {
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START)
|
||||
LOG_WRN("Clearing all existing BLE bond information from the keyboard");
|
||||
@@ -706,6 +688,24 @@ static int zmk_ble_init(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zmk_ble_init(void) {
|
||||
int err = bt_enable(NULL);
|
||||
|
||||
if (err < 0 && err != -EALREADY) {
|
||||
LOG_ERR("BLUETOOTH FAILED (%d)", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_SETTINGS)
|
||||
settings_register(&profiles_handler);
|
||||
k_work_init_delayable(&ble_save_work, ble_save_profile_work);
|
||||
#else
|
||||
zmk_ble_complete_startup();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_BLE_PASSKEY_ENTRY)
|
||||
|
||||
static bool zmk_ble_numeric_usage_to_value(const zmk_key_t key, const zmk_key_t one,
|
||||
|
||||
Reference in New Issue
Block a user