From 404999fe259435169727acbb5d294b02ece98c91 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Fri, 16 Mar 2018 15:45:03 +0100 Subject: [PATCH] btstack_link_key_db_memory: add iterator --- src/classic/btstack_link_key_db_memory.c | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/classic/btstack_link_key_db_memory.c b/src/classic/btstack_link_key_db_memory.c index 0b7ed0829..a5be419b3 100644 --- a/src/classic/btstack_link_key_db_memory.c +++ b/src/classic/btstack_link_key_db_memory.c @@ -127,6 +127,30 @@ static void put_link_key(bd_addr_t bd_addr, link_key_t link_key, link_key_type_t btstack_linked_list_add(&db_mem_link_keys, (btstack_linked_item_t *) record); } +static int iterator_init(btstack_link_key_iterator_t * it){ + it->context = (void*) db_mem_link_keys; + return 1; +} + +static int iterator_get_next(btstack_link_key_iterator_t * it, bd_addr_t bd_addr, link_key_t link_key, link_key_type_t * link_key_type){ + btstack_link_key_db_memory_entry_t *item = (btstack_link_key_db_memory_entry_t *) it->context; + if (item == NULL) return 0; + + // fetch values + memcpy(bd_addr, item->bd_addr, 6); + memcpy(link_key, item->link_key, 16); + *link_key_type = item->link_key_type; + + // next + it->context = (void *) item->item.next; + + return 1; +} + +static void iterator_done(btstack_link_key_iterator_t * it){ + UNUSED(it); +} + const btstack_link_key_db_t btstack_link_key_db_memory = { db_open, db_set_local_bd_addr, @@ -134,6 +158,9 @@ const btstack_link_key_db_t btstack_link_key_db_memory = { get_link_key, put_link_key, delete_link_key, + iterator_init, + iterator_get_next, + iterator_done, }; const btstack_link_key_db_t * btstack_link_key_db_memory_instance(void){