# -*- coding: utf-8 -*-
"""
pyvisa.resources.usb
~~~~~~~~~~~~~~~~~~~~
High level wrapper for USB resources.
This file is part of PyVISA.
:copyright: 2014 by PyVISA Authors, see AUTHORS for more details.
:license: MIT, see LICENSE for more details.
"""
from __future__ import division, unicode_literals, print_function, absolute_import
from .. import constants
from .messagebased import MessageBasedResource
@MessageBasedResource.register(constants.InterfaceType.usb, 'INSTR')
[docs]class USBInstrument(MessageBasedResource):
"""Communicates with devices of type USB::manufacturer ID::model code::serial number
More complex resource names can be specified with the following grammar:
USB[board]::manufacturer ID::model code::serial number[::USB interface number][::INSTR]
Do not instantiate directly, use :meth:`pyvisa.highlevel.ResourceManager.open_resource`.
"""
[docs] def control_in(self, request_type_bitmap_field, request_id, request_value, index, length=0):
"""Performs a USB control pipe transfer from the device.
:param request_type_bitmap_field: bmRequestType parameter of the setup stage of a USB control transfer.
:param request_id: bRequest parameter of the setup stage of a USB control transfer.
:param request_value: wValue parameter of the setup stage of a USB control transfer.
:param index: wIndex parameter of the setup stage of a USB control transfer.
This is usually the index of the interface or endpoint.
:param length: wLength parameter of the setup stage of a USB control transfer.
This value also specifies the size of the data buffer to receive the data from the
optional data stage of the control transfer.
:return: The data buffer that receives the data from the optional data stage of the control transfer.
:rtype: bytes
"""
return self.visalib.usb_control_in(self.session, request_type_bitmap_field,
request_id, request_value, index, length)
[docs] def usb_control_out(self, request_type_bitmap_field, request_id, request_value, index, data=""):
"""Performs a USB control pipe transfer to the device.
:param request_type_bitmap_field: bmRequestType parameter of the setup stage of a USB control transfer.
:param request_id: bRequest parameter of the setup stage of a USB control transfer.
:param request_value: wValue parameter of the setup stage of a USB control transfer.
:param index: wIndex parameter of the setup stage of a USB control transfer.
This is usually the index of the interface or endpoint.
:param data: The data buffer that sends the data in the optional data stage of the control transfer.
"""
return self.visalib.usb_control_out(request_type_bitmap_field, request_id, request_value, index, data)
@MessageBasedResource.register(constants.InterfaceType.usb, 'RAW')
[docs]class USBRaw(MessageBasedResource):
"""Communicates with to devices of type USB::manufacturer ID::model code::serial number::RAW
More complex resource names can be specified with the following grammar:
USB[board]::manufacturer ID::model code::serial number[::USB interface number]::RAW
Do not instantiate directly, use :meth:`pyvisa.highlevel.ResourceManager.open_resource`.
"""