diff options
author | gudenau <gudenaua@gmail.com> | 2018-01-21 21:21:46 -0600 |
---|---|---|
committer | Chris Dickens <christopher.a.dickens@gmail.com> | 2020-01-13 13:19:44 -0800 |
commit | 19e763e135f8ac6cd6206f3f800d2ad40ad72a54 (patch) | |
tree | 92d8013b1c907506bbe4956e5b77fd4a2994bfab | |
parent | 25855c083bc8989c5a8bab981fcfe4e1a9f9ec07 (diff) | |
download | libusb-19e763e135f8ac6cd6206f3f800d2ad40ad72a54.tar.gz |
hotplug: Added libusb_hotplug_get_user_data()
Closes #380
[dickens] Fixed up API version in doxygen, whitespace issues, function
visibility annotation (can't use API_EXPORTED for pointer values) and
added new function to libusb-1.0.defs
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
-rw-r--r-- | libusb/hotplug.c | 27 | ||||
-rw-r--r-- | libusb/libusb-1.0.def | 2 | ||||
-rw-r--r-- | libusb/libusb.h | 11 | ||||
-rw-r--r-- | libusb/version_nano.h | 2 |
4 files changed, 41 insertions, 1 deletions
diff --git a/libusb/hotplug.c b/libusb/hotplug.c index a4320bc..3ccdc2f 100644 --- a/libusb/hotplug.c +++ b/libusb/hotplug.c @@ -356,6 +356,33 @@ void API_EXPORTED libusb_hotplug_deregister_callback(struct libusb_context *ctx, } } +DEFAULT_VISIBILITY +void * LIBUSB_CALL libusb_hotplug_get_user_data(struct libusb_context *ctx, + libusb_hotplug_callback_handle callback_handle) +{ + struct libusb_hotplug_callback *hotplug_cb; + void *user_data = NULL; + + /* check for hotplug support */ + if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { + return NULL; + } + + USBI_GET_CONTEXT(ctx); + + usbi_dbg("get hotplug user data %d", callback_handle); + + usbi_mutex_lock(&ctx->hotplug_cbs_lock); + list_for_each_entry(hotplug_cb, &ctx->hotplug_cbs, list, struct libusb_hotplug_callback) { + if (callback_handle == hotplug_cb->handle) { + user_data = hotplug_cb->user_data; + } + } + usbi_mutex_unlock(&ctx->hotplug_cbs_lock); + + return user_data; +} + void usbi_hotplug_deregister(struct libusb_context *ctx, int forced) { struct libusb_hotplug_callback *hotplug_cb, *next; diff --git a/libusb/libusb-1.0.def b/libusb/libusb-1.0.def index 6eba4ff..2e78b0a 100644 --- a/libusb/libusb-1.0.def +++ b/libusb/libusb-1.0.def @@ -116,6 +116,8 @@ EXPORTS libusb_has_capability@4 = libusb_has_capability libusb_hotplug_deregister_callback libusb_hotplug_deregister_callback@8 = libusb_hotplug_deregister_callback + libusb_hotplug_get_user_data + libusb_hotplug_get_user_data@8 = libusb_hotplug_get_user_data libusb_hotplug_register_callback libusb_hotplug_register_callback@36 = libusb_hotplug_register_callback libusb_init diff --git a/libusb/libusb.h b/libusb/libusb.h index 8f3ac35..a0f1edd 100644 --- a/libusb/libusb.h +++ b/libusb/libusb.h @@ -2020,6 +2020,17 @@ int LIBUSB_CALL libusb_hotplug_register_callback(libusb_context *ctx, void LIBUSB_CALL libusb_hotplug_deregister_callback(libusb_context *ctx, libusb_hotplug_callback_handle callback_handle); +/** \ingroup libusb_hotplug + * Gets the user_data associated with a hotplug callback. + * + * Since version v1.0.24 \ref LIBUSB_API_VERSION >= 0x01000108 + * + * \param[in] ctx context this callback is registered with + * \param[in] callback_handle the handle of the callback to get the user_data of + */ +void * LIBUSB_CALL libusb_hotplug_get_user_data(struct libusb_context *ctx, + libusb_hotplug_callback_handle callback_handle); + /** \ingroup libusb_lib * Available option values for libusb_set_option(). */ diff --git a/libusb/version_nano.h b/libusb/version_nano.h index 21398db..7ae99d1 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 11424 +#define LIBUSB_NANO 11425 |