Class: LIBUSB::Configuration

Inherits:
FFI::ManagedStruct
  • Object
show all
Includes:
Comparable
Defined in:
lib/libusb/configuration.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(device, *args) ⇒ Configuration

Returns a new instance of Configuration.


108
109
110
111
# File 'lib/libusb/configuration.rb', line 108

def initialize(device, *args)
  @device = device
  super(*args)
end

Instance Attribute Details

#deviceDevice (readonly)

Returns the device this configuration belongs to.

Returns:

  • (Device)

    the device this configuration belongs to.


118
119
120
# File 'lib/libusb/configuration.rb', line 118

def device
  @device
end

Class Method Details

.release(ptr) ⇒ Object


113
114
115
# File 'lib/libusb/configuration.rb', line 113

def self.release(ptr)
  Call.libusb_free_config_descriptor(ptr)
end

Instance Method Details

#<=>(o) ⇒ Object


149
150
151
152
153
# File 'lib/libusb/configuration.rb', line 149

def <=>(o)
  t = device<=>o.device
  t = bConfigurationValue<=>o.bConfigurationValue if t==0
  t
end

#bConfigurationValueObject

Identifier value for this configuration.


55
56
57
# File 'lib/libusb/configuration.rb', line 55

def bConfigurationValue
  self[:bConfigurationValue]
end

#bDescriptorTypeObject

Descriptor type (0x02)


40
41
42
# File 'lib/libusb/configuration.rb', line 40

def bDescriptorType
  self[:bDescriptorType]
end

#bLengthObject

Size of this descriptor (in bytes).


35
36
37
# File 'lib/libusb/configuration.rb', line 35

def bLength
  self[:bLength]
end

#bmAttributesInteger

Configuration characteristics.

  • Bit 7: Reserved, set to 1. (USB 1.0 Bus Powered)

  • Bit 6: Self Powered

  • Bit 5: Remote Wakeup

  • Bit 4..0: Reserved, set to 0.

Returns:

  • (Integer)

See Also:


75
76
77
# File 'lib/libusb/configuration.rb', line 75

def bmAttributes
  self[:bmAttributes]
end

#bMaxPowerInteger Also known as: maxPower

Maximum power consumption of the USB device from this bus in this configuration when the device is fully opreation.

Returns:

  • (Integer)

    Maximum Power Consumption in 2mA units


92
93
94
# File 'lib/libusb/configuration.rb', line 92

def bMaxPower
  self[:bMaxPower]
end

#bNumInterfacesObject

Number of interfaces supported by this configuration.


50
51
52
# File 'lib/libusb/configuration.rb', line 50

def bNumInterfaces
  self[:bNumInterfaces]
end

#descriptionObject

Return name of this configuration as String.


139
140
141
142
# File 'lib/libusb/configuration.rb', line 139

def description
  return @description if defined? @description
  @description = device.try_string_descriptor_ascii(self.iConfiguration)
end

#endpointsObject

Return all endpoints of all interfaces of the configuration as Array of Endpoints.


147
# File 'lib/libusb/configuration.rb', line 147

def endpoints() self.settings.map {|d| d.endpoints }.flatten end

#extraString

Extra descriptors.

Returns:

  • (String)

103
104
105
106
# File 'lib/libusb/configuration.rb', line 103

def extra
  return if self[:extra].null?
  self[:extra].read_string(self[:extra_length])
end

#iConfigurationObject

Index of string descriptor describing this configuration.


60
61
62
# File 'lib/libusb/configuration.rb', line 60

def iConfiguration
  self[:iConfiguration]
end

#inspectObject


128
129
130
131
132
133
134
135
136
# File 'lib/libusb/configuration.rb', line 128

def inspect
  attrs = []
  attrs << self.bConfigurationValue.to_s
  attrs << "SelfPowered" if self_powered?
  attrs << "RemoteWakeup" if remote_wakeup?
  desc = self.description
  attrs << desc if desc != '?'
  "\#<#{self.class} #{attrs.join(' ')}>"
end

#interfacesObject


120
121
122
123
124
125
126
# File 'lib/libusb/configuration.rb', line 120

def interfaces
  ifs = []
  self[:bNumInterfaces].times do |i|
    ifs << Interface.new(self, self[:interface] + i*Interface.size)
  end
  return ifs
end

#remote_wakeup?Boolean

Returns:

  • (Boolean)

85
86
87
# File 'lib/libusb/configuration.rb', line 85

def remote_wakeup?
  bmAttributes & 0b100000 != 0
end

#self_powered?Boolean

Returns:

  • (Boolean)

80
81
82
# File 'lib/libusb/configuration.rb', line 80

def self_powered?
  bmAttributes & 0b1000000 != 0
end

#settingsObject

Return all interface decriptions of the configuration as Array of Settings.


145
# File 'lib/libusb/configuration.rb', line 145

def settings() self.interfaces.map {|d| d.settings }.flatten end

#wTotalLengthObject

Total length of data returned for this configuration.


45
46
47
# File 'lib/libusb/configuration.rb', line 45

def wTotalLength
  self[:wTotalLength]
end