svn commit: r362224 - in stable: 10/lib/libusb 11/lib/libusb 12/lib/libusb 9/lib/libusb

Kyle Evans kevans at FreeBSD.org
Tue Jun 16 12:22:06 UTC 2020


Author: kevans
Date: Tue Jun 16 12:21:55 2020
New Revision: 362224
URL: https://svnweb.freebsd.org/changeset/base/362224

Log:
  MFC r361977: 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

Modified:
  stable/9/lib/libusb/Makefile
  stable/9/lib/libusb/libusb.3
  stable/9/lib/libusb/libusb.h
  stable/9/lib/libusb/libusb10.c
Directory Properties:
  stable/9/   (props changed)
  stable/9/lib/   (props changed)
  stable/9/lib/libusb/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/lib/libusb/Makefile
  stable/10/lib/libusb/libusb.3
  stable/10/lib/libusb/libusb.h
  stable/10/lib/libusb/libusb10.c
  stable/11/lib/libusb/Makefile
  stable/11/lib/libusb/libusb.3
  stable/11/lib/libusb/libusb.h
  stable/11/lib/libusb/libusb10.c
  stable/12/lib/libusb/Makefile
  stable/12/lib/libusb/libusb.3
  stable/12/lib/libusb/libusb.h
  stable/12/lib/libusb/libusb10.c
Directory Properties:
  stable/10/   (props changed)
  stable/11/   (props changed)
  stable/12/   (props changed)

Modified: stable/9/lib/libusb/Makefile
==============================================================================
--- stable/9/lib/libusb/Makefile	Tue Jun 16 12:16:35 2020	(r362223)
+++ stable/9/lib/libusb/Makefile	Tue Jun 16 12:21:55 2020	(r362224)
@@ -44,6 +44,7 @@ CFLAGS+=	-DCOMPAT_32BIT
 MLINKS += libusb.3 libusb_get_version.3
 MLINKS += libusb.3 libusb_init.3
 MLINKS += libusb.3 libusb_exit.3
+MLINKS += libusb.3 libusb_has_capability.3
 MLINKS += libusb.3 libusb_strerror.3
 MLINKS += libusb.3 libusb_error_name.3
 MLINKS += libusb.3 libusb_set_debug.3

Modified: stable/9/lib/libusb/libusb.3
==============================================================================
--- stable/9/lib/libusb/libusb.3	Tue Jun 16 12:16:35 2020	(r362223)
+++ stable/9/lib/libusb/libusb.3	Tue Jun 16 12:21:55 2020	(r362224)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 23, 2016
+.Dd June 16, 2020
 .Dt LIBUSB 3
 .Os
 .Sh NAME
@@ -60,6 +60,33 @@ failure.
 Deinitialise libusb.
 Must be called at the end of the application.
 Other libusb routines may not be called after this function.
+.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 *
 .Fn libusb_strerror "int code"

Modified: stable/9/lib/libusb/libusb.h
==============================================================================
--- stable/9/lib/libusb/libusb.h	Tue Jun 16 12:16:35 2020	(r362223)
+++ stable/9/lib/libusb/libusb.h	Tue Jun 16 12:21:55 2020	(r362224)
@@ -49,6 +49,7 @@ enum libusb_class_code {
 	LIBUSB_CLASS_AUDIO = 1,
 	LIBUSB_CLASS_COMM = 2,
 	LIBUSB_CLASS_HID = 3,
+	LIBUSB_CLASS_PHYSICAL = 5,
 	LIBUSB_CLASS_PTP = 6,
 	LIBUSB_CLASS_IMAGE = 6,
 	LIBUSB_CLASS_PRINTER = 7,
@@ -173,6 +174,21 @@ enum libusb_bos_type {
 	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 {
 	LIBUSB_SUCCESS = 0,
 	LIBUSB_ERROR_IO = -1,
@@ -432,6 +448,7 @@ const char *libusb_strerror(int code);
 const char *libusb_error_name(int code);
 int	libusb_init(libusb_context ** context);
 void	libusb_exit(struct libusb_context *ctx);
+int	libusb_has_capability(uint32_t capability);
 
 /* Device handling and enumeration */
 

Modified: stable/9/lib/libusb/libusb10.c
==============================================================================
--- stable/9/lib/libusb/libusb10.c	Tue Jun 16 12:16:35 2020	(r362223)
+++ stable/9/lib/libusb/libusb10.c	Tue Jun 16 12:21:55 2020	(r362224)
@@ -1705,3 +1705,18 @@ libusb_error_name(int code)
 		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);
+	}
+}


More information about the svn-src-all mailing list