libusb 0.6.3-x64-mingw32 → 0.6.4-x64-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.
- checksums.yaml +5 -5
- data/.travis.yml +5 -3
- data/Gemfile +5 -0
- data/History.md +19 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/appveyor.yml +8 -9
- data/lib/libusb/call.rb +62 -2
- data/lib/libusb/constants.rb +22 -16
- data/lib/libusb/context.rb +36 -27
- data/lib/libusb/dependencies.rb +2 -2
- data/lib/libusb/transfer.rb +38 -1
- data/lib/libusb/version_gem.rb +1 -1
- data/libusb.gemspec +2 -0
- data/test/{test_libusb_version.rb → test_libusb.rb} +12 -10
- data/test/{test_libusb_capability.rb → test_libusb_context.rb} +21 -3
- data/test/test_libusb_structs.rb +32 -3
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 03166b52a15e74011735936b7b52c6d4e5290f7bc95447dc0294b545fe507543
|
4
|
+
data.tar.gz: 3ae7ac74d51c70834d904bb2f72bb7538a65ce4ac0fe86dcb56b4a1612e011e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0577c1093d1fa94fda589717be74b111a174dae629c52ac069d96915c8d947895e72ce3689c847764c00548e58513e563b478dc3e8c90010b8b48cd43cf0c39a
|
7
|
+
data.tar.gz: baef1a1fd540651e15b00535a4e0e47413355cd79c91b1ccbf137cf052d10b3a3adcb92c4d2e0dd90c1f3c88ccb69ed898f77603e0cbef8843adb7efcf42f767
|
data/.travis.yml
CHANGED
@@ -3,17 +3,19 @@ sudo: false
|
|
3
3
|
dist: trusty
|
4
4
|
matrix:
|
5
5
|
include:
|
6
|
-
- rvm:
|
6
|
+
- rvm: ruby-head
|
7
|
+
env:
|
8
|
+
- RUBYOPT="--enable-frozen-string-literal --debug=frozen-string-literal"
|
9
|
+
- rvm: 2.4.3
|
7
10
|
env:
|
8
11
|
- RUBYOPT="--enable-frozen-string-literal --debug=frozen-string-literal"
|
9
|
-
- rvm: 1.9.3
|
10
12
|
- rvm: 2.0
|
11
13
|
- rvm: 2.1
|
12
14
|
- rvm: 2.2.5
|
13
15
|
- rvm: 2.3.1
|
14
|
-
- rvm: jruby-1.7
|
15
16
|
- rvm: jruby-9.1.5.0
|
16
17
|
- rvm: rbx-3
|
17
18
|
allow_failures:
|
18
19
|
- rvm: rbx-3
|
20
|
+
- rvm: ruby-head
|
19
21
|
script: bundle exec rake travis
|
data/Gemfile
CHANGED
data/History.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
0.6.4 / 2018-05-05
|
2
|
+
------------------
|
3
|
+
|
4
|
+
Added:
|
5
|
+
* New function Context#set_option.
|
6
|
+
It is also available when running libusb < 1.0.22 and calls libusb_set_debug() in this case.
|
7
|
+
* Add definition for SUPER_SPEED_PLUS.
|
8
|
+
* Linux: Use system libusb even when only library but no dev package is installed.
|
9
|
+
* Add Transfer#dev_handle and #timeout
|
10
|
+
* Use system libusb even when no development package is installed.
|
11
|
+
Means "libusb-1.0-0" is enough, no need for "libusb-dev" on Ubuntu.
|
12
|
+
|
13
|
+
Changed:
|
14
|
+
* Update libusb to 1.0.22
|
15
|
+
|
16
|
+
Deprecated:
|
17
|
+
* Deprecate Context#debug= analogous to libusb_set_debug in libusb-1.0.22.
|
18
|
+
|
19
|
+
|
1
20
|
0.6.3 / 2017-08-20
|
2
21
|
------------------
|
3
22
|
* Fix compat with FreeBSD. #24
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ task :test=>:compile do
|
|
21
21
|
sh "ruby -w -W2 -I. -Ilib -e \"#{Dir["test/test_*.rb"].map{|f| "require '#{f}';"}.join}\" -- -v"
|
22
22
|
end
|
23
23
|
|
24
|
-
travis_tests = %w[
|
24
|
+
travis_tests = %w[test_libusb.rb test_libusb_structs.rb]
|
25
25
|
task :travis=>:compile do
|
26
26
|
sh "ruby -w -W2 -I. -Ilib -e \"#{travis_tests.map{|f| "require 'test/#{f}';"}.join}\" -- -v"
|
27
27
|
end
|
data/appveyor.yml
CHANGED
@@ -2,6 +2,11 @@ init:
|
|
2
2
|
- SET PATH=C:/Ruby%ruby_version%/bin;%PATH%
|
3
3
|
- SET RAKEOPT=-rdevkit
|
4
4
|
install:
|
5
|
+
- ps: |
|
6
|
+
if ($env:ruby_version -like "*head*") {
|
7
|
+
$(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-$env:ruby_version.exe", "$pwd/ruby-setup.exe")
|
8
|
+
cmd /c ruby-setup.exe /verysilent /dir=C:/Ruby$env:ruby_version
|
9
|
+
}
|
5
10
|
- ruby --version
|
6
11
|
- gem --version
|
7
12
|
- ps: |
|
@@ -10,6 +15,8 @@ install:
|
|
10
15
|
$env:SSL_CERT_FILE = "$env:TMP/ca-bundle.crt"
|
11
16
|
Write-Host "Using SSL CA list $env:SSL_CERT_FILE" -foreground Green
|
12
17
|
}
|
18
|
+
- gem install bundler --conservative
|
19
|
+
- bundle config force_ruby_platform true
|
13
20
|
- bundle install
|
14
21
|
build_script:
|
15
22
|
- bundle exec rake compile
|
@@ -17,21 +24,13 @@ test_script:
|
|
17
24
|
- bundle exec rake travis
|
18
25
|
environment:
|
19
26
|
matrix:
|
20
|
-
- ruby_version: "
|
27
|
+
- ruby_version: "head-x64"
|
21
28
|
- ruby_version: "200"
|
22
29
|
BROKEN_SSL: true
|
23
|
-
- ruby_version: "200-x64"
|
24
|
-
BROKEN_SSL: true
|
25
|
-
- ruby_version: "21"
|
26
|
-
BROKEN_SSL: true
|
27
30
|
- ruby_version: "21-x64"
|
28
31
|
BROKEN_SSL: true
|
29
32
|
- ruby_version: "22"
|
30
33
|
BROKEN_SSL: true
|
31
|
-
- ruby_version: "22-x64"
|
32
|
-
BROKEN_SSL: true
|
33
|
-
- ruby_version: "23"
|
34
|
-
BROKEN_SSL: true
|
35
34
|
- ruby_version: "23-x64"
|
36
35
|
BROKEN_SSL: true
|
37
36
|
- ruby_version: "24"
|
data/lib/libusb/call.rb
CHANGED
@@ -28,7 +28,7 @@ module LIBUSB
|
|
28
28
|
prefix = FFI::Platform::LIBPREFIX.empty? ? 'lib' : FFI::Platform::LIBPREFIX
|
29
29
|
bundled_dll = File.join(root_path, "lib/#{prefix}usb-1.0.#{ext}")
|
30
30
|
bundled_dll_cygwin = File.join(root_path, "bin/#{prefix}usb-1.0.#{ext}")
|
31
|
-
ffi_lib([bundled_dll, bundled_dll_cygwin, "#{prefix}usb-1.0", "#{prefix}usb"])
|
31
|
+
ffi_lib([bundled_dll, bundled_dll_cygwin, "#{prefix}usb-1.0.#{ext}.0", "#{prefix}usb-1.0", "#{prefix}usb"])
|
32
32
|
|
33
33
|
ClassCodes = enum :libusb_class_code, [
|
34
34
|
:CLASS_PER_INTERFACE, 0,
|
@@ -164,12 +164,21 @@ module LIBUSB
|
|
164
164
|
:ISO_SYNC_TYPE_SYNC, 3,
|
165
165
|
]
|
166
166
|
|
167
|
+
# Speed codes. Indicates the speed at which the device is operating.
|
167
168
|
Speeds = enum :libusb_speed, [
|
169
|
+
# The OS doesn't report or know the device speed.
|
168
170
|
:SPEED_UNKNOWN, 0,
|
171
|
+
# The device is operating at low speed (1.5MBit/s).
|
169
172
|
:SPEED_LOW, 1,
|
173
|
+
# The device is operating at full speed (12MBit/s).
|
170
174
|
:SPEED_FULL, 2,
|
175
|
+
# The device is operating at high speed (480MBit/s).
|
171
176
|
:SPEED_HIGH, 3,
|
177
|
+
# The device is operating at super speed (5000MBit/s).
|
172
178
|
:SPEED_SUPER, 4,
|
179
|
+
# The device is operating at super speed plus (10000MBit/s).
|
180
|
+
# Available since libusb-1.0.22
|
181
|
+
:SPEED_SUPER_PLUS, 5,
|
173
182
|
]
|
174
183
|
|
175
184
|
# Supported speeds (wSpeedSupported) bitfield. Indicates what
|
@@ -250,6 +259,56 @@ module LIBUSB
|
|
250
259
|
:HOTPLUG_ENUMERATE, 1,
|
251
260
|
]
|
252
261
|
|
262
|
+
# Log message levels.
|
263
|
+
#
|
264
|
+
# - :LOG_LEVEL_NONE (0) : no messages ever printed by the library (default)
|
265
|
+
# - :LOG_LEVEL_ERROR (1) : error messages are printed to stderr
|
266
|
+
# - :LOG_LEVEL_WARNING (2) : warning and error messages are printed to stderr
|
267
|
+
# - :LOG_LEVEL_INFO (3) : informational messages are printed to stderr
|
268
|
+
# - :LOG_LEVEL_DEBUG (4) : debug and informational messages are printed to stderr
|
269
|
+
LogLevels = enum :libusb_log_level, [
|
270
|
+
:LOG_LEVEL_NONE, 0,
|
271
|
+
:LOG_LEVEL_ERROR, 1,
|
272
|
+
:LOG_LEVEL_WARNING, 2,
|
273
|
+
:LOG_LEVEL_INFO, 3,
|
274
|
+
:LOG_LEVEL_DEBUG, 4,
|
275
|
+
]
|
276
|
+
|
277
|
+
# Available option values for {Context#set_option}.
|
278
|
+
Options = enum :libusb_option, [
|
279
|
+
# Set the log message verbosity.
|
280
|
+
#
|
281
|
+
# The default level is :LOG_LEVEL_NONE, which means no messages are ever
|
282
|
+
# printed. If you choose to increase the message verbosity level, ensure
|
283
|
+
# that your application does not close the stderr file descriptor.
|
284
|
+
#
|
285
|
+
# You are advised to use level :LOG_LEVEL_WARNING. libusb is conservative
|
286
|
+
# with its message logging and most of the time, will only log messages that
|
287
|
+
# explain error conditions and other oddities. This will help you debug
|
288
|
+
# your software.
|
289
|
+
#
|
290
|
+
# If the +LIBUSB_DEBUG+ environment variable was set when libusb was
|
291
|
+
# initialized, this function does nothing: the message verbosity is fixed
|
292
|
+
# to the value in the environment variable.
|
293
|
+
#
|
294
|
+
# If libusb was compiled without any message logging, this function does
|
295
|
+
# nothing: you'll never get any messages.
|
296
|
+
#
|
297
|
+
# If libusb was compiled with verbose debug message logging, this function
|
298
|
+
# does nothing: you'll always get messages from all levels.
|
299
|
+
:OPTION_LOG_LEVEL,
|
300
|
+
|
301
|
+
# Use the UsbDk backend for a specific context, if available.
|
302
|
+
#
|
303
|
+
# This option should be set immediately after calling {Context.new}, otherwise
|
304
|
+
# unspecified behavior may occur.
|
305
|
+
#
|
306
|
+
# Only valid on Windows.
|
307
|
+
#
|
308
|
+
# Available since libusb-1.0.22.
|
309
|
+
:OPTION_USE_USBDK,
|
310
|
+
]
|
311
|
+
|
253
312
|
typedef :pointer, :libusb_context
|
254
313
|
typedef :pointer, :libusb_device
|
255
314
|
typedef :pointer, :libusb_device_handle
|
@@ -266,7 +325,8 @@ module LIBUSB
|
|
266
325
|
|
267
326
|
attach_function 'libusb_init', [ :pointer ], :int
|
268
327
|
attach_function 'libusb_exit', [ :pointer ], :void
|
269
|
-
attach_function 'libusb_set_debug', [:pointer, :
|
328
|
+
attach_function 'libusb_set_debug', [:pointer, :libusb_log_level], :void
|
329
|
+
try_attach_function 'libusb_set_option', [:libusb_context, :libusb_option, :varargs], :int
|
270
330
|
try_attach_function 'libusb_has_capability', [:libusb_capability], :int
|
271
331
|
|
272
332
|
attach_function 'libusb_get_device_list', [:pointer, :pointer], :ssize_t
|
data/lib/libusb/constants.rb
CHANGED
@@ -16,22 +16,28 @@
|
|
16
16
|
require 'libusb/call'
|
17
17
|
|
18
18
|
module LIBUSB
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
19
|
+
[
|
20
|
+
Call::ClassCodes,
|
21
|
+
Call::TransferTypes,
|
22
|
+
Call::StandardRequests,
|
23
|
+
Call::RequestTypes,
|
24
|
+
Call::DescriptorTypes,
|
25
|
+
Call::EndpointDirections,
|
26
|
+
Call::RequestRecipients,
|
27
|
+
Call::IsoSyncTypes,
|
28
|
+
Call::Speeds,
|
29
|
+
Call::Capabilities,
|
30
|
+
Call::SupportedSpeeds,
|
31
|
+
Call::Usb20ExtensionAttributes,
|
32
|
+
Call::SsUsbDeviceCapabilityAttributes,
|
33
|
+
Call::BosTypes,
|
34
|
+
Call::HotplugEvents,
|
35
|
+
Call::HotplugFlags,
|
36
|
+
Call::LogLevels,
|
37
|
+
Call::Options,
|
38
|
+
].each do |enum|
|
39
|
+
enum.to_h.each{|k,v| const_set(k,v) }
|
40
|
+
end
|
35
41
|
|
36
42
|
# Base class of libusb errors
|
37
43
|
class Error < RuntimeError
|
data/lib/libusb/context.rb
CHANGED
@@ -114,37 +114,46 @@ module LIBUSB
|
|
114
114
|
Call.libusb_exit(@ctx)
|
115
115
|
end
|
116
116
|
|
117
|
-
#
|
118
|
-
#
|
119
|
-
# * Level 0: no messages ever printed by the library (default)
|
120
|
-
# * Level 1: error messages are printed to stderr
|
121
|
-
# * Level 2: warning and error messages are printed to stderr
|
122
|
-
# * Level 3: informational messages are printed to stdout, warning and
|
123
|
-
# error messages are printed to stderr
|
124
|
-
#
|
125
|
-
# The default level is 0, which means no messages are ever printed. If you
|
126
|
-
# choose to increase the message verbosity level, ensure that your
|
127
|
-
# application does not close the stdout/stderr file descriptors.
|
128
|
-
#
|
129
|
-
# You are advised to set level 3. libusb is conservative with its message
|
130
|
-
# logging and most of the time, will only log messages that explain error
|
131
|
-
# conditions and other oddities. This will help you debug your software.
|
132
|
-
#
|
133
|
-
# If the LIBUSB_DEBUG environment variable was set when libusb was
|
134
|
-
# initialized, this method does nothing: the message verbosity is
|
135
|
-
# fixed to the value in the environment variable.
|
136
|
-
#
|
137
|
-
# If libusb was compiled without any message logging, this method
|
138
|
-
# does nothing: you'll never get any messages.
|
139
|
-
#
|
140
|
-
# If libusb was compiled with verbose debug message logging, this
|
141
|
-
# method does nothing: you'll always get messages from all levels.
|
142
|
-
#
|
143
|
-
# @param [Fixnum] level debug level to set
|
117
|
+
# @deprecated Use {Context#set_option} instead using the +:OPTION_LOG_LEVEL+ option.
|
144
118
|
def debug=(level)
|
145
119
|
Call.libusb_set_debug(@ctx, level)
|
146
120
|
end
|
147
121
|
|
122
|
+
def expect_option_args(exp, is)
|
123
|
+
raise ArgumentError, "wrong number of arguments (given #{is+1}, expected #{exp+1})" if is != exp
|
124
|
+
end
|
125
|
+
private :expect_option_args
|
126
|
+
|
127
|
+
# Set a libusb option from the {Call::Options option list}.
|
128
|
+
#
|
129
|
+
# @param [Symbol, Fixnum] option
|
130
|
+
# @param args Zero or more arguments depending on +option+
|
131
|
+
def set_option(option, *args)
|
132
|
+
if Call.respond_to?(:libusb_set_option)
|
133
|
+
# Available since libusb-1.0.22
|
134
|
+
|
135
|
+
ffi_args = case option
|
136
|
+
when :OPTION_LOG_LEVEL, LIBUSB::OPTION_LOG_LEVEL
|
137
|
+
expect_option_args(1, args.length)
|
138
|
+
[:libusb_log_level, args[0]]
|
139
|
+
when :OPTION_USE_USBDK, LIBUSB::OPTION_USE_USBDK
|
140
|
+
expect_option_args(0, args.length)
|
141
|
+
[]
|
142
|
+
else
|
143
|
+
raise ArgumentError, "unknown option #{option.inspect}"
|
144
|
+
end
|
145
|
+
|
146
|
+
res = Call.libusb_set_option(@ctx, option, *ffi_args)
|
147
|
+
LIBUSB.raise_error res, "in libusb_set_option" if res<0
|
148
|
+
|
149
|
+
else
|
150
|
+
# Fallback to deprecated function, if the gem is linked to an older libusb.
|
151
|
+
|
152
|
+
raise ArgumentError, "unknown option #{option.inspect}" unless [:OPTION_LOG_LEVEL, LIBUSB::OPTION_LOG_LEVEL].include?(option)
|
153
|
+
Call.libusb_set_debug(@ctx, *args)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
148
157
|
def device_list
|
149
158
|
pppDevs = FFI::MemoryPointer.new :pointer
|
150
159
|
size = Call.libusb_get_device_list(@ctx, pppDevs)
|
data/lib/libusb/dependencies.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module LIBUSB
|
2
|
-
LIBUSB_VERSION = ENV['LIBUSB_VERSION'] || '1.0.
|
2
|
+
LIBUSB_VERSION = ENV['LIBUSB_VERSION'] || '1.0.22'
|
3
3
|
LIBUSB_SOURCE_URI = "https://github.com/libusb/libusb/releases/download/v#{LIBUSB_VERSION}/libusb-#{LIBUSB_VERSION}.tar.bz2"
|
4
|
-
LIBUSB_SOURCE_SHA1 = '
|
4
|
+
LIBUSB_SOURCE_SHA1 = '10116aa265aac4273a0c894faa089370262ec0dc'
|
5
5
|
|
6
6
|
MINI_PORTILE_VERSION = '~> 2.1'
|
7
7
|
end
|
data/lib/libusb/transfer.rb
CHANGED
@@ -43,10 +43,15 @@ module LIBUSB
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
class << self
|
47
|
+
private :new
|
48
|
+
end
|
49
|
+
|
46
50
|
def initialize(args={})
|
47
51
|
@buffer = nil
|
48
52
|
@completion_flag = Context::CompletionFlag.new
|
49
53
|
@allow_device_memory = false
|
54
|
+
@dev_handle = nil
|
50
55
|
args.each{|k,v| send("#{k}=", v) }
|
51
56
|
end
|
52
57
|
private :initialize
|
@@ -57,13 +62,23 @@ module LIBUSB
|
|
57
62
|
@transfer[:dev_handle] = @dev_handle.pHandle
|
58
63
|
end
|
59
64
|
|
60
|
-
#
|
65
|
+
# The handle for the device to communicate with.
|
66
|
+
attr_reader :dev_handle
|
67
|
+
|
68
|
+
# Set timeout for this transfer in millseconds.
|
61
69
|
#
|
62
70
|
# A value of 0 indicates no timeout.
|
63
71
|
def timeout=(value)
|
64
72
|
@transfer[:timeout] = value
|
65
73
|
end
|
66
74
|
|
75
|
+
# Get timeout for this transfer in millseconds.
|
76
|
+
#
|
77
|
+
# A value of 0 indicates no timeout.
|
78
|
+
def timeout
|
79
|
+
@transfer[:timeout]
|
80
|
+
end
|
81
|
+
|
67
82
|
# Set the address of a valid endpoint to communicate with.
|
68
83
|
def endpoint=(endpoint)
|
69
84
|
endpoint = endpoint.bEndpointAddress if endpoint.respond_to? :bEndpointAddress
|
@@ -225,6 +240,8 @@ module LIBUSB
|
|
225
240
|
#
|
226
241
|
# Inspect {#status} to check for transfer errors.
|
227
242
|
def submit_and_wait
|
243
|
+
raise ArgumentError, "#{self.class}#dev_handle not set" unless @dev_handle
|
244
|
+
|
228
245
|
@completion_flag.completed = false
|
229
246
|
submit! do |tr2|
|
230
247
|
@completion_flag.completed = true
|
@@ -256,6 +273,10 @@ module LIBUSB
|
|
256
273
|
end
|
257
274
|
|
258
275
|
class BulkTransfer < Transfer
|
276
|
+
def self.new(*)
|
277
|
+
super
|
278
|
+
end
|
279
|
+
|
259
280
|
def initialize(args={})
|
260
281
|
@transfer = Call::Transfer.new Call.libusb_alloc_transfer(0)
|
261
282
|
@transfer[:type] = TRANSFER_TYPE_BULK
|
@@ -272,6 +293,10 @@ module LIBUSB
|
|
272
293
|
#
|
273
294
|
# Available since libusb-1.0.19.
|
274
295
|
class BulkStreamTransfer < Transfer
|
296
|
+
def self.new(*)
|
297
|
+
super
|
298
|
+
end
|
299
|
+
|
275
300
|
def initialize(args={})
|
276
301
|
@transfer = Call::Transfer.new Call.libusb_alloc_transfer(0)
|
277
302
|
@transfer[:type] = TRANSFER_TYPE_BULK_STREAM
|
@@ -299,6 +324,10 @@ module LIBUSB
|
|
299
324
|
end
|
300
325
|
|
301
326
|
class ControlTransfer < Transfer
|
327
|
+
def self.new(*)
|
328
|
+
super
|
329
|
+
end
|
330
|
+
|
302
331
|
def initialize(args={})
|
303
332
|
@transfer = Call::Transfer.new Call.libusb_alloc_transfer(0)
|
304
333
|
@transfer[:type] = TRANSFER_TYPE_CONTROL
|
@@ -308,6 +337,10 @@ module LIBUSB
|
|
308
337
|
end
|
309
338
|
|
310
339
|
class InterruptTransfer < Transfer
|
340
|
+
def self.new(*)
|
341
|
+
super
|
342
|
+
end
|
343
|
+
|
311
344
|
def initialize(args={})
|
312
345
|
@transfer = Call::Transfer.new Call.libusb_alloc_transfer(0)
|
313
346
|
@transfer[:type] = TRANSFER_TYPE_INTERRUPT
|
@@ -339,6 +372,10 @@ module LIBUSB
|
|
339
372
|
end
|
340
373
|
|
341
374
|
class IsochronousTransfer < Transfer
|
375
|
+
def self.new(*)
|
376
|
+
super
|
377
|
+
end
|
378
|
+
|
342
379
|
def initialize(num_packets, args={})
|
343
380
|
@ptr = Call.libusb_alloc_transfer(num_packets)
|
344
381
|
@transfer = Call::Transfer.new @ptr
|
data/lib/libusb/version_gem.rb
CHANGED
data/libusb.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
21
|
s.require_paths = ["lib"]
|
22
22
|
s.extensions = ['ext/extconf.rb']
|
23
|
+
s.metadata["yard.run"] = "yri"
|
23
24
|
|
24
25
|
s.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
|
25
26
|
s.add_runtime_dependency 'ffi', '~> 1.0'
|
@@ -27,4 +28,5 @@ Gem::Specification.new do |s|
|
|
27
28
|
s.add_development_dependency 'rake-compiler', '~> 1.0'
|
28
29
|
s.add_development_dependency 'rake-compiler-dock', '~> 0.2'
|
29
30
|
s.add_development_dependency 'bundler', '~> 1.0'
|
31
|
+
s.add_development_dependency 'yard', '~> 0.6'
|
30
32
|
end
|
@@ -16,22 +16,24 @@
|
|
16
16
|
require "minitest/autorun"
|
17
17
|
require "libusb"
|
18
18
|
|
19
|
-
class
|
20
|
-
def
|
21
|
-
|
19
|
+
class TestLibusb < Minitest::Test
|
20
|
+
def test_has_capability
|
21
|
+
assert LIBUSB.has_capability?(:CAP_HAS_CAPABILITY)
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_version_parts
|
25
|
-
|
26
|
-
assert_operator
|
27
|
-
assert_operator
|
28
|
-
assert_operator
|
29
|
-
|
25
|
+
v = LIBUSB.version
|
26
|
+
assert_operator v.major, :>=, 0
|
27
|
+
assert_operator v.minor, :>=, 0
|
28
|
+
assert_operator v.micro, :>=, 0
|
29
|
+
assert_operator v.nano, :>=, 0
|
30
|
+
assert_kind_of String, v.rc
|
30
31
|
end
|
31
32
|
|
32
33
|
def test_version_string
|
33
|
-
|
34
|
-
assert_match(
|
34
|
+
v = LIBUSB.version
|
35
|
+
assert_match(/^\d+\.\d+\.\d+/, v.to_s)
|
36
|
+
assert_match(/^#<LIBUSB::Version \d+\.\d+\.\d+/, v.inspect)
|
35
37
|
end
|
36
38
|
|
37
39
|
def test_gem_version_string
|
@@ -16,8 +16,26 @@
|
|
16
16
|
require "minitest/autorun"
|
17
17
|
require "libusb"
|
18
18
|
|
19
|
-
class
|
20
|
-
def
|
21
|
-
|
19
|
+
class TestLibusbContext < Minitest::Test
|
20
|
+
def setup
|
21
|
+
@c = LIBUSB::Context.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
@c.exit if @c
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_set_option
|
29
|
+
@c.set_option LIBUSB::OPTION_LOG_LEVEL, LIBUSB::LOG_LEVEL_NONE
|
30
|
+
@c.set_option LIBUSB::OPTION_LOG_LEVEL, LIBUSB::LOG_LEVEL_ERROR
|
31
|
+
@c.set_option LIBUSB::OPTION_LOG_LEVEL, LIBUSB::LOG_LEVEL_WARNING
|
32
|
+
@c.set_option LIBUSB::OPTION_LOG_LEVEL, LIBUSB::LOG_LEVEL_INFO
|
33
|
+
@c.set_option LIBUSB::OPTION_LOG_LEVEL, LIBUSB::LOG_LEVEL_DEBUG
|
34
|
+
@c.set_option :OPTION_LOG_LEVEL, :LOG_LEVEL_NONE
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_set_debug
|
38
|
+
@c.debug = 4
|
39
|
+
@c.debug = 0
|
22
40
|
end
|
23
41
|
end
|
data/test/test_libusb_structs.rb
CHANGED
@@ -43,16 +43,45 @@ class TestLibusbStructs < Minitest::Test
|
|
43
43
|
assert_equal 0, s[:completed]
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
46
|
+
def test_Transfer_buffer
|
47
47
|
t = LIBUSB::InterruptTransfer.new allow_device_memory: true
|
48
48
|
assert_equal :TRANSFER_COMPLETED, t.status
|
49
49
|
assert_equal true, t.allow_device_memory
|
50
|
-
|
50
|
+
assert_nil t.memory_type
|
51
51
|
|
52
52
|
t.alloc_buffer(10)
|
53
53
|
assert_equal :user_space, t.memory_type, "no device assigned -> should use memory from user space"
|
54
54
|
|
55
55
|
t.free_buffer
|
56
|
-
|
56
|
+
assert_nil t.memory_type
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_Transfer_new
|
60
|
+
assert_raises(NoMethodError){ LIBUSB::Transfer.new }
|
61
|
+
LIBUSB::BulkStreamTransfer.new
|
62
|
+
LIBUSB::BulkTransfer.new
|
63
|
+
LIBUSB::ControlTransfer.new
|
64
|
+
LIBUSB::InterruptTransfer.new
|
65
|
+
LIBUSB::IsochronousTransfer.new(0)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_ControlTransfer_attributes
|
69
|
+
t = LIBUSB::ControlTransfer.new
|
70
|
+
t.timeout = 123
|
71
|
+
assert_equal 123, t.timeout
|
72
|
+
t.allow_device_memory = true
|
73
|
+
assert_equal true, t.allow_device_memory
|
74
|
+
assert_nil t.dev_handle
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_ControlTransfer_new_args
|
78
|
+
t = LIBUSB::ControlTransfer.new allow_device_memory: false, timeout: 444
|
79
|
+
assert_equal false, t.allow_device_memory
|
80
|
+
assert_equal 444, t.timeout
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_Transfer_no_dev_handle
|
84
|
+
t = LIBUSB::ControlTransfer.new
|
85
|
+
assert_raises(ArgumentError){ t.submit_and_wait }
|
57
86
|
end
|
58
87
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libusb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: x64-mingw32
|
6
6
|
authors:
|
7
7
|
- Lars Kanis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.6'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.6'
|
69
83
|
description: LIBUSB is a Ruby binding that gives Ruby programmers access to arbitrary
|
70
84
|
USB devices
|
71
85
|
email:
|
@@ -106,11 +120,12 @@ files:
|
|
106
120
|
- lib/libusb/version_gem.rb
|
107
121
|
- lib/libusb/version_struct.rb
|
108
122
|
- libusb.gemspec
|
123
|
+
- test/test_libusb.rb
|
109
124
|
- test/test_libusb_bos.rb
|
110
125
|
- test/test_libusb_bulk_stream_transfer.rb
|
111
|
-
- test/test_libusb_capability.rb
|
112
126
|
- test/test_libusb_compat.rb
|
113
127
|
- test/test_libusb_compat_mass_storage.rb
|
128
|
+
- test/test_libusb_context.rb
|
114
129
|
- test/test_libusb_descriptors.rb
|
115
130
|
- test/test_libusb_event_machine.rb
|
116
131
|
- test/test_libusb_gc.rb
|
@@ -120,12 +135,12 @@ files:
|
|
120
135
|
- test/test_libusb_mass_storage2.rb
|
121
136
|
- test/test_libusb_structs.rb
|
122
137
|
- test/test_libusb_threads.rb
|
123
|
-
- test/test_libusb_version.rb
|
124
138
|
- wireshark-usb-sniffer.png
|
125
139
|
homepage: http://github.com/larskanis/libusb
|
126
140
|
licenses:
|
127
141
|
- LGPL-3.0
|
128
|
-
metadata:
|
142
|
+
metadata:
|
143
|
+
yard.run: yri
|
129
144
|
post_install_message:
|
130
145
|
rdoc_options:
|
131
146
|
- "--main"
|
@@ -145,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
160
|
version: '0'
|
146
161
|
requirements: []
|
147
162
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
163
|
+
rubygems_version: 2.7.3
|
149
164
|
signing_key:
|
150
165
|
specification_version: 4
|
151
166
|
summary: Access USB devices from Ruby via libusb-1.0
|