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.
@@ -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: []