Пример #1
0
static void input_device_enter_reconnect_mode(struct input_device *idev)
{
    DBG("path=%s reconnect_mode=%s", idev->path,
        reconnect_mode_to_string(idev->reconnect_mode));

    /* Only attempt an auto-reconnect when the device is required to accept
     * reconnections from the host. */
    if (idev->reconnect_mode != RECONNECT_ANY &&
            idev->reconnect_mode != RECONNECT_HOST)
        return;

    /* If the device is temporary we are not required to reconnect with the
     * device. This is likely the case of a removing device. */
    if (device_is_temporary(idev->device) ||
            btd_device_is_connected(idev->device))
        return;

    if (idev->reconnect_timer > 0)
        g_source_remove(idev->reconnect_timer);

    DBG("registering auto-reconnect");
    idev->reconnect_attempt = 0;
    idev->reconnect_timer = g_timeout_add_seconds(30,
                            input_device_auto_reconnect, idev);

}
Пример #2
0
static DBusMessage *input_device_get_properties(DBusConnection *conn,
					DBusMessage *msg, void *data)
{
	struct input_device *idev = data;
	DBusMessage *reply;
	DBusMessageIter iter;
	DBusMessageIter dict;
	dbus_bool_t connected;
	const char *reconnect_mode = NULL;

	reply = dbus_message_new_method_return(msg);
	if (!reply)
		return NULL;

	dbus_message_iter_init_append(reply, &iter);

	dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
			DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
			DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
			DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);

	/* Connected */
	connected = !!g_slist_find_custom(idev->connections, NULL,
					(GCompareFunc) connected_cmp);
	dict_append_entry(&dict, "Connected", DBUS_TYPE_BOOLEAN, &connected);

	/* Reconnection mode */
	reconnect_mode = reconnect_mode_to_string(idev->reconnect_mode);
	dict_append_entry(&dict, "ReconnectMode", DBUS_TYPE_STRING,
			&reconnect_mode);

	dbus_message_iter_close_container(&iter, &dict);

	return reply;
}
Пример #3
0
static gboolean property_get_reconnect_mode(
    const GDBusPropertyTable *property,
    DBusMessageIter *iter, void *data)
{
    struct input_device *idev = data;
    const char *str_mode = reconnect_mode_to_string(idev->reconnect_mode);

    dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &str_mode);

    return TRUE;
}