Update of /cvsroot/pure-data/externals/hcs/hid In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32400
Modified Files: Makefile TODO hid.c hid.h hid_darwin.c Added Files: hid_menu.pd Log Message:
- cleaned up CFLAGS and tried higher optimization, which failed to build
- implemented a second outlet which outputs data upon [refresh( to build a popup menu to select the device by name using a [popup]. This uncovered a bug, which is not fixed, it seems that everytime you open a device, that device gets added again to the list of devices
Index: hid_darwin.c =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/hid_darwin.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** hid_darwin.c 4 Jun 2005 15:51:39 -0000 1.15 --- hid_darwin.c 6 Jun 2005 22:39:50 -0000 1.16 *************** *** 53,58 **** #include "hid.h"
! #define DEBUG(x) ! //#define DEBUG(x) x
/*============================================================================== --- 53,58 ---- #include "hid.h"
! //#define DEBUG(x) ! #define DEBUG(x) x
/*============================================================================== *************** *** 294,297 **** --- 294,312 ---- }
+ void hid_output_device_name(t_hid *x, char *manufacturer, char *product) + { + char *device_name; + t_symbol *device_name_symbol; + + device_name = malloc( strlen(manufacturer) + 1 + strlen(product) + 1 ); + // device_name = malloc( 7 + strlen(manufacturer) + 1 + strlen(product) + 1 ); + // strcpy( device_name, "append " ); + strcat( device_name, manufacturer ); + strcat ( device_name, " "); + strcat( device_name, product ); + // outlet_anything( x->x_device_name_outlet, gensym( device_name ),0,NULL ); + outlet_symbol( x->x_device_name_outlet, gensym( device_name ) ); + } + /* ============================================================================== */ /* Pd [hid] FUNCTIONS */ *************** *** 478,483 **** }
! // this doesn't seem to be needed at all ! // result = HIDCreateOpenDeviceInterface(pCurrentHIDDevice);
post("[hid] opened device %d: %s %s", --- 493,497 ---- }
! hid_output_device_name( x, pCurrentHIDDevice->manufacturer, pCurrentHIDDevice->product );
post("[hid] opened device %d: %s %s", *************** *** 522,528 **** DEBUG(post("hid_build_device_list"););
! // returns false if no device found if(HIDBuildDeviceList (NULL, NULL)) error("[hid]: no HID devices found\n"); return (0); --- 536,555 ---- DEBUG(post("hid_build_device_list"););
! pRecDevice pCurrentHIDDevice; ! t_atom device_name_atoms[2]; ! ! // returns false if no device found if(HIDBuildDeviceList (NULL, NULL)) error("[hid]: no HID devices found\n"); + + /* send the [menu( msg to set the [hid_menu] to blank */ + outlet_anything( x->x_device_name_outlet, gensym( "menu" ),0,NULL ); + + pCurrentHIDDevice = HIDGetFirstDevice(); + while ( pCurrentHIDDevice != NULL ) + { + hid_output_device_name( x, pCurrentHIDDevice->manufacturer, pCurrentHIDDevice->product ); + pCurrentHIDDevice = HIDGetNextDevice(pCurrentHIDDevice); + } return (0);
Index: hid.c =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/hid.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** hid.c 4 Jun 2005 15:51:39 -0000 1.18 --- hid.c 6 Jun 2005 22:39:50 -0000 1.19 *************** *** 51,55 **** void hid_output_event(t_hid *x, char *type, char *code, t_float value) { ! t_atom event_data[4]; SETSYMBOL(event_data, gensym(type)); /* type */ --- 51,55 ---- void hid_output_event(t_hid *x, char *type, char *code, t_float value) { ! t_atom event_data[3]; SETSYMBOL(event_data, gensym(type)); /* type */ *************** *** 57,61 **** SETFLOAT(event_data + 2, value); /* value */
! outlet_anything(x->x_obj.te_outlet,atom_gensym(event_data),2,event_data+1); }
--- 57,61 ---- SETFLOAT(event_data + 2, value); /* value */
! outlet_anything(x->x_data_outlet,atom_gensym(event_data),2,event_data+1); }
*************** *** 116,123 ****
! /* closed / same device open */ ! /* open / same device no action */ ! /* closed / different device open */ ! /* open / different device close open */
t_int hid_open(t_hid *x, t_float f) --- 116,127 ----
! /* hid_open behavoir ! * current state action ! * --------------------------------------- ! * closed / same device open ! * open / same device no action ! * closed / different device open ! * open / different device close open ! */
t_int hid_open(t_hid *x, t_float f) *************** *** 242,247 ****
/* create anything outlet used for HID data */ ! outlet_new(&x->x_obj, 0); ! /* find and report the list of devices */ hid_build_device_list(x); --- 246,252 ----
/* create anything outlet used for HID data */ ! x->x_data_outlet = outlet_new(&x->x_obj, 0); ! x->x_device_name_outlet = outlet_new(&x->x_obj, 0); ! /* find and report the list of devices */ hid_build_device_list(x);
--- NEW FILE: hid_menu.pd --- #N canvas 469 172 252 29 10; #X obj 131 138 inlet; #X obj 15 350 outlet; #X obj 1 2 popup 250 25 grey90 HID_device none; #X msg 15 318 open $1; #X obj 251 141 prepend append; #X msg 131 203 options; #X obj 131 176 route menu; #X connect 0 0 6 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 4 0 2 0; #X connect 5 0 2 0; #X connect 6 0 5 0; #X connect 6 1 4 0; #X coords 0 0 1 1 252 29 1;
Index: Makefile =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Makefile 4 Jun 2005 15:51:39 -0000 1.8 --- Makefile 6 Jun 2005 22:39:50 -0000 1.9 *************** *** 31,36 **** PDEXECUTABLE = ../../../pd/bin/pd
! CFLAGS = -DUNIX -DPD -O2 -funroll-loops -fomit-frame-pointer \ ! -Wall -W -Wno-shadow -Wstrict-prototypes -Wno-unused
INCLUDE = -I./ -I../../../pd/src -I./HID\ Utilities\ Source --- 31,40 ---- PDEXECUTABLE = ../../../pd/bin/pd
! # generic optimization ! OPT_FLAGS = -O3 ! # G4 7450 optimization (gives errors) ! #OPT_FLAGS = -fast -mcpu=7450 -maltivec ! ! CFLAGS = $(OPT_FLAGS) -Wall -W -Wno-shadow -Wstrict-prototypes -Wno-unused
INCLUDE = -I./ -I../../../pd/src -I./HID\ Utilities\ Source
Index: TODO =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/TODO,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** TODO 4 Jun 2005 15:56:45 -0000 1.17 --- TODO 6 Jun 2005 22:39:50 -0000 1.18 *************** *** 1,2 **** --- 1,9 ---- + ============================================================================== + = make fake names in input_arrays.c + + Instead of having "NULL" names, make up names using the event type, and the + code number, i.e. abs_41, rel_15 + +
==============================================================================
Index: hid.h =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/hid.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** hid.h 28 Apr 2005 04:29:58 -0000 1.14 --- hid.h 6 Jun 2005 22:39:50 -0000 1.15 *************** *** 31,34 **** --- 31,36 ---- t_int x_started; t_int x_device_open; + t_outlet *x_data_outlet; + t_outlet *x_device_name_outlet; } t_hid;