Update of /cvsroot/pure-data/externals/hcs In directory sc8-pr-cvs1:/tmp/cvs-serv26238
Modified Files: linuxevent.c linuxevent-help.pd Added Files: linuxevent-joystick.pd Log Message: fixed [linuxevent] and added help files
--- NEW FILE: linuxevent-joystick.pd --- #N canvas 270 365 499 362 10; #X obj 16 86 linuxevent /dev/input/event1; #X msg 35 43 start; #X msg 44 62 stop; #X obj 16 9 inlet; #X obj 79 116 pack f f f; #X obj 79 139 route 1 3; #X obj 137 159 print UNKNOWN_JOYSTICK_EVENT_TYPE; #X text 148 139 types (1=buttons 3=abs axes); #X obj 108 187 route 0 1 6 7; #X obj 194 209 print UNKNOWN_JOYSTICK_EVENT_CODE; #X obj 151 249 print THROTTLE; #X text 204 190 codes (0=X 1=Y 6=throttle 7=rudder); #X obj 172 229 print RUDDER; #X obj 129 269 print Y-AXIS; #X obj 108 290 print X-AXIS; #X connect 0 1 4 0; #X connect 0 2 4 1; #X connect 0 3 4 2; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; #X connect 4 0 5 0; #X connect 5 1 8 0; #X connect 5 2 6 0; #X connect 8 0 14 0; #X connect 8 1 13 0; #X connect 8 2 10 0; #X connect 8 3 12 0;
Index: linuxevent.c =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/linuxevent.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** linuxevent.c 25 Apr 2003 23:42:19 -0000 1.2 --- linuxevent.c 17 Nov 2003 06:18:23 -0000 1.3 *************** *** 15,18 **** --- 15,19 ---- t_int x_fd; t_symbol* x_devname; + t_clock *x_clock; int read_ok; int started; *************** *** 22,25 **** --- 23,27 ---- t_outlet *x_input_event_code_outlet; t_outlet *x_input_event_value_outlet; + int x_delaytime; }t_linuxevent;
*************** *** 31,41 **** static int linuxevent_close(t_linuxevent *x) { ! DEBUG(post("linuxevent_close");) ! ! if (x->x_fd <0) return 0; ! ! close (x->x_fd); ! ! return 1; }
--- 33,44 ---- static int linuxevent_close(t_linuxevent *x) { ! DEBUG(post("linuxevent_close");) ! ! if (x->x_fd <0) { ! return 0; ! } else { ! close (x->x_fd); ! return 1; ! } }
*************** *** 158,181 **** static int linuxevent_read(t_linuxevent *x,int fd) { ! int readBytes; ! int axis_num = 0; ! t_float button_num = 0;
if (x->x_fd < 0) return 0; ! if (x->read_ok) { ! readBytes = read(x->x_fd, &(x->x_input_event), sizeof(struct input_event)); ! DEBUG(post("reading %d",readBytes);) ! if ( readBytes < 0 ) { ! post("linuxevent: read failed"); ! x->read_ok = 0; ! return 0; ! } } - /* input_event.time is a timeval struct from <sys/time.h> */ - /* outlet_float (x->x_input_event_time_outlet, x->x_input_event.time); */ - outlet_float (x->x_input_event_type_outlet, x->x_input_event.type); - outlet_float (x->x_input_event_code_outlet, x->x_input_event.code); - outlet_float (x->x_input_event_value_outlet, (int)x->x_input_event.value);
return 1; } --- 161,180 ---- static int linuxevent_read(t_linuxevent *x,int fd) { ! // int readBytes;
if (x->x_fd < 0) return 0; ! ! while (read (x->x_fd, &(x->x_input_event), sizeof(struct input_event)) > -1) { ! outlet_float (x->x_input_event_value_outlet, (int)x->x_input_event.value); ! outlet_float (x->x_input_event_code_outlet, x->x_input_event.code); ! outlet_float (x->x_input_event_type_outlet, x->x_input_event.type); ! /* input_event.time is a timeval struct from <sys/time.h> */ ! /* outlet_float (x->x_input_event_time_outlet, x->x_input_event.time); */ }
+ if (x->started) { + clock_delay(x->x_clock, x->x_delaytime); + } + return 1; } *************** *** 183,192 **** /* Actions */
- static void linuxevent_bang(t_linuxevent* x) - { - DEBUG(post("linuxevent_bang");) - - } - static void linuxevent_float(t_linuxevent* x) { --- 182,185 ---- *************** *** 195,208 **** }
// DONE void linuxevent_start(t_linuxevent* x) { ! DEBUG(post("linuxevent_start");) ! ! if (x->x_fd >= 0 && !x->started) { ! sys_addpollfn(x->x_fd, (t_fdpollfn)linuxevent_read, x); ! post("linuxevent: start"); ! x->started = 1; ! } }
--- 188,213 ---- }
+ void linuxevent_delay(t_linuxevent* x, t_float f) { + DEBUG(post("linuxevent_DELAY %f",f);) + + /* if the user sets the delay less than zero, reset to default */ + if ( f > 0 ) { + x->x_delaytime = (int)f; + } else { + x->x_delaytime = 5; + } + } + // DONE void linuxevent_start(t_linuxevent* x) { ! DEBUG(post("linuxevent_start");); ! post("clock delay: %d",x->x_delaytime); ! ! if (x->x_fd >= 0 && !x->started) { ! clock_delay(x->x_clock, 2); ! post("linuxevent: start"); ! x->started = 1; ! } }
*************** *** 211,221 **** void linuxevent_stop(t_linuxevent* x) { ! DEBUG(post("linuxevent_stop");) ! ! if (x->x_fd >= 0 && x->started) { ! sys_rmpollfn(x->x_fd); ! post("linuxevent: stop"); ! x->started = 0; ! } }
--- 216,228 ---- void linuxevent_stop(t_linuxevent* x) { ! DEBUG(post("linuxevent_stop");); ! ! post("clock delay: %d",x->x_delaytime); ! ! if (x->x_fd >= 0 && x->started) { ! clock_unset(x->x_clock); ! post("linuxevent: stop"); ! x->started = 0; ! } }
*************** *** 227,234 **** DEBUG(post("linuxevent_free");)
! if (x->x_fd < 0) return; ! linuxevent_stop(x); ! close (x->x_fd); } --- 234,241 ---- DEBUG(post("linuxevent_free");)
! if (x->x_fd < 0) return; ! linuxevent_stop(x); ! clock_free(x->x_clock); close (x->x_fd); } *************** *** 240,248 ****
DEBUG(post("linuxevent_new");) ! /* init vars */ x->x_fd = -1; x->read_ok = 1; x->started = 0;
/* create outlets for each axis */ --- 247,260 ----
DEBUG(post("linuxevent_new");) ! ! post("[linuxevent] %s, written by Hans-Christoph Steiner hans@eds.org",version); ! /* init vars */ x->x_fd = -1; x->read_ok = 1; x->started = 0; + x->x_delaytime = 5; + + x->x_clock = clock_new(x, (t_method)linuxevent_read);
/* create outlets for each axis */ *************** *** 273,277 **** /* add inlet datatype methods */ class_addfloat(linuxevent_class,(t_method) linuxevent_float); ! class_addbang(linuxevent_class,(t_method) linuxevent_bang);
/* add inlet message methods */ --- 285,289 ---- /* add inlet datatype methods */ class_addfloat(linuxevent_class,(t_method) linuxevent_float); ! class_addbang(linuxevent_class,(t_method) linuxevent_read);
/* add inlet message methods */ *************** *** 280,283 **** --- 292,296 ---- class_addmethod(linuxevent_class,(t_method) linuxevent_start,gensym("start"),0); class_addmethod(linuxevent_class,(t_method) linuxevent_stop,gensym("stop"),0); + class_addmethod(linuxevent_class,(t_method) linuxevent_delay,gensym("delay"),A_FLOAT,0);
}
Index: linuxevent-help.pd =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/linuxevent-help.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** linuxevent-help.pd 17 Nov 2003 03:04:55 -0000 1.1 --- linuxevent-help.pd 17 Nov 2003 06:18:23 -0000 1.2 *************** *** 1,20 **** ! #N canvas 454 205 450 300 10; ! #X floatatom 254 231 5 0 0 3 code - -; ! #X floatatom 318 231 5 0 0 3 value - -; ! #X floatatom 190 231 4 0 0 3 type - -; ! #X floatatom 117 231 9 0 0 3 time - -; ! #X msg 177 104 start; ! #X msg 178 126 stop; ! #X obj 127 208 linuxevent /dev/input/event0; ! #X obj 127 63 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X text 147 63 bang to get an update; ! #X text 225 116 start/stop polling; ! #X obj 52 67 metro 20; ! #X msg 182 165 delay 20; ! #X text 249 165 time between polls (ms); ! #X obj 51 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X msg 75 39 stop; #X connect 4 0 6 0; #X connect 5 0 6 0; --- 1,186 ---- ! #N canvas 547 51 569 453 10; ! #X floatatom 241 326 5 0 0 3 code - -; ! #X floatatom 305 326 5 0 0 3 value - -; ! #X floatatom 177 326 4 0 0 3 type - -; ! #X floatatom 104 326 9 0 0 3 time - -; ! #X msg 164 199 start; ! #X msg 165 221 stop; ! #X obj 114 303 linuxevent /dev/input/event0; ! #X obj 114 158 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X text 134 158 bang to get an update; ! #X text 212 211 start/stop polling; ! #X obj 25 158 metro 20; ! #X text 236 260 time between polls (ms); ! #X obj 25 136 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X msg 45 136 stop; ! #X msg 169 260 delay 20; ! #X obj 114 109 key; ! #X obj 114 129 select 98; ! #X text 187 129 <- type 'b' for a bang; ! #N canvas 278 328 611 524 Event_Codes 0; ! #X text 28 48 (For a complete listing of Linux Input Events , see ! /usr/include/linux/input.h.); ! #X obj 11 9 cnv 15 580 30 empty empty Event_Codes 20 12 1 14 -225271 ! -66577 0; ! #X text 32 118 EVENT CODE; ! #X text 162 118 #define; ! #X text 232 118 number; ! #X text 32 133 -----------------------------------; ! #X text 32 148 X Axis; ! #X text 32 163 Y Axis; ! #X text 32 178 Z Axis; ! #X text 32 193 Horizontal Wheel; ! #X text 32 208 Dial; ! #X text 32 223 Wheel; ! #X text 32 238 Misc; ! #X text 162 148 REL_X; ! #X text 162 163 REL_Y; ! #X text 162 178 REL_Z; ! #X text 162 193 REL_HWHEEL; ! #X text 162 208 REL_DIAL; ! #X text 162 223 REL_WHEEL; ! #X text 162 238 REL_MISC; ! #X text 232 148 0; ! #X text 232 163 1; ! #X text 232 178 2; ! #X text 232 193 6; ! #X text 232 208 7; ! #X text 232 223 8; ! #X text 232 238 9; ! #X text 307 118 EVENT CODE; ! #X text 457 118 #define; ! #X text 547 118 number; ! #X text 307 148 Absolute X; ! #X text 307 163 Absolute Y; ! #X text 307 178 Absolute Z; ! #X text 307 193 RX; ! #X text 307 208 RY; ! #X text 307 223 RZ; ! #X text 307 238 Throttle; ! #X text 307 253 Rudder; ! #X text 307 268 Wheel; ! #X text 307 283 Gas Pedal; ! #X text 307 298 Brake Pedal; ! #X text 307 313 Hat Switch 0 X-axis; ! #X text 307 328 Hat Switch 0 Y-axis; ! #X text 307 343 Hat Switch 1 X-axis; ! #X text 307 358 Hat Switch 1 Y-axis; ! #X text 307 373 Hat Switch 2 X-axis; ! #X text 307 388 Hat Switch 2 Y-axis; ! #X text 307 403 Hat Switch 3 X-axis; ! #X text 307 418 Hat Switch 3 Y-axis; ! #X text 307 433 Pressure; ! #X text 307 448 Distance; ! #X text 307 463 Tilt X-Axis; ! #X text 307 478 Tilt Y-Axis; ! #X text 307 493 Misc; ! #X text 457 148 ABS_X; ! #X text 457 163 ABS_Y; ! #X text 457 178 ABS_Z; ! #X text 457 193 ABS_RX; ! #X text 457 208 ABS_RY; ! #X text 457 223 ABS_RZ; ! #X text 457 238 ABS_THROTTLE; ! #X text 457 253 ABS_RUDDER; ! #X text 457 268 ABS_WHEEL; ! #X text 457 283 ABS_GAS; ! #X text 457 298 ABS_BRAKE; ! #X text 457 313 ABS_HAT0X; ! #X text 457 328 ABS_HAT0Y; ! #X text 457 343 ABS_HAT1X; ! #X text 457 358 ABS_HAT1Y; ! #X text 457 373 ABS_HAT2X; ! #X text 457 388 ABS_HAT2Y; ! #X text 457 403 ABS_HAT3X; ! #X text 457 418 ABS_HAT3Y; ! #X text 457 433 ABS_PRESSURE; ! #X text 457 448 ABS_DISTANCE; ! #X text 457 463 ABS_TILT_X; ! #X text 457 478 ABS_TILT_Y; ! #X text 457 493 ABS_MISC; ! #X text 547 148 0; ! #X text 547 163 1; ! #X text 547 178 2; ! #X text 547 193 3; ! #X text 547 208 4; ! #X text 547 223 5; ! #X text 547 238 6; ! #X text 547 253 7; ! #X text 547 268 8; ! #X text 547 283 9; ! #X text 547 298 10; ! #X text 547 313 16; ! #X text 547 328 17; ! #X text 547 343 18; ! #X text 547 358 19; ! #X text 547 373 20; ! #X text 547 388 21; ! #X text 547 403 22; ! #X text 547 418 23; ! #X text 547 433 24; ! #X text 547 448 25; ! #X text 547 463 26; ! #X text 547 478 27; ! #X text 547 493 28; ! #X obj 30 89 cnv 15 250 25 empty empty Relative_Axes 20 12 1 12 -241660 ! -66577 0; ! #X obj 308 89 cnv 15 280 25 empty empty Absolute_Axes 20 12 1 12 -241660 ! -66577 0; ! #X text 307 133 ----------------------------------------; ! #X restore 439 368 pd Event_Codes; ! #N canvas 546 568 420 271 Event_Types 0; ! #X text 28 48 (For a complete listing of Linux Input Events , see ! /usr/include/linux/input.h.); ! #X text 84 94 EVENT TYPE; ! #X text 84 109 -----------------------------------; ! #X text 84 124 RST; ! #X text 84 139 Keys and Buttons; ! #X text 84 154 Relative Axes; ! #X text 84 169 Absolute Axes; ! #X text 84 184 Misc Events; ! #X text 84 199 LED Event; ! #X text 84 214 Sounds; ! #X text 84 229 Autorepeat Values; ! #X text 84 244 Force Feedback; ! #X text 214 94 #define; ! #X text 214 124 EV_RST; ! #X text 214 139 EV_KEY; ! #X text 214 154 EV_REL; ! #X text 214 169 EV_ABS; ! #X text 214 184 EV_MSC; ! #X text 214 199 EV_LED; ! #X text 214 214 EV_SND; ! #X text 214 229 EV_REP; ! #X text 214 244 EV_FF; ! #X text 284 94 number; ! #X text 284 124 0; ! #X text 284 139 1; ! #X text 284 154 2; ! #X text 284 169 3; ! #X text 284 184 4; ! #X text 284 199 17; ! #X text 284 214 18; ! #X text 284 229 20; ! #X text 284 244 21; ! #X obj 11 9 cnv 15 400 30 empty empty Event_Types 20 12 1 14 -262131 ! -66577 0; ! #X restore 439 348 pd Event_Types; ! #N canvas 0 0 450 300 Event_Values 0; ! #X text 28 48 (For a complete listing of Linux Input Events , see ! /usr/include/linux/input.h.); ! #X obj 11 9 cnv 15 400 30 empty empty Event_Values 20 12 1 14 -261681 ! -66577 0; ! #X restore 439 388 pd Event_Values; ! #X text 8 373 Check the Pd console for supported event types and codes. ! This object will report them when it opens a device.; ! #X obj 9 8 cnv 15 550 30 empty empty linuxevent 20 12 1 16 -228992 ! -66577 0; ! #X text 17 50 [linuxevent] outputs raw events from the Linux Event ! system. It is used for access the output of various Human Interface ! Devices , like mice , joysticks , tablets , etc.; ! #X text 62 424 Here's an example for using a joystick:; ! #X obj 366 423 linuxevent-joystick; #X connect 4 0 6 0; #X connect 5 0 6 0; *************** *** 25,29 **** #X connect 7 0 6 0; #X connect 10 0 6 0; ! #X connect 11 0 6 0; #X connect 13 0 10 0; ! #X connect 14 0 10 0; --- 191,197 ---- #X connect 7 0 6 0; #X connect 10 0 6 0; ! #X connect 12 0 10 0; #X connect 13 0 10 0; ! #X connect 14 0 6 0; ! #X connect 15 0 16 0; ! #X connect 16 0 7 0;