mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-17 11:42:34 +00:00
mesh: appkey management - add iterator to get all keys for a given netkey index
This commit is contained in:
parent
9572f83fe1
commit
48dbbdaabd
@ -194,6 +194,26 @@ const mesh_transport_key_t * mesh_transport_key_get(uint16_t appkey_index){
|
||||
}
|
||||
|
||||
// key iterator
|
||||
void mesh_transport_key_iterator_init(mesh_transport_key_iterator_t *it, uint16_t netkey_index){
|
||||
btstack_linked_list_iterator_init(&it->it, &application_keys);
|
||||
it->netkey_index = netkey_index;
|
||||
}
|
||||
|
||||
int mesh_transport_key_iterator_has_more(mesh_transport_key_iterator_t *it){
|
||||
// find next matching key
|
||||
while (1){
|
||||
if (it->key && it->key->netkey_index == it->netkey_index) return 1;
|
||||
if (!btstack_linked_list_iterator_has_next(&it->it)) break;
|
||||
it->key = (mesh_transport_key_t *) btstack_linked_list_iterator_next(&it->it);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
mesh_transport_key_t * mesh_transport_key_iterator_get_next(mesh_transport_key_iterator_t *it){
|
||||
mesh_transport_key_t * key = it->key;
|
||||
it->key = NULL;
|
||||
return key;
|
||||
}
|
||||
|
||||
void
|
||||
mesh_transport_key_aid_iterator_init(mesh_transport_key_iterator_t *it, uint16_t netkey_index, uint8_t akf, uint8_t aid) {
|
||||
@ -206,7 +226,6 @@ mesh_transport_key_aid_iterator_init(mesh_transport_key_iterator_t *it, uint16_t
|
||||
} else {
|
||||
it->key = &mesh_transport_device_key;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int mesh_transport_key_aid_iterator_has_more(mesh_transport_key_iterator_t *it){
|
||||
|
@ -180,7 +180,7 @@ void mesh_network_key_nid_iterator_init(mesh_network_key_iterator_t *it, uint8_t
|
||||
int mesh_network_key_nid_iterator_has_more(mesh_network_key_iterator_t *it);
|
||||
|
||||
/**
|
||||
* Get net network_key with given NID
|
||||
* Get next network_key with given NID
|
||||
* @param it
|
||||
* @return
|
||||
*/
|
||||
@ -226,6 +226,27 @@ void mesh_application_key_set(uint16_t netkey_index, uint16_t appkey_index, uint
|
||||
*/
|
||||
const mesh_transport_key_t * mesh_transport_key_get(uint16_t appkey_index);
|
||||
|
||||
/**
|
||||
* @brief Iterate over all transport keys (AppKeys) for a given netkey index
|
||||
* @param it
|
||||
* @param netkey_index
|
||||
*/
|
||||
void mesh_transport_key_iterator_init(mesh_transport_key_iterator_t *it, uint16_t netkey_index);
|
||||
|
||||
/**
|
||||
* Check if another transport key (AppKey) is available
|
||||
* @param it
|
||||
* @return
|
||||
*/
|
||||
int mesh_transport_key_iterator_has_more(mesh_transport_key_iterator_t *it);
|
||||
|
||||
/**
|
||||
* Get next transport key (AppKey)
|
||||
* @param it
|
||||
* @return
|
||||
*/
|
||||
mesh_transport_key_t * mesh_transport_key_iterator_get_next(mesh_transport_key_iterator_t *it);
|
||||
|
||||
/**
|
||||
* Transport Key Iterator by AID - init
|
||||
* @param it
|
||||
|
Loading…
x
Reference in New Issue
Block a user