Spice USB Manager

Spice USB Manager — USB device management

Stability Level

Stable, unless otherwise indicated

Synopsis

#include <usb-device-manager.h>

#define             SPICE_TYPE_USB_DEVICE
struct              SpiceUsbDeviceManager;
struct              SpiceUsbDeviceManagerClass;

SpiceUsbDeviceManager * spice_usb_device_manager_get    (GMainContext *main_context,
                                                         GError **err);
void                spice_usb_device_manager_register_channel
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbredirChannel *channel);
void                spice_usb_device_manager_unregister_channel
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbredirChannel *channel);
GPtrArray *         spice_usb_device_manager_get_devices
                                                        (SpiceUsbDeviceManager *manager);
gboolean            spice_usb_device_manager_is_device_connected
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbDevice *device);
gboolean            spice_usb_device_manager_connect_device
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbDevice *device,
                                                         GError **err);
void                spice_usb_device_manager_disconnect_device
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbDevice *device);
gchar *             spice_usb_device_get_description    (SpiceUsbDevice *device);
                    SpiceUsbDevice;

Object Hierarchy

  GObject
   +----SpiceUsbDeviceManager
  GBoxed
   +----SpiceUsbDevice

Implemented Interfaces

SpiceUsbDeviceManager implements GInitable.

Properties

  "auto-connect"             gboolean              : Read / Write
  "main-context"             gpointer              : Read / Write / Construct Only

Signals

  "auto-connect-failed"                            : Run First
  "device-added"                                   : Run First
  "device-removed"                                 : Run First

Description

SpiceUsbDeviceManager monitors USB redirection channels and USB devices plugging/unplugging. If "auto-connect" is set to TRUE, it will automatically connect newly plugged USB devices to available channels.

Details

SPICE_TYPE_USB_DEVICE

#define SPICE_TYPE_USB_DEVICE                    (spice_usb_device_get_type())

struct SpiceUsbDeviceManager

struct SpiceUsbDeviceManager;

The SpiceUsbDeviceManager struct is opaque and should not be accessed directly.


struct SpiceUsbDeviceManagerClass

struct SpiceUsbDeviceManagerClass {
    GObjectClass parent_class;

    /* signals */
    void (*device_added) (SpiceUsbDeviceManager *manager,
                          SpiceUsbDevice *device);
    void (*device_removed) (SpiceUsbDeviceManager *manager,
                            SpiceUsbDevice *device);
    void (*auto_connect_failed) (SpiceUsbDeviceManager *manager,
                                 SpiceUsbDevice *device, GError *error);
};

Class structure for SpiceUsbDeviceManager.

GObjectClass parent_class;

Parent class.

device_added ()

Signal class handler for the "device-added" signal.

device_removed ()

Signal class handler for the "device-removed" signal.

auto_connect_failed ()

Signal class handler for the "auto-connect-failed" signal.

spice_usb_device_manager_get ()

SpiceUsbDeviceManager * spice_usb_device_manager_get    (GMainContext *main_context,
                                                         GError **err);

SpiceUsbDeviceManager is a singleton, use this function to get a pointer to it. A new SpiceUsbDeviceManager instance will be created the first time this function is called

main_context :

GMainContext to use. If NULL, the default context is used.

Returns :

a weak reference to the SpiceUsbDeviceManager singleton. [transfer none]

spice_usb_device_manager_register_channel ()

void                spice_usb_device_manager_register_channel
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbredirChannel *channel);

Register channel to be managed by the USB device manager. When a new device is added/plugged, the manager will use an available channel to establish the redirection with the Spice server.

Note that this function takes a weak reference to the channel, it is the callers responsibility to call spice_usb_device_manager_unregister_channel() before it unrefs its own reference.

manager :

the SpiceUsbDeviceManager manager

channel :

a SpiceUsbredirChannel to register

spice_usb_device_manager_unregister_channel ()

void                spice_usb_device_manager_unregister_channel
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbredirChannel *channel);

Remove channel from the list of USB channels to be managed by manager.

manager :

the SpiceUsbDeviceManager manager

channel :

a SpiceUsbredirChannel to unregister

spice_usb_device_manager_get_devices ()

GPtrArray *         spice_usb_device_manager_get_devices
                                                        (SpiceUsbDeviceManager *manager);

manager :

the SpiceUsbDeviceManager manager

Returns :

a GPtrArray array of SpiceUsbDevice. [element-type SpiceUsbDevice][transfer full]

spice_usb_device_manager_is_device_connected ()

gboolean            spice_usb_device_manager_is_device_connected
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbDevice *device);

manager :

the SpiceUsbDeviceManager manager

device :

a SpiceUsbDevice

Returns :

TRUE if device has an associated USB redirection channel

spice_usb_device_manager_connect_device ()

gboolean            spice_usb_device_manager_connect_device
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbDevice *device,
                                                         GError **err);

manager :

the SpiceUsbDeviceManager manager

device :

a SpiceUsbDevice to redirect

Returns :

TRUE if device has been successfully connected and associated with a redirection chanel

spice_usb_device_manager_disconnect_device ()

void                spice_usb_device_manager_disconnect_device
                                                        (SpiceUsbDeviceManager *manager,
                                                         SpiceUsbDevice *device);

manager :

the SpiceUsbDeviceManager manager

device :

a SpiceUsbDevice to disconnect

Returns :

TRUE if device has an associated USB redirection channel

spice_usb_device_get_description ()

gchar *             spice_usb_device_get_description    (SpiceUsbDevice *device);

Get a string describing the device which is suitable as a description of the device for the end user. The returned string should be freed with g_free() when no longer needed.

device :

SpiceUsbDevice to get the description of

Returns :

a newly-allocated string holding the description

SpiceUsbDevice

typedef struct _SpiceUsbDevice SpiceUsbDevice;

Property Details

The "auto-connect" property

  "auto-connect"             gboolean              : Read / Write

Auto connect plugged in USB devices.

Default value: FALSE


The "main-context" property

  "main-context"             gpointer              : Read / Write / Construct Only

GMainContext to use for the event source.

Signal Details

The "auto-connect-failed" signal

void                user_function                      (SpiceUsbDeviceManager *manager,
                                                        SpiceUsbDevice        *device,
                                                        GError                *error,
                                                        gpointer               user_data)      : Run First

The "auto-connect-failed" signal is emitted whenever the auto-connect property is true, and a newly plugged in device could not be auto-connected.

manager :

the SpiceUsbDeviceManager that emitted the signal

device :

SpiceUsbDevice boxed object corresponding to the device which failed to auto connect

error :

GError describing the reason why the autoconnect failed

user_data :

user data set when the signal handler was connected.

The "device-added" signal

void                user_function                      (SpiceUsbDeviceManager *manager,
                                                        SpiceUsbDevice        *device,
                                                        gpointer               user_data)      : Run First

The "device-added" signal is emitted whenever a new USB device has been plugged in.

manager :

the SpiceUsbDeviceManager that emitted the signal

device :

SpiceUsbDevice boxed object corresponding to the added device

user_data :

user data set when the signal handler was connected.

The "device-removed" signal

void                user_function                      (SpiceUsbDeviceManager *manager,
                                                        SpiceUsbDevice        *device,
                                                        gpointer               user_data)      : Run First

The "device-removed" signal is emitted whenever an USB device has been removed.

manager :

the SpiceUsbDeviceManager that emitted the signal

device :

SpiceUsbDevice boxed object corresponding to the removed device

user_data :

user data set when the signal handler was connected.