svn commit: r234193 - head/lib/libusb

Hans Petter Selasky hselasky at FreeBSD.org
Thu Apr 12 18:06:31 UTC 2012


Author: hselasky
Date: Thu Apr 12 18:06:30 2012
New Revision: 234193
URL: http://svn.freebsd.org/changeset/base/234193

Log:
  Add missing LibUSB 1.0 API function.
  
  Reported by:	lme @
  MFC after:	1 week

Modified:
  head/lib/libusb/Makefile
  head/lib/libusb/libusb.3
  head/lib/libusb/libusb.h
  head/lib/libusb/libusb10.c

Modified: head/lib/libusb/Makefile
==============================================================================
--- head/lib/libusb/Makefile	Thu Apr 12 17:59:17 2012	(r234192)
+++ head/lib/libusb/Makefile	Thu Apr 12 18:06:30 2012	(r234193)
@@ -48,6 +48,7 @@ MLINKS += libusb.3 libusb_get_bus_number
 MLINKS += libusb.3 libusb_get_device_address.3
 MLINKS += libusb.3 libusb_get_device_speed.3
 MLINKS += libusb.3 libusb_get_max_packet_size.3
+MLINKS += libusb.3 libusb_get_max_iso_packet_size.3
 MLINKS += libusb.3 libusb_ref_device.3
 MLINKS += libusb.3 libusb_unref_device.3
 MLINKS += libusb.3 libusb_open.3

Modified: head/lib/libusb/libusb.3
==============================================================================
--- head/lib/libusb/libusb.3	Thu Apr 12 17:59:17 2012	(r234192)
+++ head/lib/libusb/libusb.3	Thu Apr 12 18:06:30 2012	(r234193)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 25, 2012
+.Dd April 12, 2012
 .Dt LIBUSB 3
 .Os
 .Sh NAME
@@ -118,6 +118,12 @@ LIBUSB_SPEED_UNKNOWN is returned in case
 Returns the wMaxPacketSize value on success, LIBUSB_ERROR_NOT_FOUND if the
 endpoint does not exist and LIBUSB_ERROR_OTHERS on other failure.
 .Pp
+.Ft int
+.Fn libusb_get_max_iso_packet_size "libusb_device *dev" "unsigned char endpoint"
+Returns the packet size multiplied by the packet multiplier on success,
+LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist and
+LIBUSB_ERROR_OTHERS on other failure.
+.Pp
 .Ft libusb_device *
 .Fn libusb_ref_device "libusb_device *dev"
 Increment the reference counter of the device

Modified: head/lib/libusb/libusb.h
==============================================================================
--- head/lib/libusb/libusb.h	Thu Apr 12 17:59:17 2012	(r234192)
+++ head/lib/libusb/libusb.h	Thu Apr 12 18:06:30 2012	(r234193)
@@ -371,6 +371,7 @@ uint8_t	libusb_get_device_address(libusb
 enum libusb_speed libusb_get_device_speed(libusb_device * dev);
 int	libusb_clear_halt(libusb_device_handle *devh, uint8_t endpoint);
 int	libusb_get_max_packet_size(libusb_device * dev, uint8_t endpoint);
+int	libusb_get_max_iso_packet_size(libusb_device * dev, uint8_t endpoint);
 libusb_device *libusb_ref_device(libusb_device * dev);
 void	libusb_unref_device(libusb_device * dev);
 int	libusb_open(libusb_device * dev, libusb_device_handle ** devh);

Modified: head/lib/libusb/libusb10.c
==============================================================================
--- head/lib/libusb/libusb10.c	Thu Apr 12 17:59:17 2012	(r234192)
+++ head/lib/libusb/libusb10.c	Thu Apr 12 18:06:30 2012	(r234193)
@@ -331,6 +331,30 @@ out:
 	return (ret);
 }
 
+int
+libusb_get_max_iso_packet_size(libusb_device *dev, uint8_t endpoint)
+{
+	int multiplier;
+	int ret;
+
+	ret = libusb_get_max_packet_size(dev, endpoint);
+
+	switch (libusb20_dev_get_speed(dev->os_priv)) {
+	case LIBUSB20_SPEED_LOW:
+	case LIBUSB20_SPEED_FULL:
+		break;
+	default:
+		if (ret > -1) {
+			multiplier = (1 + ((ret >> 11) & 3));
+			if (multiplier > 3)
+				multiplier = 3;
+			ret = (ret & 0x7FF) * multiplier;
+		}
+		break;
+	}
+	return (ret);
+}
+
 libusb_device *
 libusb_ref_device(libusb_device *dev)
 {


More information about the svn-src-head mailing list