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.



95
96
97
98
# File 'lib/libusb/configuration.rb', line 95

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.



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

def device
  @device
end

Class Method Details

.release(ptr) ⇒ Object



100
101
102
# File 'lib/libusb/configuration.rb', line 100

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

Instance Method Details

#<=>(o) ⇒ Object



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

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)


72
73
74
# File 'lib/libusb/configuration.rb', line 72

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



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

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.



127
128
129
130
# File 'lib/libusb/configuration.rb', line 127

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.



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

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

#extraString

Extra descriptors.

Returns:

  • (String)


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

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



115
116
117
118
119
120
121
122
123
124
# File 'lib/libusb/configuration.rb', line 115

def inspect
  attrs = []
  attrs << self.bConfigurationValue.to_s
  bits = self.bmAttributes
  attrs << "SelfPowered" if (bits & 0b1000000) != 0
  attrs << "RemoteWakeup" if (bits & 0b100000) != 0
  desc = self.description
  attrs << desc if desc != '?'
  "\#<#{self.class} #{attrs.join(' ')}>"
end

#interfacesObject



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

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

#settingsObject

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



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

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