wii4r 0.5.0-x86-linux
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/LICENSE +675 -0
- data/README.rdoc +39 -0
- data/Rakefile +10 -0
- data/examples/playsound.rb +14 -0
- data/examples/poll.rb +104 -0
- data/ext/wii4r/classic.c +233 -0
- data/ext/wii4r/guitarhero3.c +175 -0
- data/ext/wii4r/nunchuk.c +310 -0
- data/ext/wii4r/wii4r.c +186 -0
- data/ext/wii4r/wiimote.c +1258 -0
- data/ext/wii4r/wiimotemanager.c +369 -0
- data/lib/wii4r.so +0 -0
- data/wii4r.gemspec +28 -0
- metadata +98 -0
@@ -0,0 +1,369 @@
|
|
1
|
+
/*
|
2
|
+
############################################################################
|
3
|
+
# #
|
4
|
+
# Copyright (C) 2009 by KzMz KzMz@modusbibendi.org #
|
5
|
+
# Copyright (C) 2009 by BuZz Gambino.Giorgio@gmail.com #
|
6
|
+
# #
|
7
|
+
# This program is free software; you can redistribute it and/or modify #
|
8
|
+
# it under the terms of the GNU General Public License as published by #
|
9
|
+
# the Free Software Foundation; either version 2 of the License, or #
|
10
|
+
# (at your option) any later version. #
|
11
|
+
# #
|
12
|
+
# This program is distributed in the hope that it will be useful, #
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
15
|
+
# GNU General Public License for more details. #
|
16
|
+
# #
|
17
|
+
# You should have received a copy of the GNU General Public License #
|
18
|
+
# along with this program; if not, write to the #
|
19
|
+
# Free Software Foundation, Inc., #
|
20
|
+
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
|
21
|
+
############################################################################
|
22
|
+
*/
|
23
|
+
|
24
|
+
#include "wii4r.h"
|
25
|
+
|
26
|
+
extern void set_expansion(VALUE self, VALUE exp_obj);
|
27
|
+
|
28
|
+
static VALUE rb_cm_new(VALUE self) {
|
29
|
+
connman * conn;
|
30
|
+
VALUE m = rb_const_get(wii_mod, rb_intern("MAX_WIIMOTES"));
|
31
|
+
int max = NUM2INT(m);
|
32
|
+
VALUE obj = Data_Make_Struct(self, connman, NULL, free, conn);
|
33
|
+
if(!conn) rb_raise(gen_exp_class, "not enough memory");
|
34
|
+
conn->wms = wiiuse_init(max);
|
35
|
+
conn->n = max;
|
36
|
+
rb_obj_call_init(obj, 0, 0);
|
37
|
+
return obj;
|
38
|
+
}
|
39
|
+
|
40
|
+
/*
|
41
|
+
* call-seq:
|
42
|
+
* WiimoteManager.new
|
43
|
+
*
|
44
|
+
* Returns a new empty WiimoteManager.
|
45
|
+
*/
|
46
|
+
|
47
|
+
static VALUE rb_cm_init(VALUE self) {
|
48
|
+
VALUE ary = rb_ary_new();
|
49
|
+
rb_iv_set(self, "@wiimotes", ary);
|
50
|
+
return self;
|
51
|
+
}
|
52
|
+
|
53
|
+
/*
|
54
|
+
* call-seq:
|
55
|
+
* manager.connected -> int
|
56
|
+
*
|
57
|
+
* Returns the number of wiimotes (see <code>Wiimote</code>) connected and managed by <i>self</i>.
|
58
|
+
*
|
59
|
+
* wm = WiimoteManager.new
|
60
|
+
* wm.connected #=> 0
|
61
|
+
*
|
62
|
+
*/
|
63
|
+
|
64
|
+
static VALUE rb_cm_connected(VALUE self) {
|
65
|
+
VALUE wm = rb_iv_get(self, "@wiimotes");
|
66
|
+
VALUE size = rb_funcall(wm, rb_intern("size"), 0, NULL);
|
67
|
+
return size;
|
68
|
+
}
|
69
|
+
|
70
|
+
/*
|
71
|
+
* call-seq:
|
72
|
+
* manager.cleanup!
|
73
|
+
*
|
74
|
+
* Disconnect all the wiimotes (see <code>Wiimote</code>) managed by <i>self</i> and dealloc all structures.
|
75
|
+
*
|
76
|
+
*/
|
77
|
+
|
78
|
+
static VALUE rb_cm_cleanup(VALUE self) {
|
79
|
+
connman * conn;
|
80
|
+
Data_Get_Struct(self, connman, conn);
|
81
|
+
if(!conn) rb_raise(gen_exp_class, "WiimoteManager not properly initialized, cannot do cleanup");
|
82
|
+
if(!(conn->wms)) return Qnil;
|
83
|
+
wiiuse_cleanup(conn->wms, conn->n);
|
84
|
+
conn->wms = NULL;
|
85
|
+
VALUE ary = rb_iv_get(self, "@wiimotes");
|
86
|
+
rb_funcall(ary, rb_intern("clear"), 0, NULL);
|
87
|
+
return Qnil;
|
88
|
+
}
|
89
|
+
|
90
|
+
/*
|
91
|
+
* call-seq:
|
92
|
+
* manager.wiimotes -> array
|
93
|
+
*
|
94
|
+
* Returns an array containing the wiimotes (see <code>Wiimote</code>) connected to <i>self</i>.
|
95
|
+
* May be an empty array.
|
96
|
+
*
|
97
|
+
* wm = WiimoteManager.new
|
98
|
+
* wm.wiimotes #=> []
|
99
|
+
*/
|
100
|
+
|
101
|
+
static VALUE rb_cm_wiimotes(VALUE self) {
|
102
|
+
VALUE wii = rb_iv_get(self, "@wiimotes");
|
103
|
+
return wii;
|
104
|
+
}
|
105
|
+
|
106
|
+
/*
|
107
|
+
* call-seq:
|
108
|
+
* manager.found -> int
|
109
|
+
*
|
110
|
+
* Returns the number of wiimotes (see <code>Wiimote</code>) found in bluetooth range but not already connected.
|
111
|
+
*
|
112
|
+
*/
|
113
|
+
|
114
|
+
static VALUE rb_cm_found(VALUE self) {
|
115
|
+
connman * conn;
|
116
|
+
Data_Get_Struct(self, connman, conn);
|
117
|
+
if(!conn) rb_raise(gen_exp_class, "WiimoteManager not properly initialized, cannot do found");
|
118
|
+
VALUE timeout = rb_const_get(wii_mod, rb_intern("TIMEOUT"));
|
119
|
+
VALUE max = rb_const_get(wii_mod, rb_intern("MAX_WIIMOTES"));
|
120
|
+
int found = wiiuse_find(conn->wms, NUM2INT(max), NUM2INT(timeout));
|
121
|
+
return INT2NUM(found);
|
122
|
+
}
|
123
|
+
|
124
|
+
/*
|
125
|
+
* call-seq:
|
126
|
+
* manager.connect -> int
|
127
|
+
*
|
128
|
+
* Tries to connect to all found wiimotes (see <code>Wiimote</code>) and returns the number of successfull connections.
|
129
|
+
*
|
130
|
+
*/
|
131
|
+
|
132
|
+
static VALUE rb_cm_connect(VALUE self) {
|
133
|
+
connman *conn;
|
134
|
+
Data_Get_Struct(self, connman, conn);
|
135
|
+
if(!conn) rb_raise(gen_exp_class, "WiimoteManager not properly initialized, cannot do connect");
|
136
|
+
|
137
|
+
int i = 0, led = 1, connected = 0, found = 0;
|
138
|
+
VALUE wm = Qnil, exp = Qnil;
|
139
|
+
VALUE max = rb_const_get(wii_mod, rb_intern("MAX_WIIMOTES"));
|
140
|
+
VALUE timeout = rb_const_get(wii_mod, rb_intern("TIMEOUT"));
|
141
|
+
|
142
|
+
found = wiiuse_find(conn->wms, NUM2INT(max), NUM2INT(timeout));
|
143
|
+
if(!found) return INT2NUM(0);
|
144
|
+
connected = wiiuse_connect(conn->wms, NUM2INT(max));
|
145
|
+
|
146
|
+
for(; i < NUM2INT(max); i++) {
|
147
|
+
if(wm_connected(conn->wms[i])) {
|
148
|
+
switch(led) {
|
149
|
+
case 1:
|
150
|
+
wiiuse_set_leds(conn->wms[i], WIIMOTE_LED_1);
|
151
|
+
led++;
|
152
|
+
break;
|
153
|
+
case 2:
|
154
|
+
wiiuse_set_leds(conn->wms[i], WIIMOTE_LED_2);
|
155
|
+
led++;
|
156
|
+
break;
|
157
|
+
case 3:
|
158
|
+
wiiuse_set_leds(conn->wms[i], WIIMOTE_LED_3);
|
159
|
+
led++;
|
160
|
+
break;
|
161
|
+
case 4:
|
162
|
+
wiiuse_set_leds(conn->wms[i], WIIMOTE_LED_4);
|
163
|
+
break;
|
164
|
+
}
|
165
|
+
wm = Data_Wrap_Struct(wii_class, NULL, free_wiimote, conn->wms[i]);
|
166
|
+
rb_obj_call_init(wm, 0, 0);
|
167
|
+
switch(conn->wms[i]->exp.type) {
|
168
|
+
case EXP_NUNCHUK:
|
169
|
+
exp = Data_Wrap_Struct(nun_class, NULL, NULL, &(conn->wms[i]->exp.nunchuk));
|
170
|
+
break;
|
171
|
+
case EXP_CLASSIC:
|
172
|
+
exp = Data_Wrap_Struct(cc_class, NULL, NULL, &(conn->wms[i]->exp.classic));
|
173
|
+
break;
|
174
|
+
case EXP_GUITAR_HERO_3:
|
175
|
+
exp = Data_Wrap_Struct(gh3_class, NULL, NULL, &(conn->wms[i]->exp.gh3));
|
176
|
+
break;
|
177
|
+
}
|
178
|
+
set_expansion(wm, exp);
|
179
|
+
rb_ary_push(rb_iv_get(self, "@wiimotes"), wm);
|
180
|
+
}
|
181
|
+
}
|
182
|
+
return INT2NUM(connected);
|
183
|
+
}
|
184
|
+
|
185
|
+
/*
|
186
|
+
* call-seq:
|
187
|
+
* manager.poll { |(wiimote, event)| block } -> nil
|
188
|
+
*
|
189
|
+
* Invokes <i>block</i> once per event captured by the WiimoteManager class. <code>wiimote</code> is the Wiimote which caused
|
190
|
+
* the event <code>event</code>, a Symbol who represents the type of the event caused.
|
191
|
+
*
|
192
|
+
* wm.poll { |(wiimote, event)|
|
193
|
+
* if event == :generic
|
194
|
+
* puts "generic event occurred"
|
195
|
+
* end
|
196
|
+
* }
|
197
|
+
*/
|
198
|
+
|
199
|
+
static VALUE rb_cm_poll(VALUE self) {
|
200
|
+
if(rb_block_given_p()) {
|
201
|
+
VALUE connected = rb_funcall(self, rb_intern("connected"), 0, NULL);
|
202
|
+
|
203
|
+
if(NUM2INT(connected) > 0) {
|
204
|
+
connman *conn;
|
205
|
+
Data_Get_Struct(self, connman, conn);
|
206
|
+
if(!conn) rb_raise(gen_exp_class, "WiimoteManager not properly initialized, cannot do poll");
|
207
|
+
|
208
|
+
VALUE wiimotes = rb_iv_get(self, "@wiimotes");
|
209
|
+
|
210
|
+
int i = 0;
|
211
|
+
VALUE ary = Qnil, wm = Qnil, event_name = Qnil, exp = Qnil;
|
212
|
+
VALUE argv[1];
|
213
|
+
wiimote * wmm;
|
214
|
+
|
215
|
+
VALUE max = rb_const_get(wii_mod, rb_intern("MAX_WIIMOTES"));
|
216
|
+
if(wiiuse_poll(conn->wms, NUM2INT(max))) {
|
217
|
+
for(; i < NUM2INT(connected); i++) {
|
218
|
+
argv[0] = INT2NUM(i);
|
219
|
+
wm = rb_ary_aref(1, argv, wiimotes);
|
220
|
+
Data_Get_Struct(wm, wiimote, wmm);
|
221
|
+
|
222
|
+
if(wmm && wmm->event != WIIUSE_NONE) {
|
223
|
+
ary = rb_ary_new();
|
224
|
+
rb_ary_push(ary, wm);
|
225
|
+
switch(wmm->event) {
|
226
|
+
case WIIUSE_EVENT:
|
227
|
+
event_name = ID2SYM(rb_intern("generic"));
|
228
|
+
break;
|
229
|
+
case WIIUSE_STATUS:
|
230
|
+
event_name = ID2SYM(rb_intern("status"));
|
231
|
+
break;
|
232
|
+
case WIIUSE_DISCONNECT:
|
233
|
+
event_name = ID2SYM(rb_intern("disconnected"));
|
234
|
+
break;
|
235
|
+
case WIIUSE_UNEXPECTED_DISCONNECT:
|
236
|
+
event_name = ID2SYM(rb_intern("unexpected_disconnect"));
|
237
|
+
break;
|
238
|
+
case WIIUSE_READ_DATA:
|
239
|
+
event_name = ID2SYM(rb_intern("read"));
|
240
|
+
break;
|
241
|
+
case WIIUSE_NUNCHUK_INSERTED:
|
242
|
+
event_name = ID2SYM(rb_intern("nunchuk_inserted"));
|
243
|
+
exp = Data_Wrap_Struct(nun_class, NULL, NULL, &(wmm->exp.nunchuk));
|
244
|
+
set_expansion(wm, exp);
|
245
|
+
break;
|
246
|
+
case WIIUSE_NUNCHUK_REMOVED:
|
247
|
+
event_name = ID2SYM(rb_intern("nunchuk_removed"));
|
248
|
+
set_expansion(wm, Qnil);
|
249
|
+
break;
|
250
|
+
case WIIUSE_CLASSIC_CTRL_INSERTED:
|
251
|
+
event_name = ID2SYM(rb_intern("classic_inserted"));
|
252
|
+
exp = Data_Wrap_Struct(cc_class, NULL, NULL, &(wmm->exp.classic));
|
253
|
+
set_expansion(wm, exp);
|
254
|
+
break;
|
255
|
+
case WIIUSE_CLASSIC_CTRL_REMOVED:
|
256
|
+
event_name = ID2SYM(rb_intern("classic_removed"));
|
257
|
+
set_expansion(wm, Qnil);
|
258
|
+
break;
|
259
|
+
case WIIUSE_GUITAR_HERO_3_CTRL_INSERTED:
|
260
|
+
event_name = ID2SYM(rb_intern("guitarhero3_inserted"));
|
261
|
+
exp = Data_Wrap_Struct(gh3_class, NULL, NULL, &(wmm->exp.gh3));
|
262
|
+
set_expansion(wm, exp);
|
263
|
+
break;
|
264
|
+
case WIIUSE_GUITAR_HERO_3_CTRL_REMOVED:
|
265
|
+
event_name = ID2SYM(rb_intern("guitarhero3_removed"));
|
266
|
+
set_expansion(wm, Qnil);
|
267
|
+
break;
|
268
|
+
case WIIUSE_CONNECT:
|
269
|
+
event_name = ID2SYM(rb_intern("connected"));
|
270
|
+
break;
|
271
|
+
}
|
272
|
+
rb_ary_push(ary, event_name);
|
273
|
+
rb_yield(ary);
|
274
|
+
}
|
275
|
+
}
|
276
|
+
}
|
277
|
+
}
|
278
|
+
}
|
279
|
+
return Qnil;
|
280
|
+
}
|
281
|
+
|
282
|
+
/*
|
283
|
+
* call-seq:
|
284
|
+
* manager.each_wiimote { |wiimote| block } -> nil
|
285
|
+
*
|
286
|
+
* Calls <i>block</i> once for each Wiimote connected to <i>self</i>, passing a Wiimote object as a parameter.
|
287
|
+
* wm.each_wiimote { |wiimote|
|
288
|
+
* puts wiimote
|
289
|
+
* }
|
290
|
+
*
|
291
|
+
*/
|
292
|
+
|
293
|
+
static VALUE rb_cm_each(VALUE self) {
|
294
|
+
if(rb_block_given_p()) {
|
295
|
+
VALUE connected = rb_funcall(self, rb_intern("connected"), 0, NULL);
|
296
|
+
VALUE wiimotes = rb_iv_get(self, "@wiimotes");
|
297
|
+
VALUE argv[1];
|
298
|
+
VALUE wm;
|
299
|
+
|
300
|
+
int i = 0;
|
301
|
+
|
302
|
+
for(; i < NUM2INT(connected); i++) {
|
303
|
+
argv[0] = INT2NUM(i);
|
304
|
+
wm = rb_ary_aref(1, argv, wiimotes);
|
305
|
+
rb_yield(wm);
|
306
|
+
}
|
307
|
+
}
|
308
|
+
return Qnil;
|
309
|
+
}
|
310
|
+
|
311
|
+
|
312
|
+
/*
|
313
|
+
* call-seq:
|
314
|
+
* manager.positions -> array
|
315
|
+
*
|
316
|
+
* Returns an array containing the actual position (x, y) of all wiimotes (see <code>Wiimote</code>) connected with <i>self</i>
|
317
|
+
*
|
318
|
+
*/
|
319
|
+
|
320
|
+
static VALUE rb_cm_pos(VALUE self) {
|
321
|
+
VALUE wiimotes = rb_iv_get(self, "@wiimotes");
|
322
|
+
VALUE ary = rb_ary_new();
|
323
|
+
VALUE wsize = rb_funcall(wiimotes, rb_intern("size"), 0, NULL);
|
324
|
+
int size = NUM2INT(wsize);
|
325
|
+
short i;
|
326
|
+
VALUE argv[1], wm, pos;
|
327
|
+
|
328
|
+
for(i = 0; i < size; i++) {
|
329
|
+
argv[0] = INT2NUM(i);
|
330
|
+
wm = rb_ary_aref(1, argv, wiimotes);
|
331
|
+
pos = rb_funcall(wm, rb_intern("position"), 0, NULL);
|
332
|
+
rb_ary_push(ary, pos);
|
333
|
+
}
|
334
|
+
return ary;
|
335
|
+
}
|
336
|
+
|
337
|
+
/*
|
338
|
+
*
|
339
|
+
* Provides an interface for searching wiimotes and connecting to them via bluetooth.
|
340
|
+
* WiimoteManager also provides event management.
|
341
|
+
* The events that can be caused by a Wiimote device are:
|
342
|
+
* :generic -> pression of a button, accelerometer or ir event
|
343
|
+
* :status -> status response received from wiimote
|
344
|
+
* :connect -> fired when a Wiimote connects
|
345
|
+
* :disconnect -> fired when a Wiimote disconnects
|
346
|
+
* :enexpected_disconnect -> fired when a Wiimote disconnects enexpectedly
|
347
|
+
* :nunchuk_inserted -> fired when a Nunchuk is inserted in a Wiimote
|
348
|
+
* :nunchuk_removed -> fired when a Nunchuk is removed from a Wiimote
|
349
|
+
* :classic_inserted -> fired when a Classic Controller is inserted in a Wiimote
|
350
|
+
* :classic_removed -> fired when a Classic Controller is removed from a Wiimote
|
351
|
+
* :guitarhero3_inserted -> fired when a Guitar Hero 3 Controller is inserted in a Wiimote
|
352
|
+
* :guitarhero3_removed -> fired when a Guitar Hero 3 Controller is removed from a Wiimote
|
353
|
+
*
|
354
|
+
*/
|
355
|
+
|
356
|
+
void init_wiimotemanager(void) {
|
357
|
+
|
358
|
+
cm_class = rb_define_class_under(wii_mod, "WiimoteManager", rb_cObject);
|
359
|
+
rb_define_singleton_method(cm_class, "new", rb_cm_new, 0);
|
360
|
+
rb_define_method(cm_class, "wiimotes", rb_cm_wiimotes, 0);
|
361
|
+
rb_define_method(cm_class, "initialize", rb_cm_init, 0);
|
362
|
+
rb_define_method(cm_class, "connected", rb_cm_connected, 0);
|
363
|
+
rb_define_method(cm_class, "cleanup!", rb_cm_cleanup, 0);
|
364
|
+
rb_define_method(cm_class, "found", rb_cm_found, 0);
|
365
|
+
rb_define_method(cm_class, "connect", rb_cm_connect, 0);
|
366
|
+
rb_define_method(cm_class, "poll", rb_cm_poll, 0);
|
367
|
+
rb_define_method(cm_class, "each_wiimote", rb_cm_each, 0);
|
368
|
+
rb_define_method(cm_class, "positions", rb_cm_pos, 0);
|
369
|
+
}
|
data/lib/wii4r.so
ADDED
Binary file
|
data/wii4r.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
GEM_SPEC = Gem::Specification.new do |spec|
|
4
|
+
spec.name = "wii4r"
|
5
|
+
spec.authors = ['KzMz', 'BuZz']
|
6
|
+
spec.email = ['KzMz@modusbibendi.org', 'gambino.giorgio@gmail.com']
|
7
|
+
spec.version = "0.5.0"
|
8
|
+
spec.platform = Gem::Platform::RUBY
|
9
|
+
|
10
|
+
spec.summary = "bindings for wiiuse, a C library for controlling Wiimotes"
|
11
|
+
spec.description = "Ruby C Extension for controlling Wii Remote devices via bluetooth connection. Binding of C wiiuse library (www.wiiuse.net) "
|
12
|
+
spec.required_ruby_version = ">= 1.8.6"
|
13
|
+
spec.required_rubygems_version = ">= 1.3.5"
|
14
|
+
|
15
|
+
spec.add_dependency "rake", ">= 0.8.3", "< 0.9"
|
16
|
+
spec.add_dependency "rake-compiler", ">= 0.7.0"
|
17
|
+
spec.require_path = "lib"
|
18
|
+
spec.files = FileList["LICENSE", "Rakefile", "README.rdoc", "wii4r.gemspec", "examples/*.rb", "lib/*.*", "ext/**/*.{c, h, rb}"]
|
19
|
+
|
20
|
+
spec.has_rdoc = true
|
21
|
+
spec.rdoc_options << "--main" << "ext/wii4r/wii4r.c"
|
22
|
+
spec.extra_rdoc_files = ['ext/wii4r/wii4r.c', "ext/wii4r/wiimotemanager.c", "ext/wii4r/wiimote.c", "ext/wii4r/nunchuk.c", "ext/wii4r/classic.c", "ext/wii4r/guitarhero3.c"]
|
23
|
+
|
24
|
+
spec.homepage = "http://github.com/KzMz/wii4r"
|
25
|
+
spec.licenses = ['GPL']
|
26
|
+
end
|
27
|
+
|
28
|
+
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wii4r
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
platform: x86-linux
|
6
|
+
authors:
|
7
|
+
- KzMz
|
8
|
+
- BuZz
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2010-03-01 00:00:00 +01:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: rake
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.8.3
|
25
|
+
- - <
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: "0.9"
|
28
|
+
version:
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rake-compiler
|
31
|
+
type: :runtime
|
32
|
+
version_requirement:
|
33
|
+
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.7.0
|
38
|
+
version:
|
39
|
+
description: "Ruby C Extension for controlling Wii Remote devices via bluetooth connection. Binding of C wiiuse library (www.wiiuse.net) "
|
40
|
+
email:
|
41
|
+
- KzMz@modusbibendi.org
|
42
|
+
- gambino.giorgio@gmail.com
|
43
|
+
executables: []
|
44
|
+
|
45
|
+
extensions: []
|
46
|
+
|
47
|
+
extra_rdoc_files:
|
48
|
+
- ext/wii4r/wii4r.c
|
49
|
+
- ext/wii4r/wiimotemanager.c
|
50
|
+
- ext/wii4r/wiimote.c
|
51
|
+
- ext/wii4r/nunchuk.c
|
52
|
+
- ext/wii4r/classic.c
|
53
|
+
- ext/wii4r/guitarhero3.c
|
54
|
+
files:
|
55
|
+
- LICENSE
|
56
|
+
- Rakefile
|
57
|
+
- README.rdoc
|
58
|
+
- wii4r.gemspec
|
59
|
+
- examples/playsound.rb
|
60
|
+
- examples/poll.rb
|
61
|
+
- lib/wii4r.so
|
62
|
+
- ext/wii4r/nunchuk.c
|
63
|
+
- ext/wii4r/wiimote.c
|
64
|
+
- ext/wii4r/guitarhero3.c
|
65
|
+
- ext/wii4r/classic.c
|
66
|
+
- ext/wii4r/wiimotemanager.c
|
67
|
+
- ext/wii4r/wii4r.c
|
68
|
+
has_rdoc: true
|
69
|
+
homepage: http://github.com/KzMz/wii4r
|
70
|
+
licenses:
|
71
|
+
- GPL
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options:
|
74
|
+
- --main
|
75
|
+
- ext/wii4r/wii4r.c
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.8.6
|
83
|
+
version:
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 1.3.5
|
89
|
+
version:
|
90
|
+
requirements: []
|
91
|
+
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 1.3.5
|
94
|
+
signing_key:
|
95
|
+
specification_version: 3
|
96
|
+
summary: bindings for wiiuse, a C library for controlling Wiimotes
|
97
|
+
test_files: []
|
98
|
+
|