Can set and read enable, something broken with movements and status

This commit is contained in:
Michele Brambilla
2022-03-10 12:57:14 +01:00
committed by brambilla_m
parent 403eecafae
commit 92364a1de8
3 changed files with 21 additions and 14 deletions

View File

@@ -32,7 +32,7 @@
using std::cout;
using std::endl;
#include <epicsTime.h>
#include "epicsTime.h"
#include <epicsThread.h>
#include <epicsExport.h>
#include <epicsString.h>
@@ -148,8 +148,6 @@ pmacController::pmacController(const char *portName, const char *lowLevelPortNam
{
static const char *functionName = "pmacController::pmacController";
printf(" Constructor: %s\n", functionName);
//Initialize non static data members
lowLevelPortUser_ = NULL;
debugFlag_ = 0;
@@ -366,8 +364,11 @@ asynStatus pmacController::writeFloat64(asynUser *pasynUser, epicsFloat64 value)
/* Set the parameter and readback in the parameter library. */
status = pAxis->setDoubleParam(function, value);
printf("%s: pAxis->setDoubleParam(%d, %lf)\n", functionName, function, value);
// if (function == motorPosition_) {
if (function == motorPosition_) {
printf("%s: pAxis->setDoubleParam(%d, %lf)\n", functionName, function, value);
}
// /*Set position on motor axis.*/
// epicsInt32 position = (epicsInt32) floor(value*32/pAxis->scale_ + 0.5);
@@ -580,7 +581,7 @@ SeleneController::SeleneController(const char *portName, const char *lowLevelPor
pmacController(portName, lowLevelPortName, lowLevelPortAddress, numAxes, movingPollPeriod, idlePollPeriod, extraParams) {
static const char *functionName = "pmacV3Controller::pmacV3Controller";
createParam(EnableAxisString, asynParamInt32, &enableAxis_);
createParam(AxisStateString, asynParamInt32, &axisState_);
createParam(AxisEnabledString, asynParamInt32, &axisEnabled_);
callParamCallbacks();
}
@@ -815,6 +816,7 @@ asynStatus SeleneController::writeFloat64(asynUser *pasynUser, epicsFloat64 valu
}
asynStatus pmacV3Controller::writeInt32(asynUser *pasynUser, epicsInt32 value) {
int function = pasynUser->reason;
asynStatus status = asynError;
@@ -845,13 +847,14 @@ asynStatus pmacV3Controller::writeInt32(asynUser *pasynUser, epicsInt32 value) {
// Execute the command.
if (command[0] != 0 && status == asynSuccess) {
status = lowLevelWriteRead(pAxis->axisNo_, command, response);
printf("%s: lowLevelWriteRead: success=%d\n (function == enableAxis_? %d)\n",functionName, status==asynSuccess, function == enableAxis_);
}
// Call base class method
// This will handle callCallbacks even if the function was handled here.
status = asynMotorController::writeInt32(pasynUser, value);
// status = asynMotorController::writeInt32(pasynUser, value);
return status;
return pmacController::writeInt32(pasynUser, value);
}
asynStatus pmacV3Controller::readInt32(asynUser *pasynUser, epicsInt32 *value) {
@@ -869,14 +872,14 @@ asynStatus pmacV3Controller::readInt32(asynUser *pasynUser, epicsInt32 *value) {
if (!pAxis) {
return asynError;
}
if (function == axisState_) {
if (function == axisEnabled_) {
snprintf(command, sizeof(command), "P%2.2d00", pAxis->axisNo_);
status = this->lowLevelWriteRead(pAxis->axisNo_, command, response);
*value = strtol(response, NULL, 10);
setIntegerParam(axisState_, *value);
int st = setIntegerParam(axisEnabled_, *value);
// printf("%s: setIntegerParam(%d, %d) -> success=%d\n", functionName,axisEnabled_, *value, st==asynSuccess);
callParamCallbacks();
return status;
}
return pmacController::readInt32(pasynUser, value);
}