summaryrefslogtreecommitdiff
path: root/gusb/gusb-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'gusb/gusb-device.c')
-rw-r--r--gusb/gusb-device.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/gusb/gusb-device.c b/gusb/gusb-device.c
index cd49e16..a13e092 100644
--- a/gusb/gusb-device.c
+++ b/gusb/gusb-device.c
@@ -809,6 +809,38 @@ g_usb_device_release_interface (GUsbDevice *device,
}
/**
+ * g_usb_device_set_interface_alt:
+ * @device: a #GUsbDevice
+ * @interface: bInterfaceNumber of the interface you wish to release
+ * @alt: alternative setting number
+ * @error: a #GError, or %NULL
+ *
+ * Sets an alternate setting on an interface.
+ *
+ * Return value: %TRUE on success
+ *
+ * Since: 0.2.8
+ **/
+gboolean
+g_usb_device_set_interface_alt (GUsbDevice *device, gint interface,
+ guint8 alt, GError **error)
+{
+ gint rc;
+
+ g_return_val_if_fail (G_USB_IS_DEVICE (device), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ if (device->priv->handle == NULL)
+ return g_usb_device_not_open_error (device, error);
+
+ rc = libusb_set_interface_alt_setting (device->priv->handle, interface, (gint) alt);
+ if (rc != LIBUSB_SUCCESS)
+ return g_usb_device_libusb_error_to_gerror (device, rc, error);
+
+ return TRUE;
+}
+
+/**
* g_usb_device_get_string_descriptor:
* @desc_index: the index for the string descriptor to retreive
* @error: a #GError, or %NULL