Diff between f6b071aa10c22bbaa4109cc3f5bc05967c6a9bc0 and a5cd87ca29936f764a05f2897577e9e322e872b8

Changed Files

File Additions Deletions Status
src/adapter.c +32 -1 modified
src/adapter.h +3 -0 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index a7ede7a..87c5617 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 584806e..94625c0 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,