Module: USB

Defined in:
lib/libusb/compat.rb

Overview

Compatibility layer for ruby-usb (API based on libusb-0.1)

This module provides some limited compatibility to ruby-usb.

Usage example:

begin
require 'usb'
rescue LoadError
require 'libusb/compat'
end
p USB.devices => [#<USB::Device ...>]

Known issues:

  • Exceptions are different between ruby-usb and libusb and they don't get converted
  • libusb-1.0 doesn't explicitly manage USB-buses, so only one Bus is used currently

Defined Under Namespace

Classes: Bus, Configuration, DevHandle, Device, Endpoint, Interface, Setting

Constant Summary collapse

USB_CLASS_PER_INTERFACE =
LIBUSB::CLASS_PER_INTERFACE
USB_CLASS_AUDIO =
LIBUSB::CLASS_AUDIO
USB_CLASS_COMM =
LIBUSB::CLASS_COMM
USB_CLASS_HID =
LIBUSB::CLASS_HID
USB_CLASS_PRINTER =
LIBUSB::CLASS_PRINTER
USB_CLASS_PTP =
LIBUSB::CLASS_PTP
USB_CLASS_MASS_STORAGE =
LIBUSB::CLASS_MASS_STORAGE
USB_CLASS_HUB =
LIBUSB::CLASS_HUB
USB_CLASS_DATA =
LIBUSB::CLASS_DATA
USB_CLASS_VENDOR_SPEC =
LIBUSB::CLASS_VENDOR_SPEC
USB_DT_DEVICE =
LIBUSB::DT_DEVICE
USB_DT_CONFIG =
LIBUSB::DT_CONFIG
USB_DT_STRING =
LIBUSB::DT_STRING
USB_DT_INTERFACE =
LIBUSB::DT_INTERFACE
USB_DT_ENDPOINT =
LIBUSB::DT_ENDPOINT
USB_DT_HID =
LIBUSB::DT_HID
USB_DT_REPORT =
LIBUSB::DT_REPORT
USB_DT_PHYSICAL =
LIBUSB::DT_PHYSICAL
USB_DT_HUB =
LIBUSB::DT_HUB
USB_DT_DEVICE_SIZE =
LIBUSB::DT_DEVICE_SIZE
USB_DT_CONFIG_SIZE =
LIBUSB::DT_CONFIG_SIZE
USB_DT_INTERFACE_SIZE =
LIBUSB::DT_INTERFACE_SIZE
USB_DT_ENDPOINT_SIZE =
LIBUSB::DT_ENDPOINT_SIZE
USB_DT_ENDPOINT_AUDIO_SIZE =
LIBUSB::DT_ENDPOINT_AUDIO_SIZE
USB_DT_HUB_NONVAR_SIZE =
LIBUSB::DT_HUB_NONVAR_SIZE
USB_ENDPOINT_ADDRESS_MASK =
LIBUSB::ENDPOINT_ADDRESS_MASK
USB_ENDPOINT_DIR_MASK =
LIBUSB::ENDPOINT_DIR_MASK
USB_ENDPOINT_IN =
LIBUSB::ENDPOINT_IN
USB_ENDPOINT_OUT =
LIBUSB::ENDPOINT_OUT
USB_ENDPOINT_TYPE_MASK =
LIBUSB::TRANSFER_TYPE_MASK
USB_ENDPOINT_TYPE_CONTROL =
LIBUSB::TRANSFER_TYPE_CONTROL
USB_ENDPOINT_TYPE_ISOCHRONOUS =
LIBUSB::TRANSFER_TYPE_ISOCHRONOUS
USB_ENDPOINT_TYPE_BULK =
LIBUSB::TRANSFER_TYPE_BULK
USB_ENDPOINT_TYPE_INTERRUPT =
LIBUSB::TRANSFER_TYPE_INTERRUPT
USB_REQ_GET_STATUS =
LIBUSB::REQUEST_GET_STATUS
USB_REQ_CLEAR_FEATURE =
LIBUSB::REQUEST_CLEAR_FEATURE
USB_REQ_SET_FEATURE =
LIBUSB::REQUEST_SET_FEATURE
USB_REQ_SET_ADDRESS =
LIBUSB::REQUEST_SET_ADDRESS
USB_REQ_GET_DESCRIPTOR =
LIBUSB::REQUEST_GET_DESCRIPTOR
USB_REQ_SET_DESCRIPTOR =
LIBUSB::REQUEST_SET_DESCRIPTOR
USB_REQ_GET_CONFIGURATION =
LIBUSB::REQUEST_GET_CONFIGURATION
USB_REQ_SET_CONFIGURATION =
LIBUSB::REQUEST_SET_CONFIGURATION
USB_REQ_GET_INTERFACE =
LIBUSB::REQUEST_GET_INTERFACE
USB_REQ_SET_INTERFACE =
LIBUSB::REQUEST_SET_INTERFACE
USB_REQ_SYNCH_FRAME =
LIBUSB::REQUEST_SYNCH_FRAME
USB_TYPE_STANDARD =
LIBUSB::REQUEST_TYPE_STANDARD
USB_TYPE_CLASS =
LIBUSB::REQUEST_TYPE_CLASS
USB_TYPE_VENDOR =
LIBUSB::REQUEST_TYPE_VENDOR
USB_TYPE_RESERVED =
LIBUSB::REQUEST_TYPE_RESERVED
USB_RECIP_DEVICE =
LIBUSB::RECIPIENT_DEVICE
USB_RECIP_INTERFACE =
LIBUSB::RECIPIENT_INTERFACE
USB_RECIP_ENDPOINT =
LIBUSB::RECIPIENT_ENDPOINT
USB_RECIP_OTHER =
LIBUSB::RECIPIENT_OTHER
HAS_GET_DRIVER_NP =
!FFI::Platform.windows?
HAS_DETACH_KERNEL_DRIVER_NP =
!FFI::Platform.windows?
USB_MAXENDPOINTS =

not defined by libusb-1.0, but typical values are:

32
USB_MAXINTERFACES =
32
USB_MAXALTSETTING =
128
USB_MAXCONFIG =
8

Class Method Summary collapse

Class Method Details

.default_busObject



46
47
48
# File 'lib/libusb/compat.rb', line 46

def self.default_bus
  @default_bus ||= Bus.new(default_context)
end

.default_contextObject



41
42
43
# File 'lib/libusb/compat.rb', line 41

def self.default_context
  @default_context ||= LIBUSB::Context.new
end