blinkstick 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ class BlinkStick
2
+ VERSION = "1.0.1"
3
+ 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: []