Hello, FYI I have extended the libphidget bindings in Bigloo with wrappers for CPhidgetEncoder [0].
Ludo’. [0] http://www.phidgets.com/documentation/web/cdoc/group__phidenc.html
changeset: 1653:3c92f86e5caa branch: 4.1 tag: tip parent: 1651:2641868913cd user: Ludovic Courtès <[email protected]> date: Tue Sep 03 17:39:00 2013 +0200 summary: phidget: Add bindings for CPhidgetEncoder. Modified api/phidget/examples/motor-control.scm diff -r 2641868913cd -r 3c92f86e5caa api/phidget/examples/motor-control.scm --- a/api/phidget/examples/motor-control.scm Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/examples/motor-control.scm Tue Sep 03 17:39:00 2013 +0200 @@ -6,7 +6,8 @@ ;* ------------------------------------------------------------- */ ;* Motor control example */ ;* ------------------------------------------------------------- */ -;* Control motors such as the Phidget Motor Control HC 1064. */ +;* Control motors such as the Phidget Motor Control HC 1064, */ +;* and check encoders such as the Phidget 1047. */ ;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/ @@ -16,6 +17,20 @@ (library pthread phidget) (main main)) +(define (parse-arguments argv) + ;; Return the chosen motor index and encoder index. + (match-case argv + ((?-) + (values 0 0)) + ((?- ?index) + (values (string->number index) 0)) + ((?- ?motor-index ?encoder-index) + (values (string->number motor-index) (string->number encoder-index))) + (?- + (display "Usage: motor-control [MOTOR-INDEX [ENCODER-INDEX]]\n" + (current-error-port)) + (exit 1)))) + ;*---------------------------------------------------------------------*/ ;* main ... */ ;*---------------------------------------------------------------------*/ @@ -25,42 +40,46 @@ (define halted (make-condition-variable)) - (let ((mc (instantiate::phidget-motor-control)) - (index (match-case argv - ((?-) - 0) - ((?- ?index) - (string->number index)) - (?- - (display "Usage: motor-control MOTOR-INDEX\n" - (current-error-port)) - (exit 1))))) - (phidget-open mc) - (phidget-wait-for-attachment mc 1000) + (receive (motor-index encoder-index) + (parse-arguments argv) + (let ((mc (instantiate::phidget-motor-control)) + (e (instantiate::phidget-encoder))) + (phidget-open mc) + (phidget-wait-for-attachment mc 1000) - ;; Note: We actually need to use the CPhidgetEncoder API to access the - ;; Phidget 1047 encoders. - (tprint "mc=" mc " " - (phidget-motor-control-encoder-count mc) - " encoders") + (phidget-open e) + (phidget-wait-for-attachment e 1000) - (phidget-motor-control-acceleration-set! mc index 4.) - (phidget-motor-control-velocity-set! mc index 50.) - (phidget-motor-control-braking-set! mc index 0.) - (phidget-add-event-listener! mc "velocity" - (lambda (event) - (with-access::phidget-motorcontrolvelocity-event event - (index velocity) - (when (zero? velocity) - (condition-variable-signal! halted)) - (printf "motor ~a: velocity = ~5d; current = ~12d~%" - index velocity - (phidget-motor-control-current mc index))))) - (sleep 1000000) + (phidget-encoder-enable! e encoder-index) + (tprint "encoder enabled?" (phidget-encoder-enabled? e encoder-index)) - (synchronize lock - (phidget-motor-control-velocity-set! mc index 0.) - (condition-variable-wait! halted lock)) - (print "done\n") - (phidget-motor-control-braking-set! mc index 100.) - #f)) + ;; Note: We actually need to use the CPhidgetEncoder API to access the + ;; Phidget 1047 encoders. + (tprint "mc=" mc " " + (phidget-motor-control-encoder-count mc) + " on-motor encoders; " + (with-access::phidget-encoder e (encoder-count) + encoder-count) + " encoders") + + (phidget-motor-control-acceleration-set! mc motor-index 4.) + (phidget-motor-control-velocity-set! mc motor-index 50.) + (phidget-motor-control-braking-set! mc motor-index 0.) + (phidget-add-event-listener! mc "velocity" + (lambda (event) + (with-access::phidget-motorcontrolvelocity-event event + (index velocity) + (when (zero? velocity) + (condition-variable-signal! halted)) + (printf "motor ~a: velocity = ~5d; current = ~12d; position = ~5d~%" + motor-index velocity + (phidget-motor-control-current mc index) + (phidget-encoder-position e encoder-index))))) + (sleep 1000000) + + (synchronize lock + (phidget-motor-control-velocity-set! mc motor-index 0.) + (condition-variable-wait! halted lock)) + (print "done\n") + (phidget-motor-control-braking-set! mc motor-index 100.) + #f))) Modified api/phidget/src/Clib/bglphidget.c diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Clib/bglphidget.c --- a/api/phidget/src/Clib/bglphidget.c Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Clib/bglphidget.c Tue Sep 03 17:39:00 2013 +0200 @@ -55,6 +55,9 @@ #define EVENT_STEPPERCURRENT 16 #define EVENT_MOTORCONTROLVELOCITY 17 #define EVENT_MOTORCONTROLCURRENT 18 +#define EVENT_ENCODERINPUT 19 +#define EVENT_ENCODERPOSITION 20 +#define EVENT_ENCODERINDEX 21 #define INITIAL_MAX_HANDLER 40 static struct handler *handlers; @@ -115,6 +118,19 @@ int index; double current; } motorcontrolcurrent; + struct { + int index; + int state; + } encoderinput; + struct { + int index; + int time; + int position; + } encoderposition; + struct { + int index; + int position; + } encoderindex; } event; }; @@ -302,6 +318,29 @@ cb->event.motorcontrolcurrent.current ); break; } + case EVENT_ENCODERINPUT: { + event = bgl_phidget_event_encoderinput_new( + hdl->obj, + cb->event.encoderinput.index, + cb->event.encoderinput.state ); + break; + } + case EVENT_ENCODERINDEX: { + event = bgl_phidget_event_encoderindex_new( + hdl->obj, + cb->event.encoderindex.index, + cb->event.encoderindex.position ); + break; + } + case EVENT_ENCODERPOSITION: { + event = bgl_phidget_event_encoderposition_new( + hdl->obj, + cb->event.encoderposition.index, + cb->event.encoderposition.time, + cb->event.encoderposition.position ); + break; + } + default: event = BUNSPEC; C_SYSTEM_FAILURE( @@ -1520,3 +1559,175 @@ bgl_phidget_motor_control_get_current( CPhidgetMotorControlHandle phid, int i, obj_t o ) { FIELD_INDEXED_GET( phid, Current, CPhidgetMotorControl, double, i, o ); } + + + +/*---------------------------------------------------------------------*/ +/* static int */ +/* bgl_encoderinput_handler ... */ +/*---------------------------------------------------------------------*/ +static int +bgl_encoderinput_handler( CPhidgetEncoderHandle id, void *ptr, int index, int state ) { + bgl_phidget_lock(); + + if( callback_index == callback_length ) enlarge_callback_array(); + + callbacks[ callback_index ].event.encoderinput.index = index; + callbacks[ callback_index ].event.encoderinput.state = state; + callbacks[ callback_index++ ].handler = (struct handler *)ptr; + + bgl_phidget_signal(); + bgl_phidget_unlock(); + + return 0; +} + +/*---------------------------------------------------------------------*/ +/* static int */ +/* bgl_encoderposition_handler ... */ +/*---------------------------------------------------------------------*/ +static int +bgl_encoderposition_handler( CPhidgetEncoderHandle id, void *ptr, int index, int time, int pos ) { + bgl_phidget_lock(); + + if( callback_index == callback_length ) enlarge_callback_array(); + + callbacks[ callback_index ].event.encoderposition.index = index; + callbacks[ callback_index ].event.encoderposition.time = time; + callbacks[ callback_index ].event.encoderposition.position = pos; + callbacks[ callback_index++ ].handler = (struct handler *)ptr; + + bgl_phidget_signal(); + bgl_phidget_unlock(); + + return 0; +} + +/*---------------------------------------------------------------------*/ +/* static int */ +/* bgl_encoderindex_handler ... */ +/*---------------------------------------------------------------------*/ +static int +bgl_encoderindex_handler( CPhidgetEncoderHandle id, void *ptr, int index, int position ) { + bgl_phidget_lock(); + + if( callback_index == callback_length ) enlarge_callback_array(); + + callbacks[ callback_index ].event.encoderindex.index = index; + callbacks[ callback_index ].event.encoderindex.position = position; + callbacks[ callback_index++ ].handler = (struct handler *)ptr; + + bgl_phidget_signal(); + bgl_phidget_unlock(); + + return 0; +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_add_event_listener ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_add_event_listener( CPhidgetEncoderHandle id, char *event, obj_t obj, obj_t proc ) { + if( !strcmp( event, "input" ) ) { + struct handler *hdl = bgl_add_handler( obj, proc, EVENT_ENCODERINPUT ); + + return CPhidgetEncoder_set_OnInputChange_Handler( + id, &bgl_encoderinput_handler, hdl ); + } + else if( !strcmp( event, "position" ) ) { + struct handler *hdl = bgl_add_handler( obj, proc, EVENT_ENCODERPOSITION ); + + return CPhidgetEncoder_set_OnPositionChange_Handler( + id, &bgl_encoderposition_handler, hdl ); + } + else if( !strcmp( event, "index" ) ) { + struct handler *hdl = bgl_add_handler( obj, proc, EVENT_ENCODERINDEX ); + + return CPhidgetEncoder_set_OnIndex_Handler( + id, &bgl_encoderindex_handler, hdl ); + } +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_get_input_count ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_get_input_count( CPhidgetEncoderHandle phid, int i, obj_t o ) { + int err, count; + + err = CPhidgetEncoder_getInputCount( phid, &count); + return err == EPHIDGET_OK + ? count + : (bgl_phidget_error( "EncoderCount", err, o ), count); +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_get_encoder_count ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_get_encoder_count( CPhidgetEncoderHandle phid, int i, obj_t o ) { + int err, count; + + err = CPhidgetEncoder_getEncoderCount( phid, &count); + return err == EPHIDGET_OK + ? count + : (bgl_phidget_error( "EncoderCount", err, o ), count); +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_get_input_enabled ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_get_input_enabled( CPhidgetEncoderHandle phid, int i, obj_t o ) { + FIELD_INDEXED_GET( phid, InputState, CPhidgetEncoder, int, i, o ); +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_get_position ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_get_position( CPhidgetEncoderHandle phid, int i, obj_t o ) { + FIELD_INDEXED_GET( phid, InputState, CPhidgetEncoder, int, i, o ); +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_get_index_position ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_get_index_position( CPhidgetEncoderHandle phid, int i, obj_t o ) { + FIELD_INDEXED_GET( phid, InputState, CPhidgetEncoder, int, i, o ); +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_get_enabled ... */ +/*---------------------------------------------------------------------*/ +int +bgl_phidget_encoder_get_enabled( CPhidgetEncoderHandle phid, int i, obj_t o ) { + FIELD_INDEXED_GET( phid, InputState, CPhidgetEncoder, int, i, o ); +} + + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_enable ... */ +/*---------------------------------------------------------------------*/ +void +bgl_phidget_encoder_enable( CPhidgetEncoderHandle phid, int i ) { + CPhidgetEncoder_setEnabled( phid, i, PTRUE ); +} + +/*---------------------------------------------------------------------*/ +/* int */ +/* bgl_phidget_encoder_disable ... */ +/*---------------------------------------------------------------------*/ +void +bgl_phidget_encoder_disable( CPhidgetEncoderHandle phid, int i ) { + CPhidgetEncoder_setEnabled( phid, i, PFALSE ); +} Modified api/phidget/src/Clib/bglphidget.h diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Clib/bglphidget.h --- a/api/phidget/src/Clib/bglphidget.h Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Clib/bglphidget.h Tue Sep 03 17:39:00 2013 +0200 @@ -37,6 +37,9 @@ #define BGL_PHIDGET_MOTOR_CONTROL_BUILTIN( o ) \ ((CPhidgetMotorControlHandle *)(&(((BgL_phidgetzd2motorzd2controlz00_bglt)o)->BgL_z42builtinz42))) +#define BGL_PHIDGET_ENCODER_BUILTIN( o ) \ + ((CPhidgetEncoderHandle *)(&(((BgL_phidgetzd2encoderzd2_bglt)o)->BgL_z42builtinz42))) + extern void bgl_phidget_init(); extern int bgl_phidget_manager_add_event_listener( @@ -69,6 +72,9 @@ extern obj_t bgl_phidget_event_steppercurrent_new( obj_t, int, double); extern obj_t bgl_phidget_event_motorcontrolvelocity_new( obj_t, int, double); extern obj_t bgl_phidget_event_motorcontrolcurrent_new( obj_t, int, double); +extern obj_t bgl_phidget_event_encoderinput_new( obj_t, int, int ); +extern obj_t bgl_phidget_event_encoderindex_new( obj_t, int, int ); +extern obj_t bgl_phidget_event_encoderposition_new( obj_t, int, int, int ); extern obj_t bgl_phidget_get_device_name( CPhidgetHandle ); extern obj_t bgl_phidget_get_device_type( CPhidgetHandle ); Modified api/phidget/src/Llib/pdg.sch diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Llib/pdg.sch --- a/api/phidget/src/Llib/pdg.sch Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Llib/pdg.sch Tue Sep 03 17:39:00 2013 +0200 @@ -4,7 +4,7 @@ ;* Author : Manuel Serrano */ ;* Creation : Sun Dec 30 15:28:51 2007 */ ;* Last change : Thu Oct 4 18:07:52 2012 (serrano) */ -;* Copyright : 2007-12 Manuel Serrano */ +;* Copyright : 2007-13 Inria */ ;* ------------------------------------------------------------- */ ;* Direct use of PHIDGET functions */ ;*=====================================================================*/ @@ -486,7 +486,7 @@ (::$pdg-phidget) "(CPhidgetMotorControlHandle)") (macro $pdg-phidget-motor-control-add-event-listener!::int - (::$pdg-manager ::string ::obj ::procedure) + (::$pdg-motor-control ::string ::obj ::procedure) "bgl_phidget_motor_control_add_event_listener") ($pdg-phidget-motor-control-get-motor-count::int @@ -527,7 +527,43 @@ "CPhidgetMotorControl_setBraking") ($pdg-phidget-motor-control-get-current::double (::$pdg-motor-control ::int ::obj) - "bgl_phidget_motor_control_get_current"))) + "bgl_phidget_motor_control_get_current") + + ;; encoder + (type $pdg-encoder void* "CPhidgetEncoderHandle") + (type $pdg-encoder* void* "CPhidgetEncoderHandle *") + (macro $pdg-encoder-create::int (::$pdg-encoder*) + "CPhidgetEncoder_create") + + (macro $pdg-encoder->phidget::$pdg-phidget (::$pdg-encoder) + "(CPhidgetHandle)") + (macro $pdg-phidget->encoder::$pdg-encoder (::$pdg-phidget) + "(CPhidgetEncoderHandle)") + (macro $pdg-phidget-encoder-add-event-listener!::int + (::$pdg-encoder ::string ::obj ::procedure) + "bgl_phidget_encoder_add_event_listener") + + ($pdg-phidget-encoder-get-encoder-count::int (::$pdg-encoder ::obj) + "bgl_phidget_encoder_get_encoder_count") + ($pdg-phidget-encoder-get-input-count::int (::$pdg-encoder ::obj) + "bgl_phidget_encoder_get_input_count") + ($pdg-phidget-encoder-get-input-enabled?::bool (::$pdg-encoder ::int ::obj) + "bgl_phidget_encoder_get_input_enabled") + ($pdg-phidget-encoder-get-position::int (::$pdg-encoder ::int ::obj) + "bgl_phidget_encoder_get_position") + (macro $pdg-phidget-encoder-set-position!::int + (::$pdg-encoder ::int ::int) + "CPhidgetEncoder_setPosition") + ($pdg-phidget-encoder-get-index-position::int + (::$pdg-encoder ::int ::obj) + "bgl_phidget_encoder_get_index_position") + + ($pdg-phidget-encoder-get-enabled?::bool (::$pdg-encoder ::int ::obj) + "bgl_phidget_encoder_get_enabled") + (macro $pdg-phidget-encoder-enable!::int (::$pdg-encoder ::int) + "bgl_phidget_encoder_enable") + (macro $pdg-phidget-encoder-disable!::int (::$pdg-encoder ::int) + "bgl_phidget_encoder_disable"))) ;*---------------------------------------------------------------------*/ ;* phidget-return ... */ New api/phidget/src/Llib/pdgencoder.scm diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Llib/pdgencoder.scm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/phidget/src/Llib/pdgencoder.scm Tue Sep 03 17:39:00 2013 +0200 @@ -0,0 +1,119 @@ +;*=====================================================================*/ +;* .../prgm/project/bigloo/api/phidget/src/Llib/pdgencoder.scm */ +;* ------------------------------------------------------------- */ +;* Author : Ludovic Courtès */ +;* Creation : Tue Mar 27 09:11:24 2012 */ +;* Last change : Mon Sep 2 11:15:36 CEST 2013 */ +;* Copyright : 2013 Inria */ +;* ------------------------------------------------------------- */ +;* Phidget Encoders */ +;*=====================================================================*/ + +;*---------------------------------------------------------------------*/ +;* The module */ +;*---------------------------------------------------------------------*/ +(module __phidget_encoder + + (include "pdg.sch") + + (extern (export $make-encoder "bgl_encoder_new") + (macro $pdg-encoder-builtin&::$pdg-encoder* + (::phidget-encoder) + "BGL_PHIDGET_ENCODER_BUILTIN")) + + (import __phidget_types + __phidget_ctypes + __phidget + __phidget_event + __phidget_phidget) + + (export (class phidget-encoder::phidget + (encoder-count::int + read-only + (get (lambda (o) + (with-access::phidget o ($builtin) + ($pdg-phidget-encoder-get-encoder-count + ($pdg-phidget->encoder $builtin) o)))))) + + (phidget-encoder-input-count::int ::phidget-encoder) + (phidget-encoder-input-enabled?::bool ::phidget-encoder ::int) + + (phidget-encoder-position::int ::phidget-encoder ::int) + (phidget-encoder-position-set! ::phidget-encoder ::int ::int) + (phidget-encoder-index-position::int ::phidget-encoder ::int) + + (phidget-encoder-enabled?::bool ::phidget-encoder ::int) + (phidget-encoder-enable! ::phidget-encoder ::int) + (phidget-encoder-disable! ::phidget-encoder ::int) + + ($make-encoder::obj ::$pdg-encoder))) + +;*---------------------------------------------------------------------*/ +;* $make-encoder ... */ +;*---------------------------------------------------------------------*/ +(define ($make-encoder mc::$pdg-encoder) + (instantiate::phidget-encoder + ($builtin ($pdg-encoder->phidget mc)))) + +;*---------------------------------------------------------------------*/ +;* %phidget-init ... */ +;*---------------------------------------------------------------------*/ +(define-method (%phidget-init o::phidget-encoder) + (phidget-init!) + (phidget-return + ($pdg-encoder-create ($pdg-encoder-builtin& o)) + "phidget-encoder" o)) + +;*---------------------------------------------------------------------*/ +;* phidget-add-event-listener! ::phidget-encoder ... */ +;*---------------------------------------------------------------------*/ +(define-method (phidget-add-event-listener! o::phidget-encoder event proc) + (with-access::phidget-encoder o ($builtin) + (phidget-return + ($pdg-phidget-encoder-add-event-listener! + ($pdg-phidget->encoder $builtin) event o proc) + "phidget-add-event-listener!" o))) + + +(define-syntax define-getter + (syntax-rules () + ((_ name dollar-name) + (define (name o i) + (with-access::phidget o ($builtin) + (dollar-name ($pdg-phidget->encoder $builtin) + i o)))))) + +(define-syntax define-setter + (syntax-rules () + ((_ name dollar-name) + (define (name o i v) + (with-access::phidget o ($builtin) + (dollar-name ($pdg-phidget->encoder $builtin) + i v)))))) + +(define-getter phidget-encoder-input-enabled? + $pdg-phidget-encoder-get-input-enabled?) +(define-getter phidget-encoder-position + $pdg-phidget-encoder-get-position) +(define-setter phidget-encoder-position-set! + $pdg-phidget-encoder-set-position!) +(define-getter phidget-encoder-index-position + $pdg-phidget-encoder-get-index-position) +(define-getter phidget-encoder-enabled? + $pdg-phidget-encoder-get-enabled?) + +(define (phidget-encoder-enable! e::phidget-encoder i::int) + (with-access::phidget e ($builtin) + ($pdg-phidget-encoder-enable! ($pdg-phidget->encoder $builtin) i))) + +(define (phidget-encoder-disable! e::phidget-encoder i::int) + (with-access::phidget e ($builtin) + ($pdg-phidget-encoder-disable! ($pdg-phidget->encoder $builtin) i))) + +;*---------------------------------------------------------------------*/ +;* phidget-encoder-input-count ... */ +;*---------------------------------------------------------------------*/ +(define (phidget-encoder-input-count o) + (with-access::phidget o ($builtin) + ($pdg-phidget-encoder-get-input-count + ($pdg-phidget->encoder $builtin) o))) Modified api/phidget/src/Llib/pdgevent.scm diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Llib/pdgevent.scm --- a/api/phidget/src/Llib/pdgevent.scm Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Llib/pdgevent.scm Tue Sep 03 17:39:00 2013 +0200 @@ -42,7 +42,10 @@ (export phidget-event-stepperposition-new "bgl_phidget_event_stepperposition_new") (export phidget-event-steppercurrent-new "bgl_phidget_event_steppercurrent_new") (export phidget-event-motorcontrolvelocity-new "bgl_phidget_event_motorcontrolvelocity_new") - (export phidget-event-motorcontrolcurrent-new "bgl_phidget_event_motorcontrolcurrent_new")) + (export phidget-event-motorcontrolcurrent-new "bgl_phidget_event_motorcontrolcurrent_new") + (export phidget-event-encoderinput-new "bgl_phidget_event_encoderinput_new") + (export phidget-event-encoderposition-new "bgl_phidget_event_encoderposition_new") + (export phidget-event-encoderindex-new "bgl_phidget_event_encoderindex_new")) (export (%phidget-thread-init!) (%phidget-lock!) @@ -71,7 +74,11 @@ (phidget-event-stepperposition-new::obj ::obj ::int ::llong) (phidget-event-steppercurrent-new::obj ::obj ::int ::double) (phidget-event-motorcontrolvelocity-new::obj ::obj ::int ::double) - (phidget-event-motorcontrolcurrent-new::obj ::obj ::int ::double))) + (phidget-event-motorcontrolcurrent-new::obj ::obj ::int ::double) + + (phidget-event-encoderinput-new::obj ::obj ::int ::bool) + (phidget-event-encoderposition-new::obj ::obj ::int ::int ::int) + (phidget-event-encoderindex-new::obj ::obj ::int ::int))) ;*---------------------------------------------------------------------*/ ;* *phidget-mutex* ... */ @@ -300,3 +307,31 @@ (target target) (index index) (current current))) + +;*---------------------------------------------------------------------*/ +;* phidget-event-encoderinput-new ... */ +;*---------------------------------------------------------------------*/ +(define (phidget-event-encoderinput-new target index state) + (instantiate::phidget-encoderinput-event + (target target) + (index index) + (state state))) + +;*---------------------------------------------------------------------*/ +;* phidget-event-encoderposition-new ... */ +;*---------------------------------------------------------------------*/ +(define (phidget-event-encoderposition-new target index time position) + (instantiate::phidget-encoderposition-event + (target target) + (index index) + (time time) + (position position))) + +;*---------------------------------------------------------------------*/ +;* phidget-event-encoderindex-new ... */ +;*---------------------------------------------------------------------*/ +(define (phidget-event-encoderindex-new target index position) + (instantiate::phidget-encoderindex-event + (target target) + (index index) + (position position))) Modified api/phidget/src/Llib/pdgtypes.scm diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Llib/pdgtypes.scm --- a/api/phidget/src/Llib/pdgtypes.scm Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Llib/pdgtypes.scm Tue Sep 03 17:39:00 2013 +0200 @@ -90,6 +90,19 @@ (index::int read-only) (current::double read-only)) + (class phidget-encoderinput-event::%phidget-event + (index::int read-only) + (state::bool read-only)) + + (class phidget-encoderposition-event::%phidget-event + (index::int read-only) + (time::int read-only) + (position::int read-only)) + + (class phidget-encoderindex-event::%phidget-event + (index::int read-only) + (position::int read-only)) + (generic %phidget-init ::%phidget))) ;*---------------------------------------------------------------------*/ Modified api/phidget/src/Makefile diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Makefile --- a/api/phidget/src/Makefile Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Makefile Tue Sep 03 17:39:00 2013 +0200 @@ -63,7 +63,7 @@ #*---------------------------------------------------------------------*/ _BGL_OBJECTS = phidget pdgtypes pdg pdglogging pdgmanager pdgstepper \ pdgphidget pdgifkit pdgspatial pdgservo pdgaservo \ - pdgevent pdgmotorcontrol + pdgevent pdgmotorcontrol pdgencoder _C_OBJECTS = bglphidget _JAVA_CLASSES = Modified api/phidget/src/Misc/make_lib.scm diff -r 2641868913cd -r 3c92f86e5caa api/phidget/src/Misc/make_lib.scm --- a/api/phidget/src/Misc/make_lib.scm Fri Aug 02 07:53:28 2013 +0200 +++ b/api/phidget/src/Misc/make_lib.scm Tue Sep 03 17:39:00 2013 +0200 @@ -26,7 +26,8 @@ __phidget_servo __phidget_advanced-servo __phidget_stepper - __phidget_motor-control) + __phidget_motor-control + __phidget_encoder) (eval (export-all) @@ -57,4 +58,5 @@ (class phidget-servo) (class phidget-advanced-servo) (class phidget-stepper) - (class phidget-motor-control))) + (class phidget-motor-control) + (class phidget-encoder)))
