From 145e4f476ce59961e1078be3f18b3024e2d28b97 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Fri, 10 Jan 2014 20:36:35 +0100 Subject: [PATCH 01/16] Remove libusb (we'll take the one from the system) --- libusb/osx/libusb.a | Bin 95856 -> 0 bytes libusb/vc10/libusb-1.0.lib | Bin 851260 -> 0 bytes src/libusb.h | 1512 ------------------------------------ 3 files changed, 1512 deletions(-) delete mode 100755 libusb/osx/libusb.a delete mode 100755 libusb/vc10/libusb-1.0.lib delete mode 100755 src/libusb.h diff --git a/libusb/osx/libusb.a b/libusb/osx/libusb.a deleted file mode 100755 index a2bcbb7687380fa6d59b7fbd5b450b709ce6b362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95856 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 C1>T4N diff --git a/libusb/vc10/libusb-1.0.lib b/libusb/vc10/libusb-1.0.lib deleted file mode 100755 index 57a48a665fff57182b16c2e962249f8426806a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851260 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%0DqEA5x8@k+yl0g?degJBj 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

NRgrv1TW+xu^loME1vL%=_wzHU;> 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 U@L&MpKRkH}o*QUZ;2&-Hf4Wb>@&Et; diff --git a/src/libusb.h b/src/libusb.h deleted file mode 100755 index d7e84c0..0000000 --- a/src/libusb.h +++ /dev/null @@ -1,1512 +0,0 @@ -/* - * Public libusbx header file - * Copyright © 2001 Johannes Erdfelt - * Copyright © 2007-2008 Daniel Drake - * Copyright © 2012 Pete Batard - * For more information, please visit: http://libusbx.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_H -#define LIBUSB_H - -#ifdef _MSC_VER -/* on MS environments, the inline keyword is available in C++ only */ -#if !defined(__cplusplus) -#define inline __inline -#endif -/* ssize_t is also not available (copy/paste from MinGW) */ -#ifndef _SSIZE_T_DEFINED -#define _SSIZE_T_DEFINED -#undef ssize_t -#ifdef _WIN64 - typedef __int64 ssize_t; -#else - typedef int ssize_t; -#endif /* _WIN64 */ -#endif /* _SSIZE_T_DEFINED */ -#endif /* _MSC_VER */ - -/* stdint.h is not available on older MSVC */ -#if defined(_MSC_VER) && (_MSC_VER < 1600) && (!defined(_STDINT)) && (!defined(_STDINT_H)) -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -#else -#include -#endif - -#if !defined(_WIN32_WCE) -#include -#endif - -#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__) -#include -#endif - -#include -#include - -/* 'interface' might be defined as a macro on Windows, so we need to - * undefine it so as not to break the current libusbx API, because - * libusb_config_descriptor has an 'interface' member - * As this can be problematic if you include windows.h after libusb.h - * in your sources, we force windows.h to be included first. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -#include -#if defined(interface) -#undef interface -#endif -#if !defined(__CYGWIN__) -#include -#endif -#endif - -/** \def LIBUSB_CALL - * \ingroup misc - * libusbx's Windows calling convention. - * - * Under Windows, the selection of available compilers and configurations - * means that, unlike other platforms, there is not one true calling - * convention (calling convention: the manner in which parameters are - * passed to funcions in the generated assembly code). - * - * Matching the Windows API itself, libusbx uses the WINAPI convention (which - * translates to the stdcall convention) and guarantees that the - * library is compiled in this way. The public header file also includes - * appropriate annotations so that your own software will use the right - * convention, even if another convention is being used by default within - * your codebase. - * - * The one consideration that you must apply in your software is to mark - * all functions which you use as libusbx callbacks with this LIBUSB_CALL - * annotation, so that they too get compiled for the correct calling - * convention. - * - * On non-Windows operating systems, this macro is defined as nothing. This - * means that you can apply it to your code without worrying about - * cross-platform compatibility. - */ -/* LIBUSB_CALL must be defined on both definition and declaration of libusbx - * functions. You'd think that declaration would be enough, but cygwin will - * complain about conflicting types unless both are marked this way. - * The placement of this macro is important too; it must appear after the - * return type, before the function name. See internal documentation for - * API_EXPORTED. - */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -#define LIBUSB_CALL WINAPI -#else -#define LIBUSB_CALL -#endif - -/** \def LIBUSBX_API_VERSION - * \ingroup misc - * libusbx's API version. - * - * Since version 1.0.13, to help with feature detection, libusbx defines - * a LIBUSBX_API_VERSION macro that gets increased every time there is a - * significant change to the API, such as the introduction of a new call, - * the definition of a new macro/enum member, or any other element that - * libusbx applications may want to detect at compilation time. - * - * The macro is typically used in an application as follows: - * \code - * #if defined(LIBUSBX_API_VERSION) && (LIBUSBX_API_VERSION >= 0x01001234) - * // Use one of the newer features from the libusbx API - * #endif - * \endcode - * - * Another feature of LIBUSBX_API_VERSION is that it can be used to detect - * whether you are compiling against the libusb or the libusbx library. - * - * Internally, LIBUSBX_API_VERSION is defined as follows: - * (libusbx major << 24) | (libusbx minor << 16) | (16 bit incremental) - */ -#define LIBUSBX_API_VERSION 0x010000FF - -#ifdef __cplusplus -extern "C" { -#endif - -/** \def libusb_cpu_to_le16 - * \ingroup misc - * Convert a 16-bit value from host-endian to little-endian format. On - * little endian systems, this function does nothing. On big endian systems, - * the bytes are swapped. - * \param x the host-endian value to convert - * \returns the value in little-endian byte order - */ -static inline uint16_t libusb_cpu_to_le16(const uint16_t x) -{ - union { - uint8_t b8[2]; - uint16_t b16; - } _tmp; - _tmp.b8[1] = x >> 8; - _tmp.b8[0] = x & 0xff; - return _tmp.b16; -} - -/** \def libusb_le16_to_cpu - * \ingroup misc - * Convert a 16-bit value from little-endian to host-endian format. On - * little endian systems, this function does nothing. On big endian systems, - * the bytes are swapped. - * \param x the little-endian value to convert - * \returns the value in host-endian byte order - */ -#define libusb_le16_to_cpu libusb_cpu_to_le16 - -/* standard USB stuff */ - -/** \ingroup desc - * Device and/or Interface Class codes */ -enum libusb_class_code { - /** In the context of a \ref libusb_device_descriptor "device descriptor", - * this bDeviceClass value indicates that each interface specifies its - * own class information and all interfaces operate independently. - */ - LIBUSB_CLASS_PER_INTERFACE = 0, - - /** Audio class */ - LIBUSB_CLASS_AUDIO = 1, - - /** Communications class */ - LIBUSB_CLASS_COMM = 2, - - /** Human Interface Device class */ - LIBUSB_CLASS_HID = 3, - - /** Physical */ - LIBUSB_CLASS_PHYSICAL = 5, - - /** Printer class */ - LIBUSB_CLASS_PRINTER = 7, - - /** Image class */ - LIBUSB_CLASS_PTP = 6, /* legacy name from libusb-0.1 usb.h */ - LIBUSB_CLASS_IMAGE = 6, - - /** Mass storage class */ - LIBUSB_CLASS_MASS_STORAGE = 8, - - /** Hub class */ - LIBUSB_CLASS_HUB = 9, - - /** Data class */ - LIBUSB_CLASS_DATA = 10, - - /** Smart Card */ - LIBUSB_CLASS_SMART_CARD = 0x0b, - - /** Content Security */ - LIBUSB_CLASS_CONTENT_SECURITY = 0x0d, - - /** Video */ - LIBUSB_CLASS_VIDEO = 0x0e, - - /** Personal Healthcare */ - LIBUSB_CLASS_PERSONAL_HEALTHCARE = 0x0f, - - /** Diagnostic Device */ - LIBUSB_CLASS_DIAGNOSTIC_DEVICE = 0xdc, - - /** Wireless class */ - LIBUSB_CLASS_WIRELESS = 0xe0, - - /** Application class */ - LIBUSB_CLASS_APPLICATION = 0xfe, - - /** Class is vendor-specific */ - LIBUSB_CLASS_VENDOR_SPEC = 0xff -}; - -/** \ingroup desc - * Descriptor types as defined by the USB specification. */ -enum libusb_descriptor_type { - /** Device descriptor. See libusb_device_descriptor. */ - LIBUSB_DT_DEVICE = 0x01, - - /** Configuration descriptor. See libusb_config_descriptor. */ - LIBUSB_DT_CONFIG = 0x02, - - /** String descriptor */ - LIBUSB_DT_STRING = 0x03, - - /** Interface descriptor. See libusb_interface_descriptor. */ - LIBUSB_DT_INTERFACE = 0x04, - - /** Endpoint descriptor. See libusb_endpoint_descriptor. */ - LIBUSB_DT_ENDPOINT = 0x05, - - /** HID descriptor */ - LIBUSB_DT_HID = 0x21, - - /** HID report descriptor */ - LIBUSB_DT_REPORT = 0x22, - - /** Physical descriptor */ - LIBUSB_DT_PHYSICAL = 0x23, - - /** Hub descriptor */ - LIBUSB_DT_HUB = 0x29, - - /** SuperSpeed Hub descriptor */ - LIBUSB_DT_SUPERSPEED_HUB = 0x2A, -}; - -/* Descriptor sizes per descriptor type */ -#define LIBUSB_DT_DEVICE_SIZE 18 -#define LIBUSB_DT_CONFIG_SIZE 9 -#define LIBUSB_DT_INTERFACE_SIZE 9 -#define LIBUSB_DT_ENDPOINT_SIZE 7 -#define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ -#define LIBUSB_DT_HUB_NONVAR_SIZE 7 - -#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */ -#define LIBUSB_ENDPOINT_DIR_MASK 0x80 - -/** \ingroup desc - * Endpoint direction. Values for bit 7 of the - * \ref libusb_endpoint_descriptor::bEndpointAddress "endpoint address" scheme. - */ -enum libusb_endpoint_direction { - /** In: device-to-host */ - LIBUSB_ENDPOINT_IN = 0x80, - - /** Out: host-to-device */ - LIBUSB_ENDPOINT_OUT = 0x00 -}; - -#define LIBUSB_TRANSFER_TYPE_MASK 0x03 /* in bmAttributes */ - -/** \ingroup desc - * Endpoint transfer type. Values for bits 0:1 of the - * \ref libusb_endpoint_descriptor::bmAttributes "endpoint attributes" field. - */ -enum libusb_transfer_type { - /** Control endpoint */ - LIBUSB_TRANSFER_TYPE_CONTROL = 0, - - /** Isochronous endpoint */ - LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1, - - /** Bulk endpoint */ - LIBUSB_TRANSFER_TYPE_BULK = 2, - - /** Interrupt endpoint */ - LIBUSB_TRANSFER_TYPE_INTERRUPT = 3 -}; - -/** \ingroup misc - * Standard requests, as defined in table 9-5 of the USB 3.0 specifications */ -enum libusb_standard_request { - /** Request status of the specific recipient */ - LIBUSB_REQUEST_GET_STATUS = 0x00, - - /** Clear or disable a specific feature */ - LIBUSB_REQUEST_CLEAR_FEATURE = 0x01, - - /* 0x02 is reserved */ - - /** Set or enable a specific feature */ - LIBUSB_REQUEST_SET_FEATURE = 0x03, - - /* 0x04 is reserved */ - - /** Set device address for all future accesses */ - LIBUSB_REQUEST_SET_ADDRESS = 0x05, - - /** Get the specified descriptor */ - LIBUSB_REQUEST_GET_DESCRIPTOR = 0x06, - - /** Used to update existing descriptors or add new descriptors */ - LIBUSB_REQUEST_SET_DESCRIPTOR = 0x07, - - /** Get the current device configuration value */ - LIBUSB_REQUEST_GET_CONFIGURATION = 0x08, - - /** Set device configuration */ - LIBUSB_REQUEST_SET_CONFIGURATION = 0x09, - - /** Return the selected alternate setting for the specified interface */ - LIBUSB_REQUEST_GET_INTERFACE = 0x0A, - - /** Select an alternate interface for the specified interface */ - LIBUSB_REQUEST_SET_INTERFACE = 0x0B, - - /** Set then report an endpoint's synchronization frame */ - LIBUSB_REQUEST_SYNCH_FRAME = 0x0C, - - /** Sets both the U1 and U2 Exit Latency */ - LIBUSB_REQUEST_SET_SEL = 0x30, - - /** Delay from the time a host transmits a packet to the time it is - * received by the device. */ - LIBUSB_SET_ISOCH_DELAY = 0x31, -}; - -/** \ingroup misc - * Request type bits of the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control - * transfers. */ -enum libusb_request_type { - /** Standard */ - LIBUSB_REQUEST_TYPE_STANDARD = (0x00 << 5), - - /** Class */ - LIBUSB_REQUEST_TYPE_CLASS = (0x01 << 5), - - /** Vendor */ - LIBUSB_REQUEST_TYPE_VENDOR = (0x02 << 5), - - /** Reserved */ - LIBUSB_REQUEST_TYPE_RESERVED = (0x03 << 5) -}; - -/** \ingroup misc - * Recipient bits of the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control - * transfers. Values 4 through 31 are reserved. */ -enum libusb_request_recipient { - /** Device */ - LIBUSB_RECIPIENT_DEVICE = 0x00, - - /** Interface */ - LIBUSB_RECIPIENT_INTERFACE = 0x01, - - /** Endpoint */ - LIBUSB_RECIPIENT_ENDPOINT = 0x02, - - /** Other */ - LIBUSB_RECIPIENT_OTHER = 0x03, -}; - -#define LIBUSB_ISO_SYNC_TYPE_MASK 0x0C - -/** \ingroup desc - * Synchronization type for isochronous endpoints. Values for bits 2:3 of the - * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in - * libusb_endpoint_descriptor. - */ -enum libusb_iso_sync_type { - /** No synchronization */ - LIBUSB_ISO_SYNC_TYPE_NONE = 0, - - /** Asynchronous */ - LIBUSB_ISO_SYNC_TYPE_ASYNC = 1, - - /** Adaptive */ - LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2, - - /** Synchronous */ - LIBUSB_ISO_SYNC_TYPE_SYNC = 3 -}; - -#define LIBUSB_ISO_USAGE_TYPE_MASK 0x30 - -/** \ingroup desc - * Usage type for isochronous endpoints. Values for bits 4:5 of the - * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in - * libusb_endpoint_descriptor. - */ -enum libusb_iso_usage_type { - /** Data endpoint */ - LIBUSB_ISO_USAGE_TYPE_DATA = 0, - - /** Feedback endpoint */ - LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1, - - /** Implicit feedback Data endpoint */ - LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2, -}; - -/** \ingroup desc - * A structure representing the standard USB device descriptor. This - * descriptor is documented in section 9.6.1 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_device_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE LIBUSB_DT_DEVICE in this - * context. */ - uint8_t bDescriptorType; - - /** USB specification release number in binary-coded decimal. A value of - * 0x0200 indicates USB 2.0, 0x0110 indicates USB 1.1, etc. */ - uint16_t bcdUSB; - - /** USB-IF class code for the device. See \ref libusb_class_code. */ - uint8_t bDeviceClass; - - /** USB-IF subclass code for the device, qualified by the bDeviceClass - * value */ - uint8_t bDeviceSubClass; - - /** USB-IF protocol code for the device, qualified by the bDeviceClass and - * bDeviceSubClass values */ - uint8_t bDeviceProtocol; - - /** Maximum packet size for endpoint 0 */ - uint8_t bMaxPacketSize0; - - /** USB-IF vendor ID */ - uint16_t idVendor; - - /** USB-IF product ID */ - uint16_t idProduct; - - /** Device release number in binary-coded decimal */ - uint16_t bcdDevice; - - /** Index of string descriptor describing manufacturer */ - uint8_t iManufacturer; - - /** Index of string descriptor describing product */ - uint8_t iProduct; - - /** Index of string descriptor containing device serial number */ - uint8_t iSerialNumber; - - /** Number of possible configurations */ - uint8_t bNumConfigurations; -}; - -/** \ingroup desc - * A structure representing the standard USB endpoint descriptor. This - * descriptor is documented in section 9.6.6 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_endpoint_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_ENDPOINT LIBUSB_DT_ENDPOINT in - * this context. */ - uint8_t bDescriptorType; - - /** The address of the endpoint described by this descriptor. Bits 0:3 are - * the endpoint number. Bits 4:6 are reserved. Bit 7 indicates direction, - * see \ref libusb_endpoint_direction. - */ - uint8_t bEndpointAddress; - - /** Attributes which apply to the endpoint when it is configured using - * the bConfigurationValue. Bits 0:1 determine the transfer type and - * correspond to \ref libusb_transfer_type. Bits 2:3 are only used for - * isochronous endpoints and correspond to \ref libusb_iso_sync_type. - * Bits 4:5 are also only used for isochronous endpoints and correspond to - * \ref libusb_iso_usage_type. Bits 6:7 are reserved. - */ - uint8_t bmAttributes; - - /** Maximum packet size this endpoint is capable of sending/receiving. */ - uint16_t wMaxPacketSize; - - /** Interval for polling endpoint for data transfers. */ - uint8_t bInterval; - - /** For audio devices only: the rate at which synchronization feedback - * is provided. */ - uint8_t bRefresh; - - /** For audio devices only: the address if the synch endpoint */ - uint8_t bSynchAddress; - - /** Extra descriptors. If libusbx encounters unknown endpoint descriptors, - * it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. */ - int extra_length; -}; - -/** \ingroup desc - * A structure representing the standard USB interface descriptor. This - * descriptor is documented in section 9.6.5 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_interface_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_INTERFACE LIBUSB_DT_INTERFACE - * in this context. */ - uint8_t bDescriptorType; - - /** Number of this interface */ - uint8_t bInterfaceNumber; - - /** Value used to select this alternate setting for this interface */ - uint8_t bAlternateSetting; - - /** Number of endpoints used by this interface (excluding the control - * endpoint). */ - uint8_t bNumEndpoints; - - /** USB-IF class code for this interface. See \ref libusb_class_code. */ - uint8_t bInterfaceClass; - - /** USB-IF subclass code for this interface, qualified by the - * bInterfaceClass value */ - uint8_t bInterfaceSubClass; - - /** USB-IF protocol code for this interface, qualified by the - * bInterfaceClass and bInterfaceSubClass values */ - uint8_t bInterfaceProtocol; - - /** Index of string descriptor describing this interface */ - uint8_t iInterface; - - /** Array of endpoint descriptors. This length of this array is determined - * by the bNumEndpoints field. */ - const struct libusb_endpoint_descriptor *endpoint; - - /** Extra descriptors. If libusbx encounters unknown interface descriptors, - * it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. */ - int extra_length; -}; - -/** \ingroup desc - * A collection of alternate settings for a particular USB interface. - */ -struct libusb_interface { - /** Array of interface descriptors. The length of this array is determined - * by the num_altsetting field. */ - const struct libusb_interface_descriptor *altsetting; - - /** The number of alternate settings that belong to this interface */ - int num_altsetting; -}; - -/** \ingroup desc - * A structure representing the standard USB configuration descriptor. This - * descriptor is documented in section 9.6.3 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_config_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_CONFIG LIBUSB_DT_CONFIG - * in this context. */ - uint8_t bDescriptorType; - - /** Total length of data returned for this configuration */ - uint16_t wTotalLength; - - /** Number of interfaces supported by this configuration */ - uint8_t bNumInterfaces; - - /** Identifier value for this configuration */ - uint8_t bConfigurationValue; - - /** Index of string descriptor describing this configuration */ - uint8_t iConfiguration; - - /** Configuration characteristics */ - uint8_t bmAttributes; - - /** Maximum power consumption of the USB device from this bus in this - * configuration when the device is fully opreation. Expressed in units - * of 2 mA. */ - uint8_t MaxPower; - - /** Array of interfaces supported by this configuration. The length of - * this array is determined by the bNumInterfaces field. */ - const struct libusb_interface *interface; - - /** Extra descriptors. If libusbx encounters unknown configuration - * descriptors, it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. */ - int extra_length; -}; - -/** \ingroup asyncio - * Setup packet for control transfers. */ -struct libusb_control_setup { - /** Request type. Bits 0:4 determine recipient, see - * \ref libusb_request_recipient. Bits 5:6 determine type, see - * \ref libusb_request_type. Bit 7 determines data transfer direction, see - * \ref libusb_endpoint_direction. - */ - uint8_t bmRequestType; - - /** Request. If the type bits of bmRequestType are equal to - * \ref libusb_request_type::LIBUSB_REQUEST_TYPE_STANDARD - * "LIBUSB_REQUEST_TYPE_STANDARD" then this field refers to - * \ref libusb_standard_request. For other cases, use of this field is - * application-specific. */ - uint8_t bRequest; - - /** Value. Varies according to request */ - uint16_t wValue; - - /** Index. Varies according to request, typically used to pass an index - * or offset */ - uint16_t wIndex; - - /** Number of bytes to transfer */ - uint16_t wLength; -}; - -#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup)) - -/* libusbx */ - -struct libusb_context; -struct libusb_device; -struct libusb_device_handle; - -/** \ingroup lib - * Structure providing the version of the libusbx runtime - */ -struct libusb_version { - /** Library major version. */ - const uint16_t major; - - /** Library minor version. */ - const uint16_t minor; - - /** Library micro version. */ - const uint16_t micro; - - /** Library nano version. */ - const uint16_t nano; - - /** Library release candidate suffix string, e.g. "-rc4". */ - const char *rc; - - /** For ABI compatibility only. */ - const char* describe; -}; - -/** \ingroup lib - * Structure representing a libusbx session. The concept of individual libusbx - * sessions allows for your program to use two libraries (or dynamically - * load two modules) which both independently use libusb. This will prevent - * interference between the individual libusbx users - for example - * libusb_set_debug() will not affect the other user of the library, and - * libusb_exit() will not destroy resources that the other user is still - * using. - * - * Sessions are created by libusb_init() and destroyed through libusb_exit(). - * If your application is guaranteed to only ever include a single libusbx - * user (i.e. you), you do not have to worry about contexts: pass NULL in - * every function call where a context is required. The default context - * will be used. - * - * For more information, see \ref contexts. - */ -typedef struct libusb_context libusb_context; - -/** \ingroup dev - * Structure representing a USB device detected on the system. This is an - * opaque type for which you are only ever provided with a pointer, usually - * originating from libusb_get_device_list(). - * - * Certain operations can be performed on a device, but in order to do any - * I/O you will have to first obtain a device handle using libusb_open(). - * - * Devices are reference counted with libusb_device_ref() and - * libusb_device_unref(), and are freed when the reference count reaches 0. - * New devices presented by libusb_get_device_list() have a reference count of - * 1, and libusb_free_device_list() can optionally decrease the reference count - * on all devices in the list. libusb_open() adds another reference which is - * later destroyed by libusb_close(). - */ -typedef struct libusb_device libusb_device; - - -/** \ingroup dev - * Structure representing a handle on a USB device. This is an opaque type for - * which you are only ever provided with a pointer, usually originating from - * libusb_open(). - * - * A device handle is used to perform I/O and other operations. When finished - * with a device handle, you should call libusb_close(). - */ -typedef struct libusb_device_handle libusb_device_handle; - -/** \ingroup dev - * Speed codes. Indicates the speed at which the device is operating. - */ -enum libusb_speed { - /** The OS doesn't report or know the device speed. */ - LIBUSB_SPEED_UNKNOWN = 0, - - /** The device is operating at low speed (1.5MBit/s). */ - LIBUSB_SPEED_LOW = 1, - - /** The device is operating at full speed (12MBit/s). */ - LIBUSB_SPEED_FULL = 2, - - /** The device is operating at high speed (480MBit/s). */ - LIBUSB_SPEED_HIGH = 3, - - /** The device is operating at super speed (5000MBit/s). */ - LIBUSB_SPEED_SUPER = 4, -}; - -/** \ingroup misc - * Error codes. Most libusbx functions return 0 on success or one of these - * codes on failure. - * You can call \ref libusb_error_name() to retrieve a string representation - * of an error code. - */ -enum libusb_error { - /** Success (no error) */ - LIBUSB_SUCCESS = 0, - - /** Input/output error */ - LIBUSB_ERROR_IO = -1, - - /** Invalid parameter */ - LIBUSB_ERROR_INVALID_PARAM = -2, - - /** Access denied (insufficient permissions) */ - LIBUSB_ERROR_ACCESS = -3, - - /** No such device (it may have been disconnected) */ - LIBUSB_ERROR_NO_DEVICE = -4, - - /** Entity not found */ - LIBUSB_ERROR_NOT_FOUND = -5, - - /** Resource busy */ - LIBUSB_ERROR_BUSY = -6, - - /** Operation timed out */ - LIBUSB_ERROR_TIMEOUT = -7, - - /** Overflow */ - LIBUSB_ERROR_OVERFLOW = -8, - - /** Pipe error */ - LIBUSB_ERROR_PIPE = -9, - - /** System call interrupted (perhaps due to signal) */ - LIBUSB_ERROR_INTERRUPTED = -10, - - /** Insufficient memory */ - LIBUSB_ERROR_NO_MEM = -11, - - /** Operation not supported or unimplemented on this platform */ - LIBUSB_ERROR_NOT_SUPPORTED = -12, - - /* NB! Remember to update libusb_error_name() - when adding new error codes here. */ - - /** Other error */ - LIBUSB_ERROR_OTHER = -99, -}; - -/** \ingroup asyncio - * Transfer status codes */ -enum libusb_transfer_status { - /** Transfer completed without error. Note that this does not indicate - * that the entire amount of requested data was transferred. */ - LIBUSB_TRANSFER_COMPLETED, - - /** Transfer failed */ - LIBUSB_TRANSFER_ERROR, - - /** Transfer timed out */ - LIBUSB_TRANSFER_TIMED_OUT, - - /** Transfer was cancelled */ - LIBUSB_TRANSFER_CANCELLED, - - /** For bulk/interrupt endpoints: halt condition detected (endpoint - * stalled). For control endpoints: control request not supported. */ - LIBUSB_TRANSFER_STALL, - - /** Device was disconnected */ - LIBUSB_TRANSFER_NO_DEVICE, - - /** Device sent more data than requested */ - LIBUSB_TRANSFER_OVERFLOW, - - /* NB! Remember to update libusb_error_name() - when adding new status codes here. */ -}; - -/** \ingroup asyncio - * libusb_transfer.flags values */ -enum libusb_transfer_flags { - /** Report short frames as errors */ - LIBUSB_TRANSFER_SHORT_NOT_OK = 1<<0, - - /** Automatically free() transfer buffer during libusb_free_transfer() */ - LIBUSB_TRANSFER_FREE_BUFFER = 1<<1, - - /** Automatically call libusb_free_transfer() after callback returns. - * If this flag is set, it is illegal to call libusb_free_transfer() - * from your transfer callback, as this will result in a double-free - * when this flag is acted upon. */ - LIBUSB_TRANSFER_FREE_TRANSFER = 1<<2, - - /** Terminate transfers that are a multiple of the endpoint's - * wMaxPacketSize with an extra zero length packet. This is useful - * when a device protocol mandates that each logical request is - * terminated by an incomplete packet (i.e. the logical requests are - * not separated by other means). - * - * This flag only affects host-to-device transfers to bulk and interrupt - * endpoints. In other situations, it is ignored. - * - * This flag only affects transfers with a length that is a multiple of - * the endpoint's wMaxPacketSize. On transfers of other lengths, this - * flag has no effect. Therefore, if you are working with a device that - * needs a ZLP whenever the end of the logical request falls on a packet - * boundary, then it is sensible to set this flag on every - * transfer (you do not have to worry about only setting it on transfers - * that end on the boundary). - * - * This flag is currently only supported on Linux. - * On other systems, libusb_submit_transfer() will return - * LIBUSB_ERROR_NOT_SUPPORTED for every transfer where this flag is set. - * - * Available since libusb-1.0.9. - */ - LIBUSB_TRANSFER_ADD_ZERO_PACKET = 1 << 3, -}; - -/** \ingroup asyncio - * Isochronous packet descriptor. */ -struct libusb_iso_packet_descriptor { - /** Length of data to request in this packet */ - unsigned int length; - - /** Amount of data that was actually transferred */ - unsigned int actual_length; - - /** Status code for this packet */ - enum libusb_transfer_status status; -}; - -struct libusb_transfer; - -/** \ingroup asyncio - * Asynchronous transfer callback function type. When submitting asynchronous - * transfers, you pass a pointer to a callback function of this type via the - * \ref libusb_transfer::callback "callback" member of the libusb_transfer - * structure. libusbx will call this function later, when the transfer has - * completed or failed. See \ref asyncio for more information. - * \param transfer The libusb_transfer struct the callback function is being - * notified about. - */ -typedef void (LIBUSB_CALL *libusb_transfer_cb_fn)(struct libusb_transfer *transfer); - -/** \ingroup asyncio - * The generic USB transfer structure. The user populates this structure and - * then submits it in order to request a transfer. After the transfer has - * completed, the library populates the transfer with the results and passes - * it back to the user. - */ -struct libusb_transfer { - /** Handle of the device that this transfer will be submitted to */ - libusb_device_handle *dev_handle; - - /** A bitwise OR combination of \ref libusb_transfer_flags. */ - uint8_t flags; - - /** Address of the endpoint where this transfer will be sent. */ - unsigned char endpoint; - - /** Type of the endpoint from \ref libusb_transfer_type */ - unsigned char type; - - /** Timeout for this transfer in millseconds. A value of 0 indicates no - * timeout. */ - unsigned int timeout; - - /** The status of the transfer. Read-only, and only for use within - * transfer callback function. - * - * If this is an isochronous transfer, this field may read COMPLETED even - * if there were errors in the frames. Use the - * \ref libusb_iso_packet_descriptor::status "status" field in each packet - * to determine if errors occurred. */ - enum libusb_transfer_status status; - - /** Length of the data buffer */ - int length; - - /** Actual length of data that was transferred. Read-only, and only for - * use within transfer callback function. Not valid for isochronous - * endpoint transfers. */ - int actual_length; - - /** Callback function. This will be invoked when the transfer completes, - * fails, or is cancelled. */ - libusb_transfer_cb_fn callback; - - /** User context data to pass to the callback function. */ - void *user_data; - - /** Data buffer */ - unsigned char *buffer; - - /** Number of isochronous packets. Only used for I/O with isochronous - * endpoints. */ - int num_iso_packets; - - /** Isochronous packet descriptors, for isochronous transfers only. */ - struct libusb_iso_packet_descriptor iso_packet_desc -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) - [] /* valid C99 code */ -#else - [0] /* non-standard, but usually working code */ -#endif - ; -}; - -/** \ingroup misc - * Capabilities supported by this instance of libusb. Test if the loaded - * library supports a given capability by calling - * \ref libusb_has_capability(). - */ -enum libusb_capability { - /** The libusb_has_capability() API is available. */ - LIBUSB_CAP_HAS_CAPABILITY = 0, -}; - -/** \ingroup lib - * Log message levels. - * - LIBUSB_LOG_LEVEL_NONE (0) : no messages ever printed by the library (default) - * - LIBUSB_LOG_LEVEL_ERROR (1) : error messages are printed to stderr - * - LIBUSB_LOG_LEVEL_WARNING (2) : warning and error messages are printed to stderr - * - LIBUSB_LOG_LEVEL_INFO (3) : informational messages are printed to stdout, warning - * and error messages are printed to stderr - * - LIBUSB_LOG_LEVEL_DEBUG (4) : debug and informational messages are printed to stdout, - * warnings and errors to stderr - */ -enum libusb_log_level { - LIBUSB_LOG_LEVEL_NONE = 0, - LIBUSB_LOG_LEVEL_ERROR, - LIBUSB_LOG_LEVEL_WARNING, - LIBUSB_LOG_LEVEL_INFO, - LIBUSB_LOG_LEVEL_DEBUG, -}; - -int LIBUSB_CALL libusb_init(libusb_context **ctx); -void LIBUSB_CALL libusb_exit(libusb_context *ctx); -void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level); -const struct libusb_version * LIBUSB_CALL libusb_get_version(void); -int LIBUSB_CALL libusb_has_capability(uint32_t capability); -const char * LIBUSB_CALL libusb_error_name(int errcode); - -ssize_t LIBUSB_CALL libusb_get_device_list(libusb_context *ctx, - libusb_device ***list); -void LIBUSB_CALL libusb_free_device_list(libusb_device **list, - int unref_devices); -libusb_device * LIBUSB_CALL libusb_ref_device(libusb_device *dev); -void LIBUSB_CALL libusb_unref_device(libusb_device *dev); - -int LIBUSB_CALL libusb_get_configuration(libusb_device_handle *dev, - int *config); -int LIBUSB_CALL libusb_get_device_descriptor(libusb_device *dev, - struct libusb_device_descriptor *desc); -int LIBUSB_CALL libusb_get_active_config_descriptor(libusb_device *dev, - struct libusb_config_descriptor **config); -int LIBUSB_CALL libusb_get_config_descriptor(libusb_device *dev, - uint8_t config_index, struct libusb_config_descriptor **config); -int LIBUSB_CALL libusb_get_config_descriptor_by_value(libusb_device *dev, - uint8_t bConfigurationValue, struct libusb_config_descriptor **config); -void LIBUSB_CALL libusb_free_config_descriptor( - struct libusb_config_descriptor *config); -uint8_t LIBUSB_CALL libusb_get_bus_number(libusb_device *dev); -uint8_t LIBUSB_CALL libusb_get_port_number(libusb_device *dev); -libusb_device * LIBUSB_CALL libusb_get_parent(libusb_device *dev); -int LIBUSB_CALL libusb_get_port_path(libusb_context *ctx, libusb_device *dev, uint8_t* path, uint8_t path_length); -uint8_t LIBUSB_CALL libusb_get_device_address(libusb_device *dev); -int LIBUSB_CALL libusb_get_device_speed(libusb_device *dev); -int LIBUSB_CALL libusb_get_max_packet_size(libusb_device *dev, - unsigned char endpoint); -int LIBUSB_CALL libusb_get_max_iso_packet_size(libusb_device *dev, - unsigned char endpoint); - -int LIBUSB_CALL libusb_open(libusb_device *dev, libusb_device_handle **handle); -void LIBUSB_CALL libusb_close(libusb_device_handle *dev_handle); -libusb_device * LIBUSB_CALL libusb_get_device(libusb_device_handle *dev_handle); - -int LIBUSB_CALL libusb_set_configuration(libusb_device_handle *dev, - int configuration); -int LIBUSB_CALL libusb_claim_interface(libusb_device_handle *dev, - int interface_number); -int LIBUSB_CALL libusb_release_interface(libusb_device_handle *dev, - int interface_number); - -libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid( - libusb_context *ctx, uint16_t vendor_id, uint16_t product_id); - -int LIBUSB_CALL libusb_set_interface_alt_setting(libusb_device_handle *dev, - int interface_number, int alternate_setting); -int LIBUSB_CALL libusb_clear_halt(libusb_device_handle *dev, - unsigned char endpoint); -int LIBUSB_CALL libusb_reset_device(libusb_device_handle *dev); - -int LIBUSB_CALL libusb_kernel_driver_active(libusb_device_handle *dev, - int interface_number); -int LIBUSB_CALL libusb_detach_kernel_driver(libusb_device_handle *dev, - int interface_number); -int LIBUSB_CALL libusb_attach_kernel_driver(libusb_device_handle *dev, - int interface_number); - -/* async I/O */ - -/** \ingroup asyncio - * Get the data section of a control transfer. This convenience function is here - * to remind you that the data does not start until 8 bytes into the actual - * buffer, as the setup packet comes first. - * - * Calling this function only makes sense from a transfer callback function, - * or situations where you have already allocated a suitably sized buffer at - * transfer->buffer. - * - * \param transfer a transfer - * \returns pointer to the first byte of the data section - */ -static inline unsigned char *libusb_control_transfer_get_data( - struct libusb_transfer *transfer) -{ - return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; -} - -/** \ingroup asyncio - * Get the control setup packet of a control transfer. This convenience - * function is here to remind you that the control setup occupies the first - * 8 bytes of the transfer data buffer. - * - * Calling this function only makes sense from a transfer callback function, - * or situations where you have already allocated a suitably sized buffer at - * transfer->buffer. - * - * \param transfer a transfer - * \returns a casted pointer to the start of the transfer data buffer - */ -static inline struct libusb_control_setup *libusb_control_transfer_get_setup( - struct libusb_transfer *transfer) -{ - return (struct libusb_control_setup *) transfer->buffer; -} - -/** \ingroup asyncio - * Helper function to populate the setup packet (first 8 bytes of the data - * buffer) for a control transfer. The wIndex, wValue and wLength values should - * be given in host-endian byte order. - * - * \param buffer buffer to output the setup packet into - * \param bmRequestType see the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field of - * \ref libusb_control_setup - * \param bRequest see the - * \ref libusb_control_setup::bRequest "bRequest" field of - * \ref libusb_control_setup - * \param wValue see the - * \ref libusb_control_setup::wValue "wValue" field of - * \ref libusb_control_setup - * \param wIndex see the - * \ref libusb_control_setup::wIndex "wIndex" field of - * \ref libusb_control_setup - * \param wLength see the - * \ref libusb_control_setup::wLength "wLength" field of - * \ref libusb_control_setup - */ -static inline void libusb_fill_control_setup(unsigned char *buffer, - uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - uint16_t wLength) -{ - struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer; - setup->bmRequestType = bmRequestType; - setup->bRequest = bRequest; - setup->wValue = libusb_cpu_to_le16(wValue); - setup->wIndex = libusb_cpu_to_le16(wIndex); - setup->wLength = libusb_cpu_to_le16(wLength); -} - -struct libusb_transfer * LIBUSB_CALL libusb_alloc_transfer(int iso_packets); -int LIBUSB_CALL libusb_submit_transfer(struct libusb_transfer *transfer); -int LIBUSB_CALL libusb_cancel_transfer(struct libusb_transfer *transfer); -void LIBUSB_CALL libusb_free_transfer(struct libusb_transfer *transfer); - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a control transfer. - * - * If you pass a transfer buffer to this function, the first 8 bytes will - * be interpreted as a control setup packet, and the wLength field will be - * used to automatically populate the \ref libusb_transfer::length "length" - * field of the transfer. Therefore the recommended approach is: - * -# Allocate a suitably sized data buffer (including space for control setup) - * -# Call libusb_fill_control_setup() - * -# If this is a host-to-device transfer with a data stage, put the data - * in place after the setup packet - * -# Call this function - * -# Call libusb_submit_transfer() - * - * It is also legal to pass a NULL buffer to this function, in which case this - * function will not attempt to populate the length field. Remember that you - * must then populate the buffer and length fields later. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param buffer data buffer. If provided, this function will interpret the - * first 8 bytes as a setup packet and infer the transfer length from that. - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_control_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data, - unsigned int timeout) -{ - struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer; - transfer->dev_handle = dev_handle; - transfer->endpoint = 0; - transfer->type = LIBUSB_TRANSFER_TYPE_CONTROL; - transfer->timeout = timeout; - transfer->buffer = buffer; - if (setup) - transfer->length = LIBUSB_CONTROL_SETUP_SIZE - + libusb_le16_to_cpu(setup->wLength); - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a bulk transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer, - libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *buffer, int length, libusb_transfer_cb_fn callback, - void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_BULK; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for an interrupt transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_interrupt_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *buffer, int length, - libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_INTERRUPT; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for an isochronous transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param num_iso_packets the number of isochronous packets - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_iso_transfer(struct libusb_transfer *transfer, - libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *buffer, int length, int num_iso_packets, - libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->num_iso_packets = num_iso_packets; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Convenience function to set the length of all packets in an isochronous - * transfer, based on the num_iso_packets field in the transfer structure. - * - * \param transfer a transfer - * \param length the length to set in each isochronous packet descriptor - * \see libusb_get_max_packet_size() - */ -static inline void libusb_set_iso_packet_lengths( - struct libusb_transfer *transfer, unsigned int length) -{ - int i; - for (i = 0; i < transfer->num_iso_packets; i++) - transfer->iso_packet_desc[i].length = length; -} - -/** \ingroup asyncio - * Convenience function to locate the position of an isochronous packet - * within the buffer of an isochronous transfer. - * - * This is a thorough function which loops through all preceding packets, - * accumulating their lengths to find the position of the specified packet. - * Typically you will assign equal lengths to each packet in the transfer, - * and hence the above method is sub-optimal. You may wish to use - * libusb_get_iso_packet_buffer_simple() instead. - * - * \param transfer a transfer - * \param packet the packet to return the address of - * \returns the base address of the packet buffer inside the transfer buffer, - * or NULL if the packet does not exist. - * \see libusb_get_iso_packet_buffer_simple() - */ -static inline unsigned char *libusb_get_iso_packet_buffer( - struct libusb_transfer *transfer, unsigned int packet) -{ - int i; - size_t offset = 0; - int _packet; - - /* oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. */ - if (packet > INT_MAX) - return NULL; - _packet = packet; - - if (_packet >= transfer->num_iso_packets) - return NULL; - - for (i = 0; i < _packet; i++) - offset += transfer->iso_packet_desc[i].length; - - return transfer->buffer + offset; -} - -/** \ingroup asyncio - * Convenience function to locate the position of an isochronous packet - * within the buffer of an isochronous transfer, for transfers where each - * packet is of identical size. - * - * This function relies on the assumption that every packet within the transfer - * is of identical size to the first packet. Calculating the location of - * the packet buffer is then just a simple calculation: - * buffer + (packet_size * packet) - * - * Do not use this function on transfers other than those that have identical - * packet lengths for each packet. - * - * \param transfer a transfer - * \param packet the packet to return the address of - * \returns the base address of the packet buffer inside the transfer buffer, - * or NULL if the packet does not exist. - * \see libusb_get_iso_packet_buffer() - */ -static inline unsigned char *libusb_get_iso_packet_buffer_simple( - struct libusb_transfer *transfer, unsigned int packet) -{ - int _packet; - - /* oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. */ - if (packet > INT_MAX) - return NULL; - _packet = packet; - - if (_packet >= transfer->num_iso_packets) - return NULL; - - return transfer->buffer + (transfer->iso_packet_desc[0].length * _packet); -} - -/* sync I/O */ - -int LIBUSB_CALL libusb_control_transfer(libusb_device_handle *dev_handle, - uint8_t request_type, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - unsigned char *data, uint16_t wLength, unsigned int timeout); - -int LIBUSB_CALL libusb_bulk_transfer(libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, - int *actual_length, unsigned int timeout); - -int LIBUSB_CALL libusb_interrupt_transfer(libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, - int *actual_length, unsigned int timeout); - -/** \ingroup desc - * Retrieve a descriptor from the default control pipe. - * This is a convenience function which formulates the appropriate control - * message to retrieve the descriptor. - * - * \param dev a device handle - * \param desc_type the descriptor type, see \ref libusb_descriptor_type - * \param desc_index the index of the descriptor to retrieve - * \param data output buffer for descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - */ -static inline int libusb_get_descriptor(libusb_device_handle *dev, - uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length) -{ - return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_DESCRIPTOR, (desc_type << 8) | desc_index, 0, data, - (uint16_t) length, 1000); -} - -/** \ingroup desc - * Retrieve a descriptor from a device. - * This is a convenience function which formulates the appropriate control - * message to retrieve the descriptor. The string returned is Unicode, as - * detailed in the USB specifications. - * - * \param dev a device handle - * \param desc_index the index of the descriptor to retrieve - * \param langid the language ID for the string descriptor - * \param data output buffer for descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - * \see libusb_get_string_descriptor_ascii() - */ -static inline int libusb_get_string_descriptor(libusb_device_handle *dev, - uint8_t desc_index, uint16_t langid, unsigned char *data, int length) -{ - return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t)((LIBUSB_DT_STRING << 8) | desc_index), - langid, data, (uint16_t) length, 1000); -} - -int LIBUSB_CALL libusb_get_string_descriptor_ascii(libusb_device_handle *dev, - uint8_t desc_index, unsigned char *data, int length); - -/* polling and timeouts */ - -int LIBUSB_CALL libusb_try_lock_events(libusb_context *ctx); -void LIBUSB_CALL libusb_lock_events(libusb_context *ctx); -void LIBUSB_CALL libusb_unlock_events(libusb_context *ctx); -int LIBUSB_CALL libusb_event_handling_ok(libusb_context *ctx); -int LIBUSB_CALL libusb_event_handler_active(libusb_context *ctx); -void LIBUSB_CALL libusb_lock_event_waiters(libusb_context *ctx); -void LIBUSB_CALL libusb_unlock_event_waiters(libusb_context *ctx); -int LIBUSB_CALL libusb_wait_for_event(libusb_context *ctx, struct timeval *tv); - -int LIBUSB_CALL libusb_handle_events_timeout(libusb_context *ctx, - struct timeval *tv); -int LIBUSB_CALL libusb_handle_events_timeout_completed(libusb_context *ctx, - struct timeval *tv, int *completed); -int LIBUSB_CALL libusb_handle_events(libusb_context *ctx); -int LIBUSB_CALL libusb_handle_events_completed(libusb_context *ctx, int *completed); -int LIBUSB_CALL libusb_handle_events_locked(libusb_context *ctx, - struct timeval *tv); -int LIBUSB_CALL libusb_pollfds_handle_timeouts(libusb_context *ctx); -int LIBUSB_CALL libusb_get_next_timeout(libusb_context *ctx, - struct timeval *tv); - -/** \ingroup poll - * File descriptor for polling - */ -struct libusb_pollfd { - /** Numeric file descriptor */ - int fd; - - /** Event flags to poll for from . POLLIN indicates that you - * should monitor this file descriptor for becoming ready to read from, - * and POLLOUT indicates that you should monitor this file descriptor for - * nonblocking write readiness. */ - short events; -}; - -/** \ingroup poll - * Callback function, invoked when a new file descriptor should be added - * to the set of file descriptors monitored for events. - * \param fd the new file descriptor - * \param events events to monitor for, see \ref libusb_pollfd for a - * description - * \param user_data User data pointer specified in - * libusb_set_pollfd_notifiers() call - * \see libusb_set_pollfd_notifiers() - */ -typedef void (LIBUSB_CALL *libusb_pollfd_added_cb)(int fd, short events, - void *user_data); - -/** \ingroup poll - * Callback function, invoked when a file descriptor should be removed from - * the set of file descriptors being monitored for events. After returning - * from this callback, do not use that file descriptor again. - * \param fd the file descriptor to stop monitoring - * \param user_data User data pointer specified in - * libusb_set_pollfd_notifiers() call - * \see libusb_set_pollfd_notifiers() - */ -typedef void (LIBUSB_CALL *libusb_pollfd_removed_cb)(int fd, void *user_data); - -const struct libusb_pollfd ** LIBUSB_CALL libusb_get_pollfds( - libusb_context *ctx); -void LIBUSB_CALL libusb_set_pollfd_notifiers(libusb_context *ctx, - libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb, - void *user_data); - -#ifdef __cplusplus -} -#endif - -#endif From 1d07a79657f3501c807229d585a6021674b6b62a Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Fri, 10 Jan 2014 19:29:39 +0100 Subject: [PATCH 02/16] Add ps3eyedriver.h C API for easy use in other apps --- sdl/main.cpp | 162 ++++---------------------------- src/ps3eye.h | 0 src/ps3eyedriver.cpp | 216 +++++++++++++++++++++++++++++++++++++++++++ src/ps3eyedriver.h | 89 ++++++++++++++++++ 4 files changed, 325 insertions(+), 142 deletions(-) mode change 100755 => 100644 src/ps3eye.h create mode 100644 src/ps3eyedriver.cpp create mode 100644 src/ps3eyedriver.h diff --git a/sdl/main.cpp b/sdl/main.cpp index 486901e..297c97a 100644 --- a/sdl/main.cpp +++ b/sdl/main.cpp @@ -4,150 +4,32 @@ **/ #include -#include "ps3eye.h" -#include "yuv422rgba.h" - - -struct yuv422_buffer_t { - void update(const unsigned char *pixels, int stride, int width, int height) - { - size_t size = stride * height; - - if (this->size != size) { - this->pixels = (unsigned char *)realloc(this->pixels, size); - this->size = size; - } - - memcpy(this->pixels, pixels, size); - this->stride = stride; - this->width = width; - this->height = height; - } - - unsigned char *pixels; - size_t size; - - int stride; - int width; - int height; -}; - -struct yuv422_buffers_t { - yuv422_buffers_t(int count) - : current(0) - , count(count) - , buffers((yuv422_buffer_t *)calloc(sizeof(yuv422_buffer_t), count)) - { - } - ~yuv422_buffers_t() - { - for (int i=0; iinit(width, height, fps); - } - } - - bool - hasDevices() - { - return (devices.size() > 0); - } - - yuv422_buffers_t buffers; - std::vector devices; - ps3eye::PS3EYECam::PS3EYERef eye; - - bool running; - Uint32 last_ticks; - Uint32 last_frames; -}; - -int -ps3eye_cam_thread(void *user_data) -{ - ps3eye_context *ctx = (ps3eye_context *)user_data; - - ctx->eye->start(); - - printf("w: %d, h: %d\n", ctx->eye->getWidth(), ctx->eye->getHeight()); - - while (ctx->running) { - ps3eye::PS3EYECam::updateDevices(); - - if (ctx->eye->isNewFrame()) { - ctx->buffers.next()->update(ctx->eye->getLastFramePointer(), - ctx->eye->getRowBytes(), ctx->eye->getWidth(), - ctx->eye->getHeight()); - ctx->last_frames++; - } - - Uint32 now_ticks = SDL_GetTicks(); - if (now_ticks - ctx->last_ticks > 1000) { - printf("FPS: %.2f\n", 1000 * ctx->last_frames / (float(now_ticks - ctx->last_ticks))); - ctx->last_ticks = now_ticks; - ctx->last_frames = 0; - } - } +#include "ps3eyedriver.h" +#include "yuv422rgba.h" - return 0; -} +#define CAM_WIDTH 640 +#define CAM_HEIGHT 480 int main(int argc, char *argv[]) { - ps3eye_context ctx(640, 480, 60); + ps3eye_init(); - if (!ctx.hasDevices()) { - printf("No devices connected.\n"); - return 1; + if (ps3eye_count_connected() == 0) { + printf("No camera connected.\n"); + return 0; } - SDL_Thread *thread = SDL_CreateThread(ps3eye_cam_thread, (void *)&ctx); + ps3eye_t *eye = ps3eye_open(0, CAM_WIDTH, CAM_HEIGHT, 60); SDL_Init(SDL_INIT_VIDEO); - SDL_Surface *surface = SDL_SetVideoMode(ctx.eye->getWidth(), ctx.eye->getHeight(), 0, 0); + SDL_Surface *surface = SDL_SetVideoMode(CAM_WIDTH, CAM_HEIGHT, 0, 0); - unsigned char *rgba = (unsigned char *)malloc(ctx.eye->getWidth() * ctx.eye->getHeight() * 4); + unsigned char *rgba = (unsigned char *)malloc(CAM_WIDTH * CAM_HEIGHT * 4); SDL_Surface *rgba_surface = SDL_CreateRGBSurfaceFrom(rgba, - ctx.eye->getWidth(), ctx.eye->getHeight(), 32, - ctx.eye->getWidth() * 4, + CAM_WIDTH, CAM_HEIGHT, 32, CAM_WIDTH * 4, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); SDL_Event e; @@ -158,23 +40,19 @@ main(int argc, char *argv[]) } } - // TODO: proper thread signalling to wait for next available buffer - SDL_Delay(10); - yuv422_buffer_t *last = ctx.buffers.read(); + int stride = 0; + unsigned char *pixels = ps3eye_grab_frame(eye, &stride); + + yuv422_to_rgba(pixels, stride, rgba, CAM_WIDTH, CAM_HEIGHT); + // To just test raw read performance, use this: + //memcpy(rgba, pixels, stride * CAM_HEIGHT); - // TODO: Use OpenGL rendering instead of sw-based blitting, possibly - // decoding the yuv422 format directly in the fragment shader, or if - // we want to process the frame in the CPU, we could also have a - // separate thread for converting the pixel data (and an additional - // layer of buffering there) - yuv422_to_rgba(last->pixels, last->stride, rgba, last->width, last->height); - // TODO: Use RGB surface instead of RGBA surface SDL_BlitSurface(rgba_surface, NULL, surface, NULL); SDL_Flip(surface); } - ctx.running = true; - SDL_WaitThread(thread, NULL); + ps3eye_close(eye); + ps3eye_uninit(); return 0; } diff --git a/src/ps3eye.h b/src/ps3eye.h old mode 100755 new mode 100644 diff --git a/src/ps3eyedriver.cpp b/src/ps3eyedriver.cpp new file mode 100644 index 0000000..96ce4df --- /dev/null +++ b/src/ps3eyedriver.cpp @@ -0,0 +1,216 @@ +/** + * PS3EYEDriver C API Interface for use with PS Move API + * Copyright (c) 2014 Thomas Perl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + **/ + + +#include "ps3eyedriver.h" + +#include "ps3eye.h" + +#include + +struct yuv422_buffer_t { + void update(const unsigned char *pixels, int stride, int width, int height) + { + size_t size = stride * height; + + if (this->size != size) { + this->pixels = (unsigned char *)realloc(this->pixels, size); + this->size = size; + } + + memcpy(this->pixels, pixels, size); + this->stride = stride; + this->width = width; + this->height = height; + } + + unsigned char *pixels; + size_t size; + + int stride; + int width; + int height; +}; + +struct yuv422_buffers_t { + yuv422_buffers_t(int count) + : current(0) + , count(count) + , buffers((yuv422_buffer_t *)calloc(sizeof(yuv422_buffer_t), count)) + { + } + + ~yuv422_buffers_t() + { + for (int i=0; i devices; + std::list opened_devices; +}; + +static ps3eye_context_t * +ps3eye_context = NULL; + +struct ps3eye_t { + ps3eye_t(ps3eye::PS3EYECam::PS3EYERef eye, int width, int height, int fps) + : eye(eye) + , width(width) + , height(height) + , fps(fps) + , buffers(2) + { + eye->init(width, height, fps); + eye->start(); + ps3eye_context->opened_devices.push_back(this); + } + + ~ps3eye_t() + { + eye->stop(); + ps3eye_context->opened_devices.remove(this); + } + + // Per-device context + ps3eye::PS3EYECam::PS3EYERef eye; + int width; + int height; + int fps; + yuv422_buffers_t buffers; +}; + +void +ps3eye_init() +{ + if (!ps3eye_context) { + ps3eye_context = new ps3eye_context_t(); + } +} + +void +ps3eye_uninit() +{ + if (ps3eye_context) { + if (ps3eye_context->opened_devices.size() == 0) { + delete ps3eye_context; + ps3eye_context = NULL; + } else { + // ERROR: Cannot uninit, there are still handles open + } + } +} + +int +ps3eye_count_connected() +{ + if (!ps3eye_context) { + // Not init'ed + return 0; + } + + return ps3eye_context->devices.size(); +} + +ps3eye_t * +ps3eye_open(int id, int width, int height, int fps) +{ + if (!ps3eye_context) { + // Library not initialized + return NULL; + } + + if (id < 0 || id >= ps3eye_count_connected()) { + // No such device + return NULL; + } + + return new ps3eye_t(ps3eye_context->devices[id], width, height, fps); +} + +unsigned char * +ps3eye_grab_frame(ps3eye_t *eye, int *stride) +{ + if (!ps3eye_context) { + // No context available + return NULL; + } + + if (!eye) { + // Eye is not a valid handle + return NULL; + } + + while (!eye->eye->isNewFrame()) { + ps3eye::PS3EYECam::updateDevices(); + } + + yuv422_buffer_t *buffer = eye->buffers.next(); + buffer->update(eye->eye->getLastFramePointer(), + eye->eye->getRowBytes(), eye->eye->getWidth(), + eye->eye->getHeight()); + + if (stride) { + *stride = buffer->stride; + } + + return buffer->pixels; +} + +void +ps3eye_close(ps3eye_t *eye) +{ + delete eye; +} diff --git a/src/ps3eyedriver.h b/src/ps3eyedriver.h new file mode 100644 index 0000000..b2f722b --- /dev/null +++ b/src/ps3eyedriver.h @@ -0,0 +1,89 @@ +/** + * PS3EYEDriver C API Interface for use with PS Move API + * Copyright (c) 2014 Thomas Perl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + **/ + +#ifndef PS3EYEDRIVER_H +#define PS3EYEDRIVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ps3eye_t ps3eye_t; + +/** + * Initialize and enumerate connected cameras. + * Needs to be called once before all other API functions. + **/ +void +ps3eye_init(); + +/** + * De-initialize the library and free resources. + * If a pseye_t * object is still opened, nothing happens. + **/ +void +ps3eye_uninit(); + +/** + * Return the number of PSEye cameras connected via USB. + **/ +int +ps3eye_count_connected(); + +/** + * Open a PSEye camera device by id. + * The id is zero-based, and must be smaller than the count. + * width and height should usually be 640x480 or 320x240 + * fps is the target frame rate, 60 usually works fine here + **/ +ps3eye_t * +ps3eye_open(int id, int width, int height, int fps); + +/** + * Grab the next frame as YUV422 blob. + * A pointer to the buffer will be passed back. The buffer + * will only be valid until the next call, or until the eye + * is closed again with ps3eye_close(). If stride is not NULL, + * the byte offset between two consecutive lines in the frame + * will be written to *stride. + **/ +unsigned char * +ps3eye_grab_frame(ps3eye_t *eye, int *stride); + +/** + * Close a PSEye camera device and free allocated resources. + * To really close the library, you should also call ps3eye_uninit(). + **/ +void +ps3eye_close(ps3eye_t *eye); + +#ifdef __cplusplus +}; +#endif + +#endif /* PS3EYEDRIVER_H */ From f490040fbbf555d612f82a8ba908586996694c40 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Fri, 10 Jan 2014 20:36:51 +0100 Subject: [PATCH 03/16] On recent versions of OS X, std::shared_ptr already exists --- src/ps3eye.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/ps3eye.h b/src/ps3eye.h index 5068810..c59c240 100644 --- a/src/ps3eye.h +++ b/src/ps3eye.h @@ -5,21 +5,8 @@ #include #include -// define shared_ptr in std +#include -#if (defined( _MSC_VER ) && ( _MSC_VER >= 1600 )) || (__cplusplus >= 201103L) - #include -#else - #include - namespace std { - using std::tr1::shared_ptr; - using std::tr1::weak_ptr; - using std::tr1::static_pointer_cast; - using std::tr1::dynamic_pointer_cast; - using std::tr1::const_pointer_cast; - using std::tr1::enable_shared_from_this; - } -#endif #include "libusb.h" From 82a44754a0f5928f3d4efa3d7dedaf6168a1eeb0 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Fri, 10 Jan 2014 20:47:20 +0100 Subject: [PATCH 04/16] Add LICENSE information --- LICENSE | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ac8ed3a --- /dev/null +++ b/LICENSE @@ -0,0 +1,47 @@ + +License information for PS3EYEDriver +------------------------------------ + +The license of the PS3EYEDriver is MIT (for newly-written code) and GPLv2 for +all code derived from the Linux Kernel Driver (ov534) sources. + +In https://github.com/inspirit/PS3EYEDriver/pull/3, Eugene Zatepyakin writes: + + "all of my code is MIT licensed and to tell the truth i didnt check Linux + p3eye version license. as far as i know it was contributed to Linux by some + devs who decided to do it on their own..." + +The code is based on the Linux driver for the PSEye, which can be found here: + +http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/media/usb/gspca/ov534.c + +/* + * ov534-ov7xxx gspca driver + * + * Copyright (C) 2008 Antonio Ospite + * Copyright (C) 2008 Jim Paris + * Copyright (C) 2009 Jean-Francois Moine http://moinejf.free.fr + * + * Based on a prototype written by Mark Ferrell + * USB protocol reverse engineered by Jim Paris + * https://jim.sh/svn/jim/devl/playstation/ps3/eye/test/ + * + * PS3 Eye camera enhanced by Richard Kaswy http://kaswy.free.fr + * PS3 Eye camera - brightness, contrast, awb, agc, aec controls + * added by Max Thrun + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + From 39ee96f1b8b6071c211bb9e1cef79f08bc207ff0 Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Mon, 3 Feb 2014 14:03:12 +0100 Subject: [PATCH 05/16] fixed uninitialized is_streaming variable --- src/ps3eye.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index 6395e34..444df3f 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -723,6 +723,8 @@ PS3EYECam::PS3EYECam(libusb_device *device) usb_buf = NULL; handle_ = NULL; + is_streaming = false; + device_ = device; mgrPtr = USBMgr::instance(); urb = std::shared_ptr( new URBDesc() ); From dbf9c5829466b833564593c3c5f4107e8aacae0a Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Fri, 13 Feb 2015 16:16:26 -0500 Subject: [PATCH 06/16] Fixed compilation with MiNGW64. --- src/ps3eye.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index 444df3f..d2df512 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -778,7 +778,7 @@ bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate) ov534_reg_write(0xe7, 0x3a); ov534_reg_write(0xe0, 0x08); -#ifdef _MSC_VER +#if defined WIN32 || defined _WIN32 || defined WINCE Sleep(100); #else nanosleep((struct timespec[]){{0, 100000000}}, NULL); @@ -789,7 +789,7 @@ bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate) /* reset sensor */ sccb_reg_write(0x12, 0x80); -#ifdef _MSC_VER +#if defined WIN32 || defined _WIN32 || defined WINCE Sleep(10); #else nanosleep((struct timespec[]){{0, 10000000}}, NULL); @@ -1089,4 +1089,4 @@ void PS3EYECam::sccb_w_array(const uint8_t (*data)[2], int len) } } -} // namespace \ No newline at end of file +} // namespace From 71176678562ade98b2d87a25518e8c7a1d5d0631 Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Fri, 13 Feb 2015 17:08:17 -0500 Subject: [PATCH 07/16] Created set_parameters function in ps3eyedriver to expose set_ functions. --- src/ps3eyedriver.cpp | 30 ++++++++++++++++++++++++++++++ src/ps3eyedriver.h | 12 ++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/ps3eyedriver.cpp b/src/ps3eyedriver.cpp index 96ce4df..5181c75 100644 --- a/src/ps3eyedriver.cpp +++ b/src/ps3eyedriver.cpp @@ -214,3 +214,33 @@ ps3eye_close(ps3eye_t *eye) { delete eye; } + +int +ps3eye_set_parameters(ps3eye_t *eye, bool autogain, bool awb, uint8_t gain, uint8_t exposure, + uint8_t contrast, uint8_t brightness) +{ + + int err = 0; + if (!ps3eye_context) { + return -1; + } + if (!eye) { + return -1; + } + + eye->eye->setAutogain(autogain); + eye->eye->setAutoWhiteBalance(awb); + eye->eye->setExposure(exposure); + //For the remaining, the values passed in do not seem to work well, so ignore. + //eye->eye->setGain(gain); + //eye->eye->setSharpness(sharpness); + //eye->eye->setContrast(contrast); + //eye->eye->setBrightness(brightness); + //eye->eye->setHue(hue); + //eye->eye->setRedBalance(redblc); + //eye->eye->setBlueBalance(blueblc); + //eye->eye->setFlip(flip_h, flip_v); + //ps3eye::PS3EYECam::updateDevices(); + + return err; +} \ No newline at end of file diff --git a/src/ps3eyedriver.h b/src/ps3eyedriver.h index b2f722b..6ccc5c3 100644 --- a/src/ps3eyedriver.h +++ b/src/ps3eyedriver.h @@ -29,6 +29,9 @@ #ifndef PS3EYEDRIVER_H #define PS3EYEDRIVER_H +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -81,6 +84,15 @@ ps3eye_grab_frame(ps3eye_t *eye, int *stride); **/ void ps3eye_close(ps3eye_t *eye); + +int +ps3eye_set_parameters(ps3eye_t *eye, bool autogain, bool awb, uint8_t gain, uint8_t exposure, + uint8_t contrast, uint8_t brightness); +/** + * Sets all ps3eye parameters on device. + * gain: 0 <-> 63; exposure: 0 <-> 255; sharpness: 0 <-> 63; hue: 0 <-> 255; + * brightness: 0 <-> 255; contrast: 0 <-> 255; blueblc: 0 <-> 255; redblc: 0 <-> 255 + **/ #ifdef __cplusplus }; From 37af33007cbcebdeddc3d23f115d51070c1923fb Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Sun, 15 Feb 2015 23:44:01 -0500 Subject: [PATCH 08/16] Made ps3eyedriver paramter interface closer to CL Eye driver interface. --- src/ps3eye.h | 2 ++ src/ps3eyedriver.cpp | 67 +++++++++++++++++++++++++++++--------------- src/ps3eyedriver.h | 30 +++++++++++++------- 3 files changed, 66 insertions(+), 33 deletions(-) diff --git a/src/ps3eye.h b/src/ps3eye.h index c59c240..2b4ffb9 100644 --- a/src/ps3eye.h +++ b/src/ps3eye.h @@ -124,6 +124,8 @@ class PS3EYECam blueblc = val; sccb_reg_write(0x42, val); } + bool getFlipH() const { return flip_h; } + bool getFlipV() const { return flip_v; } void setFlip(bool horizontal = false, bool vertical = false) { flip_h = horizontal; flip_v = vertical; diff --git a/src/ps3eyedriver.cpp b/src/ps3eyedriver.cpp index 5181c75..d54fd64 100644 --- a/src/ps3eyedriver.cpp +++ b/src/ps3eyedriver.cpp @@ -216,31 +216,52 @@ ps3eye_close(ps3eye_t *eye) } int -ps3eye_set_parameters(ps3eye_t *eye, bool autogain, bool awb, uint8_t gain, uint8_t exposure, - uint8_t contrast, uint8_t brightness) +ps3eye_set_parameter(ps3eye_t *eye, ps3eye_parameter param, int value) { - - int err = 0; - if (!ps3eye_context) { - return -1; - } if (!eye) { return -1; } - - eye->eye->setAutogain(autogain); - eye->eye->setAutoWhiteBalance(awb); - eye->eye->setExposure(exposure); - //For the remaining, the values passed in do not seem to work well, so ignore. - //eye->eye->setGain(gain); - //eye->eye->setSharpness(sharpness); - //eye->eye->setContrast(contrast); - //eye->eye->setBrightness(brightness); - //eye->eye->setHue(hue); - //eye->eye->setRedBalance(redblc); - //eye->eye->setBlueBalance(blueblc); - //eye->eye->setFlip(flip_h, flip_v); - //ps3eye::PS3EYECam::updateDevices(); - - return err; + + switch (param) { + case PS3EYE_AUTO_GAIN: + eye->eye->setAutogain(value > 0); + break; + case PS3EYE_GAIN: + eye->eye->setGain(value); + break; + case PS3EYE_AUTO_WHITEBALANCE: + eye->eye->setAutoWhiteBalance(value > 0); + break; + case PS3EYE_EXPOSURE: + eye->eye->setExposure(value); + break; + case PS3EYE_SHARPNESS: + eye->eye->setSharpness(value); + break; + case PS3EYE_CONTRAST: + eye->eye->setContrast(value); + break; + case PS3EYE_BRIGHTNESS: + eye->eye->setBrightness(value); + break; + case PS3EYE_HUE: + eye->eye->setHue(value); + break; + case PS3EYE_REDBALANCE: + eye->eye->setRedBalance(value); + break; + case PS3EYE_BLUEBALANCE: + eye->eye->setBlueBalance(value); + break; + case PS3EYE_HFLIP: + eye->eye->setFlip(value > 0, eye->eye->getFlipV()); + break; + case PS3EYE_VFLIP: + eye->eye->setFlip(eye->eye->getFlipH(), value > 0); + break; + default: + break; + } + + return 0; } \ No newline at end of file diff --git a/src/ps3eyedriver.h b/src/ps3eyedriver.h index 6ccc5c3..9b16619 100644 --- a/src/ps3eyedriver.h +++ b/src/ps3eyedriver.h @@ -29,15 +29,27 @@ #ifndef PS3EYEDRIVER_H #define PS3EYEDRIVER_H -#include -#include - #ifdef __cplusplus extern "C" { #endif typedef struct ps3eye_t ps3eye_t; +typedef enum{ + PS3EYE_AUTO_GAIN, // [false, true] + PS3EYE_GAIN, // [0, 63] + PS3EYE_AUTO_WHITEBALANCE, // [false, true] + PS3EYE_EXPOSURE, // [0, 255] + PS3EYE_SHARPNESS, // [0 63] + PS3EYE_CONTRAST, // [0, 255] + PS3EYE_BRIGHTNESS, // [0, 255] + PS3EYE_HUE, // [0, 255] + PS3EYE_REDBALANCE, // [0, 255] + PS3EYE_BLUEBALANCE, // [0, 255] + PS3EYE_HFLIP, // [false, true] + PS3EYE_VFLIP // [false, true] +} ps3eye_parameter; + /** * Initialize and enumerate connected cameras. * Needs to be called once before all other API functions. @@ -84,15 +96,13 @@ ps3eye_grab_frame(ps3eye_t *eye, int *stride); **/ void ps3eye_close(ps3eye_t *eye); - -int -ps3eye_set_parameters(ps3eye_t *eye, bool autogain, bool awb, uint8_t gain, uint8_t exposure, - uint8_t contrast, uint8_t brightness); + /** - * Sets all ps3eye parameters on device. - * gain: 0 <-> 63; exposure: 0 <-> 255; sharpness: 0 <-> 63; hue: 0 <-> 255; - * brightness: 0 <-> 255; contrast: 0 <-> 255; blueblc: 0 <-> 255; redblc: 0 <-> 255 + * Set a ps3eye_parameter to a value. + * Returns -1 if there is an error, otherwise 0. **/ +int +ps3eye_set_parameter(ps3eye_t *eye, ps3eye_parameter param, int value); #ifdef __cplusplus }; From 8a5d3fd0e8aedeb72aa30fa48218dcee326cafea Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Fri, 27 Feb 2015 14:05:49 -0500 Subject: [PATCH 09/16] Compiles in VS2013 Fixes for GCC (homebrew and mingw). Fixes for GCC (homebrew and mingw). Fixes an issue in Win 8.1 where PS3Eye shows up as two devices, presumably camera and microphone. Microphone cannot be opened with libusb so check for lack of err in opening device. Fix debug macro. Add debug target to sdl example. SDL example closes camera when quiting. Added Green balance. Exposed paramter getters through ps3eyedriver --- sdl/main.cpp | 2 ++ sdl/makefile | 4 ++++ src/ps3eye.cpp | 26 ++++++++++++++++++-------- src/ps3eye.h | 11 +++++++++-- src/ps3eyedriver.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ src/ps3eyedriver.h | 8 ++++++++ 6 files changed, 82 insertions(+), 10 deletions(-) diff --git a/sdl/main.cpp b/sdl/main.cpp index 297c97a..f52c0fc 100644 --- a/sdl/main.cpp +++ b/sdl/main.cpp @@ -36,6 +36,8 @@ main(int argc, char *argv[]) while (true) { while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { + ps3eye_close(eye); + ps3eye_uninit(); return 0; } } diff --git a/sdl/makefile b/sdl/makefile index b62b062..2897f10 100644 --- a/sdl/makefile +++ b/sdl/makefile @@ -16,5 +16,9 @@ LIBS += $(shell sdl-config --libs) $(TARGET): $(OBJECTS) $(CXX) -o $@ $^ $(LIBS) +debug: CXXFLAGS += -DDEBUG -g +debug: CCFLAGS += -DDEBUG -g +debug: $(TARGET) + clean: rm -f $(TARGET) $(OBJECTS) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index d2df512..acf32df 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -3,6 +3,7 @@ #if defined WIN32 || defined _WIN32 || defined WINCE #include + #include #else #include #include @@ -399,6 +400,7 @@ int USBMgr::listDevices( std::vector& list ) { libusb_device *dev; libusb_device **devs; + libusb_device_handle *devhandle; int i = 0; int cnt; @@ -414,9 +416,15 @@ int USBMgr::listDevices( std::vector& list ) libusb_get_device_descriptor(dev, &desc); if(desc.idVendor == PS3EYECam::VENDOR_ID && desc.idProduct == PS3EYECam::PRODUCT_ID) { - list.push_back( PS3EYECam::PS3EYERef( new PS3EYECam(dev) ) ); - libusb_ref_device(dev); - cnt++; + int err = libusb_open(dev, &devhandle); + if (err == 0) + { + libusb_close(devhandle); + list.push_back( PS3EYECam::PS3EYERef( new PS3EYECam(dev) ) ); + libusb_ref_device(dev); + cnt++; + + } } } @@ -523,7 +531,7 @@ class URBDesc } else { - switch(last_packet_type) + switch(last_packet_type) // ignore warning. { case DISCARD_PACKET: if (packet_type == LAST_PACKET) { @@ -717,6 +725,7 @@ PS3EYECam::PS3EYECam(libusb_device *device) contrast = 37; blueblc = 128; redblc = 128; + greenblc = 128; flip_h = false; flip_v = false; @@ -778,10 +787,10 @@ bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate) ov534_reg_write(0xe7, 0x3a); ov534_reg_write(0xe0, 0x08); -#if defined WIN32 || defined _WIN32 || defined WINCE +#ifdef _MSC_VER Sleep(100); #else - nanosleep((struct timespec[]){{0, 100000000}}, NULL); + nanosleep((const struct timespec[]){{0, 100000000}}, NULL); #endif /* initialize the sensor address */ @@ -789,10 +798,10 @@ bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate) /* reset sensor */ sccb_reg_write(0x12, 0x80); -#if defined WIN32 || defined _WIN32 || defined WINCE +#ifdef _MSC_VER Sleep(10); #else - nanosleep((struct timespec[]){{0, 10000000}}, NULL); + nanosleep((const struct timespec[]){{0, 10000000}}, NULL); #endif /* probe the sensor */ @@ -836,6 +845,7 @@ void PS3EYECam::start() setSharpness(sharpness); setRedBalance(redblc); setBlueBalance(blueblc); + setGreenBalance(greenblc); setFlip(flip_h, flip_v); ov534_set_led(1); diff --git a/src/ps3eye.h b/src/ps3eye.h index 2b4ffb9..0799041 100644 --- a/src/ps3eye.h +++ b/src/ps3eye.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -17,9 +18,9 @@ #include #if defined(DEBUG) -#define debug(x...) fprintf(stdout,x) +#define debug(...) fprintf(stdout, __VA_ARGS__) #else -#define debug(x...) +#define debug(...) #endif @@ -124,6 +125,11 @@ class PS3EYECam blueblc = val; sccb_reg_write(0x42, val); } + uint8_t getGreenBalance() const { return greenblc; } + void setGreenBalance(uint8_t val) { + greenblc = val; + sccb_reg_write(0x44, val); + } bool getFlipH() const { return flip_h; } bool getFlipV() const { return flip_v; } void setFlip(bool horizontal = false, bool vertical = false) { @@ -178,6 +184,7 @@ class PS3EYECam uint8_t contrast; // 0 <-> 255 uint8_t blueblc; // 0 <-> 255 uint8_t redblc; // 0 <-> 255 + uint8_t greenblc; // 0 <-> 255 bool flip_h; bool flip_v; // diff --git a/src/ps3eyedriver.cpp b/src/ps3eyedriver.cpp index d54fd64..fec00d2 100644 --- a/src/ps3eyedriver.cpp +++ b/src/ps3eyedriver.cpp @@ -215,6 +215,44 @@ ps3eye_close(ps3eye_t *eye) delete eye; } +int +ps3eye_get_parameter(ps3eye_t *eye, ps3eye_parameter param) +{ + if (!eye) { + return -1; + } + switch (param) { + case PS3EYE_AUTO_GAIN: + return eye->eye->getAutogain(); + case PS3EYE_GAIN: + return eye->eye->getGain(); + case PS3EYE_AUTO_WHITEBALANCE: + return eye->eye->getAutoWhiteBalance(); + case PS3EYE_EXPOSURE: + return eye->eye->getExposure(); + case PS3EYE_SHARPNESS: + return eye->eye->getSharpness(); + case PS3EYE_CONTRAST: + return eye->eye->getContrast(); + case PS3EYE_BRIGHTNESS: + return eye->eye->getBrightness(); + case PS3EYE_HUE: + return eye->eye->getHue(); + case PS3EYE_REDBALANCE: + return eye->eye->getRedBalance(); + case PS3EYE_BLUEBALANCE: + return eye->eye->getBlueBalance(); + case PS3EYE_GREENBALANCE: + return eye->eye->getGreenBalance(); + case PS3EYE_HFLIP: + return eye->eye->getFlipH(); + case PS3EYE_VFLIP: + return eye->eye->getFlipV(); + default: + return -1; + } +} + int ps3eye_set_parameter(ps3eye_t *eye, ps3eye_parameter param, int value) { @@ -253,6 +291,9 @@ ps3eye_set_parameter(ps3eye_t *eye, ps3eye_parameter param, int value) case PS3EYE_BLUEBALANCE: eye->eye->setBlueBalance(value); break; + case PS3EYE_GREENBALANCE: + eye->eye->setGreenBalance(value); + break; case PS3EYE_HFLIP: eye->eye->setFlip(value > 0, eye->eye->getFlipV()); break; diff --git a/src/ps3eyedriver.h b/src/ps3eyedriver.h index 9b16619..19c612b 100644 --- a/src/ps3eyedriver.h +++ b/src/ps3eyedriver.h @@ -46,6 +46,7 @@ typedef enum{ PS3EYE_HUE, // [0, 255] PS3EYE_REDBALANCE, // [0, 255] PS3EYE_BLUEBALANCE, // [0, 255] + PS3EYE_GREENBALANCE, // [0, 255] PS3EYE_HFLIP, // [false, true] PS3EYE_VFLIP // [false, true] } ps3eye_parameter; @@ -104,6 +105,13 @@ ps3eye_close(ps3eye_t *eye); int ps3eye_set_parameter(ps3eye_t *eye, ps3eye_parameter param, int value); +/** +* Get a ps3eye_parameter value. +* Returns -1 if there is an error, otherwise returns the parameter value int. +**/ +int +ps3eye_get_parameter(ps3eye_t *eye, ps3eye_parameter param); + #ifdef __cplusplus }; #endif From db8890270d518881a768187d4c3b3a938aae01b3 Mon Sep 17 00:00:00 2001 From: brendanwalker Date: Tue, 15 Sep 2015 21:29:17 -0700 Subject: [PATCH 10/16] Switch usb event polling from using libusb_handle_events to libusb_handle_events_timeout_completed with a 50ms timeout. Internally libusb_handle_events calls libusb_handle_events_timeout_completed with a 60sec timeout. On rare occasions lib usb on Windows can stall waiting for an event to complete, resulting in a 60sec wait before the video stream recovers. Realistically, 50ms is more than long enough to wait. --- src/ps3eye.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index acf32df..9ba70f0 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -393,7 +393,11 @@ std::shared_ptr USBMgr::instance() bool USBMgr::handleEvents() { - return (libusb_handle_events(instance()->usb_context) == 0); + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 50 * 1000; // ms + + return (libusb_handle_events_timeout_completed(instance()->usb_context, &tv, NULL) == 0); } int USBMgr::listDevices( std::vector& list ) From c02c5853b84a7cec90d3e76f2def5160a59d6307 Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Wed, 6 Jan 2016 10:20:22 -0500 Subject: [PATCH 11/16] Added windows-only calls to timeBeginPeriod(1) at PS3EYECam::start() and to timeEndPeriod(1) at PS3EYECam::stop(). I hope this improves PS3EYEDriver->libusb performance in Windows. --- src/ps3eye.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index acf32df..7cdc568 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -855,6 +855,10 @@ void PS3EYECam::start() urb->start_transfers(handle_, frame_stride*frame_height); last_qued_frame_time = 0; is_streaming = true; + +#if defined WIN32 || defined _WIN32 || defined WINCE + timeBeginPeriod(1); +#endif } void PS3EYECam::stop() @@ -869,6 +873,10 @@ void PS3EYECam::stop() urb->close_transfers(); is_streaming = false; + +#if defined WIN32 || defined _WIN32 || defined WINCE + timeEndPeriod(1); +#endif } bool PS3EYECam::isNewFrame() const From 555f4d331d9c3df5c7eca0ebaa732725b61b1499 Mon Sep 17 00:00:00 2001 From: Brendan Walker Date: Wed, 6 Jan 2016 15:31:04 -0800 Subject: [PATCH 12/16] Adding needed header for call to timeBeginPeriod() --- src/ps3eye.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index 0acab9d..6eb5659 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -4,6 +4,7 @@ #if defined WIN32 || defined _WIN32 || defined WINCE #include #include + #include #else #include #include From 0d504e6ee80781f5ed5f70a2fc9bb12f709632b8 Mon Sep 17 00:00:00 2001 From: Ritesh Oedayrajsingh Varma Date: Wed, 20 Jan 2016 22:13:58 +0100 Subject: [PATCH 13/16] - Fixed W4 warnings --- src/ps3eye.cpp | 30 ++++++------------------------ src/ps3eyedriver.cpp | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 35 deletions(-) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index 8f27c57..d550d2a 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -280,7 +280,7 @@ enum gspca_packet_type { */ static uint8_t find_ep(struct libusb_device *device) { - const struct libusb_interface_descriptor *altsetting; + const struct libusb_interface_descriptor *altsetting = NULL; const struct libusb_endpoint_descriptor *ep; struct libusb_config_descriptor *config; int i; @@ -312,7 +312,7 @@ static uint8_t find_ep(struct libusb_device *device) return ep_addr; } -// timestapms +// timestamps // WIN and MAC only static int64_t getTickCount() { @@ -324,24 +324,6 @@ static int64_t getTickCount() return (int64_t)mach_absolute_time(); #endif } - -static double getTickFrequency() -{ -#if defined WIN32 || defined _WIN32 || defined WINCE - LARGE_INTEGER freq; - QueryPerformanceFrequency(&freq); - return (double)freq.QuadPart; -#else - static double freq = 0; - if( freq == 0 ) - { - mach_timebase_info_data_t sTimebaseInfo; - mach_timebase_info(&sTimebaseInfo); - freq = sTimebaseInfo.denom*1e9/sTimebaseInfo.numer; - } - return freq; -#endif -} // @@ -409,7 +391,7 @@ int USBMgr::listDevices( std::vector& list ) int i = 0; int cnt; - cnt = libusb_get_device_list(instance()->usb_context, &devs); + cnt = (int)libusb_get_device_list(instance()->usb_context, &devs); if (cnt < 0) { debug("Error Device scan\n"); @@ -450,8 +432,8 @@ class URBDesc { // we allocate max possible size // 16 frames - size_t stride = 640*2; - const size_t fsz = stride*480; + uint32_t stride = 640*2; + const uint32_t fsz = stride * 480; frame_buffer = (uint8_t*)malloc(fsz * 16 + 16384*2); frame_buffer_end = frame_buffer + fsz * 16; @@ -571,7 +553,7 @@ class URBDesc last_frame_time = (double)getTickCount(); frame_complete_ind = frame_work_ind; i = (frame_work_ind + 1) & 15; - frame_work_ind = i; + frame_work_ind = (uint8_t)i; frame_data_len = 0; //debug("frame completed %d\n", frame_complete_ind); } diff --git a/src/ps3eyedriver.cpp b/src/ps3eyedriver.cpp index fec00d2..045c28c 100644 --- a/src/ps3eyedriver.cpp +++ b/src/ps3eyedriver.cpp @@ -113,7 +113,7 @@ struct ps3eye_t { , fps(fps) , buffers(2) { - eye->init(width, height, fps); + eye->init(width, height, (uint8_t)fps); eye->start(); ps3eye_context->opened_devices.push_back(this); } @@ -161,7 +161,7 @@ ps3eye_count_connected() return 0; } - return ps3eye_context->devices.size(); + return (int)ps3eye_context->devices.size(); } ps3eye_t * @@ -265,34 +265,34 @@ ps3eye_set_parameter(ps3eye_t *eye, ps3eye_parameter param, int value) eye->eye->setAutogain(value > 0); break; case PS3EYE_GAIN: - eye->eye->setGain(value); + eye->eye->setGain((uint8_t)value); break; case PS3EYE_AUTO_WHITEBALANCE: eye->eye->setAutoWhiteBalance(value > 0); break; case PS3EYE_EXPOSURE: - eye->eye->setExposure(value); + eye->eye->setExposure((uint8_t)value); break; case PS3EYE_SHARPNESS: - eye->eye->setSharpness(value); + eye->eye->setSharpness((uint8_t)value); break; case PS3EYE_CONTRAST: - eye->eye->setContrast(value); + eye->eye->setContrast((uint8_t)value); break; case PS3EYE_BRIGHTNESS: - eye->eye->setBrightness(value); + eye->eye->setBrightness((uint8_t)value); break; case PS3EYE_HUE: - eye->eye->setHue(value); + eye->eye->setHue((uint8_t)value); break; case PS3EYE_REDBALANCE: - eye->eye->setRedBalance(value); + eye->eye->setRedBalance((uint8_t)value); break; case PS3EYE_BLUEBALANCE: - eye->eye->setBlueBalance(value); + eye->eye->setBlueBalance((uint8_t)value); break; case PS3EYE_GREENBALANCE: - eye->eye->setGreenBalance(value); + eye->eye->setGreenBalance((uint8_t)value); break; case PS3EYE_HFLIP: eye->eye->setFlip(value > 0, eye->eye->getFlipV()); From 20d727b56de074f9c883aa89b2368cd5c45977bc Mon Sep 17 00:00:00 2001 From: Ritesh Oedayrajsingh Varma Date: Sat, 23 Jan 2016 14:37:56 +0100 Subject: [PATCH 14/16] Added platform agnostic threading primitives, implemented on top of platform-specific primites; Win32 API on windows, pthreads for everything else. Optimized PS3EyeDriver performance - Increased the number of concurrent USB transfers active from 2 to 8. I've tested this on three different machines (low, medium, high spec), and this seems to hit the sweet spot for raw USB performance (max throughput) - Removed timeBeginPeriod/timeEndPeriod calls (they were not needed) - Each camera now gets its own libusb_context. This is needed to make sure that libusb_handle_event calls will only affect a single device. - Each camera is now updated in its own thread (libusb_handle_event); clients no longer need to call handleEvents (it has been removed) - There is now a per-camera frame queue. Internally it's implemented as a ring buffer; the camera update thread (producer) writes to *head*, the client (consumer) reads from *tail*. If no data is available, the consumer will block and if the buffer is full, the producer (camera update thread) will block. API changes - PS3EYECam::isNewFrame() has been removed - PS3EYECam::getLastFramePointer has been renamed to PS3EYECam::getFrame. This function blocks if no frame is available and now returns a malloc'd copy of the frame; the client is responsible for free'ing the buffer when done with it. - PS3EYECam::getDevices has been removed; use PS3EYECam::getDeviceCount and PS3EYECam::createDevice instead PS3EYEDriver C-wrapper changes (PS3EyeDriver.cpp) - Removed the yuv buffer management; there is no longer a need for it since the ps3eye driver now always returns a single frame - yuv422_buffer_t is now a simple wrapper around the buffer returned by PS3EYECam::getFrame. It's purely responsible for making sure the frame is free'd when it's no longer needed With this, it's now possible to update the PS3Eye at 60 FPS, independent of the number of cameras in the system. The only limiting factor should be how fast your client is; if it can't handle 60 FPS, the camera/usb performance will also degrade. --- src/ps3eye.cpp | 686 +++++++++++++++++++++++++++++++------------ src/ps3eye.h | 20 +- src/ps3eyedriver.cpp | 75 ++--- 3 files changed, 537 insertions(+), 244 deletions(-) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index d550d2a..2b03a52 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -1,21 +1,210 @@ - #include "ps3eye.h" +#define PLATFORM_WIN32 1 +#define PLATFORM_LINUX 2 +#define PLATFORM_OSX 3 + #if defined WIN32 || defined _WIN32 || defined WINCE + #define CURRENT_PLATFORM PLATFORM_WIN32 #include #include - #include #else #include #include + #include + #include + #if defined __MACH__ && defined __APPLE__ + #define CURRENT_PLATFORM PLATFORM_OSX #include #include + #else + #define CURRENT_PLATFORM PLATFORM_LINUX #endif #endif +#define PLATFORM_IS_WIN32 (CURRENT_PLATFORM == PLATFORM_WIN32) +#define PLATFORM_IS_LINUX (CURRENT_PLATFORM == PLATFORM_LINUX) +#define PLATFORM_IS_OSX (CURRENT_PLATFORM == PLATFORM_OSX) + namespace ps3eye { +class Mutex +{ +public: + friend class ConditionVariable; + + struct AutoLock + { + AutoLock(Mutex& mutex) : + mutex(mutex) + { + mutex.Lock(); + } + + ~AutoLock() + { + mutex.Unlock(); + } + + Mutex& mutex; + }; + +#if PLATFORM_IS_WIN32 + Mutex() { InitializeCriticalSection(&mutex); } + ~Mutex() { DeleteCriticalSection(&mutex); } + + void Lock() { EnterCriticalSection(&mutex); } + void Unlock() { LeaveCriticalSection(&mutex); } +#else + Mutex() { pthread_mutex_init(&mutex, NULL); } + ~Mutex() { pthread_mutex_destroy(&mutex); } + + void Lock() { pthread_mutex_lock(&mutex); } + void Unlock() { pthread_mutex_unlock(&mutex); } +#endif + +private: + +#if PLATFORM_IS_WIN32 + CRITICAL_SECTION mutex; +#else + pthread_mutex_t mutex; +#endif +}; + +class ConditionVariable +{ +public: + +#if PLATFORM_IS_WIN32 + ConditionVariable(Mutex& mutex) : mutex(mutex) { InitializeConditionVariable(&cond); } + + void Wait() { SleepConditionVariableCS(&cond, &mutex.mutex, INFINITE); } + void NotifyOne() { WakeConditionVariable(&cond); } +#else + ConditionVariable(Mutex& mutex) : mutex(mutex) { pthread_cond_init(&cond, NULL); } + + void Wait() { pthread_cond_wait(&cond, &mutex.mutex); } + void NotifyOne() { pthread_cond_signal(&cond); } +#endif + +private: + Mutex& mutex; + +#if PLATFORM_IS_WIN32 + CONDITION_VARIABLE cond; +#else + pthread_cond_t cond; +#endif +}; + +class Semaphore +{ +public: + Semaphore() : + sema(NULL) + { + } + + ~Semaphore() + { + Destroy(); + } + +#if PLATFORM_IS_WIN32 + void Init(int init_count, int max_count) { sema = CreateSemaphore(NULL, init_count, max_count, NULL); } + void Destroy() { CloseHandle(sema); } + + void Acquire() { WaitForSingleObject(sema, INFINITE); } + void Release() { ReleaseSemaphore(sema, 1, NULL); } +#else + void Init(int init_count, int max_count) { sem_init(&sema, 0, init_count); } + void Destroy() { sem_destroy(&sema); } + + void Acquire() { sem_wait(&sema); } + void Release() { sem_post(&sema); } +#endif + +private: +#if PLATFORM_IS_WIN32 + HANDLE sema; +#else + sem_t sema; +#endif +}; + +class Thread +{ +public: + typedef int (*ThreadFunc)(void* user_data); + +#if PLATFORM_IS_WIN32 + Thread() : + thread_func(NULL), + thread(NULL) + { + } + + void Run(ThreadFunc func, void* user_data) + { + thread_func = func; + this->user_data = user_data; + thread = CreateThread(NULL, 0, &ThreadStub, this, 0, NULL); + } + + void Join() + { + WaitForSingleObject(thread, INFINITE); + CloseHandle(thread); + thread = NULL; + } + + static DWORD __stdcall ThreadStub(void* user_data) + { + Thread* thread = (Thread*)user_data; + return thread->thread_func(thread->user_data); + } +#else + Thread() : + thread_func(NULL) + { + } + + void Run(ThreadFunc func, void* user_data) + { + thread_func = func; + this->user_data = user_data; + pthread_create(&thread, NULL, &ThreadStub, this); + } + + void Join() + { + pthread_join(thread, NULL); + } + + static void* ThreadStub(void* user_data) + { + Thread* thread = (Thread*)user_data; + return (void*)thread->thread_func(thread->user_data); + } +#endif + +private: + ThreadFunc thread_func; + void* user_data; + +#if PLATFORM_IS_WIN32 + HANDLE thread; +#else + pthread_t thread; + // TODO +#endif +}; + +#define TRANSFER_SIZE 16384 +#define NUM_TRANSFERS 8 + #define OV534_REG_ADDRESS 0xf1 /* sensor address */ #define OV534_REG_SUBADDR 0xf2 #define OV534_REG_WRITE 0xf3 @@ -312,49 +501,36 @@ static uint8_t find_ep(struct libusb_device *device) return ep_addr; } -// timestamps -// WIN and MAC only -static int64_t getTickCount() -{ -#if defined WIN32 || defined _WIN32 || defined WINCE - LARGE_INTEGER counter; - QueryPerformanceCounter( &counter ); - return (int64_t)counter.QuadPart; -#else - return (int64_t)mach_absolute_time(); -#endif -} -// - - const uint16_t PS3EYECam::VENDOR_ID = 0x1415; const uint16_t PS3EYECam::PRODUCT_ID = 0x2000; class USBMgr { public: - USBMgr(); - ~USBMgr(); + ~USBMgr(); - static std::shared_ptr instance(); - static libusb_context* usbContext() { return instance()->usb_context; } - static int listDevices(std::vector& list); - static bool handleEvents(); + static std::shared_ptr instance(); + uint32_t getDeviceCount(bool force_refresh); + PS3EYECam::PS3EYERef createDevice(uint32_t index); static std::shared_ptr sInstance; - static int sTotalDevices; + int total_devices; + bool devices_enumerated; private: - libusb_context* usb_context; + USBMgr(); USBMgr(const USBMgr&); void operator=(const USBMgr&); + + libusb_context* usb_context; }; std::shared_ptr USBMgr::sInstance; -int USBMgr::sTotalDevices = 0; -USBMgr::USBMgr() +USBMgr::USBMgr() : + total_devices(0), + devices_enumerated(false) { libusb_init(&usb_context); libusb_set_debug(usb_context, 1); @@ -374,148 +550,324 @@ std::shared_ptr USBMgr::instance() return sInstance; } -bool USBMgr::handleEvents() +uint32_t USBMgr::getDeviceCount(bool force_refresh) { - struct timeval tv; - tv.tv_sec = 0; - tv.tv_usec = 50 * 1000; // ms + if (devices_enumerated && !force_refresh) + return total_devices; + + libusb_device *dev; + libusb_device **devs; + libusb_device_handle *devhandle; + + if (libusb_get_device_list(instance()->usb_context, &devs) < 0) { + debug("Error Device scan\n"); + } - return (libusb_handle_events_timeout_completed(instance()->usb_context, &tv, NULL) == 0); + int device_count = 0; + int index = 0; + while ((dev = devs[index++]) != NULL) + { + struct libusb_device_descriptor desc; + libusb_get_device_descriptor(dev, &desc); + if (desc.idVendor == PS3EYECam::VENDOR_ID && desc.idProduct == PS3EYECam::PRODUCT_ID) + { + int err = libusb_open(dev, &devhandle); + if (err == 0) + { + libusb_close(devhandle); + device_count++; + } + } + } + + libusb_free_device_list(devs, 1); + + total_devices = device_count; + devices_enumerated = true; + + return device_count; } -int USBMgr::listDevices( std::vector& list ) +PS3EYECam::PS3EYERef USBMgr::createDevice(uint32_t index) { - libusb_device *dev; - libusb_device **devs; - libusb_device_handle *devhandle; - int i = 0; - int cnt; + PS3EYECam::PS3EYERef camera; - cnt = (int)libusb_get_device_list(instance()->usb_context, &devs); + // Create a context specific to the device we're about to open. + // This ensures that the libusb event loop will only affect this specific device + libusb_context* device_context; + libusb_init(&device_context); + libusb_set_debug(device_context, 0); - if (cnt < 0) { - debug("Error Device scan\n"); + libusb_device *dev; + libusb_device **devs; + libusb_device_handle *devhandle; + + // Enumerate the devices. Note that we use the device specific context here, because libusb_device internally keeps a handle to the context it was enumerated from. + if (libusb_get_device_list(device_context, &devs) < 0) { + debug("Error Device scan\n"); } - cnt = 0; - while ((dev = devs[i++]) != NULL) - { - struct libusb_device_descriptor desc; + uint32_t cur_device = 0; + int cur_index = 0; + while ((dev = devs[cur_index++]) != NULL) + { + struct libusb_device_descriptor desc; libusb_get_device_descriptor(dev, &desc); - if(desc.idVendor == PS3EYECam::VENDOR_ID && desc.idProduct == PS3EYECam::PRODUCT_ID) + if (desc.idVendor == PS3EYECam::VENDOR_ID && desc.idProduct == PS3EYECam::PRODUCT_ID) { - int err = libusb_open(dev, &devhandle); - if (err == 0) - { - libusb_close(devhandle); - list.push_back( PS3EYECam::PS3EYERef( new PS3EYECam(dev) ) ); - libusb_ref_device(dev); - cnt++; - - } + int err = libusb_open(dev, &devhandle); + if (err == 0) + { + libusb_close(devhandle); + + if (cur_device == index) + { + // Create the camera. Note that we transfer ownership of the device specific context to the camera here. + camera = PS3EYECam::PS3EYERef(new PS3EYECam(device_context, dev)); + libusb_ref_device(dev); + break; + } + else + { + cur_device++; + } + } } - } + } + + libusb_free_device_list(devs, 1); - libusb_free_device_list(devs, 1); + // If no camera matching the specified index was found, we need to destroy the device specific context here. + if (camera == NULL) + { + libusb_exit(device_context); + } - return cnt; + return camera; } -// URBDesc +static void LIBUSB_CALL transfer_completed_callback(struct libusb_transfer *xfr); + +class FrameQueue +{ +public: + FrameQueue(uint32_t frame_size, uint32_t num_frames) : + frame_size (frame_size), + num_frames (num_frames), + frame_buffer ((uint8_t*)malloc(frame_size * num_frames)), + head (0), + tail (0), + available (0), + overflow_condition (mutex), + empty_condition (mutex) + { + } + + ~FrameQueue() + { + free(frame_buffer); + } + + uint8_t* GetFrameBufferStart() + { + return frame_buffer; + } + + uint8_t* Enqueue() + { + uint8_t* new_frame = NULL; + + Mutex::AutoLock lock(mutex); + + // If the buffer is full, wait until there is room. + // Note that because the the producer is writing directly to the ring buffer, we can only ever be num_frames-1 ahead of the consumer, + // otherwise the producer could overwrite the frame the consumer is currently reading (in case of a slow consumer) + while (available >= num_frames-1) + { + overflow_condition.Wait(); + } + + // Note: we don't need to copy any data to the buffer since the URB packets are directly written to the frame buffer. + // We just need to update head and available count to signal to the consumer that a new frame is available + head = (head + 1) % num_frames; + available++; + + // Determine the next frame pointer that the producer should write to + new_frame = frame_buffer + head * frame_size; + + // Signal consumer that data became available + empty_condition.NotifyOne(); + + return new_frame; + } + + uint8_t* Dequeue() + { + uint8_t* new_frame = (uint8_t*)malloc(frame_size); + + Mutex::AutoLock lock(mutex); + + // If there is no data in the buffer, wait until data becomes available + while (available == 0) + { + empty_condition.Wait(); + } + + // Copy from internal buffer + uint8_t* source = frame_buffer + frame_size * tail; + memcpy(new_frame, source, frame_size); + + // Update tail and available count + tail = (tail + 1) % num_frames; + available--; + + // Signal producer that there's room in the queue + overflow_condition.NotifyOne(); + + return new_frame; + } + +private: + uint32_t frame_size; + uint32_t num_frames; -static void LIBUSB_CALL cb_xfr(struct libusb_transfer *xfr); + uint8_t* frame_buffer; + uint32_t head; + uint32_t tail; + uint32_t available; + + Mutex mutex; + ConditionVariable overflow_condition; + ConditionVariable empty_condition; +}; + +// URBDesc class URBDesc { public: - URBDesc() : num_transfers(0), last_packet_type(DISCARD_PACKET), last_pts(0), last_fid(0) + URBDesc(libusb_context* usb_context) : + usb_context (usb_context), + exit_signaled (false), + transfers_active (false), + last_packet_type (DISCARD_PACKET), + last_pts (0), + last_fid (0), + transfer_buffer (NULL), + cur_frame_start (NULL), + cur_frame_data_len (0), + frame_size (0), + frame_queue (NULL) { - // we allocate max possible size - // 16 frames - uint32_t stride = 640*2; - const uint32_t fsz = stride * 480; - frame_buffer = (uint8_t*)malloc(fsz * 16 + 16384*2); - frame_buffer_end = frame_buffer + fsz * 16; - - frame_data_start = frame_buffer; - frame_data_len = 0; - frame_complete_ind = 0; - frame_work_ind = 0; - frame_size = fsz; } + ~URBDesc() { debug("URBDesc destructor\n"); - if(num_transfers) + if(transfers_active) { close_transfers(); } - if(frame_buffer != NULL) - free(frame_buffer); - frame_buffer = NULL; } bool start_transfers(libusb_device_handle *handle, uint32_t curr_frame_size) { - struct libusb_transfer *xfr0,*xfr1; - uint8_t* buff, *buff1; - uint8_t ep_addr; - int bsize = 16384; - + // Initialize the frame queue frame_size = curr_frame_size; + frame_queue = new FrameQueue(frame_size, 16); - // bulk transfers - xfr0 = libusb_alloc_transfer(0); - xfr1 = libusb_alloc_transfer(0); - - buff = frame_buffer_end; - buff1 = buff + bsize; - memset(frame_buffer_end, 0, bsize*2); - - xfr[0] = xfr0; - xfr[1] = xfr1; + // Initialize the current frame pointer to the start of the buffer; it will be updated as frames are completed and pushed onto the frame queue + cur_frame_start = frame_queue->GetFrameBufferStart(); + cur_frame_data_len = 0; - ep_addr = find_ep(libusb_get_device(handle)); - //debug("found ep: %d\n", ep_addr); + // Create the semaphore used to wait for all transfers to finish when shutting down + active_transfer_sema.Init(NUM_TRANSFERS, NUM_TRANSFERS); - libusb_clear_halt(handle, ep_addr); + // Find the bulk transfer endpoint + uint8_t bulk_endpoint = find_ep(libusb_get_device(handle)); + libusb_clear_halt(handle, bulk_endpoint); - libusb_fill_bulk_transfer(xfr0, handle, ep_addr, buff, bsize, cb_xfr, reinterpret_cast(this), 0); - libusb_fill_bulk_transfer(xfr1, handle, ep_addr, buff1, bsize, cb_xfr, reinterpret_cast(this), 0); + // Allocate the transfer buffer + transfer_buffer = (uint8_t*)malloc(TRANSFER_SIZE * NUM_TRANSFERS); + memset(transfer_buffer, 0, TRANSFER_SIZE * NUM_TRANSFERS); - int res = libusb_submit_transfer(xfr0); - res |= libusb_submit_transfer(xfr1); + int res = 0; + for (int index = 0; index < NUM_TRANSFERS; ++index) + { + // Create & submit the transfer + xfr[index] = libusb_alloc_transfer(0); + libusb_fill_bulk_transfer(xfr[index], handle, bulk_endpoint, transfer_buffer + index * TRANSFER_SIZE, TRANSFER_SIZE, transfer_completed_callback, reinterpret_cast(this), 0); + + res |= libusb_submit_transfer(xfr[index]); + + // Acquire the semaphore (will return immediately since the semaphore is initialized with the max count) + active_transfer_sema.Acquire(); + } - num_transfers = 2; - frame_complete_ind = 0; - frame_work_ind = 0; + transfers_active = true; last_pts = 0; last_fid = 0; - last_frame_time = 0; + + start_transfer_thread(); return res == 0; } void close_transfers() { - libusb_cancel_transfer(xfr[0]); - libusb_cancel_transfer(xfr[1]); - while(num_transfers) - { - if( !USBMgr::instance()->handleEvents() ) - { - break; - } - } + if (!transfers_active) + return; + + // Cancel & wait for any pending transfers to finish + for (int index = 0; index < NUM_TRANSFERS; ++index) + { + libusb_cancel_transfer(xfr[index]); + active_transfer_sema.Acquire(); + } + + stop_transfer_thread(); + + free(transfer_buffer); + transfer_buffer = NULL; + + delete frame_queue; + frame_queue = NULL; + + active_transfer_sema.Destroy(); + transfers_active = false; + } + + void start_transfer_thread() + { + update_thread.Run(&transfer_thread_func, this); + } + + void stop_transfer_thread() + { + exit_signaled = true; + update_thread.Join(); + } + + static int transfer_thread_func(void* user_data) + { + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 50 * 1000; // ms + + URBDesc* desc = (URBDesc*)user_data; + while (!desc->exit_signaled) + { + libusb_handle_events_timeout_completed(desc->usb_context, &tv, NULL); + } + + return 0; } void frame_add(enum gspca_packet_type packet_type, const uint8_t *data, int len) { - int i; if (packet_type == FIRST_PACKET) { - frame_data_start = frame_buffer + frame_work_ind*frame_size; - frame_data_len = 0; + cur_frame_data_len = 0; } else { @@ -524,7 +876,7 @@ class URBDesc case DISCARD_PACKET: if (packet_type == LAST_PACKET) { last_packet_type = packet_type; - frame_data_len = 0; + cur_frame_data_len = 0; } return; case LAST_PACKET: @@ -537,24 +889,21 @@ class URBDesc /* append the packet to the frame buffer */ if (len > 0) { - if(frame_data_len + len > frame_size) + if(cur_frame_data_len + len > frame_size) { packet_type = DISCARD_PACKET; - frame_data_len = 0; + cur_frame_data_len = 0; } else { - memcpy(frame_data_start+frame_data_len, data, len); - frame_data_len += len; + memcpy(cur_frame_start+cur_frame_data_len, data, len); + cur_frame_data_len += len; } } last_packet_type = packet_type; if (packet_type == LAST_PACKET) { - last_frame_time = (double)getTickCount(); - frame_complete_ind = frame_work_ind; - i = (frame_work_ind + 1) & 15; - frame_work_ind = (uint8_t)i; - frame_data_len = 0; + cur_frame_data_len = 0; + cur_frame_start = frame_queue->Enqueue(); //debug("frame completed %d\n", frame_complete_ind); } } @@ -609,7 +958,7 @@ class URBDesc else if (data[1] & UVC_STREAM_EOF) { last_pts = 0; - if(frame_data_len + len - 12 != frame_size) + if(cur_frame_data_len + len - 12 != frame_size) { goto discard; } @@ -632,24 +981,25 @@ class URBDesc } while (remaining_len > 0); } - uint8_t num_transfers; - enum gspca_packet_type last_packet_type; - uint32_t last_pts; - uint16_t last_fid; - libusb_transfer *xfr[2]; - - uint8_t *frame_buffer; - uint8_t *frame_buffer_end; - uint8_t *frame_data_start; - uint32_t frame_data_len; - uint32_t frame_size; - uint8_t frame_complete_ind; - uint8_t frame_work_ind; - - double last_frame_time; + libusb_context* usb_context; + Thread update_thread; + bool exit_signaled; + + Semaphore active_transfer_sema; + bool transfers_active; + enum gspca_packet_type last_packet_type; + uint32_t last_pts; + uint16_t last_fid; + libusb_transfer* xfr[NUM_TRANSFERS]; + + uint8_t* transfer_buffer; + uint8_t* cur_frame_start; + uint32_t cur_frame_data_len; + uint32_t frame_size; + FrameQueue* frame_queue; }; -static void LIBUSB_CALL cb_xfr(struct libusb_transfer *xfr) +static void LIBUSB_CALL transfer_completed_callback(struct libusb_transfer *xfr) { URBDesc *urb = reinterpret_cast(xfr->user_data); enum libusb_transfer_status status = xfr->status; @@ -659,7 +1009,7 @@ static void LIBUSB_CALL cb_xfr(struct libusb_transfer *xfr) debug("transfer status %d\n", status); libusb_free_transfer(xfr); - urb->num_transfers--; + urb->active_transfer_sema.Release(); if(status != LIBUSB_TRANSFER_CANCELLED) { @@ -680,28 +1030,17 @@ static void LIBUSB_CALL cb_xfr(struct libusb_transfer *xfr) // PS3EYECam -bool PS3EYECam::devicesEnumerated = false; -std::vector PS3EYECam::devices; - -const std::vector& PS3EYECam::getDevices( bool forceRefresh ) +uint32_t PS3EYECam::getDeviceCount(bool forceRefresh) { - if( devicesEnumerated && ( ! forceRefresh ) ) - return devices; - - devices.clear(); - - USBMgr::instance()->sTotalDevices = USBMgr::instance()->listDevices(devices); - - devicesEnumerated = true; - return devices; + return USBMgr::instance()->getDeviceCount(forceRefresh); } -bool PS3EYECam::updateDevices() +PS3EYECam::PS3EYERef PS3EYECam::createDevice(uint32_t index) { - return USBMgr::instance()->handleEvents(); + return USBMgr::instance()->createDevice(index); } -PS3EYECam::PS3EYECam(libusb_device *device) +PS3EYECam::PS3EYECam(libusb_context* context, libusb_device *device) { // default controls autogain = false; @@ -723,15 +1062,18 @@ PS3EYECam::PS3EYECam(libusb_device *device) is_streaming = false; + device_context = context; device_ = device; mgrPtr = USBMgr::instance(); - urb = std::shared_ptr( new URBDesc() ); + urb = std::shared_ptr( new URBDesc(device_context) ); } PS3EYECam::~PS3EYECam() { stop(); release(); + libusb_exit(device_context); + device_context = NULL; } void PS3EYECam::release() @@ -841,12 +1183,7 @@ void PS3EYECam::start() // init and start urb urb->start_transfers(handle_, frame_stride*frame_height); - last_qued_frame_time = 0; is_streaming = true; - -#if defined WIN32 || defined _WIN32 || defined WINCE - timeBeginPeriod(1); -#endif } void PS3EYECam::stop() @@ -861,26 +1198,11 @@ void PS3EYECam::stop() urb->close_transfers(); is_streaming = false; - -#if defined WIN32 || defined _WIN32 || defined WINCE - timeEndPeriod(1); -#endif -} - -bool PS3EYECam::isNewFrame() const -{ - if(last_qued_frame_time < urb->last_frame_time) - { - return true; - } - return false; } -const uint8_t* PS3EYECam::getLastFramePointer() +uint8_t* PS3EYECam::getFrame() { - last_qued_frame_time = urb->last_frame_time; - const uint8_t* frame = const_cast(urb->frame_buffer + urb->frame_complete_ind * urb->frame_size); - return frame; + return urb->frame_queue->Dequeue(); } bool PS3EYECam::open_usb() diff --git a/src/ps3eye.h b/src/ps3eye.h index 0b2d064..c8fae28 100644 --- a/src/ps3eye.h +++ b/src/ps3eye.h @@ -34,7 +34,7 @@ class PS3EYECam static const uint16_t VENDOR_ID; static const uint16_t PRODUCT_ID; - PS3EYECam(libusb_device *device); + PS3EYECam(libusb_context* context, libusb_device *device); ~PS3EYECam(); bool init(uint32_t width = 0, uint32_t height = 0, uint8_t desiredFrameRate = 30); @@ -144,17 +144,19 @@ class PS3EYECam bool isStreaming() const { return is_streaming; } - bool isNewFrame() const; - const uint8_t* getLastFramePointer(); + + // Get a frame from the camera. Notes: + // - If there is no frame available, this function will block until one is + // - The returned frame is a malloc'd copy; you must free() it yourself when done with it + uint8_t* getFrame(); uint32_t getWidth() const { return frame_width; } uint32_t getHeight() const { return frame_height; } uint8_t getFrameRate() const { return frame_rate; } uint32_t getRowBytes() const { return frame_stride; } - // - static const std::vector& getDevices( bool forceRefresh = false ); - static bool updateDevices(); + static uint32_t getDeviceCount(bool forceRefresh = false); + static PS3EYERef createDevice(uint32_t index); private: PS3EYECam(const PS3EYECam&); @@ -192,17 +194,13 @@ class PS3EYECam std::shared_ptr mgrPtr; - static bool devicesEnumerated; - static std::vector devices; - uint32_t frame_width; uint32_t frame_height; uint32_t frame_stride; uint8_t frame_rate; - double last_qued_frame_time; - //usb stuff + libusb_context *device_context; libusb_device *device_; libusb_device_handle *handle_; uint8_t *usb_buf; diff --git a/src/ps3eyedriver.cpp b/src/ps3eyedriver.cpp index 045c28c..8307b3c 100644 --- a/src/ps3eyedriver.cpp +++ b/src/ps3eyedriver.cpp @@ -34,16 +34,27 @@ #include struct yuv422_buffer_t { - void update(const unsigned char *pixels, int stride, int width, int height) + yuv422_buffer_t() : + pixels (NULL), + size (0), + stride (0), + width (0), + height (0) + { + } + + void update(unsigned char *pixels, int stride, int width, int height) { + if (this->pixels != NULL) + { + free(this->pixels); + this->pixels = NULL; + } + size_t size = stride * height; + this->size = size; - if (this->size != size) { - this->pixels = (unsigned char *)realloc(this->pixels, size); - this->size = size; - } - - memcpy(this->pixels, pixels, size); + this->pixels = pixels; this->stride = stride; this->width = width; this->height = height; @@ -57,39 +68,8 @@ struct yuv422_buffer_t { int height; }; -struct yuv422_buffers_t { - yuv422_buffers_t(int count) - : current(0) - , count(count) - , buffers((yuv422_buffer_t *)calloc(sizeof(yuv422_buffer_t), count)) - { - } - - ~yuv422_buffers_t() - { - for (int i=0; i devices; std::list opened_devices; }; @@ -111,7 +90,6 @@ struct ps3eye_t { , width(width) , height(height) , fps(fps) - , buffers(2) { eye->init(width, height, (uint8_t)fps); eye->start(); @@ -129,7 +107,7 @@ struct ps3eye_t { int width; int height; int fps; - yuv422_buffers_t buffers; + yuv422_buffer_t frame_buffer; }; void @@ -161,7 +139,7 @@ ps3eye_count_connected() return 0; } - return (int)ps3eye_context->devices.size(); + return (int)ps3eye::PS3EYECam::getDeviceCount(); } ps3eye_t * @@ -177,7 +155,7 @@ ps3eye_open(int id, int width, int height, int fps) return NULL; } - return new ps3eye_t(ps3eye_context->devices[id], width, height, fps); + return new ps3eye_t(ps3eye::PS3EYECam::createDevice(id), width, height, fps); } unsigned char * @@ -193,20 +171,15 @@ ps3eye_grab_frame(ps3eye_t *eye, int *stride) return NULL; } - while (!eye->eye->isNewFrame()) { - ps3eye::PS3EYECam::updateDevices(); - } - - yuv422_buffer_t *buffer = eye->buffers.next(); - buffer->update(eye->eye->getLastFramePointer(), + eye->frame_buffer.update(eye->eye->getFrame(), eye->eye->getRowBytes(), eye->eye->getWidth(), eye->eye->getHeight()); if (stride) { - *stride = buffer->stride; + *stride = eye->frame_buffer.stride; } - return buffer->pixels; + return eye->frame_buffer.pixels; } void From bd5d7a353eaad8117421745470f5144cbc1f0908 Mon Sep 17 00:00:00 2001 From: Ritesh Oedayrajsingh Varma Date: Sat, 23 Jan 2016 19:04:55 +0100 Subject: [PATCH 15/16] - FrameQueue::Enqueue no longer blocks indefinitely when the buffer is full; if the buffer is full it will wait a max of 1 seconds for a slot to become available, after which it will overwrite the last frame. This is to prevent deadlocks/stalls when the consumer is not calling Frame::Dequeue (because it's setting camera parameters, for example), but IS caling (sync) libusb functions --- src/ps3eye.cpp | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index 2b03a52..b5dc550 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -76,16 +76,40 @@ class Mutex class ConditionVariable { public: + enum EWaitResult + { + Signaled, + TimedOut + }; #if PLATFORM_IS_WIN32 ConditionVariable(Mutex& mutex) : mutex(mutex) { InitializeConditionVariable(&cond); } - void Wait() { SleepConditionVariableCS(&cond, &mutex.mutex, INFINITE); } - void NotifyOne() { WakeConditionVariable(&cond); } + EWaitResult Wait(int timeout_ms = 0) { return SleepConditionVariableCS(&cond, &mutex.mutex, timeout_ms == 0 ? INFINITE : timeout_ms) != 0 ? Signaled : TimedOut; } + void NotifyOne() { WakeConditionVariable(&cond); } #else ConditionVariable(Mutex& mutex) : mutex(mutex) { pthread_cond_init(&cond, NULL); } - void Wait() { pthread_cond_wait(&cond, &mutex.mutex); } + EWaitResult Wait(int timeout_ms = 0) + { + if (timeout_ms == 0) + { + pthread_cond_wait(&cond, &mutex.mutex); + return Signaled; + } + else + { + struct timeval tv; + gettimeofday(&tv, NULL); + + struct timespec ts; + ts.tv_sec = tv.tv_sec; + ts.tv_nsec = tv.tv_usec * 1000; + ts.tv_nsec += timeout_ms * 1000000; + + return pthread_cond_timedwait(&cond, &mutex.mutex, &ts) == 0 ? Signaled : TimedOut; + } + } void NotifyOne() { pthread_cond_signal(&cond); } #endif @@ -684,7 +708,12 @@ class FrameQueue // otherwise the producer could overwrite the frame the consumer is currently reading (in case of a slow consumer) while (available >= num_frames-1) { - overflow_condition.Wait(); + // Wait a maximum of 1 second; if nobody has consumed a frame in that time, assume the consumer is busy with something else and overwrite the last frame + ConditionVariable::EWaitResult wait_res = overflow_condition.Wait(1000); + if (wait_res == ConditionVariable::TimedOut) + { + return frame_buffer + head * frame_size; + } } // Note: we don't need to copy any data to the buffer since the URB packets are directly written to the frame buffer. From e4c2aba4ba48d27d6b75073f32b20b2ef9296a9d Mon Sep 17 00:00:00 2001 From: Ritesh Oedayrajsingh Varma Date: Sun, 24 Jan 2016 14:30:35 +0100 Subject: [PATCH 16/16] - Exposed the size of the frame queue; it can now be set through PS3EYECam::init() - Default size of the frame queue is now 2 (instead of 16) to increase responsiveness - FrameQueue::Enqueue will no longer block if there is no room in the buffer (instead will overwrite the previous frame). This allows the service to degrade gracefully: if the consumer is not fast enough (< Camera FPS), it will miss frames, but if it is fast enough (>= Camera FPS), it will see everything. --- src/ps3eye.cpp | 33 ++++++++++++++------------------- src/ps3eye.h | 3 ++- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/ps3eye.cpp b/src/ps3eye.cpp index b5dc550..70fbad0 100644 --- a/src/ps3eye.cpp +++ b/src/ps3eye.cpp @@ -677,12 +677,11 @@ class FrameQueue public: FrameQueue(uint32_t frame_size, uint32_t num_frames) : frame_size (frame_size), - num_frames (num_frames), + num_frames (std::max(num_frames, 2u)), frame_buffer ((uint8_t*)malloc(frame_size * num_frames)), head (0), tail (0), available (0), - overflow_condition (mutex), empty_condition (mutex) { } @@ -703,17 +702,15 @@ class FrameQueue Mutex::AutoLock lock(mutex); - // If the buffer is full, wait until there is room. - // Note that because the the producer is writing directly to the ring buffer, we can only ever be num_frames-1 ahead of the consumer, + // Unlike traditional producer/consumer, we don't block the producer if the buffer is full (ie. the consumer is not reading data fast enough). + // Instead, if the buffer is full, we simply return the current frame pointer, causing the producer to overwrite the previous frame. + // This allows the service to degrade gracefully: if the consumer is not fast enough (< Camera FPS), it will miss frames, but if it is fast enough (>= Camera FPS), it will see everything. + // + // Note that because the the producer is writing directly to the ring buffer, we can only ever be a maximum of num_frames-1 ahead of the consumer, // otherwise the producer could overwrite the frame the consumer is currently reading (in case of a slow consumer) - while (available >= num_frames-1) + if (available >= num_frames - 1) { - // Wait a maximum of 1 second; if nobody has consumed a frame in that time, assume the consumer is busy with something else and overwrite the last frame - ConditionVariable::EWaitResult wait_res = overflow_condition.Wait(1000); - if (wait_res == ConditionVariable::TimedOut) - { - return frame_buffer + head * frame_size; - } + return frame_buffer + head * frame_size; } // Note: we don't need to copy any data to the buffer since the URB packets are directly written to the frame buffer. @@ -750,9 +747,6 @@ class FrameQueue tail = (tail + 1) % num_frames; available--; - // Signal producer that there's room in the queue - overflow_condition.NotifyOne(); - return new_frame; } @@ -766,7 +760,6 @@ class FrameQueue uint32_t available; Mutex mutex; - ConditionVariable overflow_condition; ConditionVariable empty_condition; }; @@ -799,11 +792,11 @@ class URBDesc } } - bool start_transfers(libusb_device_handle *handle, uint32_t curr_frame_size) + bool start_transfers(libusb_device_handle *handle, uint32_t curr_frame_size, uint32_t frame_queue_size) { // Initialize the frame queue frame_size = curr_frame_size; - frame_queue = new FrameQueue(frame_size, 16); + frame_queue = new FrameQueue(frame_size, frame_queue_size); // Initialize the current frame pointer to the start of the buffer; it will be updated as frames are completed and pushed onto the frame queue cur_frame_start = frame_queue->GetFrameBufferStart(); @@ -1112,7 +1105,7 @@ void PS3EYECam::release() if(usb_buf) free(usb_buf); } -bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate) +bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate, uint32_t frame_buffer_count) { uint16_t sensor_id; @@ -1140,6 +1133,8 @@ bool PS3EYECam::init(uint32_t width, uint32_t height, uint8_t desiredFrameRate) } frame_rate = ov534_set_frame_rate(desiredFrameRate, true); frame_stride = frame_width * 2; + frame_queue_size = frame_buffer_count; + // /* reset bridge */ @@ -1211,7 +1206,7 @@ void PS3EYECam::start() ov534_reg_write(0xe0, 0x00); // start stream // init and start urb - urb->start_transfers(handle_, frame_stride*frame_height); + urb->start_transfers(handle_, frame_stride*frame_height, frame_queue_size); is_streaming = true; } diff --git a/src/ps3eye.h b/src/ps3eye.h index c8fae28..e0e0b93 100644 --- a/src/ps3eye.h +++ b/src/ps3eye.h @@ -37,7 +37,7 @@ class PS3EYECam PS3EYECam(libusb_context* context, libusb_device *device); ~PS3EYECam(); - bool init(uint32_t width = 0, uint32_t height = 0, uint8_t desiredFrameRate = 30); + bool init(uint32_t width = 0, uint32_t height = 0, uint8_t desiredFrameRate = 30, uint32_t frame_buffer_count = 2); void start(); void stop(); @@ -198,6 +198,7 @@ class PS3EYECam uint32_t frame_height; uint32_t frame_stride; uint8_t frame_rate; + uint32_t frame_queue_size; //usb stuff libusb_context *device_context;