mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/ble_mesh_node_old_version_to_new_v4.0' into 'release/v4.0'
ble_mesh: Fix mesh node device role restore (v4.0) See merge request espressif/esp-idf!8854
This commit is contained in:
commit
6c99fdceb2
@ -285,6 +285,29 @@ if BLE_MESH
|
||||
introduce message replay attacks and system security will be in a
|
||||
vulnerable state.
|
||||
|
||||
config BLE_MESH_SETTINGS_BACKWARD_COMPATIBILITY
|
||||
bool "A specific option for settings backward compatibility"
|
||||
depends on BLE_MESH_NODE
|
||||
default n
|
||||
help
|
||||
This option is created to solve the issue of failure in recovering
|
||||
node information after mesh stack updates. In the old version mesh
|
||||
stack, there is no key of "mesh/role" in nvs. In the new version
|
||||
mesh stack, key of "mesh/role" is added in nvs, recovering node
|
||||
information needs to check "mesh/role" key in nvs and implements
|
||||
selective recovery of mesh node information. Therefore, there may
|
||||
be failure in recovering node information during node restarting
|
||||
after OTA.
|
||||
|
||||
The new version mesh stack adds the option of "mesh/role" because
|
||||
we have added the support of storing Provisioner information, while
|
||||
the old version only supports storing node information.
|
||||
|
||||
If users are updating their nodes from old version to new version,
|
||||
we recommend enabling this option, so that system could set the flag
|
||||
in advance before recovering node information and make sure the node
|
||||
information recovering could work as expected.
|
||||
|
||||
endif # if BLE_MESH_SETTINGS
|
||||
|
||||
config BLE_MESH_SUBNET_COUNT
|
||||
|
@ -182,7 +182,14 @@ static int role_set(const char *name)
|
||||
}
|
||||
|
||||
if (exist == false) {
|
||||
#if CONFIG_BLE_MESH_SETTINGS_BACKWARD_COMPATIBILITY
|
||||
if (IS_ENABLED(CONFIG_BLE_MESH_NODE) &&
|
||||
!IS_ENABLED(CONFIG_BLE_MESH_PROVISIONER)) {
|
||||
bt_mesh_atomic_set_bit(bt_mesh.flags, BLE_MESH_NODE);
|
||||
}
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
BT_INFO("Restored mesh device role %lu", bt_mesh_atomic_get(bt_mesh.flags) & DEVICE_ROLE_BITS);
|
||||
|
Loading…
Reference in New Issue
Block a user