diff --git a/test/mesh/mesh_configuration_server.c b/test/mesh/mesh_configuration_server.c index b5afa9987..c1dba3263 100644 --- a/test/mesh/mesh_configuration_server.c +++ b/test/mesh/mesh_configuration_server.c @@ -2285,27 +2285,42 @@ void mesh_node_reset(void){ mesh_delete_publications(); } +typedef struct { + uint16_t unicast_address; + uint8_t flags; + uint8_t device_key[16]; + +} mesh_persistent_provisioning_data_t; + void mesh_node_store_provisioning_data(void){ + // fill prov data - mesh_provisioning_data_t provisioning_data; - provisioning_data.unicast_address = mesh_node_get_primary_element_address(); - memcpy(provisioning_data.device_key, mesh_transport_key_get(MESH_DEVICE_KEY_INDEX), 16); + mesh_persistent_provisioning_data_t persistent_provisioning_data; + + persistent_provisioning_data.unicast_address = mesh_node_get_primary_element_address(); + memcpy(persistent_provisioning_data.device_key, mesh_transport_key_get(MESH_DEVICE_KEY_INDEX), 16); // store in tlv btstack_tlv_get_instance(&btstack_tlv_singleton_impl, &btstack_tlv_singleton_context); - btstack_tlv_singleton_impl->store_tag(btstack_tlv_singleton_context, 'PROV', (uint8_t *) &provisioning_data, sizeof(mesh_provisioning_data_t)); + btstack_tlv_singleton_impl->store_tag(btstack_tlv_singleton_context, 'PROV', (uint8_t *) &persistent_provisioning_data, sizeof(mesh_persistent_provisioning_data_t)); } int mesh_node_startup_from_tlv(void){ - mesh_provisioning_data_t provisioning_data; + mesh_persistent_provisioning_data_t persistent_provisioning_data; btstack_tlv_get_instance(&btstack_tlv_singleton_impl, &btstack_tlv_singleton_context); // load provisioning data - uint32_t prov_len = btstack_tlv_singleton_impl->get_tag(btstack_tlv_singleton_context, 'PROV', (uint8_t *) &provisioning_data, sizeof(mesh_provisioning_data_t)); + uint32_t prov_len = btstack_tlv_singleton_impl->get_tag(btstack_tlv_singleton_context, 'PROV', (uint8_t *) &persistent_provisioning_data, sizeof(mesh_persistent_provisioning_data_t)); printf("Provisioning data available: %u\n", prov_len ? 1 : 0); if (prov_len){ + // copy into mesh_provisioning_data + mesh_provisioning_data_t provisioning_data; + 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); // load iv index