diff options
Diffstat (limited to 'cphidgetservo.h')
-rw-r--r-- | cphidgetservo.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/cphidgetservo.h b/cphidgetservo.h new file mode 100644 index 0000000..d0e9a97 --- /dev/null +++ b/cphidgetservo.h @@ -0,0 +1,142 @@ +#ifndef __CPHIDGETSERVO +#define __CPHIDGETSERVO +#include "cphidget.h" +#include "cphidgetadvancedservo.h" + +/** \defgroup phidservo Phidget Servo + * \ingroup phidgets + * Calls specific to the Phidget Servo. See the product manual for more specific API details, supported functionality, units, etc. + * @{ + */ + +DPHANDLE(Servo) +CHDRSTANDARD(Servo) + +/** + * Gets the number of motors supported by this controller. + * @param phid An attached phidget servo handle. + * @param count The motor count. + */ +CHDRGET(Servo,MotorCount,int *count) + +/** + * Gets the current position of a motor. + * @param phid An attached phidget servo handle. + * @param index The motor index. + * @param position The motor position. + */ +CHDRGETINDEX(Servo,Position,double *position) +/** + * Sets the current position of a motor. + * @param phid An attached phidget servo handle. + * @param index The motor index. + * @param position The motor position. + */ +CHDRSETINDEX(Servo,Position,double position) +/** + * Gets the maximum position that a motor can be set to. + * @param phid An attached phidget servo handle. + * @param index The motor index. + * @param max The maximum position. + */ +CHDRGETINDEX(Servo,PositionMax,double *max) +/** + * Gets the minimum position that a motor can be set to. + * @param phid An attached phidget servo handle. + * @param index The motor index. + * @param min The minimum position. + */ +CHDRGETINDEX(Servo,PositionMin,double *min) +/** + * Sets a position change event handler. This is called when the position changes. + * @param phid An attached phidget servo handle + * @param fptr Callback function pointer. + * @param userPtr A pointer for use by the user - this value is passed back into the callback function. + */ +CHDREVENTINDEX(Servo,PositionChange,double position) +/** + * Gets the engaged state of a motor. This is whether the motor is powered or not. + * @param phid An attached phidget servo handle + * @param index The motor index. + * @param engagedState The engaged state. Possible values are \ref PTRUE and \ref PFALSE. + */ +CHDRGETINDEX(Servo,Engaged,int *engagedState) +/** + * Sets the engaged state of a motor. This is whether the motor is powered or not. + * @param phid An attached phidget servo handle + * @param index The motor index. + * @param engagedState The engaged state. Possible values are \ref PTRUE and \ref PFALSE. + */ +CHDRSETINDEX(Servo,Engaged,int engagedState) +/** + * Gets the servo type of a motor. + * @param phid An attached phidget advanced servo handle + * @param index The motor index. + * @param servoType The servo type. + */ +CHDRGETINDEX(Servo,ServoType,CPhidget_ServoType *servoType) +/** + * Sets the servo type of a motor. + * @param phid An attached phidget advanced servo handle + * @param index The motor index. + * @param servoType The servo type. + */ +CHDRSETINDEX(Servo,ServoType,CPhidget_ServoType servoType) +/** + * Sets the servo parameters of a motor. + * @param phid An attached phidget advanced servo handle + * @param index The motor index. + * @param min_us The minimum supported PCM in microseconds. + * @param max_us The maximum supported PCM in microseconds. + * @param degrees The degrees of rotation defined by the given PCM range. + */ +CHDRSETINDEX(Servo,ServoParameters,double min_us,double max_us,double degrees) + +#ifndef REMOVE_DEPRECATED +DEP_CHDRGET("Deprecated - use CPhidgetServo_getMotorCount",Servo,NumMotors,int *) +DEP_CHDRSETINDEX("Deprecated - use CPhidgetServo_setPosition",Servo,MotorPosition,double) +DEP_CHDRGETINDEX("Deprecated - use CPhidgetServo_getPosition",Servo,MotorPosition,double *) +DEP_CHDRGETINDEX("Deprecated - use CPhidgetServo_getPositionMax",Servo,MotorPositionMax,double *) +DEP_CHDRGETINDEX("Deprecated - use CPhidgetServo_getPositionMin",Servo,MotorPositionMin,double *) +DEP_CHDREVENTINDEX("Deprecated - use CPhidgetServo_set_OnPositionChange_Handler",Servo,MotorPositionChange,double motorPosition) +DEP_CHDRSETINDEX("Deprecated - use CPhidgetServo_setEngaged",Servo,MotorOn,int) +DEP_CHDRGETINDEX("Deprecated - use CPhidgetServo_getEngaged",Servo,MotorOn,int *) +#endif + +#ifndef EXTERNALPROTO + +PHIDGET21_API int CCONV setupNewServoParams(CPhidgetServoHandle phid, int Index, CPhidgetServoParameters params); + +#define SERVO_MAXSERVOS 4 +struct _CPhidgetServo { + CPhidget phid; + + int (CCONV *fptrPositionChange)(CPhidgetServoHandle, void *, int, double); + void *fptrPositionChangeptr; + + //Deprecated + int (CCONV *fptrMotorPositionChange)(CPhidgetServoHandle, void *, int, double); + void *fptrMotorPositionChangeptr; + + double motorPositionEcho[SERVO_MAXSERVOS]; + unsigned char motorEngagedStateEcho[SERVO_MAXSERVOS]; + + double motorPosition[SERVO_MAXSERVOS]; + unsigned char motorEngagedState[SERVO_MAXSERVOS]; + + unsigned char fullStateEcho; + + double motorPositionMax[SERVO_MAXSERVOS], motorPositionMin[SERVO_MAXSERVOS]; + double motorPositionMaxLimit, motorPositionMinLimit; + + CPhidgetServoParameters servoParams[ADVSERVO_MAXSERVOS]; + char *servoParamString[ADVSERVO_MAXSERVOS]; + + unsigned char outputPacket[8]; + unsigned int outputPacketLen; +} typedef CPhidgetServoInfo; +#endif + +/** @} */ + +#endif |