diff options
Diffstat (limited to 'gusb')
-rw-r--r-- | gusb/gusb-device.c | 32 | ||||
-rw-r--r-- | gusb/gusb-device.h | 4 |
2 files changed, 36 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 diff --git a/gusb/gusb-device.h b/gusb/gusb-device.h index 545def5..91300af 100644 --- a/gusb/gusb-device.h +++ b/gusb/gusb-device.h @@ -206,6 +206,10 @@ gboolean g_usb_device_release_interface (GUsbDevice *device, gint interface, GUsbDeviceClaimInterfaceFlags flags, GError **error); +gboolean g_usb_device_set_interface_alt (GUsbDevice *device, + gint interface, + guint8 alt, + GError **error); gchar *g_usb_device_get_string_descriptor (GUsbDevice *device, guint8 desc_index, |