From a5cd87ca29936f764a05f2897577e9e322e872b8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 5 Jan 2013 15:18:45 -0800 Subject: [PATCH] core: Add exported functions for adapter default handling --- src/adapter.c | 33 ++++++++++++++++++++++++++++++++- src/adapter.h | 3 +++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/adapter.c b/src/adapter.c index a7ede7ae6..87c561705 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -197,6 +197,35 @@ static struct btd_adapter *btd_adapter_lookup(uint16_t index) return NULL; } +struct btd_adapter *btd_adapter_get_default(void) +{ + GList *list; + + if (default_adapter_id < 0) + return NULL; + + for (list = g_list_first(adapter_list); list; + list = g_list_next(list)) { + struct btd_adapter *adapter = list->data; + + if (adapter->dev_id == default_adapter_id) + return adapter; + } + + return NULL; +} + +bool btd_adapter_is_default(struct btd_adapter *adapter) +{ + if (!adapter) + return false; + + if (adapter->dev_id == default_adapter_id) + return true; + + return false; +} + static gboolean process_auth_queue(gpointer user_data); static void dev_class_changed_callback(uint16_t index, uint16_t length, @@ -4037,7 +4066,7 @@ struct btd_adapter *adapter_find_by_id(int id) struct btd_adapter *adapter_get_default(void) { - return adapter_find_by_id(default_adapter_id); + return btd_adapter_get_default(); } void adapter_foreach(adapter_cb func, gpointer user_data) @@ -4113,6 +4142,8 @@ static int adapter_unregister(struct btd_adapter *adapter) if (default_adapter_id == adapter->dev_id || default_adapter_id < 0) default_adapter_id = hci_get_route(NULL); + adapter_list = g_list_remove(adapter_list, adapter); + adapter_remove(adapter); btd_adapter_unref(adapter); diff --git a/src/adapter.h b/src/adapter.h index 584806e9c..94625c074 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -37,6 +37,9 @@ struct btd_adapter; +struct btd_adapter *btd_adapter_get_default(void); +bool btd_adapter_is_default(struct btd_adapter *adapter); + typedef void (*adapter_cb) (struct btd_adapter *adapter, gpointer user_data); typedef void (*oob_read_local_cb_t) (struct btd_adapter *adapter, -- 2.47.3