rb-blink1 0.0.5 → 0.0.6

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.
data/README.rdoc CHANGED
@@ -2,13 +2,23 @@
2
2
 
3
3
  The Ruby interface for blink(1)
4
4
 
5
+ {<img src="https://travis-ci.org/ngs/rb-blink1.png?branch=master" alt="Build Status" />}[https://travis-ci.org/ngs/rb-blink1]
6
+
5
7
  == Install
6
8
 
7
9
  gem install rb-blink1
8
10
 
9
11
  == Usage
10
12
 
11
- === Set RGB
13
+ === Play in a block
14
+
15
+ require 'blink1'
16
+
17
+ Blink1.open do |blink1|
18
+ blink1.set_rgb(255, 255, 255)
19
+ end
20
+
21
+ === Open and close manually
12
22
 
13
23
  require 'blink1'
14
24
 
@@ -17,22 +27,17 @@ The Ruby interface for blink(1)
17
27
  blink1.set_rgb(255, 255, 255)
18
28
  blink1.close
19
29
 
20
- === Fade to RGB
30
+ === Set RGB
21
31
 
22
- require 'blink1'
32
+ blink1.set_rgb(255, 255, 255)
23
33
 
24
- blink1 = Blink1.new
25
- blink1.open
26
- blink1.set_rgb(0, 0, 0)
34
+
35
+ === Fade to RGB
36
+
27
37
  blink1.fade_to_rgb(100, 255, 255, 255)
28
- blink1.close
29
38
 
30
39
  === Create and play pattern line
31
40
 
32
- require 'blink1'
33
-
34
- blink1 = Blink1.new
35
- blink1.open
36
41
  blink1.write_pattern_line(100, 255, 255, 255, 0)
37
42
  blink1.write_pattern_line(100, 0, 255, 255, 1)
38
43
  blink1.write_pattern_line(100, 255, 255, 0, 2)
@@ -45,45 +50,23 @@ The Ruby interface for blink(1)
45
50
  blink1.write_pattern_line(100, 0, 255, 255, 9)
46
51
  blink1.write_pattern_line(100, 255, 255, 0, 10)
47
52
  blink1.play(0)
48
- blink1.close
49
53
 
50
54
  === Blink with specified color
51
55
 
52
- require 'blink1'
53
-
54
- blink1 = Blink1.new
55
- blink1.open
56
56
  blink1.blink(255, 255, 0, 5)
57
- blink1.close
58
57
 
59
58
  === Random color
60
59
 
61
- require 'blink1'
62
-
63
- blink1 = Blink1.new
64
- blink1.open
65
60
  blink1.random(25)
66
- blink1.close
67
61
 
68
62
  === Turn LED on
69
63
 
70
- require 'blink1'
71
-
72
- blink1 = Blink1.new
73
- blink1.open
74
64
  blink1.on
75
- blink1.close
76
65
 
77
66
  === Turn LED off
78
67
 
79
- require 'blink1'
80
-
81
- blink1 = Blink1.new
82
- blink1.open
83
68
  blink1.off
84
- blink1.close
85
-
86
69
 
87
70
  == Author
88
71
 
89
- - {Atsushi Nagase}[http://ngs.io/]
72
+ {Atsushi Nagase}[http://ngs.io/]
data/Rakefile CHANGED
@@ -1,5 +1,29 @@
1
- require 'rake/testtask'
2
- require 'rake/clean'
1
+ require 'bundler/gem_tasks'
2
+ require 'rdoc/task'
3
+ require 'rspec/core/rake_task'
3
4
 
4
- NAME = 'blink1'
5
+ task :default => :spec
6
+ task :spec => :build
5
7
 
8
+ task :build do
9
+ Dir.chdir('ext/blink1') do
10
+ output = `ruby extconf.rb`
11
+ raise output unless $? == 0
12
+ output = `make`
13
+ raise output unless $? == 0
14
+ end
15
+ end
16
+
17
+
18
+ RSpec::Core::RakeTask.new
19
+
20
+ RDoc::Task.new do |rdoc|
21
+
22
+ rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb", "ext/blink1/blink1.c")
23
+ rdoc.generator = 'bootstrap'
24
+ rdoc.main = "README.rdoc"
25
+ rdoc.rdoc_dir = 'html'
26
+ rdoc.title = 'rb-blink1'
27
+ rdoc.options << '--line-numbers'
28
+
29
+ end
data/ext/blink1/blink1.c CHANGED
@@ -1,3 +1,8 @@
1
+ /*
2
+ * Blink1
3
+ * Ruby interface for blink(1).
4
+ * Wraps methods in blink1-lib.c.
5
+ */
1
6
  #include <stdlib.h>
2
7
  #include "ruby.h"
3
8
  #include "blink1-lib.h"
@@ -12,36 +17,61 @@ static int degamma = 1;
12
17
 
13
18
  #pragma mark - Static methods
14
19
 
20
+ /** Return vendor ID */
15
21
  static VALUE rb_blink1_vid(VALUE self) {
16
22
  return INT2NUM(blink1_vid());
17
23
  }
18
24
 
25
+ /** Return product ID */
19
26
  static VALUE rb_blink1_pid(VALUE self) {
20
27
  return INT2NUM(blink1_pid());
21
28
  }
22
29
 
30
+ /** Sort cached device by path. */
23
31
  static VALUE rb_blink1_sortPaths(VALUE self) {
24
32
  blink1_sortPaths();
25
33
  return Qnil;
26
34
  }
27
35
 
36
+ /** Sort cached device by serial id. */
28
37
  static VALUE rb_blink1_sortSerials(VALUE self) {
29
38
  blink1_sortSerials();
30
39
  return Qnil;
31
40
  }
32
41
 
42
+ /** Get all devices by default +product_id+, +vendor_id+. */
33
43
  static VALUE rb_blink1_enumerate(VALUE self) {
34
44
  return INT2NUM(blink1_enumerate());
35
45
  }
36
46
 
47
+ /**
48
+ * :call-seq:
49
+ * <span class="name">enumerate_by_vid_pid</span> <span class="arguments">(vid, pid) -> integer</span>
50
+ *
51
+ * Get all matching devices by VID/PID pair.
52
+ *
53
+ * Return number of devices.
54
+ */
37
55
  static VALUE rb_blink1_enumerateByVidPid(VALUE self, VALUE vid, VALUE pid) {
38
56
  return INT2NUM(blink1_enumerateByVidPid(FIX2INT(vid), FIX2INT(pid)));
39
57
  }
40
58
 
59
+ /**
60
+ * :call-seq:
61
+ * <span class="name">cached_path</span> <span class="arguments">(index) -> string</span>
62
+ *
63
+ * Return cached device path by index.
64
+ */
41
65
  static VALUE rb_blink1_blink1_getCachedPath(VALUE self, VALUE i) {
42
66
  return rb_str_new2(blink1_getCachedPath(FIX2INT(i)));
43
67
  }
44
68
 
69
+ /**
70
+ * :call-seq:
71
+ * <span class="name">cached_serial</span> <span class="arguments">(index) -> string</span>
72
+ *
73
+ * Return cached device serial id by index.
74
+ */
45
75
  static VALUE rb_blink1_getCachedSerial(VALUE self, VALUE i) {
46
76
  const wchar_t *ret = blink1_getCachedSerial(FIX2INT(i));
47
77
  char dest[16] = {"\0"};
@@ -49,19 +79,29 @@ static VALUE rb_blink1_getCachedSerial(VALUE self, VALUE i) {
49
79
  return rb_str_new2(dest);
50
80
  }
51
81
 
82
+ /**
83
+ * :call-seq:
84
+ * <span class="name">cached_count</span> <span class="arguments">-> integer</span>
85
+ *
86
+ * Return number of cached devices.
87
+ */
52
88
  static VALUE rb_blink1_getCachedCount(VALUE self) {
53
89
  return INT2NUM(blink1_getCachedCount());
54
90
  }
55
91
 
92
+
93
+ /* :nodoc: */
56
94
  static VALUE rb_blink1_error_msg(VALUE self, VALUE code) {
57
95
  char *msg = blink1_error_msg(FIX2INT(code));
58
96
  return msg == NULL ? Qnil : rb_str_new2(msg);
59
97
  }
60
98
 
99
+ /** Return degamma enabled. */
61
100
  static VALUE rb_blink1_getDegammaEnabled(VALUE self) {
62
101
  return degamma == 1 ? Qtrue : Qfalse;
63
102
  }
64
103
 
104
+ /** Set degamma enabled. */
65
105
  static VALUE rb_blink1_setDegammaEnabled(VALUE self, VALUE enabled) {
66
106
  if(RTEST(enabled)) {
67
107
  degamma = 1;
@@ -73,10 +113,12 @@ static VALUE rb_blink1_setDegammaEnabled(VALUE self, VALUE enabled) {
73
113
  return Qnil;
74
114
  }
75
115
 
116
+ /** Return gamma corrected value for a RGB component. */
76
117
  static VALUE rb_blink1_degamma(VALUE self, VALUE i) {
77
118
  return INT2NUM(blink1_degamma(FIX2INT(i)));
78
119
  }
79
120
 
121
+ /** Sleeps for milliseconds. */
80
122
  static VALUE rb_blink1_sleep(VALUE self, VALUE delayMillis) {
81
123
  blink1_sleep(FIX2UINT(delayMillis));
82
124
  return Qnil;
@@ -84,6 +126,7 @@ static VALUE rb_blink1_sleep(VALUE self, VALUE delayMillis) {
84
126
 
85
127
  #pragma mark - Instance methods
86
128
 
129
+ /** :nodoc: */
87
130
  void rb_blink1_free(struct Blink1Instance *ins) {
88
131
  if(ins->opened == 1) {
89
132
  blink1_close(ins->dev);
@@ -93,18 +136,21 @@ void rb_blink1_free(struct Blink1Instance *ins) {
93
136
  ruby_xfree(ins);
94
137
  }
95
138
 
139
+ /** :nodoc: */
96
140
  static VALUE rb_blink1_allocate(VALUE self) {
97
141
  struct Blink1Instance *ins = malloc(sizeof(struct Blink1Instance));
98
142
  ins->opened = 0;
99
143
  return Data_Wrap_Struct(self, 0, rb_blink1_free, ins);
100
144
  }
101
145
 
146
+ /** Return the device is opened. */
102
147
  static VALUE rb_blink1_opened(VALUE self) {
103
148
  struct Blink1Instance *ins;
104
149
  Data_Get_Struct(self, struct Blink1Instance, ins);
105
150
  return ins->opened == 1 ? Qtrue : Qfalse;
106
151
  }
107
152
 
153
+ /** Open device by default +vendor_id+, +product_id+. */
108
154
  static VALUE rb_blink1_open(VALUE self) {
109
155
  struct Blink1Instance *ins;
110
156
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -116,6 +162,7 @@ static VALUE rb_blink1_open(VALUE self) {
116
162
  return Qfalse;
117
163
  }
118
164
 
165
+ /** Open device by device path. */
119
166
  static VALUE rb_blink1_openByPath(VALUE self, VALUE path) {
120
167
  struct Blink1Instance *ins;
121
168
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -127,6 +174,7 @@ static VALUE rb_blink1_openByPath(VALUE self, VALUE path) {
127
174
  return Qfalse;
128
175
  }
129
176
 
177
+ /** Open device by serial id. */
130
178
  static VALUE rb_blink1_openBySerial(VALUE self, VALUE serial) {
131
179
  struct Blink1Instance *ins;
132
180
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -138,6 +186,7 @@ static VALUE rb_blink1_openBySerial(VALUE self, VALUE serial) {
138
186
  return Qfalse;
139
187
  }
140
188
 
189
+ /** Open device by id. */
141
190
  static VALUE rb_blink1_openById(VALUE self, VALUE id) {
142
191
  struct Blink1Instance *ins;
143
192
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -149,6 +198,7 @@ static VALUE rb_blink1_openById(VALUE self, VALUE id) {
149
198
  return Qfalse;
150
199
  }
151
200
 
201
+ /** Closes the device. */
152
202
  static VALUE rb_blink1_close(VALUE self) {
153
203
  struct Blink1Instance *ins;
154
204
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -159,24 +209,47 @@ static VALUE rb_blink1_close(VALUE self) {
159
209
  return Qnil;
160
210
  }
161
211
 
212
+ /** Return blink(1) version. */
162
213
  static VALUE rb_blink1_getVersion(VALUE self) {
163
214
  struct Blink1Instance *ins;
164
215
  Data_Get_Struct(self, struct Blink1Instance, ins);
165
216
  return INT2NUM(blink1_getVersion(ins->dev));
166
217
  }
167
218
 
219
+ /**
220
+ * :call-seq:
221
+ * <span class="name">fade_to_rgb</span> <span class="arguments">(fade_millis, r, g, b) -> integer</span>
222
+ *
223
+ * Fade LED color to RGB in +fade_millis+.
224
+ *
225
+ * Return the actual number of bytes written and -1 on error.
226
+ */
168
227
  static VALUE rb_blink1_fadeToRGB(VALUE self, VALUE fadeMillis, VALUE r, VALUE g, VALUE b) {
169
228
  struct Blink1Instance *ins;
170
229
  Data_Get_Struct(self, struct Blink1Instance, ins);
171
230
  return INT2NUM(blink1_fadeToRGB(ins->dev, FIX2UINT(fadeMillis), FIX2UINT(r), FIX2UINT(g), FIX2UINT(b)));
172
231
  }
173
232
 
233
+ /**
234
+ * :call-seq:
235
+ * <span class="name">set_rgb</span> <span class="arguments">(r, g, b) -> integer</span>
236
+ *
237
+ * Set LED color to RGB.
238
+ *
239
+ * Return the actual number of bytes written and -1 on error.
240
+ */
174
241
  static VALUE rb_blink1_setRGB(VALUE self, VALUE r, VALUE g, VALUE b) {
175
242
  struct Blink1Instance *ins;
176
243
  Data_Get_Struct(self, struct Blink1Instance, ins);
177
244
  return INT2NUM(blink1_setRGB(ins->dev, FIX2UINT(r), FIX2UINT(g), FIX2UINT(b)));
178
245
  }
179
246
 
247
+ /**
248
+ * :call-seq:
249
+ * <span class="name">eeread</span> <span class="arguments">(addr) -> integer</span>
250
+ *
251
+ * Returns an EEPROM byte.
252
+ */
180
253
  static VALUE rb_blink1_eeread(VALUE self, VALUE addr) {
181
254
  struct Blink1Instance *ins;
182
255
  uint8_t val = 0;
@@ -185,12 +258,21 @@ static VALUE rb_blink1_eeread(VALUE self, VALUE addr) {
185
258
  return UINT2NUM(val);
186
259
  }
187
260
 
261
+ /**
262
+ * :call-seq:
263
+ * <span class="name">eewrite</span> <span class="arguments">(addr, val) -> integer</span>
264
+ *
265
+ * Write an EEPROM byte.
266
+ *
267
+ * Return the actual number of bytes written and -1 on error.
268
+ */
188
269
  static VALUE rb_blink1_eewrite(VALUE self, VALUE addr, VALUE val) {
189
270
  struct Blink1Instance *ins;
190
271
  Data_Get_Struct(self, struct Blink1Instance, ins);
191
272
  return INT2NUM(blink1_eewrite(ins->dev, FIX2UINT(addr), FIX2UINT(val)));
192
273
  }
193
274
 
275
+ /** :nodoc: */
194
276
  static VALUE rb_blink1_serialnumread(VALUE self) {
195
277
  struct Blink1Instance *ins;
196
278
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -199,6 +281,7 @@ static VALUE rb_blink1_serialnumread(VALUE self) {
199
281
  return UINT2NUM(serialnum);
200
282
  }
201
283
 
284
+ /** :nodoc: */
202
285
  static VALUE rb_blink1_serialnumwrite(VALUE self, VALUE serialnumstr) {
203
286
  struct Blink1Instance *ins;
204
287
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -208,30 +291,70 @@ static VALUE rb_blink1_serialnumwrite(VALUE self, VALUE serialnumstr) {
208
291
  return INT2NUM(blink1_serialnumwrite(ins->dev, (uint8_t *)serialnum));
209
292
  }
210
293
 
294
+ /**
295
+ * :call-seq:
296
+ * <span class="name">serverdown</span> <span class="arguments">(on, millisecond) -> integer</span>
297
+ *
298
+ * Turn on/off servertickle
299
+ *
300
+ * Return the actual number of bytes written and -1 on error.
301
+ */
211
302
  static VALUE rb_blink1_serverdown(VALUE self, VALUE on, VALUE millis) {
212
303
  struct Blink1Instance *ins;
213
304
  Data_Get_Struct(self, struct Blink1Instance, ins);
214
305
  return INT2NUM(blink1_serverdown(ins->dev, RTEST(on) ? 1 : 0, FIX2UINT(millis)));
215
306
  }
216
307
 
308
+ /**
309
+ * :call-seq:
310
+ * <span class="name">play</span> <span class="arguments">(pos) -> integer</span>
311
+ *
312
+ * Start playing color sequence (at pos)
313
+ *
314
+ * Return the actual number of bytes written and -1 on error.
315
+ */
217
316
  static VALUE rb_blink1_play(VALUE self, VALUE pos) {
218
317
  struct Blink1Instance *ins;
219
318
  Data_Get_Struct(self, struct Blink1Instance, ins);
220
319
  return INT2NUM(blink1_play(ins->dev, 1, FIX2UINT(pos)));
221
320
  }
222
321
 
322
+ /**
323
+ * :call-seq:
324
+ * <span class="name">stop</span> <span class="arguments">(pos) -> integer</span>
325
+ *
326
+ * Stop playing color sequence (at pos)
327
+ *
328
+ * Return the actual number of bytes written and -1 on error.
329
+ */
223
330
  static VALUE rb_blink1_stop(VALUE self, VALUE pos) {
224
331
  struct Blink1Instance *ins;
225
332
  Data_Get_Struct(self, struct Blink1Instance, ins);
226
333
  return INT2NUM(blink1_play(ins->dev, 0, FIX2UINT(pos)));
227
334
  }
228
335
 
336
+ /**
337
+ * :call-seq:
338
+ * <span class="name">write_pattern_line</span> <span class="arguments">(fade_millis, r, g, b, pos) -> integer</span>
339
+ *
340
+ * Write pattern RGB value at pos
341
+ *
342
+ * Return the actual number of bytes written and -1 on error.
343
+ */
229
344
  static VALUE rb_blink1_writePatternLine(VALUE self, VALUE fadeMillis, VALUE r, VALUE g, VALUE b, VALUE pos) {
230
345
  struct Blink1Instance *ins;
231
346
  Data_Get_Struct(self, struct Blink1Instance, ins);
232
347
  return INT2NUM(blink1_writePatternLine(ins->dev, FIX2UINT(fadeMillis), FIX2UINT(r), FIX2UINT(g), FIX2UINT(b), FIX2UINT(pos)));
233
348
  }
234
349
 
350
+ /**
351
+ * :call-seq:
352
+ * <span class="name">read_pattern_line</span> <span class="arguments">(pos) -> hash</span>
353
+ *
354
+ * Read pattern RGB value at pos
355
+ *
356
+ * Return hash with value with key +"fade_millis"+, +"r"+, +"g"+, +"b"+
357
+ */
235
358
  static VALUE rb_blink1_readPatternLine(VALUE self, VALUE pos) {
236
359
  struct Blink1Instance *ins;
237
360
  Data_Get_Struct(self, struct Blink1Instance, ins);
@@ -245,12 +368,11 @@ static VALUE rb_blink1_readPatternLine(VALUE self, VALUE pos) {
245
368
  return hash;
246
369
  }
247
370
 
248
- /* UNSPPORT
249
- int blink1_write( hid_device* dev, void* buf, int len);
250
- int blink1_read( hid_device* dev, void* buf, int len);
251
- int blink1_getSerialNumber(hid_device *dev, char* buf);
252
- //int blink1_playPattern(hid_device *dev,,);
253
- */
371
+ // UNSPPORT
372
+ // int blink1_write( hid_device* dev, void* buf, int len);
373
+ // int blink1_read( hid_device* dev, void* buf, int len);
374
+ // int blink1_getSerialNumber(hid_device *dev, char* buf);
375
+ // int blink1_playPattern(hid_device *dev,,);
254
376
 
255
377
 
256
378
  void Init_blink1() {
File without changes
@@ -30,10 +30,10 @@ when 'Windows_NT'
30
30
  when 'Linux'
31
31
 
32
32
  $CFLAGS <<
33
- " #{ `pkg-config libusb-1.0 --cflags` } "
33
+ " #{ `pkg-config libusb-1.0 --cflags`.strip } "
34
34
 
35
35
  $LIBS <<
36
- " #{ `pkg-config libusb-1.0 --libs` }"
36
+ " #{ `pkg-config libusb-1.0 --libs`.strip }"
37
37
  ' -lrt -lpthread -ldl -static '
38
38
 
39
39
  $HID_C = "#{$srcdir}/hid.c.libusb"
@@ -49,8 +49,6 @@ end
49
49
 
50
50
  FileUtils.copy $HID_C, "#{$srcdir}/hid.c"
51
51
 
52
- $CFLAGS <<
53
- ' -std=gnu99' <<
54
- " -I #{$srcdir}/include"
52
+ $CFLAGS << " -std=gnu99 -I#{$srcdir}/include"
55
53
 
56
- create_makefile('blink1')
54
+ create_makefile('blink1')
File without changes
File without changes
File without changes
@@ -1,3 +1,4 @@
1
1
  class Blink1
2
- VERSION = "0.0.5"
2
+ # Version of this module.
3
+ VERSION = "0.0.6"
3
4
  end
data/lib/blink1.rb CHANGED
@@ -1,11 +1,25 @@
1
1
  require 'blink1/blink1'
2
2
  require 'blink1/version'
3
3
 
4
+ #
5
+ # A Ruby interface for blink(1)[http://blink1.thingm.com/].
6
+ #
4
7
  class Blink1
5
8
 
9
+ # Fade duration in millisecond.
6
10
  attr_accessor :millis
11
+ # Delay to next color in millisecond.
7
12
  attr_accessor :delay_millis
8
13
 
14
+ # :call-seq:
15
+ # <span class="name">new</span> <span class="arguments">( {Fixnum} id )</span>
16
+ # <span class="name">new</span> <span class="arguments">( {Boolean} auto_open )</span>
17
+ # <span class="name">new</span> <span class="arguments">( {String} serial_id )</span>
18
+ # <span class="name">new</span> <span class="arguments">( :path => <em>device_path</em> )</span>
19
+ # <span class="name">new</span> <span class="arguments">( :serial => <em>serial_id</em> )</span>
20
+ #
21
+ # Returns new instance of +Blink1+
22
+ #
9
23
  def initialize option = nil
10
24
  case option
11
25
  when Fixnum
@@ -20,11 +34,42 @@ class Blink1
20
34
  end
21
35
  when String
22
36
  open_by_serial(option)
37
+ else
38
+ open if option == true
23
39
  end
24
40
  @millis ||= 300
25
41
  @delay_millis ||= 500
26
42
  end
27
43
 
44
+ #
45
+ # :call-seq:
46
+ # <span class="name">open</span> <span class="arguments">( {Fixnum} id ) { |blink1| }</span>
47
+ # <span class="name">open</span> <span class="arguments">( {Boolean} autoopen ) { |blink1| }</span>
48
+ # <span class="name">open</span> <span class="arguments">( {String} serial_id ) { |blink1| }</span>
49
+ # <span class="name">open</span> <span class="arguments">( :path => <em>device_path</em> ) { |blink1| }</span>
50
+ # <span class="name">open</span> <span class="arguments">( :serial => <em>serial_id</em> ) { |blink1| }</span>
51
+ #
52
+ # If block given, yieds new instance of +Blink1+.
53
+ #
54
+ # If not, returns new +Blink1+
55
+ #
56
+ def self.open option = nil, &block
57
+ b = self.new(option)
58
+ b.open if option.nil?
59
+ if block
60
+ begin
61
+ b.instance_eval &block
62
+ ensure
63
+ b.close
64
+ end
65
+ else
66
+ b
67
+ end
68
+ end
69
+
70
+ #
71
+ # Blink with RGB value for +times+.
72
+ #
28
73
  def blink r, g, b, times
29
74
  times.times do
30
75
  self.fade_to_rgb(millis, r, g, b)
@@ -34,6 +79,9 @@ class Blink1
34
79
  end
35
80
  end
36
81
 
82
+ #
83
+ # Flash random color for +times+.
84
+ #
37
85
  def random times
38
86
  times.times do
39
87
  r = rand(0xff)
@@ -44,18 +92,30 @@ class Blink1
44
92
  end
45
93
  end
46
94
 
95
+ #
96
+ # Turn LED white.
97
+ #
47
98
  def on
48
99
  self.fade_to_rgb(millis, 0xff, 0xff, 0xff)
49
100
  end
50
101
 
102
+ #
103
+ # Turn LED off.
104
+ #
51
105
  def off
52
106
  self.fade_to_rgb(millis, 0, 0, 0)
53
107
  end
54
108
 
109
+ #
110
+ # Alias for +read_pattern_line+.
111
+ #
55
112
  def [] index
56
113
  self.read_pattern_line(index)
57
114
  end
58
115
 
116
+ #
117
+ # Write pattern line with hash with key +fade_millis+, +r+, +g+, +b+.
118
+ #
59
119
  def []= index, prop
60
120
  fade_millis = prop[:fade_millis] || prop['fade_millis']
61
121
  r = prop[:r] || prop['r']
@@ -64,6 +124,9 @@ class Blink1
64
124
  self.write_pattern_line(index, fade_millis, r, g, b)
65
125
  end
66
126
 
127
+ #
128
+ # Returns array of hash with keys +:id+, +:serial+, +:path+
129
+ #
67
130
  def self.list
68
131
  count = enumerate_vid_pid(vendor_id, product_id)
69
132
  i = 0
@@ -79,18 +142,4 @@ class Blink1
79
142
  devs
80
143
  end
81
144
 
82
- def self.open option = nil, &block
83
- b = self.new(option)
84
- b.open if option.nil?
85
- if block
86
- begin
87
- b.instance_eval &block
88
- ensure
89
- b.close
90
- end
91
- else
92
- b
93
- end
94
- end
95
-
96
145
  end
data/rb-blink1.gemspec CHANGED
@@ -8,16 +8,24 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ['Atsushi Nagase']
10
10
  s.email = ['a@ngs.io']
11
- s.homepage = "http://github.com/ngs/rb-blink1"
12
- s.summary = "Ruby interface for blink(1)"
11
+ s.homepage = "http://ngs.github.com/rb-blink1"
12
+ s.summary = "A Ruby interface for blink(1)"
13
13
  s.description = "Controls blink(1)"
14
+ s.requirements << "libusb, version 1.0 or greater"
14
15
 
15
16
  s.rubyforge_project = "blink1"
16
- s.add_development_dependency 'bundler', '~> 1.0'
17
- # s.add_development_dependency 'rspec', '~> 2.11'
18
- # s.add_development_dependency 'guard-rspec', '~> 1.2'
19
17
 
20
- s.files = `git ls-files`.split("\n").reject{|f| f =~ /^(\..+|Gemfile.*)$/}
18
+ s.add_development_dependency 'bundler'
19
+ s.add_development_dependency 'guard-rake'
20
+ s.add_development_dependency 'guard-rspec'
21
+ s.add_development_dependency 'guard-spork'
22
+ s.add_development_dependency 'hanna-bootstrap', '>= 0.0.3'
23
+ s.add_development_dependency 'rb-fsevent'
24
+ s.add_development_dependency 'rdoc'
25
+ s.add_development_dependency 'rspec'
26
+ s.add_development_dependency 'spork'
27
+
28
+ s.files = `git ls-files`.split("\n").reject{|f| f =~ /^(\..+|Gemfile.*|Guardfile|)$/}
21
29
  s.extensions = ["ext/blink1/extconf.rb"]
22
30
  s.require_paths = ["lib", "ext"]
23
31
  end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Blink1 do
4
+
5
+ describe 'native extention methods' do
6
+
7
+ it 'vendor_id' do
8
+ Blink1.vendor_id.should eql(10168)
9
+ end
10
+
11
+ it 'product_id' do
12
+ Blink1.product_id.should eql(493)
13
+ end
14
+
15
+ end
16
+
17
+ end
@@ -0,0 +1,16 @@
1
+ require 'rubygems'
2
+ require 'spork'
3
+ require 'rspec'
4
+ #uncomment the following line to use spork with the debugger
5
+ #require 'spork/ext/ruby-debug'
6
+
7
+ Spork.prefork do; end
8
+
9
+ Spork.each_run do; end
10
+
11
+
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'ext'))
15
+
16
+ require 'blink1'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb-blink1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,152 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-29 00:00:00.000000000 Z
12
+ date: 2013-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '1.0'
21
+ version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ~>
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '1.0'
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: guard-rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: guard-rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: guard-spork
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: hanna-bootstrap
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 0.0.3
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.3
94
+ - !ruby/object:Gem::Dependency
95
+ name: rb-fsevent
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rdoc
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: spork
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
30
158
  description: Controls blink(1)
31
159
  email:
32
160
  - a@ngs.io
@@ -41,19 +169,20 @@ files:
41
169
  - ext/blink1/blink1-lib.c
42
170
  - ext/blink1/blink1-lib.h
43
171
  - ext/blink1/blink1.c
172
+ - ext/blink1/color_funcs.h
44
173
  - ext/blink1/extconf.rb
45
174
  - ext/blink1/hid.c.libusb
46
175
  - ext/blink1/hid.c.mac
47
176
  - ext/blink1/hid.c.windows
48
- - ext/blink1/include/blink1-lib.h
49
- - ext/blink1/include/color_funcs.h
50
- - ext/blink1/include/hidapi.h
51
- - ext/blink1/include/osccal.h
52
- - ext/blink1/include/usbconfig.h
177
+ - ext/blink1/hidapi.h
178
+ - ext/blink1/osccal.h
179
+ - ext/blink1/usbconfig.h
53
180
  - lib/blink1.rb
54
181
  - lib/blink1/version.rb
55
182
  - rb-blink1.gemspec
56
- homepage: http://github.com/ngs/rb-blink1
183
+ - spec/blink1_spec.rb
184
+ - spec/spec_helper.rb
185
+ homepage: http://ngs.github.com/rb-blink1
57
186
  licenses: []
58
187
  post_install_message:
59
188
  rdoc_options: []
@@ -72,10 +201,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
201
  - - ! '>='
73
202
  - !ruby/object:Gem::Version
74
203
  version: '0'
75
- requirements: []
204
+ requirements:
205
+ - libusb, version 1.0 or greater
76
206
  rubyforge_project: blink1
77
- rubygems_version: 1.8.24
207
+ rubygems_version: 1.8.23
78
208
  signing_key:
79
209
  specification_version: 3
80
- summary: Ruby interface for blink(1)
210
+ summary: A Ruby interface for blink(1)
81
211
  test_files: []
@@ -1,83 +0,0 @@
1
- /*
2
- * blink(1) C library --
3
- *
4
- * 2012, Tod E. Kurt, http://todbot.com/blog/ , http://thingm.com/
5
- *
6
- */
7
-
8
-
9
- #ifndef __BLINK1_LIB_H__
10
- #define __BLINK1_LIB_H__
11
-
12
- #include <stdint.h>
13
-
14
- #include "hidapi.h"
15
- #include "usbconfig.h" // from firmware, for VID,PID,vendor name & product name
16
-
17
- #ifdef __cplusplus
18
- extern "C" {
19
- #endif
20
-
21
- #define blink1_max_devices 16
22
-
23
-
24
- int blink1_vid(void);
25
- int blink1_pid(void);
26
- void blink1_sortPaths(void);
27
- void blink1_sortSerials(void);
28
-
29
- int blink1_enumerate();
30
- int blink1_enumerateByVidPid(int vid, int pid);
31
- const char* blink1_getCachedPath(int i);
32
- const wchar_t* blink1_getCachedSerial(int i);
33
- int blink1_getCachedCount(void);
34
-
35
- hid_device* blink1_open(void);
36
- hid_device* blink1_openByPath(const char* path);
37
- hid_device* blink1_openBySerial(const wchar_t* serial);
38
- hid_device* blink1_openById( int i );
39
-
40
- void blink1_close( hid_device* dev );
41
-
42
- int blink1_write( hid_device* dev, void* buf, int len);
43
- int blink1_read( hid_device* dev, void* buf, int len);
44
-
45
- int blink1_getSerialNumber(hid_device *dev, char* buf);
46
- int blink1_getVersion(hid_device *dev);
47
-
48
- int blink1_fadeToRGB(hid_device *dev, uint16_t fadeMillis,
49
- uint8_t r, uint8_t g, uint8_t b );
50
-
51
- int blink1_setRGB(hid_device *dev, uint8_t r, uint8_t g, uint8_t b );
52
-
53
- int blink1_eeread(hid_device *dev, uint16_t addr, uint8_t* val);
54
- int blink1_eewrite(hid_device *dev, uint16_t addr, uint8_t val);
55
-
56
- int blink1_serialnumread(hid_device *dev, uint8_t** serialnumstr);
57
- int blink1_serialnumwrite(hid_device *dev, uint8_t* serialnumstr);
58
-
59
- //int blink1_nightlight(hid_device *dev, uint8_t on);
60
- int blink1_serverdown(hid_device *dev, uint8_t on, uint16_t millis);
61
-
62
- int blink1_play(hid_device *dev, uint8_t play, uint8_t pos);
63
- int blink1_writePatternLine(hid_device *dev, uint16_t fadeMillis,
64
- uint8_t r, uint8_t g, uint8_t b,
65
- uint8_t pos);
66
- int blink1_readPatternLine(hid_device *dev, uint16_t* fadeMillis,
67
- uint8_t* r, uint8_t* g, uint8_t* b,
68
- uint8_t pos);
69
- //int blink1_playPattern(hid_device *dev,,);
70
-
71
- char *blink1_error_msg(int errCode);
72
-
73
- void blink1_enableDegamma();
74
- void blink1_disableDegamma();
75
- int blink1_degamma(int n);
76
-
77
- void blink1_sleep(uint16_t delayMillis);
78
-
79
- #ifdef __cplusplus
80
- }
81
- #endif
82
-
83
- #endif