blinkstick 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|