libusb
Data Structures | Typedefs | Enumerations | Functions
Device hotplug event notification

This page details how to use the libusb hotplug interface. More...

Data Structures

struct  libusb_hotplug_callback
 The hotplug callback structure. More...

Typedefs

typedef void(* libusb_hotplug_callback_fn )(libusb_context *ctx, libusb_device *device, libusb_hotplug_event event, void *user_data)
 Hotplug callback function type.

Enumerations

enum  libusb_hotplug_flag { LIBUSB_HOTPLUG_PERSIST = 0, LIBUSB_HOTPLUG_ONCE = 1 }
 Flags for hotplug events. More...
enum  libusb_hotplug_event { LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED = 0x01, LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT = 0x02 }
 Hotplug events. More...
enum  { LIBUSB_HOTPLUG_CLASS_ANY = -1, LIBUSB_HOTPLUG_VENDORID_ANY = -2, LIBUSB_HOTPLUG_PRODUCTID_ANY = -3 }
 Wildcard matching for hotplug events. More...

Functions

static void libusb_hotplug_prepare_callback (libusb_hotplug_callback *cb, libusb_context *ctx, libusb_hotplug_event event, libusb_hotplug_flag flags, int vendor_id, int product_id, int dev_class, libusb_hotplug_callback_fn cb_fn, void *user_data)
 Helper function to populate the required libusb_hotplug_callback fields for hotplug event notification.
void libusb_hotplug_register_callback (libusb_hotplug_callback *cb)
 Registers a prepared hotplug callback.
void libusb_hotplug_deregister_callback (libusb_hotplug_callback *cb)
 Deregisters a hotplug callback.

Detailed Description

This page details how to use the libusb hotplug interface.


Typedef Documentation

typedef void( * libusb_hotplug_callback_fn)(libusb_context *ctx, libusb_device *device, libusb_hotplug_event event, void *user_data)

Hotplug callback function type.

When requesting hotplug support, you pass a pointer to a callback function of this type. libusb will call this function later, when a matching device has been connected. See Device hotplug event notification for more information.

Parameters:
libusb_contextcontext of this notification
devicelibusb_device this event occurred on
eventevent that occurred
user_datauser data provided when this callback was registered

Enumeration Type Documentation

Flags for hotplug events.

Enumerator:
LIBUSB_HOTPLUG_PERSIST 

The hotplug event will persist until removed with libusb_hotplug_deregister_callback() or libusb_exit()

LIBUSB_HOTPLUG_ONCE 

The hotplug callback will fire once and be deregistered.

It is safe to free the callback in the callback function if this flag is set.

Hotplug events.

Enumerator:
LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED 

A device has been plugged in and is ready to use.

LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT 

A device has left and is no longer available.

It is the user's responsibility to call libusb_close on any handle associated with a disconnected device. It is safe to call libusb_get_device_descriptor on a device that has left

anonymous enum

Wildcard matching for hotplug events.

Enumerator:
LIBUSB_HOTPLUG_CLASS_ANY 

Match any device class.

LIBUSB_HOTPLUG_VENDORID_ANY 

Match any vendor id.

LIBUSB_HOTPLUG_PRODUCTID_ANY 

Match any product id.


Function Documentation

static void libusb_hotplug_prepare_callback ( libusb_hotplug_callback cb,
libusb_context ctx,
libusb_hotplug_event  event,
libusb_hotplug_flag  flags,
int  vendor_id,
int  product_id,
int  dev_class,
libusb_hotplug_callback_fn  cb_fn,
void *  user_data 
)
inlinestatic

Helper function to populate the required libusb_hotplug_callback fields for hotplug event notification.

Parameters:
cbthe callback to polulate
ctxthe context associated with this callback
eventthe events that will trigger this callback
flagshotplug callback flags (described above)
vendor_idthe vendor id to match or LIBUSB_HOTPLUG_PRODUCTID_ANY
product_idthe product id to match or LIBUSB_HOTPLUG_PRODUCTID_ANY
dev_classthe device class to match or LIBUSB_HOTPLUG_CLASS_ANY
cb_fnthe function to be invoked on a matching event/device
user_datauser data to pass to the callback function
void libusb_hotplug_register_callback ( libusb_hotplug_callback cb)

Registers a prepared hotplug callback.

Parameters:
cbthe callback to register
void libusb_hotplug_deregister_callback ( libusb_hotplug_callback cb)

Deregisters a hotplug callback.

Do not call this function from within a callback function. This will result in deadlock.

Parameters:
cbthe callback to deregister