forked from epics_driver_modules/motorBase
Changed set/getPositionCompare API
This commit is contained in:
@@ -870,80 +870,102 @@ asynStatus XPSAxis::setClosedLoop(bool closedLoop)
|
||||
return (asynStatus)status;
|
||||
}
|
||||
|
||||
asynStatus XPSAxis::setPositionCompare(bool enable, double minPosition, double maxPosition, double stepSize,
|
||||
double pulseWidth, double settlingTime)
|
||||
asynStatus XPSAxis::setPositionCompare()
|
||||
{
|
||||
int enable;
|
||||
double minPosition, maxPosition, stepSize, pulseWidth, settlingTime;
|
||||
int itemp;
|
||||
int status;
|
||||
static const char *functionName = "setPositionCompare";
|
||||
|
||||
pC_->getIntegerParam(pC_->XPSPositionCompareEnable_, &enable);
|
||||
pC_->getDoubleParam (pC_->XPSPositionCompareMinPosition_, &minPosition);
|
||||
pC_->getDoubleParam (pC_->XPSPositionCompareMaxPosition_, &maxPosition);
|
||||
pC_->getDoubleParam (pC_->XPSPositionCompareStepSize_, &stepSize);
|
||||
pC_->getIntegerParam(pC_->XPSPositionComparePulseWidth_, &itemp);
|
||||
pulseWidth = positionComparePulseWidths[itemp];
|
||||
pC_->getIntegerParam(pC_->XPSPositionCompareSettlingTime_, &itemp);
|
||||
settlingTime = positionCompareSettlingTimes[itemp];
|
||||
|
||||
// Disable the position compare so we can set parameters
|
||||
status = PositionerPositionCompareDisable(pollSocket_, positionerName_);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareDisable status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
status = PositionerPositionComparePulseParametersSet(pollSocket_, positionerName_, pulseWidth, settlingTime);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionComparePulseParametersSet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
status = PositionerPositionCompareSet(pollSocket_, positionerName_, minPosition, maxPosition, stepSize);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareSet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
if (enable) {
|
||||
status = PositionerPositionComparePulseParametersSet(pollSocket_, positionerName_, pulseWidth, settlingTime);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionComparePulseParametersSet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
status = PositionerPositionCompareSet(pollSocket_, positionerName_, minPosition, maxPosition, stepSize);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareSet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
status = PositionerPositionCompareEnable(pollSocket_, positionerName_);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareEnable status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
} else {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: set XPS %s, axis %d positionCompare set and enable\n",
|
||||
driverName, functionName, pC_->portName, axisNo_);
|
||||
}
|
||||
} else {
|
||||
status = PositionerPositionCompareDisable(pollSocket_, positionerName_);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareDisable status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
} else {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: motorAxisSetInteger set XPS %s, axis %d positionCompare disable\n",
|
||||
driverName, functionName, pC_->portName, axisNo_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: set XPS %s, axis %d positionCompare set and enable\n",
|
||||
driverName, functionName, pC_->portName, axisNo_);
|
||||
|
||||
return asynSuccess;
|
||||
}
|
||||
|
||||
asynStatus XPSAxis::getPositionCompare(bool *enable, double *minPosition, double *maxPosition, double *stepSize,
|
||||
double *pulseWidth, double *settlingTime)
|
||||
asynStatus XPSAxis::getPositionCompare()
|
||||
{
|
||||
bool enable;
|
||||
int status;
|
||||
static const char *functionName = "setPositionCompare";
|
||||
int i;
|
||||
double minPosition, maxPosition, stepSize, pulseWidth, settlingTime;
|
||||
static const char *functionName = "getPositionCompare";
|
||||
|
||||
status = PositionerPositionComparePulseParametersGet(pollSocket_, positionerName_, pulseWidth, settlingTime);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionComparePulseParametersSet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
status = PositionerPositionCompareGet(pollSocket_, positionerName_, minPosition, maxPosition, stepSize, enable);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareSet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
} else {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: set XPS %s, axis %d positionCompareGet,"
|
||||
" enable=%d, minPosition=%f, maxPosition=%f, stepSize=%f, pulseWidth=%f, settlingTime=%f\n",
|
||||
driverName, functionName, pC_->portName, axisNo_,
|
||||
*enable, *minPosition, *maxPosition, *stepSize, *pulseWidth, *settlingTime);
|
||||
}
|
||||
status = PositionerPositionComparePulseParametersGet(pollSocket_, positionerName_, &pulseWidth, &settlingTime);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionComparePulseParametersGet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
status = PositionerPositionCompareGet(pollSocket_, positionerName_, &minPosition, &maxPosition, &stepSize, &enable);
|
||||
if (status) {
|
||||
asynPrint(pasynUser_, ASYN_TRACE_ERROR,
|
||||
"%s:%s: [%s,%d]: error calling PositionerPositionCompareGet status=%d\n",
|
||||
driverName, functionName, pC_->portName, axisNo_, status);
|
||||
return asynError;
|
||||
}
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: set XPS %s, axis %d positionCompareGet,"
|
||||
" enable=%d, minPosition=%f, maxPosition=%f, stepSize=%f, pulseWidth=%f, settlingTime=%f\n",
|
||||
driverName, functionName, pC_->portName, axisNo_,
|
||||
enable, minPosition, maxPosition, stepSize, pulseWidth, settlingTime);
|
||||
|
||||
setIntegerParam(pC_->XPSPositionCompareEnable_, enable);
|
||||
setDoubleParam(pC_->XPSPositionCompareMinPosition_, minPosition);
|
||||
setDoubleParam(pC_->XPSPositionCompareMaxPosition_, maxPosition);
|
||||
setDoubleParam(pC_->XPSPositionCompareStepSize_, stepSize);
|
||||
for (i=0; i<MAX_PULSE_WIDTHS; i++) {
|
||||
if (fabs(pulseWidth - positionComparePulseWidths[i]) < 0.001) break;
|
||||
}
|
||||
setIntegerParam(pC_->XPSPositionComparePulseWidth_, i);
|
||||
for (i=0; i<MAX_SETTLING_TIMES; i++) {
|
||||
if (fabs(settlingTime - positionCompareSettlingTimes[i]) < 0.001) break;
|
||||
}
|
||||
setIntegerParam(pC_->XPSPositionCompareSettlingTime_, i);
|
||||
return asynSuccess;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user