Use size_t not int for number of points; add time mode support

This commit is contained in:
MarkRivers
2011-04-05 22:45:14 +00:00
parent 25fc46bf02
commit 30a8263313
+12 -3
View File
@@ -60,6 +60,8 @@
#define profileEndPulsesString "PROFILE_END_PULSES"
#define profileActualPulsesString "PROFILE_ACTUAL_PULSES"
#define profileNumReadbacksString "PROFILE_NUM_READBACKS"
#define profileTimeModeString "PROFILE_TIME_MODE"
#define profileFixedTimeString "PROFILE_FIXED_TIME"
#define profileTimeArrayString "PROFILE_TIME_ARRAY"
#define profileAccelerationString "PROFILE_ACCELERATION"
#define profileBuildString "PROFILE_BUILD"
@@ -92,6 +94,11 @@ typedef struct MotorStatus {
epicsUInt32 status; /**< Word containing status bits (motion done, limits, etc.) */
} MotorStatus;
enum ProfileTimeMode{
PROFILE_TIME_MODE_FIXED,
PROFILE_TIME_MODE_ARRAY
};
/* State codes for Build, Read and Execute. Careful, these must match the
* corresponding MBBI records, but there is no way to check this */
enum ProfileBuildState{
@@ -136,7 +143,7 @@ class epicsShareFunc asynMotorController : public asynPortDriver {
/* These are the methods that we override from asynPortDriver */
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
virtual asynStatus writeFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nEelements);
virtual asynStatus writeFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements);
virtual asynStatus readGenericPointer(asynUser *pasynUser, void *pointer);
/* These are the methods that are new to this class */
@@ -148,7 +155,7 @@ class epicsShareFunc asynMotorController : public asynPortDriver {
void asynMotorPoller(); // This should be private but is called from C function
/* These are the functions for profile moves */
virtual asynStatus initializeProfile(int maxPoints);
virtual asynStatus initializeProfile(size_t maxPoints);
virtual asynStatus buildProfile();
virtual asynStatus executeProfile();
virtual asynStatus readbackProfile();
@@ -207,6 +214,8 @@ class epicsShareFunc asynMotorController : public asynPortDriver {
int profileEndPulses_;
int profileActualPulses_;
int profileNumReadbacks_;
int profileTimeMode_;
int profileFixedTime_;
int profileTimeArray_;
int profileAcceleration_;
int profileBuild_;
@@ -239,7 +248,7 @@ class epicsShareFunc asynMotorController : public asynPortDriver {
double movingPollPeriod_; /**< The time between polls when any axis is moving */
int forcedFastPolls_; /**< The number of forced fast polls when the poller wakes up */
int maxProfilePoints_; /**< Maximum number of profile point */
size_t maxProfilePoints_; /**< Maximum number of profile points */
double *profileTimes_; /**< Array of times per profile point */
friend class asynMotorAxis;