blinkstick 1.0.1
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 +7 -0
- data/lib/blinkstick.rb +114 -0
- data/lib/blinkstick/version.rb +3 -0
- metadata +73 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 2b8ee411229d9a9672d7cd66845f4e7fa7cbe0e6
|
|
4
|
+
data.tar.gz: 400f8c5e2e8582b3540c2591eac98143a1d039b9
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 9fc4475c927d2d6113ad3eddf7ed38b3c5689c638cc3dbc88dff7bd234cc4aaefbccac2820c61eb5b16d33372c986652c92ffbb910680264af1fc1fc9a575913
|
|
7
|
+
data.tar.gz: c492d13c7cae26efe99cf8f4705362c1da1313e8fc40f7149ba85569142ebca150372f2a45c33d52f6abe949b51be217b0c930069ceedf62e21e93b970d897c6
|
data/lib/blinkstick.rb
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require "libusb"
|
|
2
|
+
require "color"
|
|
3
|
+
|
|
4
|
+
class BlinkStick
|
|
5
|
+
@@VENDOR_ID = 0X20A0
|
|
6
|
+
@@PRODUCT_ID = 0x41E5
|
|
7
|
+
|
|
8
|
+
def open(device = nil)
|
|
9
|
+
@@usb ||= LIBUSB::Context.new
|
|
10
|
+
|
|
11
|
+
if (device)
|
|
12
|
+
@device = device
|
|
13
|
+
else
|
|
14
|
+
@device = @@usb.devices(:idVendor => @@VENDOR_ID, :idProduct => @@PRODUCT_ID).first
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@handle = @device.open
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.find_all
|
|
21
|
+
@@usb ||= LIBUSB::Context.new
|
|
22
|
+
|
|
23
|
+
result = []
|
|
24
|
+
|
|
25
|
+
@@usb.devices(:idVendor => @@VENDOR_ID, :idProduct => @@PRODUCT_ID).each { | device |
|
|
26
|
+
b = BlinkStick.new
|
|
27
|
+
b.open(device)
|
|
28
|
+
|
|
29
|
+
result.push(b)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
result
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.find_by_serial(serial)
|
|
36
|
+
@@usb ||= LIBUSB::Context.new
|
|
37
|
+
|
|
38
|
+
@@usb.devices(:idVendor => @@VENDOR_ID, :idProduct => @@PRODUCT_ID).each { | device |
|
|
39
|
+
if device.serial_number == serial
|
|
40
|
+
b = BlinkStick.new
|
|
41
|
+
b.open(device)
|
|
42
|
+
return b
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
nil
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def color=(value)
|
|
50
|
+
@handle.control_transfer(:bmRequestType => 0x20, :bRequest => 0x9, :wValue => 0x1, :wIndex => 0x0000, :dataOut => 1.chr + value.red.to_i.chr + value.green.to_i.chr + value.blue.to_i.chr)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def color
|
|
54
|
+
result = @handle.control_transfer(:bmRequestType => 0x80 | 0x20, :bRequest => 0x1, :wValue => 0x1, :wIndex => 0x0000, :dataIn => 4)
|
|
55
|
+
Color::RGB.new(result[1].ord, result[2].ord, result[3].ord)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def off
|
|
59
|
+
self.color = Color::RGB.new(0, 0, 0)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def get_info_block(id)
|
|
63
|
+
bytes = @handle.control_transfer(:bmRequestType => 0x80 | 0x20, :bRequest => 0x1, :wValue => id + 1, :wIndex => 0x0000, :dataIn => 33)
|
|
64
|
+
|
|
65
|
+
result = ""
|
|
66
|
+
for i in 1..(bytes.length-1)
|
|
67
|
+
if i == "\x00"
|
|
68
|
+
break
|
|
69
|
+
end
|
|
70
|
+
result += bytes[i]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
result
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def set_info_block(id, data)
|
|
77
|
+
data = (id + 1).chr + data
|
|
78
|
+
data = data + 0.chr while data.length < 33
|
|
79
|
+
@handle.control_transfer(:bmRequestType => 0x20, :bRequest => 0x9, :wValue => id + 1, :wIndex => 0x0000, :dataOut => data)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def random_color
|
|
83
|
+
r = Random.new
|
|
84
|
+
self.color = Color::RGB.new(r.rand(255), r.rand(255), r.rand(255))
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def serial
|
|
88
|
+
@device.serial_number
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def manufacturer
|
|
92
|
+
@device.manufacturer
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def description
|
|
96
|
+
@device.product
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def info_block1
|
|
100
|
+
get_info_block(1)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def info_block1=(value)
|
|
104
|
+
set_info_block(1, value)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def info_block2
|
|
108
|
+
get_info_block(2)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def info_block2=(value)
|
|
112
|
+
set_info_block(2, value)
|
|
113
|
+
end
|
|
114
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: blinkstick
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Arvydas Juskevicius
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-01-02 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: libusb
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - '>='
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 0.4.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - '>='
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 0.4.0
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: color
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 1.4.2
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 1.4.2
|
|
41
|
+
description: |2
|
|
42
|
+
BlinkStick provides a ruby interface to an Agile Innovative BlinkStick via libusb.
|
|
43
|
+
email: arvydas@agileinnovative.co.uk
|
|
44
|
+
executables: []
|
|
45
|
+
extensions: []
|
|
46
|
+
extra_rdoc_files: []
|
|
47
|
+
files:
|
|
48
|
+
- lib/blinkstick/version.rb
|
|
49
|
+
- lib/blinkstick.rb
|
|
50
|
+
homepage: https://github.com/arvydas/blinkstick-ruby
|
|
51
|
+
licenses: []
|
|
52
|
+
metadata: {}
|
|
53
|
+
post_install_message:
|
|
54
|
+
rdoc_options: []
|
|
55
|
+
require_paths:
|
|
56
|
+
- lib
|
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - '>='
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0'
|
|
67
|
+
requirements: []
|
|
68
|
+
rubyforge_project:
|
|
69
|
+
rubygems_version: 2.0.6
|
|
70
|
+
signing_key:
|
|
71
|
+
specification_version: 4
|
|
72
|
+
summary: Blinkstick
|
|
73
|
+
test_files: []
|