mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-29 22:20:37 +00:00
mesh: fix setup of primary network key from tlv
This commit is contained in:
parent
58a4c3985a
commit
312b7ff890
@ -28,7 +28,7 @@ file(GLOB SOURCES_LIBUSB "../../platform/libusb/*.c" "../../platform/
|
||||
file(GLOB SOURCES_OFF "../../src/ble/le_device_db_memory.c" "../../src/ble/le_device_db_memory.h" "../../src/ble/le_device_db_tlv.c" "../../src/ble/le_device_db_tlv.h")
|
||||
list(REMOVE_ITEM SOURCES_BLE ${SOURCES_OFF})
|
||||
|
||||
set(SOURCES_MESH_NEW main.c mesh_access.c mesh_access.h mesh_configuration_server.c mesh_foundation.c mesh_foundation.h mesh_keys.c mesh_keys.h mesh_virtual_addresses.c mesh_virtual_addresses.h mesh_peer.c mesh_peer.h mesh_proxy.h mesh_proxy.c provisioner.c provisioning.c provisioning.h provisioning_device.c provisioning_device.h provisioning_provisioner.c provisioning_provisioner.h mesh_generic_server.h mesh_generic_server.c)
|
||||
set(SOURCES_MESH_NEW main.c mesh_access.c mesh_access.h mesh_configuration_server.c mesh_foundation.c mesh_foundation.h mesh_keys.c mesh_keys.h mesh_virtual_addresses.c mesh_virtual_addresses.h mesh_peer.c mesh_peer.h mesh_proxy.h mesh_proxy.c provisioner.c provisioning.c provisioning.h provisioning_device.c provisioning_device.h provisioning_provisioner.c provisioning_provisioner.h mesh_generic_server.h mesh_generic_server.c mesh_iv_index_seq_number.c )
|
||||
|
||||
set(SOURCES
|
||||
${SOURCES_POSIX}
|
||||
|
@ -1720,15 +1720,18 @@ void mesh_access_setup_from_provisioning_data(const mesh_provisioning_data_t * p
|
||||
// set device_key
|
||||
mesh_transport_set_device_key(provisioning_data->device_key);
|
||||
|
||||
// setup primary network with provisioned netkey
|
||||
mesh_network_key_add(provisioning_data->network_key);
|
||||
if (provisioning_data->network_key){
|
||||
|
||||
// setup primary network
|
||||
mesh_subnet_setup_for_netkey_index(provisioning_data->network_key->netkey_index);
|
||||
// setup primary network with provisioned netkey
|
||||
mesh_network_key_add(provisioning_data->network_key);
|
||||
|
||||
// start sending Secure Network Beacons
|
||||
mesh_subnet_t * provisioned_subnet = mesh_subnet_get_by_netkey_index(provisioning_data->network_key->netkey_index);
|
||||
beacon_secure_network_start(provisioned_subnet);
|
||||
// setup primary network
|
||||
mesh_subnet_setup_for_netkey_index(provisioning_data->network_key->netkey_index);
|
||||
|
||||
// start sending Secure Network Beacons
|
||||
mesh_subnet_t * provisioned_subnet = mesh_subnet_get_by_netkey_index(provisioning_data->network_key->netkey_index);
|
||||
beacon_secure_network_start(provisioned_subnet);
|
||||
}
|
||||
|
||||
// Mesh Proxy
|
||||
#ifdef ENABLE_MESH_PROXY_SERVER
|
||||
|
@ -2326,9 +2326,8 @@ int mesh_node_startup_from_tlv(void){
|
||||
memcpy(provisioning_data.device_key, persistent_provisioning_data.device_key, 16);
|
||||
provisioning_data.unicast_address = persistent_provisioning_data.unicast_address;
|
||||
provisioning_data.flags = persistent_provisioning_data.flags;
|
||||
|
||||
mesh_access_setup_from_provisioning_data(&provisioning_data);
|
||||
|
||||
provisioning_data.network_key = NULL;
|
||||
|
||||
// load iv index
|
||||
mesh_restore_iv_index_and_sequence_number();
|
||||
// load network keys
|
||||
@ -2346,6 +2345,8 @@ int mesh_node_startup_from_tlv(void){
|
||||
// load foundation state
|
||||
mesh_foundation_state_load();
|
||||
|
||||
mesh_access_setup_from_provisioning_data(&provisioning_data);
|
||||
|
||||
#if defined(ENABLE_MESH_ADV_BEARER) || defined(ENABLE_MESH_PB_ADV)
|
||||
// start sending Secure Network Beacon
|
||||
mesh_subnet_t * subnet = mesh_subnet_get_by_netkey_index(0);
|
||||
|
@ -712,6 +712,7 @@ static void provisioning_handle_data_ccm(void * arg){
|
||||
// sort provisoning data
|
||||
memcpy(network_key->net_key, provisioning_data, 16);
|
||||
network_key->netkey_index = big_endian_read_16(provisioning_data, 16);
|
||||
network_key->internal_index = 0;
|
||||
flags = provisioning_data[18];
|
||||
iv_index = big_endian_read_32(provisioning_data, 19);
|
||||
unicast_address = big_endian_read_16(provisioning_data, 23);
|
||||
|
Loading…
x
Reference in New Issue
Block a user