aboutsummaryrefslogtreecommitdiff
path: root/wiiremote/aka.wiiremote_b2_pd-port.patch
diff options
context:
space:
mode:
Diffstat (limited to 'wiiremote/aka.wiiremote_b2_pd-port.patch')
-rw-r--r--wiiremote/aka.wiiremote_b2_pd-port.patch223
1 files changed, 223 insertions, 0 deletions
diff --git a/wiiremote/aka.wiiremote_b2_pd-port.patch b/wiiremote/aka.wiiremote_b2_pd-port.patch
new file mode 100644
index 0000000..3f96112
--- /dev/null
+++ b/wiiremote/aka.wiiremote_b2_pd-port.patch
@@ -0,0 +1,223 @@
+--- /Users/hans/Desktop/aka.wiiremote-b2-src/aka.wiiremote.c 2006-12-15 08:36:06.000000000 -0500
++++ aka.wiiremote.c 2006-12-16 17:05:31.000000000 -0500
+@@ -1,15 +1,28 @@
+ // aka.wiiremote.c
+ // Copyright by Masayuki Akamatsu
++// port to Pd by Hans-Christoph Steiner <hans@at.or.at>
+
++
++#ifdef PD
++#include "m_pd.h"
++#define SETLONG SETFLOAT
++static t_class *wiiremote_class;
++#else /* Max */
+ #include "ext.h"
++#endif
+ #include "wiiremote.h"
+
+ #define kInterval 100
+ #define kMaxTrial 100
+
++
+ typedef struct _akawiiremote
+ {
++#ifdef PD
++ t_object x_obj;
++#else /* Max */
+ struct object obj;
++#endif
+
+ WiiRemoteRef wiiremote;
+
+@@ -44,6 +57,36 @@
+ void *akawiiremote_new(t_symbol *s, short ac, t_atom *av);
+ void akawiiremote_free(t_akawiiremote *x);
+
++#ifdef PD
++void wiiremote_setup()
++{
++ wiiremote_class = class_new(gensym("wiiremote"),
++ (t_newmethod)akawiiremote_new,
++ (t_method)akawiiremote_free,
++ sizeof(t_akawiiremote),
++ CLASS_DEFAULT,
++ A_GIMME,0);
++
++ class_addbang(wiiremote_class,(t_method)akawiiremote_bang);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_connect,gensym("connect"),0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_disconnect,gensym("disconnect"),0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_motionsensor,gensym("motionsensor"), A_DEFFLOAT, 0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_irsensor,gensym("irsensor"), A_DEFFLOAT, 0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_vibration,gensym("vibration"), A_DEFFLOAT, 0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_led,gensym("led"), A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0);
++
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_getbatterylevel,gensym("getbatterylevel"),0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_getexpansionstatus,gensym("getexpansionstatus"),0);
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_getledstatus,gensym("getledstatus"),0);
++
++ class_addmethod(wiiremote_class,(t_method)akawiiremote_assist,gensym("assist"),A_CANT,0);
++
++ post("aka.wiiremote 1.0B2-UB by Masayuki Akamatsu");
++ post("\tPd port by Hans-Christoph Steiner");
++
++ akawiiremote_count = 0;
++}
++#else /* Max */
+ void main()
+ {
+ setup((t_messlist **)&akawiiremote_class, (method)akawiiremote_new, (method)akawiiremote_free, (short)sizeof(t_akawiiremote), 0L, A_GIMME, 0);
+@@ -66,7 +109,7 @@
+
+ akawiiremote_count = 0;
+ }
+-
++#endif /* PD */
+ //--------------------------------------------------------------------------------------------
+
+ void akawiiremote_bang(t_akawiiremote *x)
+@@ -76,6 +119,27 @@
+ if (x->wiiremote->device == nil)
+ return; // do nothing
+
++#ifdef PD
++ outlet_float(x->buttonsOut, (t_float) x->wiiremote->buttonData);
++
++ if (x->wiiremote->isIRSensorEnabled)
++ {
++ SETFLOAT(list, x->wiiremote->posX);
++ SETFLOAT(list + 1, x->wiiremote->posY);
++ SETFLOAT(list + 2, x->wiiremote->angle);
++ SETFLOAT (list + 3, x->wiiremote->tracking);
++ outlet_list(x->irOut, &s_list, 4, list);
++ }
++
++ if (x->wiiremote->isMotionSensorEnabled)
++ {
++ SETFLOAT(list, x->wiiremote->accX);
++ SETFLOAT(list + 1, x->wiiremote->accY);
++ SETFLOAT(list + 2, x->wiiremote->accZ);
++ SETFLOAT(list + 3, x->wiiremote->orientation);
++ outlet_list(x->accOut, &s_list, 4, list);
++ }
++#else /* Max */
+ outlet_int(x->buttonsOut, x->wiiremote->buttonData);
+
+ if (x->wiiremote->isIRSensorEnabled)
+@@ -95,6 +159,7 @@
+ SETLONG(list + 3, x->wiiremote->orientation);
+ outlet_list(x->accOut, 0L, 4, &list);
+ }
++#endif /* PD */
+
+ wiiremote_getstatus();
+ }
+@@ -173,11 +238,19 @@
+ {
+ t_atom list[4];
+
++#ifdef PD
++ SETFLOAT(list, x->wiiremote->isLED1Illuminated);
++ SETFLOAT(list + 1, x->wiiremote->isLED2Illuminated);
++ SETFLOAT(list + 2, x->wiiremote->isLED3Illuminated);
++ SETFLOAT(list + 3, x->wiiremote->isLED4Illuminated);
++ outlet_anything(x->statusOut, gensym("ledstatus"), 4, list);
++#else /* Max */
+ SETLONG(list, x->wiiremote->isLED1Illuminated);
+ SETLONG(list + 1, x->wiiremote->isLED2Illuminated);
+ SETLONG(list + 2, x->wiiremote->isLED3Illuminated);
+ SETLONG(list + 3, x->wiiremote->isLED4Illuminated);
+ outlet_anything(x->statusOut, gensym("ledstatus"), 4, &list);
++#endif
+ }
+
+ //--------------------------------------------------------------------------------------------
+@@ -222,11 +295,13 @@
+
+ void akawiiremote_assist(t_akawiiremote *x, void *b, long m, long a, char *s)
+ {
++#ifndef PD /* Max */
+ if (m==ASSIST_INLET)
+ {
+ sprintf(s,"connect, bang, disconnect....");
+ }
+ else
++#endif /* NOT PD */
+ {
+ switch(a)
+ {
+@@ -242,6 +317,17 @@
+
+ void *akawiiremote_new(t_symbol *s, short ac, t_atom *av)
+ {
++#ifdef PD
++ t_akawiiremote *x = (t_akawiiremote *)pd_new(wiiremote_class);
++
++ x->clock = clock_new(x, (t_method)akawiiremote_clock);
++
++ /* create anything outlet used for HID data */
++ x->statusOut = outlet_new(&x->x_obj, 0);
++ x->buttonsOut = outlet_new(&x->x_obj, &s_float);
++ x->irOut = outlet_new(&x->x_obj, &s_list);
++ x->accOut = outlet_new(&x->x_obj, &s_list);
++#else /* Max */
+ t_akawiiremote *x;
+
+ x = (t_akawiiremote *)newobject(akawiiremote_class);
+@@ -249,13 +335,15 @@
+ x->wiiremote = wiiremote_init();
+
+ x->clock = clock_new(x, (method)akawiiremote_clock);
+- x->trial = 0;
+- x->interval = kInterval;
+
+ x->statusOut = outlet_new(x, 0);
+ x->buttonsOut = intout(x);
+ x->irOut = listout(x);
+ x->accOut = listout(x);
++#endif /* PD */
++ x->trial = 0;
++ x->interval = kInterval;
++
+
+ akawiiremote_count++;
+ return x;
+@@ -267,6 +355,12 @@
+ if (akawiiremote_count == 0)
+ wiiremote_disconnect();
+
++#ifdef PD
++ if (x->clock)
++ clock_unset(x->clock);
++ clock_free(x->clock);
++#else /* Max */
+ freeobject(x->clock);
++#endif
+ }
+
+--- /Users/hans/Desktop/aka.wiiremote-b2-src/wiiremote.h 2006-12-14 10:21:42.000000000 -0500
++++ wiiremote.h 2006-12-16 16:48:38.000000000 -0500
+@@ -2,9 +2,13 @@
+ // Copyright by Masayuki Akamatsu
+ // Based on "DarwiinRemote" by Hiroaki Kimura
+
++#include <CoreFoundation/CoreFoundation.h>
+ #include <IOBluetooth/Bluetooth.h>
+ #include <IOBluetooth/IOBluetoothUserLib.h>
+
++#include <stdio.h>
++#include <string.h>
++
+ typedef struct {
+ int x, y, s;
+ } IRData;
+--- /Users/hans/Desktop/aka.wiiremote-b2-src/wiiremote.c 2006-12-15 08:31:05.000000000 -0500
++++ wiiremote.c 2006-12-16 17:12:14.000000000 -0500
+@@ -4,6 +4,8 @@
+
+ #include "wiiremote.h"
+
++#include <unistd.h>
++
+ // this type is used a lot (data array):
+ typedef unsigned char darr[];
+