Beispiel #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);
}
Beispiel #2
0
static void device_event(int event, int index)
{
	switch (event) {
	case HCI_DEV_REG:
		info("HCI dev %d registered", index);
		device_devreg_setup(index);
		break;

	case HCI_DEV_UNREG:
		info("HCI dev %d unregistered", index);
		manager_unregister_adapter(index);
		break;

	case HCI_DEV_UP:
		info("HCI dev %d up", index);
		device_devup_setup(index);
		break;

	case HCI_DEV_DOWN:
		info("HCI dev %d down", index);
		manager_stop_adapter(index);
		stop_security_manager(index);
		break;
	}
}