[Python-modules-commits] [python-libusb1] 01/03: Import python-libusb1_1.6.orig.tar.gz
Arnaud Fontaine
arnau at moszumanska.debian.org
Thu Nov 24 03:27:46 UTC 2016
This is an automated email from the git hooks/post-receive script.
arnau pushed a commit to branch master
in repository python-libusb1.
commit eb243787fabcca927571be41008bcfdf93e7ec3f
Author: Arnaud Fontaine <arnau at debian.org>
Date: Thu Nov 24 12:21:14 2016 +0900
Import python-libusb1_1.6.orig.tar.gz
---
PKG-INFO | 15 +-
README.rst | 13 +
PKG-INFO => libusb1.egg-info/PKG-INFO | 15 +-
libusb1.egg-info/SOURCES.txt | 18 +
libusb1.egg-info/dependency_links.txt | 1 +
libusb1.egg-info/top_level.txt | 2 +
libusb1.py | 1329 +--------------------------------
setup.py | 5 +-
usb1.py => usb1/__init__.py | 118 ++-
libusb1.py => usb1/libusb1.py | 14 +-
testUSB1.py => usb1/testUSB1.py | 1 -
11 files changed, 160 insertions(+), 1371 deletions(-)
diff --git a/PKG-INFO b/PKG-INFO
index 1c0e464..ae52ac1 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: libusb1
-Version: 1.5.3
+Version: 1.6
Summary: Pure-python wrapper for libusb-1.0
Home-page: http://github.com/vpelletier/python-libusb1
Author: Vincent Pelletier
@@ -364,6 +364,19 @@ Description: .. contents::
happen (in at least CPython 2.x) or raising type conversion errors (in at least
CPython 3.5.2).
+ Unreleased
+ ----------
+
+ Improve asynchronous transfer performance: (very) suboptimal code was used to
+ initialise asynchronous transfer buffer. As a consequence, usb1 now exposes
+ ``bytearrays`` where it used to expose ``bytes`` or ``str`` objects.
+
+ Deprecate libusb1 module import, which should not be needed since all (?)
+ needed constants were re-bound to usb1 module.
+
+ Move testUSB1 module inside usb1, to eventually only expose usb1 as top-level
+ module.
+
.. _CPython: http://www.python.org/
.. _pypy: http://pypy.org/
diff --git a/README.rst b/README.rst
index de70666..18b04a1 100644
--- a/README.rst
+++ b/README.rst
@@ -354,6 +354,19 @@ accidentally becomming a bound method, preventing the raise to actually
happen (in at least CPython 2.x) or raising type conversion errors (in at least
CPython 3.5.2).
+Unreleased
+----------
+
+Improve asynchronous transfer performance: (very) suboptimal code was used to
+initialise asynchronous transfer buffer. As a consequence, usb1 now exposes
+``bytearrays`` where it used to expose ``bytes`` or ``str`` objects.
+
+Deprecate libusb1 module import, which should not be needed since all (?)
+needed constants were re-bound to usb1 module.
+
+Move testUSB1 module inside usb1, to eventually only expose usb1 as top-level
+module.
+
.. _CPython: http://www.python.org/
.. _pypy: http://pypy.org/
diff --git a/PKG-INFO b/libusb1.egg-info/PKG-INFO
similarity index 95%
copy from PKG-INFO
copy to libusb1.egg-info/PKG-INFO
index 1c0e464..ae52ac1 100644
--- a/PKG-INFO
+++ b/libusb1.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: libusb1
-Version: 1.5.3
+Version: 1.6
Summary: Pure-python wrapper for libusb-1.0
Home-page: http://github.com/vpelletier/python-libusb1
Author: Vincent Pelletier
@@ -364,6 +364,19 @@ Description: .. contents::
happen (in at least CPython 2.x) or raising type conversion errors (in at least
CPython 3.5.2).
+ Unreleased
+ ----------
+
+ Improve asynchronous transfer performance: (very) suboptimal code was used to
+ initialise asynchronous transfer buffer. As a consequence, usb1 now exposes
+ ``bytearrays`` where it used to expose ``bytes`` or ``str`` objects.
+
+ Deprecate libusb1 module import, which should not be needed since all (?)
+ needed constants were re-bound to usb1 module.
+
+ Move testUSB1 module inside usb1, to eventually only expose usb1 as top-level
+ module.
+
.. _CPython: http://www.python.org/
.. _pypy: http://pypy.org/
diff --git a/libusb1.egg-info/SOURCES.txt b/libusb1.egg-info/SOURCES.txt
new file mode 100644
index 0000000..3316ba3
--- /dev/null
+++ b/libusb1.egg-info/SOURCES.txt
@@ -0,0 +1,18 @@
+COPYING
+COPYING.LESSER
+MANIFEST.in
+README.rst
+libusb1.py
+setup.py
+stdeb.cfg
+examples/README
+examples/hotplug.py
+examples/hotplug_advanced.py
+examples/listdevs.py
+libusb1.egg-info/PKG-INFO
+libusb1.egg-info/SOURCES.txt
+libusb1.egg-info/dependency_links.txt
+libusb1.egg-info/top_level.txt
+usb1/__init__.py
+usb1/libusb1.py
+usb1/testUSB1.py
\ No newline at end of file
diff --git a/libusb1.egg-info/dependency_links.txt b/libusb1.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/libusb1.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/libusb1.egg-info/top_level.txt b/libusb1.egg-info/top_level.txt
new file mode 100644
index 0000000..f04ed75
--- /dev/null
+++ b/libusb1.egg-info/top_level.txt
@@ -0,0 +1,2 @@
+libusb1
+usb1
diff --git a/libusb1.py b/libusb1.py
index 3921baf..c159867 100644
--- a/libusb1.py
+++ b/libusb1.py
@@ -1,1321 +1,8 @@
-# Copyright (C) 2010-2016 Vincent Pelletier <plr.vincent at gmail.com>
-#
-# 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
-
-# pylint: disable=invalid-name, too-few-public-methods, too-many-arguments
-# pylint: disable=missing-docstring
-"""
-Python ctypes bindings for libusb-1.0.
-
-You should not need to import this if you use usb1 module.
-
-Declares all constants, data structures and exported symbols.
-Locates and loads libusb1 dynamic library.
-"""
-from ctypes import Structure, LittleEndianStructure, \
- CFUNCTYPE, POINTER, addressof, sizeof, cast, \
- c_short, c_int, c_uint, c_size_t, c_long, \
- c_uint8, c_uint16, c_uint32, \
- c_void_p, c_char_p, py_object, string_at, pointer
-try:
- from ctypes import c_ssize_t
-except ImportError:
- from ctypes import c_longlong
- # c_ssize_t is new in Python 2.7
- if sizeof(c_int) == sizeof(c_size_t):
- c_ssize_t = c_int
- elif sizeof(c_long) == sizeof(c_size_t):
- c_ssize_t = c_long
- elif sizeof(c_longlong) == sizeof(c_size_t):
- c_ssize_t = c_longlong
- else:
- raise ValueError('Unsupported arch: sizeof(c_size_t) = %r' % (
- sizeof(c_size_t), ))
-import ctypes.util
-import platform
-import os.path
-import sys
-
-class Enum(object):
- def __init__(self, member_dict, scope_dict=None):
- if scope_dict is None:
- # Affect caller's locals, not this module's.
- # pylint: disable=protected-access
- scope_dict = sys._getframe(1).f_locals
- # pylint: enable=protected-access
- forward_dict = {}
- reverse_dict = {}
- next_value = 0
- for name, value in member_dict.items():
- if value is None:
- value = next_value
- next_value += 1
- forward_dict[name] = value
- if value in reverse_dict:
- raise ValueError('Multiple names for value %r: %r, %r' % (
- value, reverse_dict[value], name
- ))
- reverse_dict[value] = name
- scope_dict[name] = value
- self.forward_dict = forward_dict
- self.reverse_dict = reverse_dict
-
- def __call__(self, value):
- return self.reverse_dict[value]
-
- def get(self, value, default=None):
- return self.reverse_dict.get(value, default)
-
-_desc_type_dict = {
- 'b': c_uint8,
- 'bcd': c_uint16,
- 'bm': c_uint8,
- 'dw': c_uint32,
- 'i': c_uint8,
- 'id': c_uint16,
- 'w': c_uint16,
-}
-
-def newStruct(field_name_list):
- """
- Create a ctype structure class based on USB standard field naming
- (type-prefixed).
- """
- field_list = []
- append = field_list.append
- for field in field_name_list:
- type_prefix = ''
- for char in field:
- if not char.islower():
- break
- type_prefix += char
- append((field, _desc_type_dict[type_prefix]))
- result = type('some_descriptor', (LittleEndianStructure, ), {})
- # Not using type()'s 3rd param to initialise class, as per ctypes
- # documentation:
- # _pack_ must already be defined when _fields_ is assigned, otherwise it
- # will have no effect.
- # pylint: disable=protected-access
- result._pack_ = 1
- result._fields_ = field_list
- # pylint: enable=protected-access
- return result
-
-def newDescriptor(field_name_list):
- """
- Create a USB descriptor ctype structure, ie starting with bLength and
- bDescriptorType fields.
-
- See newStruct().
- """
- return newStruct(['bLength', 'bDescriptorType'] + list(field_name_list))
-
-class USBError(Exception):
- value = None
-
- def __init__(self, value=None):
- Exception.__init__(self)
- if value is not None:
- self.value = value
-
- def __str__(self):
- return '%s [%s]' % (libusb_error.get(self.value, 'Unknown error'),
- self.value)
-
-if sys.version_info[0] == 3:
- _string_item_to_int = lambda x: x
- _empty_char_p = bytes()
-else:
- _string_item_to_int = ord
- _empty_char_p = ''
-
-c_uchar = c_uint8
-c_int_p = POINTER(c_int)
-
-LITTLE_ENDIAN = sys.byteorder == 'little'
-
-class timeval(Structure):
- _fields_ = [('tv_sec', c_long),
- ('tv_usec', c_long)]
-timeval_p = POINTER(timeval)
-
-def _loadLibrary():
- system = platform.system()
- if system == 'Windows':
- dll_loader = ctypes.WinDLL
- suffix = '.dll'
- else:
- dll_loader = ctypes.CDLL
- suffix = system == 'Darwin' and '.dylib' or '.so'
- loader_kw = {}
- if sys.version_info[:2] >= (2, 6):
- loader_kw['use_errno'] = True
- loader_kw['use_last_error'] = True
- try:
- return dll_loader('libusb-1.0' + suffix, **loader_kw)
- except OSError:
- libusb_path = None
- base_name = 'usb-1.0'
- if 'FreeBSD' in system:
- # libusb.so.2 on FreeBSD: load('libusb.so') would work fine, but...
- # libusb.so.2debian on Debian GNU/kFreeBSD: here it wouldn't work.
- # So use find_library instead.
- base_name = 'usb'
- elif system == 'Darwin':
- for libusb_path in (
- # macport standard path
- '/opt/local/lib/libusb-1.0.dylib',
- # fink standard path
- '/sw/lib/libusb-1.0.dylib',
- ):
- if os.path.exists(libusb_path):
- break
- else:
- libusb_path = None
- if libusb_path is None:
- libusb_path = ctypes.util.find_library(base_name)
- if libusb_path is None:
- raise
- return dll_loader(libusb_path, **loader_kw)
-
-libusb = _loadLibrary()
-
-# libusb.h
-def bswap16(x):
- return ((x & 0xff) << 8) | (x >> 8)
-
-if LITTLE_ENDIAN:
- def libusb_cpu_to_le16(x):
- return x
- def libusb_le16_to_cpu(x):
- return x
-else:
- libusb_cpu_to_le16 = bswap16
- libusb_le16_to_cpu = bswap16
-
-# standard USB stuff
-
-# Device and/or Interface Class codes
-libusb_class_code = Enum({
- # In the context of a 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,
- # Picture transfer protocol class
- 'LIBUSB_CLASS_PTP': 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
-})
-# pylint: disable=undefined-variable
-LIBUSB_CLASS_IMAGE = LIBUSB_CLASS_PTP
-# pylint: enable=undefined-variable
-
-# Descriptor types as defined by the USB specification.
-libusb_descriptor_type = Enum({
- # 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,
-})
-
-# Descriptor sizes per descriptor type
-LIBUSB_DT_DEVICE_SIZE = 18
-LIBUSB_DT_CONFIG_SIZE = 9
-LIBUSB_DT_INTERFACE_SIZE = 9
-LIBUSB_DT_ENDPOINT_SIZE = 7
-LIBUSB_DT_ENDPOINT_AUDIO_SIZE = 9 # Audio extension
-LIBUSB_DT_HUB_NONVAR_SIZE = 7
-
-LIBUSB_ENDPOINT_ADDRESS_MASK = 0x0f # in bEndpointAddress
-LIBUSB_ENDPOINT_DIR_MASK = 0x80
-# BBB
-USB_ENDPOINT_ADDRESS_MASK = LIBUSB_ENDPOINT_ADDRESS_MASK
-USB_ENDPOINT_DIR_MASK = LIBUSB_ENDPOINT_DIR_MASK
-
-# Endpoint direction. Values for bit 7 of the endpoint address scheme.
-libusb_endpoint_direction = Enum({
- # In: device-to-host
- 'LIBUSB_ENDPOINT_IN': 0x80,
- # Out: host-to-device
- 'LIBUSB_ENDPOINT_OUT': 0x00
-})
-
-LIBUSB_TRANSFER_TYPE_MASK = 0x03 # in bmAttributes
-
-# Endpoint transfer type. Values for bits 0:1 of the endpoint attributes field.
-libusb_transfer_type = Enum({
- # 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,
-})
-
-# Standard requests, as defined in table 9-3 of the USB2 specifications
-libusb_standard_request = Enum({
- # 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,
-})
-
-# Request type bits of the bmRequestType field in control transfers.
-libusb_request_type = Enum({
- # 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),
-})
-
-# BBB
-# pylint: disable=bad-whitespace,undefined-variable
-LIBUSB_TYPE_STANDARD = LIBUSB_REQUEST_TYPE_STANDARD
-LIBUSB_TYPE_CLASS = LIBUSB_REQUEST_TYPE_CLASS
-LIBUSB_TYPE_VENDOR = LIBUSB_REQUEST_TYPE_VENDOR
-LIBUSB_TYPE_RESERVED = LIBUSB_REQUEST_TYPE_RESERVED
-# pylint: enable=bad-whitespace,undefined-variable
-
-# Recipient bits of the bmRequestType field in control transfers. Values 4
-# through 31 are reserved.
-libusb_request_recipient = Enum({
- # Device
- 'LIBUSB_RECIPIENT_DEVICE': 0x00,
- # Interface
- 'LIBUSB_RECIPIENT_INTERFACE': 0x01,
- # Endpoint
- 'LIBUSB_RECIPIENT_ENDPOINT': 0x02,
- # Other
- 'LIBUSB_RECIPIENT_OTHER': 0x03,
-})
-
-LIBUSB_ISO_SYNC_TYPE_MASK = 0x0c
-
-# Synchronization type for isochronous endpoints. Values for bits 2:3 of the
-# bmAttributes field in libusb_endpoint_descriptor.
-libusb_iso_sync_type = Enum({
- # 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,
-})
-
-LIBUSB_ISO_USAGE_TYPE_MASK = 0x30
-
-# Usage type for isochronous endpoints. Values for bits 4:5 of the
-# bmAttributes field in libusb_endpoint_descriptor.
-libusb_iso_usage_type = Enum({
- # 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,
-})
-
-# A structure representing the standard USB device descriptor. This
-# descriptor is documented in section 9.6.1 of the USB 2.0 specification.
-# All multiple-byte fields are represented in host-endian format.
-class libusb_device_descriptor(Structure):
- _fields_ = [
- # Size of this descriptor (in bytes)
- ('bLength', c_uint8),
- # Descriptor type. Will have value LIBUSB_DT_DEVICE in this
- # context.
- ('bDescriptorType', c_uint8),
- # USB specification release number in binary-coded decimal. A
- # value of 0x0200 indicates USB 2.0, 0x0110 indicates USB 1.1,
- # etc.
- ('bcdUSB', c_uint16),
- # USB-IF class code for the device. See libusb_class_code.
- ('bDeviceClass', c_uint8),
- # USB-IF subclass code for the device, qualified by the
- # bDeviceClass value
- ('bDeviceSubClass', c_uint8),
- # USB-IF protocol code for the device, qualified by the
- # bDeviceClass and bDeviceSubClass values
- ('bDeviceProtocol', c_uint8),
- # Maximum packet size for endpoint 0
- ('bMaxPacketSize0', c_uint8),
- # USB-IF vendor ID
- ('idVendor', c_uint16),
- # USB-IF product ID
- ('idProduct', c_uint16),
- # Device release number in binary-coded decimal
- ('bcdDevice', c_uint16),
- # Index of string descriptor describing manufacturer
- ('iManufacturer', c_uint8),
- # Index of string descriptor describing product
- ('iProduct', c_uint8),
- # Index of string descriptor containing device serial number
- ('iSerialNumber', c_uint8),
- # Number of possible configurations
- ('bNumConfigurations', c_uint8)]
-libusb_device_descriptor_p = POINTER(libusb_device_descriptor)
-
-class libusb_endpoint_descriptor(Structure):
- _fields_ = [
- ('bLength', c_uint8),
- ('bDescriptorType', c_uint8),
- ('bEndpointAddress', c_uint8),
- ('bmAttributes', c_uint8),
- ('wMaxPacketSize', c_uint16),
- ('bInterval', c_uint8),
- ('bRefresh', c_uint8),
- ('bSynchAddress', c_uint8),
- ('extra', c_void_p),
- ('extra_length', c_int)]
-libusb_endpoint_descriptor_p = POINTER(libusb_endpoint_descriptor)
-
-class libusb_interface_descriptor(Structure):
- _fields_ = [
- ('bLength', c_uint8),
- ('bDescriptorType', c_uint8),
- ('bInterfaceNumber', c_uint8),
- ('bAlternateSetting', c_uint8),
- ('bNumEndpoints', c_uint8),
- ('bInterfaceClass', c_uint8),
- ('bInterfaceSubClass', c_uint8),
- ('bInterfaceProtocol', c_uint8),
- ('iInterface', c_uint8),
- ('endpoint', libusb_endpoint_descriptor_p),
- ('extra', c_void_p),
- ('extra_length', c_int)]
-libusb_interface_descriptor_p = POINTER(libusb_interface_descriptor)
-
-class libusb_interface(Structure):
- _fields_ = [('altsetting', libusb_interface_descriptor_p),
- ('num_altsetting', c_int)]
-libusb_interface_p = POINTER(libusb_interface)
-
-class libusb_config_descriptor(Structure):
- _fields_ = [
- ('bLength', c_uint8),
- ('bDescriptorType', c_uint8),
- ('wTotalLength', c_uint16),
- ('bNumInterfaces', c_uint8),
- ('bConfigurationValue', c_uint8),
- ('iConfiguration', c_uint8),
- ('bmAttributes', c_uint8),
- ('MaxPower', c_uint8),
- ('interface', libusb_interface_p),
- ('extra', c_void_p),
- ('extra_length', c_int)]
-libusb_config_descriptor_p = POINTER(libusb_config_descriptor)
-libusb_config_descriptor_p_p = POINTER(libusb_config_descriptor_p)
-
-class libusb_control_setup(Structure):
- _fields_ = [
- ('bmRequestType', c_uint8),
- ('bRequest', c_uint8),
- ('wValue', c_uint16),
- ('wIndex', c_uint16),
- ('wLength', c_uint16)]
-libusb_control_setup_p = POINTER(libusb_control_setup)
-
-LIBUSB_CONTROL_SETUP_SIZE = sizeof(libusb_control_setup)
-
-# Structure representing a libusb session. The concept of individual libusb
-# 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 libusb 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 libusb
-# 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.
-class libusb_context(Structure):
- pass
-libusb_context_p = POINTER(libusb_context)
-libusb_context_p_p = POINTER(libusb_context_p)
-
-# 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().
-class libusb_device(Structure):
- pass
-libusb_device_p = POINTER(libusb_device)
-libusb_device_p_p = POINTER(libusb_device_p)
-libusb_device_p_p_p = POINTER(libusb_device_p_p)
-
-# 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().
-class libusb_device_handle(Structure):
- pass
-libusb_device_handle_p = POINTER(libusb_device_handle)
-libusb_device_handle_p_p = POINTER(libusb_device_handle_p)
-
-class libusb_version(Structure):
- _fields_ = [
- ('major', c_uint16),
- ('minor', c_uint16),
- ('micro', c_uint16),
- ('nano', c_uint16),
- ('rc', c_char_p),
- ('describe', c_char_p),
- ]
-
-libusb_speed = Enum({
- # 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,
-})
-
-libusb_supported_speed = Enum({
- # Low speed operation supported (1.5MBit/s).
- 'LIBUSB_LOW_SPEED_OPERATION': 1,
- # Full speed operation supported (12MBit/s).
- 'LIBUSB_FULL_SPEED_OPERATION': 2,
- # High speed operation supported (480MBit/s).
- 'LIBUSB_HIGH_SPEED_OPERATION': 4,
- # Superspeed operation supported (5000MBit/s).
- 'LIBUSB_5GBPS_OPERATION': 8,
-})
-
-# Error codes. Most libusb functions return 0 on success or one of these
-# codes on failure.
-libusb_error = Enum({
- # 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,
- # Other error
- 'LIBUSB_ERROR_OTHER': -99,
-})
-
-# Transfer status codes
-libusb_transfer_status = Enum({
- # Transfer completed without error. Note that this does not indicate
- # that the entire amount of requested data was transferred.
- 'LIBUSB_TRANSFER_COMPLETED': 0,
- # Transfer failed
- 'LIBUSB_TRANSFER_ERROR': 1,
- # Transfer timed out
- 'LIBUSB_TRANSFER_TIMED_OUT': 2,
- # Transfer was cancelled
- 'LIBUSB_TRANSFER_CANCELLED': 3,
- # For bulk/interrupt endpoints: halt condition detected (endpoint
- # stalled). For control endpoints: control request not supported.
- 'LIBUSB_TRANSFER_STALL': 4,
- # Device was disconnected
- 'LIBUSB_TRANSFER_NO_DEVICE': 5,
- # Device sent more data than requested
- 'LIBUSB_TRANSFER_OVERFLOW': 6,
-})
-
-# libusb_transfer.flags values
-libusb_transfer_flags = Enum({
- # 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.
- 'LIBUSB_TRANSFER_ADD_ZERO_PACKET': 1 << 3,
-})
-
-# Isochronous packet descriptor.
-class libusb_iso_packet_descriptor(Structure):
- _fields_ = [('length', c_uint),
- ('actual_length', c_uint),
- ('status', c_int)] # enum libusb_transfer_status
-libusb_iso_packet_descriptor_p = POINTER(libusb_iso_packet_descriptor)
-
-class libusb_transfer(Structure):
- pass
-libusb_transfer_p = POINTER(libusb_transfer)
-
-libusb_transfer_cb_fn_p = CFUNCTYPE(None, libusb_transfer_p)
-
-_libusb_transfer_fields = [
- ('dev_handle', libusb_device_handle_p),
- ('flags', c_uint8),
- ('endpoint', c_uchar),
- ('type', c_uchar),
- ('timeout', c_uint),
- ('status', c_int), # enum libusb_transfer_status
- ('length', c_int),
- ('actual_length', c_int),
- ('callback', libusb_transfer_cb_fn_p),
- ('user_data', c_void_p),
- ('buffer', c_void_p),
- ('num_iso_packets', c_int),
- ('iso_packet_desc', libusb_iso_packet_descriptor)
-]
-if 'FreeBSD' in platform.system() and getattr(
- libusb, 'libusb_get_string_descriptor', None
- ) is None:
- # Old FreeBSD version has a slight ABI incompatibility.
- # Work around it unless libusb_get_string_descriptor is available, as it
- # is only available on fixed versions.
- assert _libusb_transfer_fields[2][0] == 'endpoint'
- _libusb_transfer_fields[2] = ('endpoint', c_uint32)
- assert _libusb_transfer_fields[11][0] == 'num_iso_packets'
- _libusb_transfer_fields.insert(11, ('os_priv', c_void_p))
-
-# pylint: disable=protected-access
-libusb_transfer._fields_ = _libusb_transfer_fields
-# pylint: enable=protected-access
-
-libusb_capability = Enum({
- # The libusb_has_capability() API is available.
- 'LIBUSB_CAP_HAS_CAPABILITY': 0x0000,
- # Hotplug support is available.
- 'LIBUSB_CAP_HAS_HOTPLUG': 0x0001,
- # The library can access HID devices without requiring user intervention.
- 'LIBUSB_CAP_HAS_HID_ACCESS': 0x0100,
- # The library supports detaching of the default USB driver.
- 'LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER': 0x0101,
-})
-
-libusb_log_level = Enum({
- 'LIBUSB_LOG_LEVEL_NONE': 0,
- 'LIBUSB_LOG_LEVEL_ERROR': 1,
- 'LIBUSB_LOG_LEVEL_WARNING': 2,
- 'LIBUSB_LOG_LEVEL_INFO': 3,
- 'LIBUSB_LOG_LEVEL_DEBUG': 4,
-})
-
-#int libusb_init(libusb_context **ctx);
-libusb_init = libusb.libusb_init
-libusb_init.argtypes = [libusb_context_p_p]
-#void libusb_exit(libusb_context *ctx);
-libusb_exit = libusb.libusb_exit
-libusb_exit.argtypes = [libusb_context_p]
-libusb_exit.restype = None
-#void libusb_set_debug(libusb_context *ctx, int level);
-libusb_set_debug = libusb.libusb_set_debug
-libusb_set_debug.argtypes = [libusb_context_p, c_int]
-libusb_set_debug.restype = None
-#const struct libusb_version * libusb_get_version(void);
-try:
- libusb_get_version = libusb.libusb_get_version
-except AttributeError:
- _dummy_version = libusb_version(0, 0, 0, 0, _empty_char_p, _empty_char_p)
- _dummy_version_p = pointer(_dummy_version)
- def libusb_get_version():
- return _dummy_version_p
-else:
- libusb_get_version.argtypes = []
- libusb_get_version.restype = POINTER(libusb_version)
-#int libusb_has_capability(uint32_t capability);
-try:
- libusb_has_capability = libusb.libusb_has_capability
-except AttributeError:
- def libusb_has_capability(_):
- return 0
-else:
- libusb_has_capability.argtypes = [c_uint32]
- libusb_has_capability.restype = c_int
-try:
- # Note: Should be equivalent to libusb_error.get (except libusb_error.get
- # one raises on unknown values).
- #char *libusb_error_name(int errcode);
- libusb_error_name = libusb.libusb_error_name
-except AttributeError:
- # pylint: disable=unused-argument
- def libusb_error_name(errcode):
- return None
- # pylint: enable=unused-argument
-else:
- libusb_error_name.argtypes = [c_int]
- libusb_error_name.restype = c_char_p
-
-# Note on libusb_strerror, libusb_setlocale and future functions in the
-# same spirit:
-# I do not think end-user-facing messages belong to a technical library.
-# Such features bring a new, non essential set of problems, and is a luxury
-# I do not want to spend time supporting considering limited resources and
-# more important stuff to work on.
-# For backward compatibility, expose libusb_strerror placeholder.
-# pylint: disable=unused-argument
-def libusb_strerror(errcode):
- return None
-# pylint: enable=unused-argument
-
-#ssize_t libusb_get_device_list(libusb_context *ctx,
-# libusb_device ***list);
-libusb_get_device_list = libusb.libusb_get_device_list
-libusb_get_device_list.argtypes = [libusb_context_p, libusb_device_p_p_p]
-libusb_get_device_list.restype = c_ssize_t
-#void libusb_free_device_list(libusb_device **list, int unref_devices);
-libusb_free_device_list = libusb.libusb_free_device_list
-libusb_free_device_list.argtypes = [libusb_device_p_p, c_int]
-libusb_free_device_list.restype = None
-#libusb_device *libusb_ref_device(libusb_device *dev);
-libusb_ref_device = libusb.libusb_ref_device
-libusb_ref_device.argtypes = [libusb_device_p]
-libusb_ref_device.restype = libusb_device_p
-#void libusb_unref_device(libusb_device *dev);
-libusb_unref_device = libusb.libusb_unref_device
-libusb_unref_device.argtypes = [libusb_device_p]
-libusb_unref_device.restype = None
-
-#int libusb_get_configuration(libusb_device_handle *dev, int *config);
-libusb_get_configuration = libusb.libusb_get_configuration
-libusb_get_configuration.argtypes = [libusb_device_handle_p, c_int_p]
-#int libusb_get_device_descriptor(libusb_device *dev,
-# struct libusb_device_descriptor *desc);
-libusb_get_device_descriptor = libusb.libusb_get_device_descriptor
-libusb_get_device_descriptor.argtypes = [
- libusb_device_p, libusb_device_descriptor_p]
-#int libusb_get_active_config_descriptor(libusb_device *dev,
-# struct libusb_config_descriptor **config);
-libusb_get_active_config_descriptor = libusb.libusb_get_active_config_descriptor
-libusb_get_active_config_descriptor.argtypes = [
- libusb_device_p, libusb_config_descriptor_p_p]
-#int libusb_get_config_descriptor(libusb_device *dev, uint8_t config_index,
-# struct libusb_config_descriptor **config);
-libusb_get_config_descriptor = libusb.libusb_get_config_descriptor
-libusb_get_config_descriptor.argtypes = [
- libusb_device_p, c_uint8, libusb_config_descriptor_p_p]
-#int libusb_get_config_descriptor_by_value(libusb_device *dev,
-# uint8_t bConfigurationValue, struct libusb_config_descriptor **config);
-libusb_get_config_descriptor_by_value = \
- libusb.libusb_get_config_descriptor_by_value
-libusb_get_config_descriptor_by_value.argtypes = [
- libusb_device_p, c_uint8, libusb_config_descriptor_p_p]
-#void libusb_free_config_descriptor(struct libusb_config_descriptor *config);
-libusb_free_config_descriptor = libusb.libusb_free_config_descriptor
-libusb_free_config_descriptor.argtypes = [libusb_config_descriptor_p]
-libusb_free_config_descriptor.restype = None
-#uint8_t libusb_get_bus_number(libusb_device *dev);
-libusb_get_bus_number = libusb.libusb_get_bus_number
-libusb_get_bus_number.argtypes = [libusb_device_p]
-libusb_get_bus_number.restype = c_uint8
-try:
- #uint8_t libusb_get_port_number(libusb_device *dev);
- libusb_get_port_number = libusb.libusb_get_port_number
-except AttributeError:
- pass
-else:
- libusb_get_port_number.argtypes = [libusb_device_p]
- libusb_get_port_number.restype = c_uint8
-try:
- #int libusb_get_port_numbers(libusb_device *dev,
- # uint8_t* port_numbers, int port_numbers_len);
- libusb_get_port_numbers = libusb.libusb_get_port_numbers
-except AttributeError:
- pass
-else:
- libusb_get_port_numbers.argtypes = [
- libusb_device_p, POINTER(c_uint8), c_int]
- libusb_get_port_numbers.restype = c_int
-# Missing: libusb_get_port_path (deprecated since 1.0.16)
-try:
... 918 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-libusb1.git
More information about the Python-modules-commits
mailing list