From 96715c9b2b6afb2f677aaa3d351c26627fd6732b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 28 Dec 2006 23:16:03 +0000 Subject: ported b4 from Masayuki Akamatsu, fixed one minor warning svn path=/trunk/externals/io/; revision=7092 --- wiiremote/aka.wiiremote_b2_pd-port.patch | 223 +++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 wiiremote/aka.wiiremote_b2_pd-port.patch (limited to 'wiiremote/aka.wiiremote_b2_pd-port.patch') 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 + ++ ++#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 + #include + #include + ++#include ++#include ++ + 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 ++ + // this type is used a lot (data array): + typedef unsigned char darr[]; + -- cgit v1.2.1