Ejemplo n.º 1
0
void hcid_dbus_unregister(void)
{
    DBusConnection *conn = get_dbus_connection();
    char **children;
    int i;
    uint16_t dev_id;

    if (!conn || !dbus_connection_get_is_connected(conn))
        return;

    /* Unregister all paths in Adapter path hierarchy */
    if (!dbus_connection_list_registered(conn, "/", &children))
        return;

    for (i = 0; children[i]; i++) {
        char path[MAX_PATH_LENGTH];
        struct btd_adapter *adapter;

        if (children[i][0] != 'h')
            continue;

        snprintf(path, sizeof(path), "/%s", children[i]);

        adapter = manager_find_adapter_by_path(path);
        if (!adapter)
            continue;

        dev_id = adapter_get_dev_id(adapter);
        manager_unregister_adapter(dev_id);
    }

    dbus_free_string_array(children);
}
Ejemplo n.º 2
0
static void manager_remove_adapter(struct btd_adapter *adapter)
{
	uint16_t dev_id = adapter_get_dev_id(adapter);
	const gchar *path = adapter_get_path(adapter);

	adapters = g_slist_remove(adapters, adapter);

	manager_update_adapters();

	if (default_adapter_id == dev_id || default_adapter_id < 0) {
		int new_default = hci_get_route(NULL);

		manager_set_default_adapter(new_default);
	}

	g_dbus_emit_signal(connection, "/",
			MANAGER_INTERFACE, "AdapterRemoved",
			DBUS_TYPE_OBJECT_PATH, &path,
			DBUS_TYPE_INVALID);

	adapter_remove(adapter);
	btd_adapter_unref(adapter);

	if (adapters == NULL)
		btd_start_exit_timer();
}
Ejemplo n.º 3
0
static gint adapter_id_cmp(gconstpointer a, gconstpointer b)
{
	struct btd_adapter *adapter = (struct btd_adapter *) a;
	uint16_t id = GPOINTER_TO_UINT(b);
	uint16_t dev_id = adapter_get_dev_id(adapter);

	return dev_id == id ? 0 : -1;
}
Ejemplo n.º 4
0
void manager_set_fast_connectable(gboolean enable)
{
	GSList *l;

	for (l = adapters; l != NULL; l = l->next) {
		struct audio_adapter *adapter = l->data;

		if (btd_adapter_set_fast_connectable(adapter->btd_adapter,
								enable))
			error("Changing fast connectable for hci%d failed",
				adapter_get_dev_id(adapter->btd_adapter));
	}
}