cphidgetadvancedservo.h
Go to the documentation of this file.
00001 #ifndef __CPHIDGETADVANCEDSERVO
00002 #define __CPHIDGETADVANCEDSERVO
00003 #include "cphidget.h"
00004 
00011 DPHANDLE(AdvancedServo)
00012 CHDRSTANDARD(AdvancedServo)
00013 
00014 
00018 typedef enum {
00019         PHIDGET_SERVO_DEFAULT = 1,                      
00020         PHIDGET_SERVO_RAW_us_MODE,                      
00021         PHIDGET_SERVO_HITEC_HS322HD,            
00022         PHIDGET_SERVO_HITEC_HS5245MG,           
00023         PHIDGET_SERVO_HITEC_805BB,                      
00024         PHIDGET_SERVO_HITEC_HS422,                      
00025         PHIDGET_SERVO_TOWERPRO_MG90,            
00026         PHIDGET_SERVO_HITEC_HSR1425CR,          
00027         PHIDGET_SERVO_HITEC_HS785HB,            
00028         PHIDGET_SERVO_HITEC_HS485HB,            
00029         PHIDGET_SERVO_HITEC_HS645MG,            
00030         PHIDGET_SERVO_HITEC_815BB,                      
00031         PHIDGET_SERVO_FIRGELLI_L12_30_50_06_R,  
00032         PHIDGET_SERVO_FIRGELLI_L12_50_100_06_R, 
00033         PHIDGET_SERVO_FIRGELLI_L12_50_210_06_R, 
00034         PHIDGET_SERVO_FIRGELLI_L12_100_50_06_R, 
00035         PHIDGET_SERVO_FIRGELLI_L12_100_100_06_R,
00036         PHIDGET_SERVO_SPRINGRC_SM_S2313M,       
00037         PHIDGET_SERVO_SPRINGRC_SM_S3317M,       
00038         PHIDGET_SERVO_SPRINGRC_SM_S3317SR,      
00039         PHIDGET_SERVO_SPRINGRC_SM_S4303R,       
00040         PHIDGET_SERVO_SPRINGRC_SM_S4315M,       
00041         PHIDGET_SERVO_SPRINGRC_SM_S4315R,       
00042         PHIDGET_SERVO_SPRINGRC_SM_S4505B,       
00043         PHIDGET_SERVO_USER_DEFINED
00044 }  CPhidget_ServoType;
00045 
00051 CHDRGET(AdvancedServo,MotorCount,int *count)
00052 
00053 
00059 CHDRGETINDEX(AdvancedServo,Acceleration,double *acceleration)
00066 CHDRSETINDEX(AdvancedServo,Acceleration,double acceleration)
00073 CHDRGETINDEX(AdvancedServo,AccelerationMax,double *max)
00080 CHDRGETINDEX(AdvancedServo,AccelerationMin,double *min)
00081 
00082 //set velocity
00089 CHDRGETINDEX(AdvancedServo,VelocityLimit,double *limit)
00096 CHDRSETINDEX(AdvancedServo,VelocityLimit,double limit)
00097 //Actual velocity
00104 CHDRGETINDEX(AdvancedServo,Velocity,double *velocity)
00111 CHDRGETINDEX(AdvancedServo,VelocityMax,double *max)
00118 CHDRGETINDEX(AdvancedServo,VelocityMin,double *min)
00125 CHDREVENTINDEX(AdvancedServo,VelocityChange,double velocity)
00126 
00127 
00133 CHDRGETINDEX(AdvancedServo,Position,double *position)
00140 CHDRSETINDEX(AdvancedServo,Position,double position)
00147 CHDRGETINDEX(AdvancedServo,PositionMax,double *max)
00154 CHDRSETINDEX(AdvancedServo,PositionMax,double max)
00161 CHDRGETINDEX(AdvancedServo,PositionMin,double *min)
00168 CHDRSETINDEX(AdvancedServo,PositionMin,double min)
00175 CHDREVENTINDEX(AdvancedServo,PositionChange,double position)
00176 
00177 
00183 CHDRGETINDEX(AdvancedServo,Current,double *current)
00190 CHDREVENTINDEX(AdvancedServo,CurrentChange,double current)
00191 
00192 
00198 CHDRGETINDEX(AdvancedServo,SpeedRampingOn,int *rampingState)
00205 CHDRSETINDEX(AdvancedServo,SpeedRampingOn,int rampingState)
00212 CHDRGETINDEX(AdvancedServo,Engaged,int *engagedState)
00219 CHDRSETINDEX(AdvancedServo,Engaged,int engagedState)
00226 CHDRGETINDEX(AdvancedServo,Stopped,int *stoppedState)
00233 CHDRGETINDEX(AdvancedServo,ServoType,CPhidget_ServoType *servoType)
00240 CHDRSETINDEX(AdvancedServo,ServoType,CPhidget_ServoType servoType)
00250 CHDRSETINDEX(AdvancedServo,ServoParameters,double min_us,double max_us,double degrees,double velocity_max)
00251 
00252 #ifndef EXTERNALPROTO
00253 #define ADVSERVO_MAXSERVOS 8
00254 
00255 #define ADVSERVO_NORMAL_PACKET  0x00
00256 #define ADVSERVO_MINMAX_PACKET  0x10
00257 
00258 //Flags - need to match those defined in firmware
00259 #define MOTOR_DONE_ADVSERVO                     0x20
00260 #define MOTOR_DISABLED_ADVSERVO         0x40
00261 #define NO_RAMPING_FLAG_ADVSERVO        0x80
00262 
00263 #define ADVSERVO_PGOOD_FLAG     0x01
00264 
00265 //Define the parameters for several servo motors
00266 struct _CPhidgetServoParameters
00267 {
00268         CPhidget_ServoType servoType;
00269         double min_us;
00270         double max_us;
00271         double us_per_degree;
00272         double max_us_per_s;    //velocity in us notation
00273         unsigned char state;
00274 } typedef CPhidgetServoParameters, *CPhidgetServoParametersHandle;
00275 
00276 extern const CPhidgetServoParameters Phid_Servo_Types[];
00277 int getServoParameterIndex(CPhidget_ServoType type);
00278 PHIDGET21_API double CCONV servo_us_to_degrees(CPhidgetServoParameters params, double us, unsigned char round);
00279 PHIDGET21_API double CCONV servo_degrees_to_us(CPhidgetServoParameters params, double degrees);
00280 PHIDGET21_API double CCONV servo_us_to_degrees_vel(CPhidgetServoParameters params, double us, unsigned char round);
00281 PHIDGET21_API double CCONV servo_degrees_to_us_vel(CPhidgetServoParameters params, double degrees);
00282 
00283 PHIDGET21_API int CCONV setupNewAdvancedServoParams(CPhidgetAdvancedServoHandle phid, int Index, CPhidgetServoParameters newVal);
00284 
00285 struct _CPhidgetAdvancedServo {
00286         CPhidget phid;
00287 
00288         int (CCONV *fptrPositionChange)(CPhidgetAdvancedServoHandle, void *, int, double);
00289         int (CCONV *fptrVelocityChange)(CPhidgetAdvancedServoHandle, void *, int, double);
00290         int (CCONV *fptrCurrentChange)(CPhidgetAdvancedServoHandle, void *, int, double);
00291 
00292         void *fptrPositionChangeptr;
00293         void *fptrVelocityChangeptr;
00294         void *fptrCurrentChangeptr;
00295 
00296         //all data is stored as microseconds
00297         
00298         //data from the device
00299         double motorVelocityEcho[ADVSERVO_MAXSERVOS];
00300         double motorPositionEcho[ADVSERVO_MAXSERVOS];
00301         double motorSensedCurrent[ADVSERVO_MAXSERVOS];
00302         unsigned char motorSpeedRampingStateEcho[ADVSERVO_MAXSERVOS];
00303         unsigned char motorEngagedStateEcho[ADVSERVO_MAXSERVOS];
00304         unsigned char motorStoppedState[ADVSERVO_MAXSERVOS];
00305         int packetCounterEcho[ADVSERVO_MAXSERVOS];
00306 
00307         //data from the user
00308         double motorPosition[ADVSERVO_MAXSERVOS];
00309         double motorAcceleration[ADVSERVO_MAXSERVOS];
00310         double motorVelocity[ADVSERVO_MAXSERVOS];
00311         unsigned char motorSpeedRampingState[ADVSERVO_MAXSERVOS];
00312         unsigned char motorEngagedState[ADVSERVO_MAXSERVOS];
00313         int packetCounter[ADVSERVO_MAXSERVOS];
00314         double motorPositionMax[ADVSERVO_MAXSERVOS];
00315         double motorPositionMin[ADVSERVO_MAXSERVOS];
00316         
00317         double velocityMax[ADVSERVO_MAXSERVOS], velocityMin;
00318         double velocityMaxLimit;
00319         double accelerationMax, accelerationMin;
00320         double motorPositionMaxLimit, motorPositionMinLimit;
00321         
00322         unsigned char PGoodErrState;
00323 
00324         CPhidgetServoParameters servoParams[ADVSERVO_MAXSERVOS];
00325         char *servoParamString[ADVSERVO_MAXSERVOS];
00326 
00327         unsigned char outputPacket[MAX_OUT_PACKET_SIZE];
00328         unsigned int outputPacketLen;
00329 } typedef CPhidgetAdvancedServoInfo;
00330 
00331 #endif
00332 
00335 #endif


pedal_monitor
Author(s): Pedro Mendes
autogenerated on Fri Jun 6 2014 18:37:20