From 2b84c726c8893eaaa1bf26dfddf2798b159cd47d Mon Sep 17 00:00:00 2001 From: Joakim Andersson Date: Tue, 30 Jul 2019 16:55:47 +0200 Subject: [PATCH] Bluetooth: Settings: Fix generated identity not persistently stored. Fix an issue where the generated identity was not permanently stored. This resulted in being unable to reconnect after bonding when using privacy, since a new local IRK was generated on reboot. When settings is enabled the application is responsible for loading identities and possible creating its own identities. When settings_load is called and no identities has been created or found in persistent storage a new identity will be created. Since bt init has not been finalized bt_id_create will not make a call to bt_settings_save_id. So we need to make sure that this identity will be stored. Signed-off-by: Joakim Andersson --- subsys/bluetooth/host/settings.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/subsys/bluetooth/host/settings.c b/subsys/bluetooth/host/settings.c index abf3d7d81b4311..fcbf72396b8234 100644 --- a/subsys/bluetooth/host/settings.c +++ b/subsys/bluetooth/host/settings.c @@ -217,6 +217,12 @@ static int commit(void) } } + /* Make sure that the identities created by bt_id_create after + * bt_enable is saved to persistent storage. */ + if (!atomic_test_bit(bt_dev.flags, BT_DEV_PRESET_ID)) { + bt_settings_save_id(); + } + if (!atomic_test_bit(bt_dev.flags, BT_DEV_READY)) { bt_finalize_init(); }