libusb: improve compatibility
Specifically, add LIBUSB_CLASS_PHYSICAL and the libusb_has_capability API. Descriptions and functionality for these derived from the documentation at [0]. The current set of capabilities are all supported by libusb. These were detected as missing after updating net/freerdp to 2.1.1, which attempted to use both. [0] http://libusb.sourceforge.net/api-1.0/group__libusb__misc.html Reviewed by: hselasky MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25194
This commit is contained in:
parent
b62d159cb3
commit
04391da364
@ -68,6 +68,7 @@ CFLAGS+= -I ../../sys
|
|||||||
MLINKS += libusb.3 libusb_get_version.3
|
MLINKS += libusb.3 libusb_get_version.3
|
||||||
MLINKS += libusb.3 libusb_init.3
|
MLINKS += libusb.3 libusb_init.3
|
||||||
MLINKS += libusb.3 libusb_exit.3
|
MLINKS += libusb.3 libusb_exit.3
|
||||||
|
MLINKS += libusb.3 libusb_has_capability.3
|
||||||
MLINKS += libusb.3 libusb_strerror.3
|
MLINKS += libusb.3 libusb_strerror.3
|
||||||
MLINKS += libusb.3 libusb_error_name.3
|
MLINKS += libusb.3 libusb_error_name.3
|
||||||
MLINKS += libusb.3 libusb_set_debug.3
|
MLINKS += libusb.3 libusb_set_debug.3
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd October 11, 2018
|
.Dd June 9, 2020
|
||||||
.Dt LIBUSB 3
|
.Dt LIBUSB 3
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -61,6 +61,33 @@ Deinitialise libusb.
|
|||||||
Must be called at the end of the application.
|
Must be called at the end of the application.
|
||||||
Other libusb routines may not be called after this function.
|
Other libusb routines may not be called after this function.
|
||||||
.Pp
|
.Pp
|
||||||
|
.Ft int
|
||||||
|
.Fn libusb_has_capability "uint32_t capability"
|
||||||
|
This function checks the runtime capabilities of
|
||||||
|
.Nm .
|
||||||
|
This function will return non-zero if the given
|
||||||
|
.Fa capability
|
||||||
|
is supported, 0 if it is not supported.
|
||||||
|
The valid values for
|
||||||
|
.Fa capability
|
||||||
|
are:
|
||||||
|
.Bl -tag -width LIBUSB_CAP -offset indent
|
||||||
|
.It Va LIBUSB_CAP_HAS_CAPABILITY
|
||||||
|
.Nm
|
||||||
|
supports
|
||||||
|
.Fn libusb_has_capability .
|
||||||
|
.It Va LIBUSB_CAP_HAS_HOTPLUG
|
||||||
|
.Nm
|
||||||
|
supports hotplug notifications.
|
||||||
|
.It Va LIBUSB_CAP_HAS_HID_ACCESS
|
||||||
|
.Nm
|
||||||
|
can access HID devices without requiring user intervention.
|
||||||
|
.It Va LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER
|
||||||
|
.Nm
|
||||||
|
supports detaching of the default USB driver with
|
||||||
|
.Fn libusb_detach_kernel_driver .
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
.Ft const char *
|
.Ft const char *
|
||||||
.Fn libusb_strerror "int code"
|
.Fn libusb_strerror "int code"
|
||||||
Get the ASCII representation of the error given by the
|
Get the ASCII representation of the error given by the
|
||||||
|
@ -54,6 +54,7 @@ enum libusb_class_code {
|
|||||||
LIBUSB_CLASS_AUDIO = 1,
|
LIBUSB_CLASS_AUDIO = 1,
|
||||||
LIBUSB_CLASS_COMM = 2,
|
LIBUSB_CLASS_COMM = 2,
|
||||||
LIBUSB_CLASS_HID = 3,
|
LIBUSB_CLASS_HID = 3,
|
||||||
|
LIBUSB_CLASS_PHYSICAL = 5,
|
||||||
LIBUSB_CLASS_PTP = 6,
|
LIBUSB_CLASS_PTP = 6,
|
||||||
LIBUSB_CLASS_IMAGE = 6,
|
LIBUSB_CLASS_IMAGE = 6,
|
||||||
LIBUSB_CLASS_PRINTER = 7,
|
LIBUSB_CLASS_PRINTER = 7,
|
||||||
@ -178,6 +179,21 @@ enum libusb_bos_type {
|
|||||||
LIBUSB_BT_CONTAINER_ID = 4,
|
LIBUSB_BT_CONTAINER_ID = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum libusb_capability {
|
||||||
|
/* libusb supports libusb_has_capability(). */
|
||||||
|
LIBUSB_CAP_HAS_CAPABILITY = 0,
|
||||||
|
/* Hotplug support is available. */
|
||||||
|
LIBUSB_CAP_HAS_HOTPLUG,
|
||||||
|
/* Can access HID devices without requiring user intervention. */
|
||||||
|
LIBUSB_CAP_HAS_HID_ACCESS,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Supports detaching of the default USB driver with
|
||||||
|
* libusb_detach_kernel_driver().
|
||||||
|
*/
|
||||||
|
LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER,
|
||||||
|
};
|
||||||
|
|
||||||
enum libusb_error {
|
enum libusb_error {
|
||||||
LIBUSB_SUCCESS = 0,
|
LIBUSB_SUCCESS = 0,
|
||||||
LIBUSB_ERROR_IO = -1,
|
LIBUSB_ERROR_IO = -1,
|
||||||
@ -450,6 +466,7 @@ const char *libusb_strerror(int code);
|
|||||||
const char *libusb_error_name(int code);
|
const char *libusb_error_name(int code);
|
||||||
int libusb_init(libusb_context ** context);
|
int libusb_init(libusb_context ** context);
|
||||||
void libusb_exit(struct libusb_context *ctx);
|
void libusb_exit(struct libusb_context *ctx);
|
||||||
|
int libusb_has_capability(uint32_t capability);
|
||||||
|
|
||||||
/* Device handling and enumeration */
|
/* Device handling and enumeration */
|
||||||
|
|
||||||
|
@ -1716,3 +1716,18 @@ libusb_error_name(int code)
|
|||||||
return ("LIBUSB_ERROR_UNKNOWN");
|
return ("LIBUSB_ERROR_UNKNOWN");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
libusb_has_capability(uint32_t capability)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (capability) {
|
||||||
|
case LIBUSB_CAP_HAS_CAPABILITY:
|
||||||
|
case LIBUSB_CAP_HAS_HOTPLUG:
|
||||||
|
case LIBUSB_CAP_HAS_HID_ACCESS:
|
||||||
|
case LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER:
|
||||||
|
return (1);
|
||||||
|
default:
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user