libusb 0.2.0-x86-mingw32 → 0.2.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +5 -0
- data/Rakefile +1 -1
- data/lib/libusb-1.0.dll +0 -0
- data/lib/libusb.rb +1 -1
- data/lib/libusb/compat.rb +2 -2
- data/lib/libusb/configuration.rb +7 -3
- data/test/test_libusb_descriptors.rb +2 -1
- data/test/test_libusb_keyboard.rb +50 -0
- data/test/test_libusb_mass_storage.rb +4 -3
- metadata +29 -16
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 0.2.1 / 2012-09-25
|
2
|
+
|
3
|
+
* Rename Configuration#maxPower to #bMaxPower as done in libusbx-1.0.13 and in ruby-usb.gem
|
4
|
+
* update to libusbx-1.0.13 for windows build (with support for libusbK and libusb0)
|
5
|
+
|
1
6
|
=== 0.2.0 / 2012-06-15
|
2
7
|
|
3
8
|
* Divide up the libusb library across multiple files, required with autoload
|
data/Rakefile
CHANGED
@@ -32,7 +32,7 @@ end
|
|
32
32
|
# LIBUSB_TARBALL = STATIC_SOURCESDIR + "libusb-#{LIBUSB_VERSION}.tar.bz2"
|
33
33
|
|
34
34
|
# Fetch tarball from libusbx
|
35
|
-
LIBUSB_VERSION = ENV['LIBUSB_VERSION'] || '1.0.
|
35
|
+
LIBUSB_VERSION = ENV['LIBUSB_VERSION'] || '1.0.13'
|
36
36
|
LIBUSB_SOURCE_URI = URI( "http://downloads.sourceforge.net/project/libusbx/releases/#{LIBUSB_VERSION[/^\d+\.\d+\.\d+/]}/source/libusbx-#{LIBUSB_VERSION}.tar.bz2" )
|
37
37
|
LIBUSB_TARBALL = STATIC_SOURCESDIR + File.basename( LIBUSB_SOURCE_URI.path )
|
38
38
|
|
data/lib/libusb-1.0.dll
CHANGED
Binary file
|
data/lib/libusb.rb
CHANGED
data/lib/libusb/compat.rb
CHANGED
@@ -175,7 +175,7 @@ module USB
|
|
175
175
|
h = DevHandle.new(@dev.open)
|
176
176
|
if block_given?
|
177
177
|
begin
|
178
|
-
|
178
|
+
yield h
|
179
179
|
ensure
|
180
180
|
h.usb_close
|
181
181
|
end
|
@@ -200,7 +200,7 @@ module USB
|
|
200
200
|
end
|
201
201
|
|
202
202
|
def_delegators :@cd, :bLength, :bDescriptorType, :wTotalLength, :bNumInterfaces,
|
203
|
-
:bConfigurationValue, :iConfiguration, :bmAttributes, :
|
203
|
+
:bConfigurationValue, :iConfiguration, :bmAttributes, :bMaxPower,
|
204
204
|
:inspect
|
205
205
|
|
206
206
|
def <=>(o)
|
data/lib/libusb/configuration.rb
CHANGED
@@ -26,7 +26,7 @@ module LIBUSB
|
|
26
26
|
:bConfigurationValue, :uint8,
|
27
27
|
:iConfiguration, :uint8,
|
28
28
|
:bmAttributes, :uint8,
|
29
|
-
:
|
29
|
+
:bMaxPower, :uint8,
|
30
30
|
:interface, :pointer,
|
31
31
|
:extra, :pointer,
|
32
32
|
:extra_length, :int
|
@@ -76,10 +76,14 @@ module LIBUSB
|
|
76
76
|
# Maximum power consumption of the USB device from this bus in this configuration when the device is fully opreation.
|
77
77
|
#
|
78
78
|
# @return [Integer] Maximum Power Consumption in 2mA units
|
79
|
-
def
|
80
|
-
self[:
|
79
|
+
def bMaxPower
|
80
|
+
self[:bMaxPower]
|
81
81
|
end
|
82
82
|
|
83
|
+
# @deprecated Use {#bMaxPower} instead.
|
84
|
+
alias maxPower bMaxPower
|
85
|
+
|
86
|
+
|
83
87
|
# Extra descriptors.
|
84
88
|
#
|
85
89
|
# @return [String]
|
@@ -56,7 +56,8 @@ class TestLibusbDescriptors < Test::Unit::TestCase
|
|
56
56
|
assert_kind_of Integer, config_desc.bConfigurationValue
|
57
57
|
assert_kind_of Integer, config_desc.iConfiguration
|
58
58
|
assert_kind_of Integer, config_desc.bmAttributes
|
59
|
-
assert_kind_of Integer, config_desc.
|
59
|
+
assert_kind_of Integer, config_desc.bMaxPower
|
60
|
+
assert_kind_of Integer, config_desc.maxPower # deprecated
|
60
61
|
assert_kind_of String, config_desc.extra if config_desc.extra
|
61
62
|
|
62
63
|
config_desc.interfaces.each do |interface|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# This test requires a connected, but not mounted mass storage device with
|
2
|
+
# read/write access allowed. Based on the following specifications:
|
3
|
+
# http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
|
4
|
+
# http://en.wikipedia.org/wiki/SCSI_command
|
5
|
+
#
|
6
|
+
|
7
|
+
require "test/unit"
|
8
|
+
require "libusb"
|
9
|
+
|
10
|
+
class TestLibusbKeyboard < Test::Unit::TestCase
|
11
|
+
include LIBUSB
|
12
|
+
|
13
|
+
attr_accessor :usb
|
14
|
+
attr_accessor :device
|
15
|
+
attr_accessor :dev
|
16
|
+
attr_accessor :endpoint_in
|
17
|
+
attr_accessor :endpoint_out
|
18
|
+
|
19
|
+
def setup
|
20
|
+
@usb = Context.new
|
21
|
+
@usb.debug = 3
|
22
|
+
|
23
|
+
@device = usb.devices( :bDeviceClass=>CLASS_HID, :bDeviceProtocol=>1 ).first
|
24
|
+
abort "no keyboard device found" unless @device
|
25
|
+
|
26
|
+
@endpoint_in = @device.endpoints.find{|ep| ep.bEndpointAddress&ENDPOINT_IN != 0 }.bEndpointAddress
|
27
|
+
@endpoint_out = @device.endpoints.find{|ep| ep.bEndpointAddress&ENDPOINT_IN == 0 }.bEndpointAddress
|
28
|
+
|
29
|
+
@dev = @device.open
|
30
|
+
|
31
|
+
if RUBY_PLATFORM=~/linux/i && dev.kernel_driver_active?(0)
|
32
|
+
dev.detach_kernel_driver(0)
|
33
|
+
end
|
34
|
+
dev.claim_interface(0)
|
35
|
+
|
36
|
+
# clear any pending data
|
37
|
+
dev.clear_halt(endpoint_in)
|
38
|
+
end
|
39
|
+
|
40
|
+
def teardown
|
41
|
+
dev.release_interface(0) if dev
|
42
|
+
dev.close if dev
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_read
|
46
|
+
data_length = 8
|
47
|
+
recv = dev.interrupt_transfer(:endpoint=>endpoint_in, :dataIn=>data_length)
|
48
|
+
p recv
|
49
|
+
end
|
50
|
+
end
|
@@ -110,7 +110,7 @@ class TestLibusbMassStorage < Test::Unit::TestCase
|
|
110
110
|
retries = 5
|
111
111
|
buffer = begin
|
112
112
|
bulk_transfer(:endpoint=>endpoint_in, :dataIn=>13)
|
113
|
-
rescue LIBUSB::ERROR_PIPE
|
113
|
+
rescue LIBUSB::ERROR_PIPE
|
114
114
|
if (retries-=1)>=0
|
115
115
|
dev.clear_halt(endpoint_in)
|
116
116
|
retry
|
@@ -122,6 +122,7 @@ class TestLibusbMassStorage < Test::Unit::TestCase
|
|
122
122
|
dCSWSignature, dCSWTag, dCSWDataResidue, bCSWStatus = buffer.unpack('a4VVC')
|
123
123
|
|
124
124
|
assert_equal 'USBS', dCSWSignature, "CSW should start with USBS"
|
125
|
+
assert_kind_of Integer, dCSWDataResidue
|
125
126
|
assert_equal expected_tag, dCSWTag, "CSW-tag should be like CBW-tag"
|
126
127
|
raise CSWError, "CSW returned error #{bCSWStatus}" unless bCSWStatus==0
|
127
128
|
buffer
|
@@ -154,14 +155,14 @@ class TestLibusbMassStorage < Test::Unit::TestCase
|
|
154
155
|
start, 0,
|
155
156
|
nr_blocks, 0,
|
156
157
|
].pack('CCNCnC')
|
157
|
-
|
158
|
+
send_mass_storage_command( cdb, expected_length )
|
158
159
|
end
|
159
160
|
|
160
161
|
def invalid_command
|
161
162
|
expected_length = 0x100
|
162
163
|
cdb = [ 0x26, 0, # invalid command
|
163
164
|
].pack('CC')
|
164
|
-
|
165
|
+
send_mass_storage_command( cdb, expected_length )
|
165
166
|
end
|
166
167
|
|
167
168
|
def mass_storage_reset
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libusb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: x86-mingw32
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
16
|
-
requirement: &
|
16
|
+
requirement: &11618720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: '1.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11618720
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rdoc
|
27
|
+
requirement: &11618240 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.10'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *11618240
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rake-compiler
|
27
|
-
requirement: &
|
38
|
+
requirement: &11617760 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,18 +43,18 @@ dependencies:
|
|
32
43
|
version: '0.6'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *11617760
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: hoe
|
38
|
-
requirement: &
|
49
|
+
requirement: &11617280 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ~>
|
42
53
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
54
|
+
version: '3.0'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *11617280
|
47
58
|
description: LIBUSB is a Ruby binding that gives Ruby programmers access to arbitrary
|
48
59
|
USB devices
|
49
60
|
email:
|
@@ -83,8 +94,9 @@ files:
|
|
83
94
|
- test/test_libusb_mass_storage.rb
|
84
95
|
- test/test_libusb_mass_storage2.rb
|
85
96
|
- test/test_libusb_version.rb
|
97
|
+
- test/test_libusb_keyboard.rb
|
86
98
|
- lib/libusb-1.0.dll
|
87
|
-
homepage:
|
99
|
+
homepage:
|
88
100
|
licenses: []
|
89
101
|
post_install_message:
|
90
102
|
rdoc_options:
|
@@ -112,12 +124,13 @@ signing_key:
|
|
112
124
|
specification_version: 3
|
113
125
|
summary: Access USB devices from Ruby via libusb-1.0
|
114
126
|
test_files:
|
115
|
-
- test/
|
127
|
+
- test/test_libusb_compat_mass_storage.rb
|
128
|
+
- test/test_libusb_gc.rb
|
116
129
|
- test/test_libusb_iso_transfer.rb
|
117
|
-
- test/test_libusb_mass_storage2.rb
|
118
|
-
- test/test_libusb_descriptors.rb
|
119
|
-
- test/test_libusb_mass_storage.rb
|
120
130
|
- test/test_libusb_capability.rb
|
121
|
-
- test/
|
131
|
+
- test/test_libusb_descriptors.rb
|
132
|
+
- test/test_libusb_compat.rb
|
133
|
+
- test/test_libusb_keyboard.rb
|
134
|
+
- test/test_libusb_mass_storage2.rb
|
122
135
|
- test/test_libusb_version.rb
|
123
|
-
- test/
|
136
|
+
- test/test_libusb_mass_storage.rb
|