From 5dd3a8b40a1aa761acda22dbf5481bf4e96dd6e3 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Mon, 17 Sep 2012 20:00:51 +0000 Subject: remove accidental addition of wedo plugin --- (limited to 'plugins/wedo_plugin/usb/util.py') diff --git a/plugins/wedo_plugin/usb/util.py b/plugins/wedo_plugin/usb/util.py deleted file mode 100644 index 1f8cee3..0000000 --- a/plugins/wedo_plugin/usb/util.py +++ /dev/null @@ -1,260 +0,0 @@ -# Copyright (C) 2009-2011 Wander Lairson Costa -# -# The following terms apply to all files associated -# with the software unless explicitly disclaimed in individual files. -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. -# -# IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY -# FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -# ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY -# DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE -# IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE -# NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -# MODIFICATIONS. - -r"""usb.util - Utility functions. - -This module exports: - -endpoint_address - return the endpoint absolute address. -endpoint_direction - return the endpoint transfer direction. -endpoint_type - return the endpoint type -ctrl_direction - return the direction of a control transfer -build_request_type - build a bmRequestType field of a control transfer. -find_descriptor - find an inner descriptor. -claim_interface - explicitly claim an interface. -release_interface - explicitly release an interface. -dispose_resources - release internal resources allocated by the object. -get_string - retrieve a string descriptor from the device. -""" - -__author__ = 'Wander Lairson Costa' - -import operator -import usb._interop as _interop - -# descriptor type -DESC_TYPE_DEVICE = 0x01 -DESC_TYPE_CONFIG = 0x02 -DESC_TYPE_STRING = 0x03 -DESC_TYPE_INTERFACE = 0x04 -DESC_TYPE_ENDPOINT = 0x05 - -# endpoint direction -ENDPOINT_IN = 0x80 -ENDPOINT_OUT = 0x00 - -# endpoint type -ENDPOINT_TYPE_CTRL = 0x00 -ENDPOINT_TYPE_ISO = 0x01 -ENDPOINT_TYPE_BULK = 0x02 -ENDPOINT_TYPE_INTR = 0x03 - -# control request type -CTRL_TYPE_STANDARD = (0 << 5) -CTRL_TYPE_CLASS = (1 << 5) -CTRL_TYPE_VENDOR = (2 << 5) -CTRL_TYPE_RESERVED = (3 << 5) - -# control request recipient -CTRL_RECIPIENT_DEVICE = 0 -CTRL_RECIPIENT_INTERFACE = 1 -CTRL_RECIPIENT_ENDPOINT = 2 -CTRL_RECIPIENT_OTHER = 3 - -# control request direction -CTRL_OUT = 0x00 -CTRL_IN = 0x80 - -_ENDPOINT_ADDR_MASK = 0x0f -_ENDPOINT_DIR_MASK = 0x80 -_ENDPOINT_TRANSFER_TYPE_MASK = 0x03 -_CTRL_DIR_MASK = 0x80 - -def endpoint_address(address): - r"""Return the endpoint absolute address. - - The address parameter is the bEndpointAddress field - of the endpoint descriptor. - """ - return address & _ENDPOINT_ADDR_MASK - -def endpoint_direction(address): - r"""Return the endpoint direction. - - The address parameter is the bEndpointAddress field - of the endpoint descriptor. - The possible return values are ENDPOINT_OUT or ENDPOINT_IN. - """ - return address & _ENDPOINT_DIR_MASK - -def endpoint_type(bmAttributes): - r"""Return the transfer type of the endpoint. - - The bmAttributes parameter is the bmAttributes field - of the endpoint descriptor. - The possible return values are: ENDPOINT_TYPE_CTRL, - ENDPOINT_TYPE_ISO, ENDPOINT_TYPE_BULK or ENDPOINT_TYPE_INTR. - """ - return bmAttributes & _ENDPOINT_TRANSFER_TYPE_MASK - -def ctrl_direction(bmRequestType): - r"""Return the direction of a control request. - - The bmRequestType parameter is the value of the - bmRequestType field of a control transfer. - The possible return values are CTRL_OUT or CTRL_IN. - """ - return bmRequestType & _CTRL_DIR_MASK - -def build_request_type(direction, type, recipient): - r"""Build a bmRequestType field for control requests. - - These is a conventional function to build a bmRequestType - for a control request. - - The direction parameter can be CTRL_OUT or CTRL_IN. - The type parameter can be CTRL_TYPE_STANDARD, CTRL_TYPE_CLASS, - CTRL_TYPE_VENDOR or CTRL_TYPE_RESERVED values. - The recipient can be CTRL_RECIPIENT_DEVICE, CTRL_RECIPIENT_INTERFACE, - CTRL_RECIPIENT_ENDPOINT or CTRL_RECIPIENT_OTHER. - - Return the bmRequestType value. - """ - return recipient | type | direction - -def find_descriptor(desc, find_all=False, custom_match=None, **args): - r"""Find an inner descriptor. - - find_descriptor works in the same way the core.find() function does, - but it acts on general descriptor objects. For example, suppose you - have a Device object called dev and want a Configuration of this - object with its bConfigurationValue equals to 1, the code would - be like so: - - >>> cfg = util.find_descriptor(dev, bConfigurationValue=1) - - You can use any field of the Descriptor as a match criteria, and you - can supply a customized match just like core.find() does. The - find_descriptor function also accepts the find_all parameter to get - a list of descriptor instead of just one. - """ - def desc_iter(k, v): - for d in desc: - if (custom_match is None or custom_match(d)) and \ - _interop._reduce( - lambda a, b: a and b, - map( - operator.eq, - v, - map(lambda i: getattr(d, i), k) - ), - True - ): - yield d - - k, v = args.keys(), args.values() - - if find_all: - return [d for d in desc_iter(k, v)] - else: - try: - return _interop._next(desc_iter(k, v)) - except StopIteration: - return None - -def claim_interface(device, interface): - r"""Explicitly claim an interface. - - PyUSB users normally do not have to worry about interface claiming, - as the library takes care of it automatically. But there are situations - where you need deterministic interface claiming. For these uncommon - cases, you can use claim_interface. - - If the interface is already claimed, either through a previously call - to claim_interface or internally by the device object, nothing happens. - """ - device._ctx.managed_claim_interface(device, interface) - -def release_interface(device, interface): - r"""Explicitly release an interface. - - This function is used to release an interface previously claimed, - either through a call to claim_interface or internally by the - device object. - - Normally, you do not need to worry about claiming policies, as - the device object takes care of it automatically. - """ - device._ctx.managed_release_interface(device, interface) - -def dispose_resources(device): - r"""Release internal resources allocated by the object. - - Sometimes you need to provide deterministic resources - freeing, for example to allow another application to - talk to the device. As Python does not provide deterministic - destruction, this function releases all internal resources - allocated by the device, like device handle and interface - policy. - - After calling this function, you can continue using the device - object normally. If the resources will be necessary again, it - will allocate them automatically. - """ - device._ctx.dispose(device) - -def get_string(dev, length, index, langid = None): - r"""Retrieve a string descriptor from the device. - - dev is the Device object to which the request will be - sent to. - - length is the length of string in number of characters. - - index is the string descriptor index and langid is the Language - ID of the descriptor. If langid is omitted, the string descriptor - of the first Language ID will be returned. - - The return value is the unicode string present in the descriptor. - """ - from usb.control import get_descriptor - if langid is None: - # Asking for the zero'th index is special - it returns a string - # descriptor that contains all the language IDs supported by the device. - # Typically there aren't many - often only one. The language IDs are 16 - # bit numbers, and they start at the third byte in the descriptor. See - # USB 2.0 specification section 9.6.7 for more information. - # - # Note from libusb 1.0 sources (descriptor.c) - buf = get_descriptor( - dev, - 1024, - DESC_TYPE_STRING, - 0 - ) - assert len(buf) >= 4 - langid = buf[2] | (buf[3] << 8) - - buf = get_descriptor( - dev, - length * 2 + 2, # string is utf16 + 2 bytes of the descriptor - DESC_TYPE_STRING, - index, - langid - ) - return buf[2:].tostring().decode('utf-16-le') -- cgit v0.9.1