eXpand your USB potential
|
This page details how to use the libusb hotplug interface, where available. More...
Macros | |
#define | LIBUSB_HOTPLUG_MATCH_ANY -1 |
Wildcard matching for hotplug events. |
Typedefs | |
typedef int | libusb_hotplug_callback_handle |
Callback handle. | |
typedef int(* | 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_ENUMERATE = 1 } |
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102. More... | |
enum | libusb_hotplug_event { LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED = 0x01, LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT = 0x02 } |
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102. More... |
Functions | |
int | libusb_hotplug_register_callback (libusb_context *ctx, libusb_hotplug_event events, libusb_hotplug_flag flags, int vendor_id, int product_id, int dev_class, libusb_hotplug_callback_fn cb_fn, void *user_data, libusb_hotplug_callback_handle *handle) |
Register a hotplug callback function. | |
void | libusb_hotplug_deregister_callback (libusb_context *ctx, libusb_hotplug_callback_handle handle) |
Deregisters a hotplug callback. |
This page details how to use the libusb hotplug interface, where available.
Be mindful that not all platforms currently implement hotplug notification and that you should first call on libusb_has_capability() with parameter LIBUSB_CAP_HAS_HOTPLUG to confirm that hotplug support is available.
typedef int libusb_hotplug_callback_handle |
Callback handle.
Callbacks handles are generated by libusb_hotplug_register_callback() and can be used to deregister callbacks. Callback handles are unique per libusb_context and it is safe to call libusb_hotplug_deregister_callback() on an already deregisted callback.
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102
For more information, see Device hotplug event notification.
typedef int( * libusb_hotplug_callback_fn)(libusb_context *ctx, libusb_device *device, libusb_hotplug_event event, void *user_data) |
Hotplug callback function type.
When requesting hotplug event notifications, you pass a pointer to a callback function of this type.
This callback may be called by an internal event thread and as such it is recommended the callback do minimal processing before returning.
libusbx will call this function later, when a matching event had happened on a matching device. See Device hotplug event notification for more information.
It is safe to call either libusb_hotplug_register_callback() or libusb_hotplug_deregister_callback() from within a callback function.
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102
ctx | context of this notification |
device | libusb_device this event occurred on |
event | event that occurred |
user_data | user data provided when this callback was registered |
enum libusb_hotplug_flag |
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102.
Flags for hotplug events
enum libusb_hotplug_event |
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102.
Hotplug events
int libusb_hotplug_register_callback | ( | libusb_context * | ctx, |
libusb_hotplug_event | events, | ||
libusb_hotplug_flag | flags, | ||
int | vendor_id, | ||
int | product_id, | ||
int | dev_class, | ||
libusb_hotplug_callback_fn | cb_fn, | ||
void * | user_data, | ||
libusb_hotplug_callback_handle * | handle | ||
) |
Register a hotplug callback function.
Register a callback with the libusb_context. The callback will fire when a matching event occurs on a matching device. The callback is armed until either it is deregistered with libusb_hotplug_deregister_callback() or the supplied callback returns 1 to indicate it is finished processing events.
If the LIBUSB_HOTPLUG_ENUMERATE is passed the callback will be called with a LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED for all devices already plugged into the machine. Note that libusbx modifies its internal device list from a separate thread, while calling hotplug callbacks from libusb_handle_events(), so it is possible for a device to already be present on, or removed from, its internal device list, while the hotplug callbacks still need to be dispatched. This means that when using LIBUSB_HOTPLUG_ENUMERATE, your callback may be called twice for the arrival of the same device, once from libusb_hotplug_register_callback() and once from libusb_handle_events(); and/or your callback may be called for the removal of a device for which an arrived call was never made.
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102
[in] | ctx | context to register this callback with |
[in] | events | bitwise or of events that will trigger this callback. See libusb_hotplug_event |
[in] | flags | hotplug callback flags. See libusb_hotplug_flag |
[in] | vendor_id | the vendor id to match or LIBUSB_HOTPLUG_MATCH_ANY |
[in] | product_id | the product id to match or LIBUSB_HOTPLUG_MATCH_ANY |
[in] | dev_class | the device class to match or LIBUSB_HOTPLUG_MATCH_ANY |
[in] | cb_fn | the function to be invoked on a matching event/device |
[in] | user_data | user data to pass to the callback function |
[out] | handle | pointer to store the handle of the allocated callback (can be NULL) |
void libusb_hotplug_deregister_callback | ( | libusb_context * | ctx, |
libusb_hotplug_callback_handle | handle | ||
) |
Deregisters a hotplug callback.
Deregister a callback from a libusb_context. This function is safe to call from within a hotplug callback.
Since version 1.0.16, LIBUSBX_API_VERSION >= 0x01000102
[in] | ctx | context this callback is registered with |
[in] | handle | the handle of the callback to deregister |