mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-29 22:20:37 +00:00
mesh: use mesh_persistent_provisioning_data_t for tlv
This commit is contained in:
parent
fc07d5143c
commit
561e608914
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user